「Prometheus」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(関連記事を追加(英語版に追従))
(→エクスポーター: 見出しの階層を訂正)
 
(同じ利用者による、間の4版が非表示)
12行目: 12行目:
 
== インストール ==
 
== インストール ==
   
{{Pkg|prometheus}} または {{AUR|prometheus-bin}} パッケージを[[インストール]]してください。その後、{{ic|prometheus}} サービスを[[起動]]・[[有効化]]することで HTTP のポート 9090 からアプリケーションにアクセスできます。
+
{{Pkg|prometheus}} パッケージを[[インストール]]してください。その後、{{ic|prometheus}} サービスを[[起動]]・[[有効化]]することで HTTP のポート 9090 からアプリケーションにアクセスできます。
   
デフォルト設定では自身の {{ic|prometheus}} プロセスを監視します。システムの監視を行うには {{Pkg|prometheus-node-exporter}} または {{AUR|prometheus-node-exporter-bin}} をインストールします。ローカルシステムからメトリクスが収集されます。{{ic|prometheus-node-exporter}} サービスを起動・有効化することで使うことができ、デフォルトでポート 9100 が開きます。
+
デフォルト設定では自身の {{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] もあわせて確認してください。}}
   
 
== 設定 ==
 
== 設定 ==
31行目: 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*:9090 を、 prometheus-node-exporter*:9100 を listen します。そのため、忘れずに設定変更、もしくは、対応するファイアウォールのルールを有効にしてください。また、Prometheus security model もあわせて確認してください。

設定

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のリポジトリには 利用可能なエクスポーター の一部が登録されています:

各エクスポーターはサービスの形で実現されています。例えば 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'

参照