Slide 1

Slide 1 text

今 SLI/SLO の監視をするなら Sloth が良さそうという話 北澤 祥太 / kanata 1

Slide 2

Slide 2 text

北澤 祥太 / kanata / かなた
 @kanatakita
 ShotaKitazawa
 趣味: ラーメン、スノボ、自宅鯖構築、イベント裏方
 最近: Kubernetes custom controller の実装など
 
 $ whoami 2 よく使う アイコン

Slide 3

Slide 3 text

今日話すこと・話さないこと 話すこと ● Sloth というツールで何が出来るのか ● Sloth を使うと何が嬉しいのか 話さないこと ● Sloth を実際のプロダクト開発・運用に利用する話 ○ SLO Review 等のプロセスについて ○ 特定のプロダクトの特性起因の苦労話について ○ etc. ● 自作の自動化ツールについてのあれこれ 3

Slide 4

Slide 4 text

今日話すこと・話さないこと 話すこと ● sloth というツールで何が出来るのか ● sloth を使うと何が嬉しいのか 話さないこと ● sloth を実際のプロダクト開発・運用に利用する話 ○ SLO Review 等のプロセスについて ○ 特定のプロダクトの特性起因の苦労話について ○ etc. ● 自作の自動化ツールについてのあれこれ 4 🙇 🙇 🙇

Slide 5

Slide 5 text

Sloth - Easy and simple Prometheus SLO generator 一言で表すと ● yaml を書くだけで、いい感じの Alerting Rules を出力してくれたり Grafana Dashboard で SLI/SLO をモニタリングできるようになるツール 前提 ● Prometheus / Grafana を利用していること ● SLI の元となるメトリクスが取得できていること https://github.com/slok/sloth 5

Slide 6

Slide 6 text

Sloth の設定例 (1/2) 6 https://github.com/slok/sloth/blob/v0.10.0/examples/getting-started.yml version: "prometheus/v1" service: "myservice" labels: owner: "myteam" repo: "myorg/myservice" tier: "2" slos: - name: "requests-availability" objective: 99.9 description: "Common SLO based on availability for HTTP request responses." sli: events: error_query: sum(rate(http_request_duration_seconds_count{job="myservice",code=~"(5..|429)"}[{{.window}}])) total_query: sum(rate(http_request_duration_seconds_count{job="myservice"}[{{.window}}])) (snip…) {{.window}} にはデフォルトで 5m, 30m, 1h, 2h, 6h, 1d, 3d, 30d が入る 生成される Rules に付与するラベルを指定 目標値を指定 total, error 条件となるクエリを定義

Slide 7

Slide 7 text

Sloth の設定例 (2/2) 7 https://github.com/slok/sloth/blob/v0.10.0/examples/getting-started.yml slos: - (snip…) alerting: name: MyServiceHighErrorRate labels: category: "availability" annotations: summary: "High error rate on 'myservice' requests responses" page_alert: labels: severity: pageteam routing_key: myteam ticket_alert: labels: severity: "slack" slack_channel: "#alerts-myteam" 生成される Alerting Rules に付与するラベルを指定 Page レベルの Alerting Rules に付与するラベルを指定 Ticket レベルの Alerting Rules に付与するラベルを指定

Slide 8

Slide 8 text

Recording Rules の生成 8 sloth.yml rules.yml $ sloth generate -i sloth.yml --- # Code generated by Sloth (v0.10.0): https://github.com/slok/sloth. # DO NOT EDIT. groups: - name: sloth-slo-sli-recordings-myservice-requests-availability rules: - record: slo:sli_error:ratio_rate5m expr: | (sum(rate(http_request_duration_seconds_count{ job="myservice",code=~"(5..|429)"}[5m]))) / (sum(rate(http_request_duration_seconds_count{ job="myservice"}[5m]))) labels: owner: myteam repo: myorg/myservice sloth_id: myservice-requests-availability sloth_service: myservice sloth_slo: requests-availability sloth_window: 5m tier: "2" - record: slo:sli_error:ratio_rate30m (snip…)

Slide 9

Slide 9 text

SLO のアラーティング ● 以下の閾値の Multiwindow, Multi-Burn-Rate のアラートルールを自動生成 ● What advantage of Multiwindow, Multi-Burn-Rate Alerts? ○ エラーバジェットの消費速度の傾き (Burn Rate) を用いるため精度が高い ○ システムを復旧させたのにアラートが止まない問題 (Burn Rate ベースのアラートの特徴) を軽減 詳しくは https://sre.google/workbook/alerting-on-slos/ 9 Severity Long window Short window Burn rate Page 1 day 2 hours 1 3 days 6 hours 1 Ticket 1 hour 5 minutes 14.4 6 hours 30 minutes 6 time window が 1 日, 2 時間のどちらに おいても burn rate が 1 を超える場合に発火

Slide 10

Slide 10 text

Grafana Dashboard ● Sloth が出力する Recording Rules のみを参照する Grafana Dashboard が提供されている 10 https://sloth.dev/introduction/dashboards/ 現在の Burn rate 残りの Error Budget SLI の推移 Burn Rate の推移 Error Budget の burn down chat

Slide 11

Slide 11 text

Sloth による一元管理 before after 11 dashboard.json rules.yaml sloth.yml dashboard.json rules.yaml 👍 シングルバイナリで可搬性が高い 👍 validate サブコマンドがあるので   CI に組み込みやすい

Slide 12

Slide 12 text

痒いところに手が届く機能 Recording Rules 用クエリの最適化 ● time window の大きい Recording Rule は、元となるメトリクスの rate 30d を取らず time window の小さい Recording Rule の rate 30d を取る ■ 多量のデータポイントの読み込まずに算出可能 様々な入力/出力フォーマットに対応 ● v0.10.0 現在、以下に対応 ○ 入力: default, K8s CustomResource, OpenSLO ○ 出力: Prometheus Recording Rules, K8s CustomResource (for Prometheus Operator) SLI 算出のためのプラグイン機構 ● https://github.com/slok/sloth-common-sli-plugins 12

Slide 13

Slide 13 text

Have a good SRE-Life with Sloth! 13