Prometheus로 munin에서 마이그레이션을 검토 ④ ~ 마이그레이션 검토 그 1 ~

아래에서 기본적인 부분은 이해했다고 생각합니다.
prometheus 설정
grafana 설정
alertmanager 설정

munin에서는 기본 부분 외에 Nginx나 phpfpm도 감시하고 있으므로,
비슷한 일을 할 수 있는지 확인합니다.

대상 추가



마이그레이션 검토가 프론트 서버이므로 Nginx와 phpfpm의 감시가 가능한지 확인한다.

nginx 설정



원래 status 정보를 얻을 수 없으면 감시 할 수 없기 때문에,
nginx 자체의 구성 파일에 다음을 추가했습니다.
    # Server Status
    location = /nginx_status {
            stub_status on;
            access_log off;
            allow 127.0.0.1;
            deny all;
    }

wget등으로 로컬로부터 「 http://127.0.0.1/nginx_status 」를 확인해 값이 취해지면 exporter의 설정을 실시합니다.
아래에서 다운로드했습니다.
nginx_exporter

그대로 실행할 수 있었으므로 nginx_exporter 디렉토리로 이동하여 다음과 같이했습니다.


※자신의 환경에서는 이하가 부족했기 때문에 「go get」로 취득해 실행하고 있습니다.
- go get github.com/prometheus/client_golang/prometheus
- go get github.com/prometheus/common/log

php-fpm 설정



값은 http 액세스로 취했기 때문에, nginx의 설정 파일의 변경이 필요했습니다.
    location = /phpfpm_status {
            include fastcgi_params;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            allow 127.0.0.1;
            deny all;
    }

이런 느낌입니다.
nginx와 마찬가지로 로컬에서 "http://127.0.0.1/phpfpm_status"를 확인했습니다.
다음에 php-fpm용의 exporter를 찾은 결과, 이하가 발견되었으므로 이용합니다.

php-fpm-exporter

다만, bug도 있었으므로 약간 개수해 이용했습니다.
  • master 리포지토리라면 endpoint(URL 지정)라고 에러가 되었다.
  • go 1.10이면 main.go가 오류가 발생합니다 (go.uber.org/zap이 작동하지 않음)

  • 이 시점에서는 master가 아니라 최신 리포지토리로 하고 있습니다.
    또, zap를 사용하고 있는 개소를 코멘트로 해 대응했습니다.
    (더 나은 exporter가있을 수 있습니다)

    이쪽도 다운로드한 것을 그대로 실행할 수 있었으므로,
    php-fpm-exporter 디렉토리로 이동하여 다음과 같이했습니다.


    값 획득



    nginx와 php-fpm의 값을 얻을 수 있게 되었으므로,
    prometheus로 가져와 grafana로 그려보세요.

    우선 netstat에서 대기 포트 확인입니다.
    nginx와 php-fpm 외에 node-exporter도 기동하고 있으므로 그 확인을합니다.



    그런 다음 prometheus.yml의 scrape_configs에 설정을 추가했습니다.
    
      - job_name: 'test_front1'
        static_configs:
          - targets: ['対象サーバのIP:9100']
          - targets: ['対象サーバのIP:9113']
          - targets: ['対象サーバのIP:9913']
    
    이런 느낌입니다.

    브라우저 측에서 확인



    prometheus 화면(grafana가 아님)에서 값을 얻었는지 여부를 확인합니다.
    "Execute"버튼 옆의 풀다운에서 "nginx_"나 "phpfpm_"를 확인할 수 있다고 생각합니다.

    ※이런 느낌으로 php-fpm도 있는 것을 확인했습니다.

    메뉴에 있는 Status의 Targets에서 Endpoint의 State가 「UP」으로 되어 있는 것도 확인할 수 있습니다.

    grafana에서 대시보드 추가



    값이 잡혀 있으므로 다음을 Grafana Lab에서 다운로드하여 적용합니다.
  • php-fpm_rev1.json (PHP-FPM)
  • nginx-overview_rev4.json (Nginx Overview)

  • 더 좋은 대시보드가 ​​있을지도 모르지만 이것을 사용하게 했습니다.

    요약



    기본 리소스 모니터링은 "Node Exporter Full",
    그리고 프런트 사용하고 있는 미들웨어로 「Nginx Overview」나 「PHP-FPM」을 사용했습니다.
    어쩌면 DB라든지의 정보도 exporter로 데이터를 취해 dashboard로 표시라는 흐름은 변하지 않는다고 생각하기 때문에,
    응용할 수 있다고 생각합니다.

    좋은 웹페이지 즐겨찾기