AlmaLinux 9 一覧へ戻る トップAlmaLinux 9 / 観測基盤運用ガイド
AlmaLinux 9 ・ ゼロトラスト統合基盤検証ロードマップ

観測基盤(Grafana/Slack通知)運用ガイド

ログの見方、Slack通知の設定、アラートルールの作り方までを一通りまとめた操作マニュアル

Grafanaへの接続手順 Slack Webhook設定 アラートルール作成手順 よくあるつまずき対処

Prometheus/Loki/Grafanaによる観測基盤(構築記録はPhase 2 Observability実践マニュアルを参照)を、実際に日常運用する際の操作手順をまとめたページです。「どうやってGrafanaを開くのか」「Slack通知はどう設定するのか」「新しい監視ルールはどう作るのか」を、つまずきやすいポイントとあわせて記録しています。

目次

  1. 1. Grafanaへ接続する
  2. 2. ログを検索する(Explore)
  3. 3. Slack通知の設定(ゼロから)
  4. 4. アラートルールの作成手順
  5. 5. よくあるつまずきポイント

1. Grafanaへ接続する

Grafanaの外部公開(境界ファイアウォール経由)は現状うまく通っていないため、SSHのローカルポートフォワードで接続する。

STEP 1

どこにも接続していない、まっさらな端末画面を用意する

Windowsのスタートメニューから、新しくコマンドプロンプト(またはPowerShell)を開く。すでに他のサーバーへSSH接続しているウィンドウを使い回さないこと(既存の接続の中でこのコマンドを打つと、二重接続になり正しく動作しない)。

STEP 2

SSHで接続する

ssh -L 3000:localhost:3000 <ユーザー名>@<Grafanaサーバーのアドレス>

接続後もこのウィンドウは閉じない(閉じると転送も切れる)。プロンプトがサーバー側([ユーザー名@ホスト名 ~]$のような表示)に変わっていれば接続できている。

STEP 3

ブラウザでアクセスする

接続したまま、ブラウザで http://localhost:3000/ を開く。Grafanaのログイン画面が表示される。

「Address already in use」と出た場合

これは「そのポートは既に使われている」という意味で、多くの場合接続先を間違えているサイン。すでにサーバーへ接続した状態のウィンドウの中で、もう一度同じSSHコマンドを打ってしまっている可能性が高い。一度exitで接続をすべて終了し、STEP 1からやり直す。

2. ログを検索する(Explore)

  1. 左メニューの「Explore」をクリック
  2. 画面左上のデータソース選択(初期値は「Prometheus」)を「Loki」に切り替える
  3. クエリ入力欄の右上にある「Builder」/「Code」の切り替えで「Code」を選ぶと、検索条件(LogQL)を直接テキストで入力できる
  4. 例えば {job=~"fortigate|apache|systemd-journal"} のように入力し、右上の「Run query」をクリック

複数の機器・サーバーのログが時系列で横断表示される。

3. Slack通知の設定(ゼロから)

STEP 1

Slack側でWebhookを発行する

  1. api.slack.com/apps にアクセスし、「Create New App」→「From scratch」
  2. アプリ名を入力し、通知を送りたいワークスペースを選択
  3. 左メニューの「Incoming Webhooks」を開き、右上のトグルをON
  4. 「Add New Webhook to Workspace」をクリックし、投稿先チャンネルを選んで許可
  5. 発行されたhttps://hooks.slack.com/services/...形式のWebhook URLを控える

Webhook URLの扱い

このURLを知っていれば誰でもそのチャンネルに投稿できてしまう。チャットやメール、コード管理システムなどに平文で残さないこと。

STEP 2

GrafanaにContact Pointとして登録する

  1. 左メニューの「Alerting」→「Contact points」→「+ Add contact point」
  2. 名前を入力し、「Integration」で「Slack」を選択
  3. 「Webhook URL」欄に、STEP 1で発行したURLを貼り付ける
  4. 「Save contact point」で保存
STEP 3

テスト送信で疎通確認する

作成したContact Pointの「Edit」を開き、右上の「Test」ボタンから「Send test notification」を実行する。実際のアラートルールを1つも作らなくても、この時点でSlackへの疎通確認ができる。

4. アラートルールの作成手順

左メニューの「Alerting」→「Alert rules」→「+ New alert rule」から作成する。画面は上から4ステップで構成されている。

STEP 1

ルール名を入力する

「Name」欄に、何を検知するルールかが分かる名前を入力する(例:「Fail2ban BAN検知」)。

STEP 2

クエリと条件を定義する

データソースを「Loki」に切り替え、「Code」モードでLogQLクエリを入力する。以下は実際に使っている例。

例1:Fail2banによる不正アクセス遮断(BAN)の検知

count_over_time({job="fail2ban"} |= "Ban" [1m])

例2:systemdサービスの異常終了・再起動の検知

count_over_time({job="systemd-journal", container!~"grafana|loki"} |~ "Failed with result|Scheduled restart job" [1m])

観測基盤自身を除外する

GrafanaもLokiも、実行したクエリの内容をそのまま自分自身のログに書き出す。そのため「Failed with result」のような検索語をそのまま使うと、クエリ自身が自分にヒットし続ける無限ループになる。上記の例2のようにcontainer!~"grafana|loki"で観測基盤自身のログを除外すること。

「B(Reduce)」「C(Threshold)」はデフォルト(Last / Strict / IS ABOVE 0)のままでよい。

STEP 3

評価の頻度を設定する

  1. 「Folder」「Evaluation group」は、初回のみ「+ New folder」「+ New evaluation group」から新規作成する(2回目以降は既存のものを選べる)
  2. 評価間隔(Evaluation interval)は、通知までの速さに直結する。数秒〜数十秒での検知を狙う場合は「10s」程度に短く設定する
  3. 「Pending period」は「None」にすると、条件を満たした瞬間に即座に発報する
STEP 4

通知先を設定して保存する

「Notifications」で「Select contact point」を選び、3章で作成したContact Pointを指定する。右上の「Save rule and exit」で保存すると、以後は設定した間隔で自動的に評価され続ける。

「No data」が誤アラート化する場合

ログが0件のとき、Grafanaは「値0」ではなく「No data」として扱い、デフォルト設定だとDatasourceNoDataという別の通知が飛んでしまうことがある。ルール編集画面の「Configure no data and error handling」で、「Alert state if no data or all values are null」をNormalに変更しておくと、この誤通知を防げる。

5. よくあるつまずきポイント

AlmaLinux 9 一覧へ戻る