Prometheus
関連記事
Prometheus はオープンソースのメトリクス収集・処理ツールです。時系列データベースと保存されているメトリクスにアクセス・処理するクエリ言語から成ります。Prometheus は複数のサービスからメトリクスを収集できます。ミニマルなウェブ UI を備えており、 Grafana などのサードパーティのツールによるダッシュボードを使うこともできます。
インストール
prometheus パッケージをインストールしてください。その後、prometheus
サービスを起動・有効化することで HTTP のポート 9090 からアプリケーションにアクセスできます。
デフォルト設定では自身の prometheus
プロセスを監視します。システムの監視を行うには prometheus-node-exporter をインストールします。ローカルシステムからメトリクスが収集されます。prometheus-node-exporter
サービスを起動・有効化することで使うことができ、デフォルトでポート 9100 が開きます。prometheus-node-exporter
サービスが起動したら、これを定期的にスクレイピングするよう Prometheus の設定をすることにより、実際にデータが収集できるようになります。これは後述の手順 メトリクスの追加 に従って行います。
設定
Prometheus の設定は YAML を使用し、メインの設定ファイルは /etc/prometheus/prometheus.yml
です。
メトリクスの追加
scrape_configs
配列にメトリクスの収集先を追加することができます。ソースとしてローカルのノードエクスポータを追加したい場合、設定は以下のようになります:
scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] - job_name: 'localhost' static_configs: - targets: ['localhost:9100']
エクスポーター
Arch Linuxのリポジトリには 利用可能なエクスポーター の一部が登録されています:
- prometheus-node-exporter - システムのメトリクス
- prometheus-blackbox-exporter - エンドポイント(HTTP, HTTPS, DNS, TCP, ICMP)に対するブラックボックス探査
- prometheus-memcached-exporter -
memcached
のメトリクス - prometheus-mysqld-exporter - MySQLサーバーのメトリクス
各エクスポーターはサービスの形で実現されています。例えば node exporter を実行する場合は prometheus-node-exporter.service
を 起動 ・ 有効化 します。
UI を使う
Prometheus には設定を確認したりメトリクスにアクセス・グラフ化するための限定的な UI が付属しています。デフォルトでは http://localhost:9090 から使用できます。Prometheus のクエリ言語について詳しくは Prometheus のドキュメント を参照してください。
アラート
alertmanagerでは、特定の条件を満たした際にカスタマイズしたアラートを送信することができます。
送信する条件は /etc/prometheus/alert.rules.yml
に、送信する内容は /etc/alertmanager/alertmanager.yml
に設定します。アラートマネージャーでは、メールやSlackなど、さまざまな方法での通知が可能です。メールでのアラートを設定するためには、次の行を追加します:
global: resolve_timeout: 5m smtp_smarthost: 'smtp.example.com:25' smtp_from: 'alertmanager@example.com' route: group_by: ['instance', 'severity'] group_wait: 30s group_interval: 5m repeat_interval: 3h receiver: team-1 receivers: - name: 'team-1' email_configs: - to: 'admin@example.com'
Prometheus から AlertManger にアラートを送るためには次の行を /etc/prometheus/prometheus.yml
に追加します:
alerting: alertmanagers: - static_configs: - targets: - localhost:9093
systemdのユニットが失敗した場合のアラートの設定には /etc/prometheus/alert.rules.yml
に次の行を追加します。このほかの条件についてはアラート条件 のドキュメントを参照してください。
- name: systemd_unit interval: 15s rules: - alert: systemd_unit_failed expr: | node_systemd_unit_state{state="failed"} > 0 for: 3m labels: severity: critical annotations: description: 'Instance : Service failed' summary: 'Systemd unit failed'