wwwave'sTechblog |ウェイブのエンジニアブログ

株式会社ウェイブのエンジニアによるテックブログです。会社の話や Ruby、Vue.jsについてなど技術的な話をしていきたいと思います。

株式会社ウェイブの人事部ブログです。社内の雰囲気やイベント、福利厚生などについてお伝えいたします!

株式会社ウェイブのエンジニアブログです。 エンジニアの目線から会社の話や技術的な話をしていきます。

Sloth を用いた Grafana での Error Budget 可視化(お試し編)

執筆者:シラト

今回のお話

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での可視化までやってみました!
少しでも参考になれば幸いです!

トップに戻る