執筆者:シラト
今回のお話
Prometheus SLO generator である Sloth を海外向けコミック配信サービス「Coolmic」で使用してみましたのでご紹介いたします!
Prometheus と Grafana の知識がある方が対象になりますが、ご了承ください。。。
Sloth とは?
Prometheus SLO generator と謳っているように、Prometheus での SLO 管理を容易にする OSS です。
以下の手順だけであっという間に Prometheus で SLO 監視を始めることができます。
① OpenSLO に準拠した SLO 監視用の yaml ファイル作成
② Sloth のコマンド実行
③ Prometheus で SLO が監視できるように yaml ファイル出力
OpenSLO と聞き慣れないワードが出てきましたが何でしょうか?
OpenSLO とは?
Infrastructure as Code が当たり前の時代になりましたが、SLO as Code も当たり前の時代になりそうです。
OpenSLO とは、SLO の定義仕様をオープンにして、SLO の監視をベンダーに囚われないようにすることが目的みたいです。
今後、OpenSLO 対応した OSS, SaaSベンダー が増加しそうですね。
Sloth お試し
兎にも角にも実際に動作確認しました。
① yaml ファイル作成
ドキュメントに記載されている yaml ファイルを参考に作成しました。
今回は、Coolmic の以下の SLI を監視してみました。
SLI | SLO |
---|---|
Emailログイン処理の成功割合 | 99.9% |
サーバーサイドは Ruby on Rails を採用しており、prometheus-client でメトリクスを取得しております。 SLIを以下のように定義しました。
sli: events: error_query: sum(rate(http_server_requests_total{method="post", path="/user/sessions",kubernetes_namespace="production",code=~"(5..|4..)"}[{{.window}}])) total_query: sum(rate(http_server_requests_total{method="post", path="/user/sessions",kubernetes_namespace="production"}[{{.window}}]))
② Sloth インストール
ドキュメント 通りにインストールします。
$ docker pull ghcr.io/slok/sloth
③ sloth generate コマンド実行
①で作成した yaml ファイルのディレクトリを volume mount して、コンテナ内部でコマンド実行しました。
膨大な行数のyamlファイルが出力されるかと思います。
$ docker run -v /Users/hogehoge:/home ghcr.io/slok/sloth generate -i /home/error_rate/test.yaml > test.yaml
④ デプロイ
③で出力された yaml ファイルをデプロイして、Prometheus に反映されたか確認します。
⑤ Grafana ダッシュボード作成
なんと、Grafanaで可視化するための ダッシュボード が用意されておりました。
Import 用のIDをコピーして Grafana 側でダッシュボードを作成します。
⑥ Error Budget 確認
しばらくデータの蓄積を待って確認してみました。
確認する頃には、すでにError Budget枯渇しておりました😇
左下のAlert が All OK になっておりますが、これは嘘です。
Alertが多すぎるため一旦削除しているので、OK になっているだけです。。。
Alert rule について
一番の感動ポイントです🥺
なんと、Multiwindow, Multi-Burn-Rate Alerts を採用しているため、ノイズが少なくて理想的な条件になっております。
まとめ
今回はお試しとしてGrafanaでの可視化までやってみました!
少しでも参考になれば幸いです!