コンテンツにスキップ

Grafanaアラート設定

概要

サーバー異常状態発生時に任意のアプリへ通知を送信する設定です。
サーバー監視には必須設定となります。

1.事前確認

Grafanaバージョン確認

grafana-cli -v

Grafanaアップデート

sudo apt update -y && sudo apt upgrade -y

2.アラートルールの作成

通知の基準となるアラートルールを作成します。

1.「左サイドメニュー」→「Alerting」の右の矢印→「Alert rules」→「New alert rule」の順にクリックする

2-1.ノードスロット監視

  • ①:Relay1-スロット監視など任意のルール名
  • ②:Metrics Browserをクリック
  • ③:cardano_node_metrics_slotInEpoch_intを選択
  • ④:aliasが選択されていることを確認
  • ⑤:監視するノード名を選択
  • ⑥:Use queryをクリック

  • ⑦:Bのゴミ箱マークをクリック

  • ⑧:Cのゴミ箱マークをクリック
  • ⑨:Add expressionをクリックし、Classic_conditionを選択

  • ⑩:last() / A / HAS NO VALUE選択

  • ⑪:Set as alert conditionをクリックし、Alert conditionの表示に変える
  • ⑫:New folderを選択し、SJGを入力してCreate
  • ⑬:New evaluation groupを選択し、Evaluation group nameノード監視Evaluation interval10sを入力してCreate
  • ⑭:20sを入力
  • ⑮:Alertingを選択
  • ⑯:Alertingを選択

  • ⑰:Add custom annotaionを選択

  • ⑱:検知内容を入力
  • ⑲:フィールドに検知メッセージを入力 例)Relay1のスロットを取得出来ませんでした。ノード起動状態を確認してください
  • ⑳:ページ上部のSave rule and exitを選択

残りの全てのノードのスロット監視を設定する

上記で作成したルールをコピーする

  • ①を書き換える
  • ②:Metrics Browserを書き換える
    例)
    cardano_node_metrics_slotInEpoch_int{alias="block-producing-node"}
    cardano_node_metrics_slotInEpoch_int{alias="relaynode2"}

  • 「4 Add annotations」の検知内容のメッセージ内容を書き換える

  • ⑳:ページ上部のSave rule and exitを選択

2-2.BP→リレー接続監視

上記で作成したルールをコピーする

  • ①:BPリレー接続監視など任意のルール名に書き換える
  • ②:Metrics Browsercardano_node_metrics_peers_connectedPeers_int{alias="block-producing-node"}に置き換える
  • ⑩:last() / A / IS BELOWに切り替え1を入力
  • ⑮:Alertingを選択
  • ⑯:Alertingを選択
  • 「4 Add annotation」の検知内容のメッセージ内容を書き換える
    例)BPからリレーへの接続が確認できません。接続状況を確認してください
  • ⑳:ページ上部のSave rule and exitを選択

2-3.チェーン密度監視

上記で作成したルールをコピーする

  • ①:チェーン密度監視など任意のルール名に書き換える
  • ②:Metrics Browsercardano_node_metrics_density_real{alias="relaynode1"} * 100に置き換える
  • ⑩:last() / A / IS BELOWに切り替え4.5を入力
  • ⑮:OKを選択
  • ⑯:OKを選択
  • 「4 Add annotation」の検知内容のメッセージ内容を書き換える
    例)チェーン密度が4.5%を下回っています。これはカルダノチェーン全体の問題です
  • ⑳:ページ上部のSave rule and exitを選択

2-4.ノードタイム監視

上記で作成したルールをコピーする

  • ①:Relay1-ノードタイム監視など任意のルール名に書き換える
  • ②:Metrics Browsernode_timex_maxerror_seconds{alias="relaynode1"} * 1000に置き換える
  • ⑩:last() / A / IS ABOVEに切り替え100を入力
  • ⑮:OKを選択
  • ⑯:OKを選択
  • 「4 Add annotation」の検知内容のメッセージ内容を書き換える
    例)Relay1のノードタイムが100msを超えています。chronyを再起動してください
  • ⑳:ページ上部のSave rule and exitを選択

残り全てのノードのノードタイム監視を設定する

上記で作成したルールをコピーする

  • ①を書き換える
  • ②:Metrics Browserを書き換える
    例)
    node_timex_maxerror_seconds{alias="block-producing-node"} * 1000
    node_timex_maxerror_seconds{alias="relaynode2"} * 1000

  • 「4 Add annotation」の検知内容のメッセージ内容を書き換える

  • ⑳:ページ上部のSave rule and exitを選択

2-5.KES残り日数監視

