概要
過去 に Gitlab の Grarana にアクセスする方法を紹介しました
どうやらアラート機能も使えるようなので試してみました
環境
- GitLab Enterprise Edition 13.3.5-ee
- grafana 7.0.3
admin でログインできるようにする
アラート機能を使うには admin 権限が必要です
Gitlab の Grafana はデフォルトでは Gitlab の OAuth のみでログインするようになっており権限が readonly しかないので admin でログインできるようにする必要があります
admin ログイン用のフォームを表示させる
まずは admin がログインできるようにログインフォームを表示するようにします
vim /etc/gitlab/gitlab.rb
grafana['disable_login_form'] = false
gitlab-ctl reconfigure
これで reconfigure をかければ grafana のログイン画面に OAuth 以外のログインフォームが表示されるようになります
admin ユーザのパスワードを設定する
これは CLI で行います
grafana['admin_password']
という項目が gitlab.rb にありますがこれではなく CLI で先にパスワードを設定する必要があります
gitlab-ctl set-grafana-password
これで新規に admin ユーザのパスワードを設定することができます
設定できたら Grafana の UI から「admin/設定したパスワード」でログインできるか確認してみましょう
アラート機能を有効にする
次にアラート機能を有効にします
デフォルトではなぜかアラート機能が使えないので有効にする必要があります
vim /etc/gitlab/gitlab.rb
grafana['alerting_enabled'] = true
gitlab-ctl reconfigure
これでアラート機能が有効になります
Notification channel を設定する
まずは Notification channel を新規で追加する必要があります
左メニューから追加しましょう
Slack や LINE、メールなどのチャネルに通知することができます
今回は Slack に通知してみます
Type に Slack を選択しあとは Incomming Webhook URL を設定しましょう
それ以外にも細かい設定ができますが今回は Incomming Webhook URL のみ設定します
チャネルやアイコンなど必要であれば設定しましょう
以下のようにチャネルの一覧に表示されれば OK です
アラートを設定してみる
これでようやくアラート機能が使えます
admin ユーザでログインして既存のダッシュボードを適当に選択して編集画面に移動しましょう
ダッシュボードの一覧からアラートしたい項目のダッシュボードを選択します
今回は「Gitlab Omnibus - Redis」を選択します
そしてダッシュボードから「Memory Usage」パネルを選択し「Edit」を選択します
アラート用のクエリを作成する
まずはアラート用のクエリを作成します
いくつかクエリが設定されているのですがアラート用には作成されておらずアラートが作成できないので新規でクエリを作成します
Query タブから新規で追加します
今回は Metrics に「redis_memory_used_bytes
」を指定します
クエリを新規で作成した「Alert」タブに移動します
そして「Create Alert
」を選択しましょう
アラートを作成する
まずアラートの条件を設定します
今回は 5 分間の値がある一定以上であれば通知するようにします
条件は以下のようになります
単位が bytes なので注意しましょう
設定しているしきい値の値がリアルタイムにグラフに反映されるのでわかりやすいと思います
次に通知するチャネルを設定します
先程作成した Slack チャネルを使います
通知する際のメッセージを設定可能なので好きなメッセージを設定します
本来はここに変数を使って現在の値などを表示したいのですがやり方がわかりませんでした
調べると他の人も悩んでいるのでまだやり方がないのかもしれません (参考)
作成できたら右上の「Apply」を押してアラートを作成します
ダッシュボードにもアラートのしきい値が表示されるようになります
動作確認
あとはアラートが上がるまで待ちましょう
今回の条件であれば 5 分後に 100% アラートが上がるはずです
問題なく Grafana でアラートの監視が始まっていればダッシュボードで Pending の線が表示されるようになります
これが表示されない場合はダッシュボードにアラートのルールがうまく保存されていないので以下のトラブルシューティングなどを参考に解決してください
トラブルシューティング: Template variables are not supported in alert queries
ダッシュボードからアラート以外で使用するクエリを削除してみましょう
もしくはアラート専用のダッシュボードを作成して再度クエリとアラートの登録を行ってみてください
トラブルシューティング: Provisioning: Cannot save provisioned dashboard
Gitlab が用意している既存のダッシュボードに対して操作すると出る場合があるようです
どうやら Gitlab が用意している Grafana の監視ファイルは JSON で保存されています
ls -l /opt/gitlab/embedded/service/grafana-dashboards
total 176
-rw-r--r-- 1 root root 14858 Sep 4 18:25 gitaly.json
-rw-r--r-- 1 root root 12103 Sep 4 18:25 nginx.json
-rw-r--r-- 1 root root 22528 Sep 4 18:25 overview.json
-rw-r--r-- 1 root root 20974 Sep 4 18:25 postgresql.json
-rw-r--r-- 1 root root 17716 Sep 4 18:25 praefect.json
-rw-r--r-- 1 root root 12019 Sep 4 18:25 rails-app.json
-rw-r--r-- 1 root root 542 Sep 4 18:25 README.md
-rw-r--r-- 1 root root 24709 Sep 4 18:25 redis.json
-rw-r--r-- 1 root root 11682 Sep 4 18:25 registry.json
-rw-r--r-- 1 root root 22238 Sep 4 18:25 service_platform_metrics.json
これらのファイルに対して UI から更新を掛ける場合は allowUiUpdates = true
なる属性の設定が必要なようで Gitlab ではそれが設定されていないためにエラーになるようです
なのでその場合は新規でダッシュボードを作成して同じクエリと同じアラートルールを追加すれば OK です
最後に
Gitlab に付属の Grafana でアラート機能を試してみました
有効にするのが少し面倒なのとアラートのルールを設定できるのは admin ユーザだけのようです
有効にできればあとは Grafana の世界の話なのでクエリの設定の仕方などは Grafana のドキュメントを参考にすると良いかなと思います
0 件のコメント:
コメントを投稿