Prometheusのすすめ - 初期導入 -の続きです。
本記事では、Prometheusを知らない人が試しながら調べながらエラー対応も含め記載していってます。
ので情報として煩雑な感じになっているのでご了承ください。
さて、PrometheusのService Discoveryを使えば、とりあえず知っているAWSアカウント内のサーバは認識できるらしいので、試していくよ。
増えたら通知とか出来るかな。
と、その前にPrometheusはバイナリで導入しているので、自動起動の設定をしよう。
自動起動設定
# killall prometheus
# mv ./prometheus-2.3.1 /usr/local/
# ln -s /usr/local/prometheus-2.3.1/prometheus /usr/bin/
# vi /lib/systemd/system/prometheus.service
[Unit]
Description=Prometheus service
After=syslog.service prometheus.service
[Service]
Type=simple
ExecStart=/usr/bin/prometheus --config.file=/usr/local/prometheus-2.3.1/prometheus.yml
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# systemctl enable prometheus
# systemctl start prometheus
Service Discovery
参考は前記事でも書いた次世代監視の大本命! Prometheus を実運用してみたから。
# vi /usr/local/prometheus-2.3.1/prometheus.yml
scrape_configs:
- job_name: 'TEST_PROJECT'
# EC2 Service Discovery Config
ec2_sd_configs:
- region: ap-northeast-1
access_key: XXXXXXXXXXXXXXXXXXX
secret_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
port: 9100 # 監視対象ポート
# systemctl restart prometheus.service
よし、ブラウザで見てみよー。
ちゃんとリージョンに存在しているインスタンス数分、追加されてる。
UNKNOWNになってるのはまだPrometheusからpullしてない状態で、DOWNがpullしたけどダメだったやつっぽい。
まだexporterを入れてないから当然だね。(再読み込みしたら全部DOWNになってた)
でもこれって内部のIPで登録されてるからexporter入れても、内部で繋がってないPrometheusからは無理?
と思ったら、以下にやり方が書いてあった。
1万台のサーバを監視できると話題のPrometheusをGrafanaと組み合わせて導入した話~vol2~
うーん。。。ここらへんのリファレンス的なのが日本語で欲しいなあ。。。
とりあえず、そのまま真似よう。
- region: ap-northeast-1
access_key: XXXXXXXXXXXXXXXXXXX
secret_key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
port: 9100 # 監視対象ポート
relabel_configs:
- source_labels: [__meta_ec2_public_ip]
regex: '(.*)'
target_label: __address__
replacement: '${1}:9100'
- source_labels: [__meta_ec2_tag_Name]
target_label: instance
結果
Labelsにインスタンス名と、EndPointがパブリックIPになった。
パブリックIPが無しになってるインスタンスは停止しているやつか、本当に無いサーバ。
今の会社だと大体プロジェクト毎にクラウドのアカウントが分かれてるので、それ毎に設定してあげれば、大体全容を掴めそうだ。
あとは監視のアラートと通知とかもやらないとね。