上記で作成したルールをコピーする

  • ①:BP-KES残り日数監視など任意のルール名に書き換える
  • ②:Metrics Browser(cardano_node_metrics_remainingKESPeriods_int * 1.5)に置き換える
  • ⑩:last() / A / IS BELOWに切り替え10を入力
  • ⑮:OKを選択
  • ⑯:OKを選択
  • 「4 Add annotation」の検知内容のメッセージ内容を書き換える
    例)KESキーの期限が迫っています。ブロック生成予定のないタイミングでKESキーを更新してください
  • ⑳:ページ上部のSave rule and exitを選択

2-6.ディスク使用率監視

上記で作成したルールをコピーする

  • ①:Relay1-ディスク使用率監視など任意のルール名に書き換える
  • ②:Metrics Browser1 - node_filesystem_avail_bytes / node_filesystem_size_bytes{alias="relaynode1",mountpoint="/"}に置き換える
  • ⑩:last() / A / IS ABOVEに切り替え0.9を入力
  • ⑮:OKを選択
  • ⑯:OKを選択
  • 「4 Add annotation」の検知内容のメッセージ内容を書き換える
    例)Relay1のディスク使用率が90%を超えています。100%に達する前に契約サーバーのアップグレードなどを行う必要があります
  • ⑳:ページ上部のSave rule and exitを選択

残り全てのノードのディスク使用率監視を設定する

上記で作成したルールをコピーする

  • ①を書き換える
  • ②:Metrics Browserを書き換える
    例)
    1 - node_filesystem_avail_bytes / node_filesystem_size_bytes{alias="block-producing-node",mountpoint="/"}
    1 - node_filesystem_avail_bytes / node_filesystem_size_bytes{alias="relaynode2",mountpoint="/"}

  • 「4 Add annotation」の検知内容のメッセージ内容を書き換える

  • ⑳:ページ上部のSave rule and exitを選択

3.通知先アプリの設定

通知先アプリの設定

アラートの通知先はLINE/Discord/Telegram/Slackを複数指定することが可能です。
ブロック生成ステータス通知の通知アプリ設定で設定した手順と同様に、通知先名などを変えてトークンを発行してください。

4.通知テンプレート設定

  • 「Contact points」をクリックし「Add template」をクリック

  • 任意のテンプレート名SJGを入力し、以下のテンプレートデータを入力

    {{ define "myalert" }}
    {{ if gt (len .Annotations) 0 }}{{ range .Annotations.SortedPairs }}{{ .Name }}: {{ .Value }}{{ end }}
    {{ end }}{{ end }}
    
    
    {{ define "mymessage" }}
    {{ if gt (len .Alerts.Firing) 0 }} 【 ❌障害発生❌ 】{{len .Alerts.Firing}}件 {{ range .Alerts.Firing }}
    {{ template "myalert" .}} {{ end }}{{ end }}
    {{ if gt (len .Alerts.Resolved) 0 }}✅以下の障害は復旧しました✅{{len .Alerts.Resolved}}件{{ range .Alerts.Resolved }}
    {{ template "myalert" .}} {{ end }}{{ end }}
    {{ end }}
    

  • 「Save tempelate」をクリック

5.通知先設定

  • 「Add contact point」をクリック

通知先を指定する

  • 任意の通知名Self-Alertを入力
  • 通知先を選択し情報を入力
  • [3.通知先アプリの設定]で取得した通知アプリごとのトークンIDやWebhookURLを入力する
  • Option *** SettingsをクリックしDiscriptionに以下のタグを入力
    {{ template "mymessage" . }}
    

通知先ごとのタグ入力欄表記違い

  • LINE→Description
  • Discord→Message Content
  • Slack→Text Body
  • Telegram→Message

  • 「Save contact point」をクリック

複数の通知先を設定可能

「Add contact point integration」をクリックすれば、複数の通知先を設定可能

  • 「Notification policies」→「Edit」をクリック

  • Self-Alertを選択

  • Group bygrafana_folderalertnameを指定
  • Group interval1 Minutesに設定
  • Repeat interval10 Minutesに設定
  • 「Update default policy」をクリック

6.通知内容URLカスタマイズ

注意

xxxx.bbb.com[Grafanaセキュリティ設定]で取得したドメイン(サブドメイン)に置き換えて実行する
https://は不要

domain=xxxx.bbb.com

以下コマンドをすべてコピーして実行する

sudo sed -i /etc/grafana/grafana.ini \
    -e 's!;domain = localhost!domain = '${domain}'!' \
    -e 's!;root_url = %(protocol)s://%(domain)s:%(http_port)s/!root_url = https://%(domain)s/!'

Grafanaを再起動する

sudo systemctl restart grafana-server.service