この記事は、CyberAgent Group SRE Advent Calendar 2023の23日目の記事です。
TOC
SigNoz とは
SigNozは、ログ、トレース、メトリクスを1つのアプリケーションで提供するオープンソースの観測可能性プラットフォームです。DataDog、NewRelicなどに代わるオープンソースです。
https://github.com/SigNoz/signoz
https://github.com/SigNoz/signoz
Datadog や New Relic の代替を目指す OSS ということで SigNoz を触ってみた。
TL;DR
- 👍 OpenTelemetry 互換なので移行が簡単
- 👍 Web UI は Datadog と Grafana っぽい
- 👍 Service Map も使える
- 👍 アラート機能も十分
- 👍 バックエンドの ClickHouse がめっちゃ速い
- 👍 PromQL が使える
- 👍 外形監視もある
- 👍 OSS
- 🔺 Query Builder(PromQL と ClickHouse)はサジェストが出てこないので敷居が高い。
- 🔺 セルフホストはセルホスト、Cloud 版もあり(安い)
- ❌ 高度なことをしようとすると ClickHouse のクエリが必要
- ❌ SRE 視点では使えない
APM、アプリログの検索基盤としては十分に使えるけど SRE(Site Reliability Engineering) では使えない。
SigNoz のインストール
https://signoz.io/docs/operate/
APM としての機能
※ 所属する会社のサービスではなく個人サービスの API で試しています。
インストゥルメントされて SigNoz に送られたデータはサービス一覧ページで確認でき、クリックすると下記の概要ページが表示される。
HTTP エンドポイントをクリックすると親スパンの情報が一覧で表示される。
各親スパンをクリックすると、詳細な情報が見ることができる。
今回のアプリには Go x Gin x Gorm の API に、AWS SDK for Go v2 による外部 API の HTTP コールも含まれます。
s3Minio = s3.NewFromConfig(s3MinioCfg, func(o *s3.Options) {
...
})
otelaws.AppendMiddlewares(&s3MinioCfg.APIOptions)
ちなみに otelaws は AWS SDK for Go v2 からしか対応していないのですが、これは恐らく v2 では context 指定が必須なったことで引きずり回せるようにするためかと思います。
Gorm
AWS SDK
SRE として使えるか
今回は試しでアプリのトレースを使ってしまいますが、本来であれば LB のログなどを使う & 不正なリクエストなどは除外してください。
SLI: GET / + 80ms 以内
時系列グラフとして作成することができました。
Datadog や Grafana のパネル UI のように操作することができます。
現状の SLO を求めてみる
時系列以外にもテキストも可能です。
Target SLO に必要なもの
SLO の算出はできても先程の SLO の Time Frame はいくつでしょうか…?
答えは今、表示している期間です。
現状の SigNoz では Target を提供する機能がありません。
https://knowledgebase.signoz.io/t/creating-a-dashboard-for-sli-slo-in-signoz/2La0c
もしかしたら PromQL や ClickHouse 側で [30d] や [14d] などの時間範囲指定ができるかもしれませんが、現在この機能を実装しようとしてくださってるコミッターが居るようです。
https://github.com/SigNoz/signoz/issues/4016
アラート機能
アラート作成 UI は丁寧で、閾値がグラフ上に描画されたり、Alert Description には変数が埋め込めることができたり必要最低限もしくはそれ以上の機能があります。
まとめ
SigNoz は APM やログ基盤、外形監視としても使えるし、日々アップデートが行われている点がとても良いです。
Datadog も New Relic も高いので気軽に APM を導入したい方は SigNoz、オススメです。