「Prometheus」の版間の差分
(ページの作成:「Category:ネットワーク監視 Category:ウェブアプリケーション en:Prometheus {{Related articles start}} {{Related|Zabbix}} {{Related|Munin}} {{R...」) |
細 (→エクスポーター: 見出しの階層を訂正) |
||
(2人の利用者による、間の6版が非表示) | |||
6行目: | 6行目: | ||
{{Related|Munin}} |
{{Related|Munin}} |
||
{{Related|Grafana}} |
{{Related|Grafana}} |
||
+ | {{Related|TICK stack}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
[https://prometheus.io/ Prometheus] はオープンソースのメトリクス収集・処理ツールです。時系列データベースと保存されているメトリクスにアクセス・処理するクエリ言語から成ります。Prometheus は複数のサービスからメトリクスを収集できます。ミニマルなウェブ UI を備えており、 [[Grafana]] などのサードパーティのツールによるダッシュボードを使うこともできます。 |
[https://prometheus.io/ Prometheus] はオープンソースのメトリクス収集・処理ツールです。時系列データベースと保存されているメトリクスにアクセス・処理するクエリ言語から成ります。Prometheus は複数のサービスからメトリクスを収集できます。ミニマルなウェブ UI を備えており、 [[Grafana]] などのサードパーティのツールによるダッシュボードを使うこともできます。 |
||
11行目: | 12行目: | ||
== インストール == |
== インストール == |
||
− | {{ |
+ | {{Pkg|prometheus}} パッケージを[[インストール]]してください。その後、{{ic|prometheus}} サービスを[[起動]]・[[有効化]]することで HTTP のポート 9090 からアプリケーションにアクセスできます。 |
− | デフォルト設定では自身の {{ic|prometheus}} プロセスを監視します。システムの監視を行うには {{ |
+ | デフォルト設定では自身の {{ic|prometheus}} プロセスを監視します。システムの監視を行うには {{Pkg|prometheus-node-exporter}} をインストールします。ローカルシステムからメトリクスが収集されます。{{ic|prometheus-node-exporter}} サービスを起動・有効化することで使うことができ、デフォルトでポート 9100 が開きます。{{ic|prometheus-node-exporter}} サービスが起動したら、これを定期的にスクレイピングするよう Prometheus の設定をすることにより、実際にデータが収集できるようになります。これは後述の手順 [[#メトリクスの追加|メトリクスの追加]] に従って行います。 |
+ | {{Warning|デフォルト設定の場合 {{ic|prometheus}} は {{ic|*:9090}} を、 {{ic|prometheus-node-exporter}} は {{ic|*:9100}} を listen します。そのため、忘れずに設定変更、もしくは、対応するファイアウォールのルールを有効にしてください。また、[https://prometheus.io/docs/operating/security/ Prometheus security model] もあわせて確認してください。}} |
||
== 設定 == |
== 設定 == |
||
30行目: | 32行目: | ||
static_configs: |
static_configs: |
||
- targets: ['localhost:9100'] |
- targets: ['localhost:9100'] |
||
+ | |||
+ | == エクスポーター == |
||
+ | Arch Linuxのリポジトリには [https://prometheus.io/docs/instrumenting/exporters/ 利用可能なエクスポーター] の一部が登録されています: |
||
+ | |||
+ | * {{Pkg|prometheus-node-exporter}} - システムのメトリクス |
||
+ | * {{Pkg|prometheus-blackbox-exporter}} - エンドポイント(HTTP, HTTPS, DNS, TCP, ICMP)に対するブラックボックス探査 |
||
+ | * {{Pkg|prometheus-memcached-exporter}} - {{ic|memcached}} のメトリクス |
||
+ | * {{Pkg|prometheus-mysqld-exporter}} - MySQLサーバーのメトリクス |
||
+ | |||
+ | 各エクスポーターはサービスの形で実現されています。例えば node exporter を実行する場合は {{ic|prometheus-node-exporter.service}} を [[起動]] ・ [[有効化]] します。 |
||
== UI を使う == |
== UI を使う == |
||
Prometheus には設定を確認したりメトリクスにアクセス・グラフ化するための限定的な UI が付属しています。デフォルトでは http://localhost:9090 から使用できます。Prometheus のクエリ言語について詳しくは [https://prometheus.io/docs/prometheus/latest/querying/basics/ Prometheus のドキュメント] を参照してください。 |
Prometheus には設定を確認したりメトリクスにアクセス・グラフ化するための限定的な UI が付属しています。デフォルトでは http://localhost:9090 から使用できます。Prometheus のクエリ言語について詳しくは [https://prometheus.io/docs/prometheus/latest/querying/basics/ Prometheus のドキュメント] を参照してください。 |
||
+ | |||
+ | == アラート == |
||
+ | |||
+ | {{Pkg|alertmanager}}では、特定の条件を満たした際にカスタマイズしたアラートを送信することができます。 |
||
+ | 送信する条件は {{ic|/etc/prometheus/alert.rules.yml}} に、送信する内容は {{ic|/etc/alertmanager/alertmanager.yml}} に設定します。アラートマネージャーでは、メールやSlack[https://prometheus.io/docs/alerting/configuration/ など]、さまざまな方法での通知が可能です。メールでのアラートを設定するためには、次の行を追加します: |
||
+ | |||
+ | {{bc| |
||
+ | 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 にアラートを送るためには次の行を {{ic|/etc/prometheus/prometheus.yml}} に追加します: |
||
+ | |||
+ | {{bc| |
||
+ | alerting: |
||
+ | alertmanagers: |
||
+ | - static_configs: |
||
+ | - targets: |
||
+ | - localhost:9093 |
||
+ | }} |
||
+ | |||
+ | systemdのユニットが失敗した場合のアラートの設定には {{ic|/etc/prometheus/alert.rules.yml}} に次の行を追加します。このほかの条件については[https://prometheus.io/docs/alerting/configuration/ アラート条件] のドキュメントを参照してください。 |
||
+ | |||
+ | {{bc|<nowiki> |
||
+ | - 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' |
||
+ | </nowiki>}} |
||
== 参照 == |
== 参照 == |
2022年2月12日 (土) 22:39時点における最新版
関連記事
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'