PrometheusのAlertmanagerをインストールする!(Rocky Linux 9)

PrometheusのAlertmanagerをRocky Linux 9にインストールします。今回は、Alertmanagerは、Prometheusと同じサーバにインストールします。

PrometheusのAlertmanagerをダウンロードする!

Prometheusをインストールしたサーバ上で、Alertmanager用のディレクトリを作成します。

$ mkdir -p prometheus/alertmanager
$ cd prometheus/alertmanager

Prometheusのホームページでダウンロードするバージョンを確認し、GitHubからAlertmanagerをダウンロードします。

$ wget https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz
$ $ ls -l
total 25276
-rw-r--r-- 1 usradmin usradmin 25880024 Mar 25  2022 alertmanager-0.24.0.linux-amd64.tar.gz

Alertmanagerを展開する!

Alertmanagerを展開します。

$ tar -zxvf alertmanager-0.24.0.linux-amd64.tar.gz
alertmanager-0.24.0.linux-amd64/
alertmanager-0.24.0.linux-amd64/alertmanager.yml
alertmanager-0.24.0.linux-amd64/LICENSE
alertmanager-0.24.0.linux-amd64/NOTICE
alertmanager-0.24.0.linux-amd64/alertmanager
alertmanager-0.24.0.linux-amd64/amtool

Alertmanagerでメール通知の設定を行う!

Alertmangerでメール通知を行う設定を行います。通知先は、以下の記事で作成したMailHogの環境になります。

 

$ cat alertmanager.yml 
route:
  group_by: ['alertname']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 1h
  receiver: 'mail'
receivers:
  - name: 'mail'
    email_configs:
      - to: 'usradmin@lab4ict.local'
        from: 'alertmgr@lab4ict.local'
        smarthost: 'localhost:1025'
        require_tls: false

Alertmanagerを起動する!

Alertmanagerを展開したディレクトリに移動し、Alertmanagerを起動します。

$ cd alertmanager-0.24.0.linux-amd64
$ ./alertmanager
...
ts=2022-12-21T15:19:36.335Z caller=main.go:535 level=info msg=Listening address=:9093
...

Alertmanagerが動作していることを確認する!

Firewalldの接続許可設定を行います。

$ sudo firewall-cmd --add-port=9093/tcp --zone=public --permanent
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-all --zone=public | grep tcp
  ports: 9093/tcp

Alertmanagerを起動したサーバが「vmspmt01」の場合、以下のURLにアクセスしてAlertmanagerの画面にアクセスします。

$ curl http://vmspmt01:9093

Alertのルールの定義ファイルを作成する!

アラートを発生させる条件を停止したファイルをPrometheusサーバに作成します。

$ cat alert_rules.yml 
grouops:
  - name: target_status
    rules:
      - alert: target_down
        expr: up == 0
        for: 10s
        labels:
          severity: error
          annotations:
            summary: connecting target failed.

Alertmanagerとアラートの定義をPrometheusに登録する!

Alertmanagerとアラートの定義をPrometheusに登録します。alertingのセクションにAlertmanagerを登録し、rule_filesのセクションにアラートの定義ファイルを登録します。

$ cat prometheus.yml
# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
           - localhost:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - "alert_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "node_exporter"
    static_configs:
      - targets: ["vmsans01:9100"]

Alertmanagerをsystemdで自動起動する!

systemdのUnitの定義ファイルを作成します。

cat alertmanager.service 
[Unit]
Description=Alertmanager
Documentation=https://github.com/prometheus/alertmanager
After=network-online.target

[Service]
Type=simple
WorkingDirectory=/home/usradmin/prometheus/alertmanager/alertmanager-0.24.0.linux-amd64
ExecStart=/home/usradmin/prometheus/alertmanager/alertmanager-0.24.0.linux-amd64/alertmanager --config.file=/home/usradmin/prometheus/alertmanager/alertmanager-0.24.0.linux-amd64/alertmanager.yml
ExecStop=/bin/kill -TERM ${MAINPID}
ExecReload=/bin/kill -HUP ${MAINPID}
Restart=always
User=usradmin

[Install]
WantedBy=multi-user.target

Unitを登録し、起動します。

$ sudo systemctl daemon-reload
$ sudo systemctl enable alertmanager.service
Created symlink /etc/systemd/system/multi-user.target.wants/alertmanager.service → /etc/systemd/system/alertmanager.service.
$ sudo systemctl start alertmanager.service
$ udo systemctl status alertmanager.service
● alertmanager.service - Alertmanager
     Loaded: loaded (/etc/systemd/system/alertmanager.service; enabled; vendor preset: disabled)
     Active: active (running) since Fri 2022-12-23 07:30:19 JST; 6s ago

Alert通知の画面を確認する!

Alert通知の画面を確認します。

Ruleの設定を確認する!

Targetの状態(Targetのダウン)を確認する!

PrometheusがTargetのダウンを通知したことを確認する!

AlertmanagerがTargetのダウンをメールで通知したことを確認する!

Alert通知のメールを確認する!

おわりに

Alertmanagerのインストールと通知機能の確認を行いました。

参考情報

関連記事

 

Prometheus書籍(Amazon)