以下で基本的な部分は理解したと思ってます。
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を探した結果、以下が見つかったので利用します。
ただ、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で表示という流れは変わらないと思うので、
応用できると思ってます。