はじめに
最近お仕事でSigNozを使ってみました。
その中でSigNoz(が使っているClickHouse)のCold Storageとしてさくらのクラウド オブジェクトストレージを使ってみましたので利用手順などのメモを残しておきます。
SigNozとは
オープンソースのAPM & オブザーバビリティツールとのことです。
GitHubリポジトリのdescriptionには以下のように書かれています。
SigNoz is an open-source APM.
It helps developers monitor their applications & troubleshoot problems,
an open-source alternative to DataDog, NewRelic, etc. 🔥 🖥.
👉 Open source Application Performance Monitoring (APM) & Observability tool
DataDogやNewRelicの代替という位置付けを狙っているようですね。
OpenTelemetryに対応しており、メトリクス・トレース・ログをまとめて見ることが出来ます。
GIGAZINEでも紹介されていました。
類似のプロダクトとしてはhyperdxやuptraceなどがあります。
(uptraceはgo言語向けのORMであるBunを開発しているところです)
- hyperdx: http://hyperdx.io
- uptrace: http://uptrace.dev
なおSigNoz CloudというSaaS形態での利用も可能ですが、今回は手元にインストールして利用するOSS版を利用しました。
SigNozのシステム構成
SigNozのドキュメントによると以下のような構成とのことです。
SigNoz Otel Collectorに送信されたデータをClickHouseに書き込むという構成です。
ClickHouseのディスクとしてS3(互換含む)を用いることも可能です。
参考: SigNoz docs: Retension Period
今回はS3の代わりにさくらのクラウド オブジェクトストレージを使ってみました。
SigNoz + さくらのクラウド オブジェクトストレージ
利用までの手順
SigNoz + ClickHouseのディスクとしてさくらのクラウド オブジェクトストレージを使うための手順は以下の通りです。
- さくらのクラウド オブジェクトストレージ側の準備
- SigNozのインストール/セットアップ(今回はdocker composeを利用)
- ClickHouseの設定(設定ファイルの編集)
- SigNozダッシュボード上から保存期間(Retention Period)を設定
さくらのクラウド オブジェクトストレージ側の準備
バケット & 各種操作をするためのパーミッションを作成します
詳細はさくらのクラウド オブジェクトストレージのドキュメントを参照してください。
参考: https://manual.sakura.ad.jp/cloud/objectstorage/about.html#id8
パーミッション作成時に表示される「アクセスキーID」と「シークレットアクセスキー」を控えておいてください。
後ほどClickHouseの設定時に利用します。
SigNozのインストール/セットアップ(docker compose)
SigNozのセットアップを行います。今回はdocker composeを使います。
以下のドキュメントに従いSigNozのリポジトリをクローン、設定ファイルを編集した上でdocker compose up
を実行という流れです。
参考: https://signoz.io/docs/install/docker/
クローン
# クローン git clone -b main https://github.com/SigNoz/signoz.git && cd signoz/deploy/docker/clickhouse-setup
ClickHouseの設定(設定ファイルの編集)
ClickHouseの設定ファイルを編集しさくらのクラウド オブジェクトストレージを使えるようにします。
カレントディレクトリであるclickhouse-setup
配下にclickhouse-storage.xml
というファイルがありますので以下のように編集します。
{バケット名}
と{アクセスキーID}
、{シークレットアクセスキー}
は置き換えてください。
<?xml version="1.0"?> <clickhouse> <storage_configuration> <disks> <default> <keep_free_space_bytes>10485760</keep_free_space_bytes> </default> <s3> <type>s3</type> <endpoint>https://s3.isk01.sakurastorage.jp/{バケット名}//</endpoint> <access_key_id>{アクセスキーID}</access_key_id> <secret_access_key>{シークレットアクセスキー}</secret_access_key> <region>jp-north-1</region> <no_sign_request>false</no_sign_request> </s3> </disks> <policies> <tiered> <volumes> <default> <disk>default</disk> </default> <s3> <disk>s3</disk> <perform_ttl_move_on_insert>0</perform_ttl_move_on_insert> </s3> </volumes> </tiered> </policies> </storage_configuration> </clickhouse>
次にdocker-compose.yaml
を編集し、volume指定部分でのclickhouse-storage.xml
のところのコメントアウトを解除します。
@@ -107,7 +107,7 @@ services: - ./clickhouse-users.xml:/etc/clickhouse-server/users.xml - ./custom-function.xml:/etc/clickhouse-server/custom-function.xml - ./clickhouse-cluster.xml:/etc/clickhouse-server/config.d/cluster.xml - # - ./clickhouse-storage.xml:/etc/clickhouse-server/config.d/storage.xml + - ./clickhouse-storage.xml:/etc/clickhouse-server/config.d/storage.xml - ./data/clickhouse/:/var/lib/clickhouse/ - ./user_scripts:/var/lib/clickhouse/user_scripts/
SigNozの起動
あとはDocker Composeで起動します。
docker compose up -d
起動したらhttp://localhost:3301
でダッシュボードにアクセスできるはずです。
SigNozダッシュボード上から保存期間(Retention Period)を設定
あとはどれくらいの期間がすぎたらS3に移動させるかを設定します。
ダッシュボードからSettings
(localhost:3301であれば http://localhost:3301/settings )を開いて設定します。
この例ではトータルの保存期間を21日、14日をすぎたらS3に移動させるという設定になっています。
これでSigNoz + さくらのクラウド オブジェクトストレージが使えるようになりました。
終わりに
SigNozはメトリクス・トレース・ログを一箇所で見える環境を手軽に作れるというあたりが魅力的だと思います。
気になるのはデータ量についてですが、オブジェクトストレージをCold Storageとして活用することでコストを押さえつつデータの増加にも耐えられそうです。
これからもう少し使い込んでみようと思います。
以上です。