EC2에 Supervisor 모니터링 도구를 넣어 보았습니다.

9899 단어 EC2supervisor감시

참고 URL


  • Supervisor로 쉽게 데몬화 - Qiita
  • Supervisord를 Amazon Linux AMI에 설치 - massat 일기
  • Supervisord + Amazon Linux | TECH
  • 여러 Supervisord를 일괄 모니터링하는 'py-supervisord-monitor' - Symfoware
  • symfo / py-supervisord-monitor — Bitbucket
  • KoreanDownload - Mercurial
  • hg

  • 설치


  • py-supervisord-monitor의 소스를 당기는데 필요한 툴(mercurial)을 인스톨 해 간다.
  • $ sudo vim /etc/yum.repos.d/mercurial.selenic.com.repo
    
  • 상기 파일에 아래를 복사.
  • [mercurial.selenic.com]
    name=mercurial.selenic.com
    baseurl=https://www.mercurial-scm.org/release/centos$releasever  ← Amazon Linuxだと、「"The requested URL returned error: 404 Not Found"」が起こるので、「centos6」に直した
    enabled=1
    # Temporary until we get a serious signing scheme in place,
    # check https://www.mercurial-scm.org/wiki/Download again
    gpgcheck=0
    
  • mercurial 설치 및 도구 다운로드
  • $ sudo yum install mercurial
    $ hg clone https://[email protected]/symfo/py-supervisord-monitor
    
  • supervisor config 파일 편집
  • $ sudo vim /etc/supervisord.conf
    
  • 아래 설정
  • [supervisord]
    http_port=127.0.0.1:9001  ; (alternately, ip_address:port specifies AF_INET)
    
    [supervisorctl]
    serverurl=unix:///var/tmp/supervisor.sock ; use a unix:// URL  for a unix socket
    serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
    
    [inet_http_server]
    port = 0.0.0.0:9001
    
  • supervisor 재부팅
  • $ sudo service supervisord status
    supervisord (pid  1543) is running...
    $ sudo service supervisord restart
    Stopping supervisord:                                      [  OK  ]
    Starting supervisord:                                      [  OK  ]
    $ curl http://localhost:9001
    ※HTMLがレスポンスされるが、Supervisor2.Xだと、コマンド入力待ちにならない。。。
    
  • supervisord 업데이트
  • $ sudo pip install --upgrade pip
    Successfully installed pip-8.0.2
    $ sudo pip install --upgrade supervisor
    Successfully installed meld3-1.0.2 supervisor-3.2.1
    $ sudo service supervisord stop
    Stopping supervisord:                                      [  OK  ]
    $ sudo service supervisord start
    Starting supervisord: /usr/lib/python2.6/site-packages/supervisor/options.py:296: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.
      'Supervisord is running as root and it is searching '
                                                               [  OK  ]
    
  • 왠지, Warning 나오므로, 기동 스크립트를 에러가 되어, 일부 변경
  • $ sudo vim /etc/init.d/supervisord
    start() {
            echo -n $"Starting supervisord: "
            daemon supervisord
                          ↓
            daemon supervisord -c /etc/supervisord.conf
    
    $ sudo service supervisord restart
    Stopping supervisord:                                      [  OK  ]
    Starting supervisord:                                      [  OK  ]
    
  • 화나게 되었다 w
  • $ curl http://localhost:9001
    ※HTMLがレスポンスされるが、次のコマンド入力待ちになればOK
    
  • 그런 다음 모니터링 도구 측의 supervisor.conf를 수정합니다.
    $ sudo vim py-supervisord-monitor/supervisor.conf 
    [server:server01]
    #url = http://192.168.1.101/RPC2
    url = http://127.0.0.1/RPC2
    port = 9001
    #username = user
    #password = P@ssw0rd
    
  • 시작해 봅니다.
  • $ sudo python index.py 
    Bottle v0.13-dev server starting up (using WSGIRefServer())...
    Listening on http://0.0.0.0:8080/
    Hit Ctrl-C to quit.
    
  • htp://127.0.0.1:8080/
  • 화면을 열지만 프로세스가 나오지 않습니다. . .

  • 조사하면, RPC에 의한 접속을 하고 있다고 하는 것이므로, 이것을 체크한다
  • Python에서 Supervisor XML-RPC API에 연결 - Symfoware
  • 파이썬 - Supervisord RPC - UNKNOWN_METHOD on any request - Stack Overflow

  • supervisor config 파일을 편집하여 재부팅
  • $ sudo vim /etc/supervisord.conf
    [rpcinterface:supervisor]
    supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
    
  • 체크해 본다.
  • $ sudo pythonsample.py
    {'statename': 'RUNNING', 'statecode': 1}
    
  • 키터! ! ! ! !

  • 마지막으로 로그가 까다로워서 supervisord에서 시작하도록 한다.
  • $ sudo chmod +x /opt/py-supervisord-monitor/index.py 
    $ sudo vim /etc/supervisord.conf 
    [program:monitor]
    command=/opt/py-supervisord-monitor/index.py
    directory=/opt/py-supervisord-monitor
    process_name=%(program_name)s
    numprocs=1
    autostart=true
    autorestart=true
    
    $ sudo service supervisord status
    supervisord (pid  4168) is running...
    $ sudo service supervisord restart
    Stopping supervisord:                                      [  OK  ]
    Starting supervisord:                                      [  OK  ]
    

    툴의 업데이트는 아래에서 할 수 있는 것 같다. . .


    $ cd /opt/py-supervisord-monitor
    $ hg pull
    $ hg update
    

    좋은 웹페이지 즐겨찾기