【ITニュース解説】Use Coolify to self-host SigNoz
2025年09月10日に「Dev.to」が公開したITニュース「Use Coolify to self-host SigNoz」について初心者にもわかりやすく解説しています。
ITニュース概要
Coolifyのテンプレート活用で、システム監視ツールSigNozを簡単にセルフホストできる。Docker Composeでデプロイし、URLやログ・メトリクス収集のOtel Collectorを設定。ヘルスチェック修正やSMTP有効化も可能で、アップデートも簡単に行える。
ITニュース解説
システムが正常に動作しているか、問題が発生していないかを常に把握することは、現代のシステム開発において非常に重要だ。この能力を「オブザーバビリティ」と呼び、システムがなぜ、どのように動作しているかを外部から詳しく観察できるようにすることを指す。しかし、オブザーバビリティを実現するためのツールを導入し、適切に設定するには、多くの時間と専門知識が必要となる場合がある。
幸いなことに、Coolifyというツールを使うことで、オープンソースのオブザーバビリティプラットフォームであるSigNozを、自分たちで管理するサーバー(自己ホスティング)に簡単にデプロイできるようになっている。Coolifyは、Docker Composeという技術を利用し、複数のソフトウェアをまとめて動かすための設定ファイルを使って、アプリケーションのデプロイと管理を効率化するプラットフォームである。今回のニュース記事では、Coolifyを使ってSigNozを自己ホスティングする具体的な手順について解説されている。
まず、SigNozをCoolifyに追加するには、Docker Composeファイルが必要となる。このファイルには、SigNozを構成する複数のコンテナ(アプリケーションを隔離して実行する仮想的な環境)をどのように起動し、連携させるかという情報が記述されている。現在、SigNozのテンプレートはCoolifyに組み込まれつつある段階だが、一時的に、公開されているsignoz.yamlというDocker Composeファイルの内容をコピーし、Coolify上で新しいDocker Composeサービスとして作成することで利用できる。このファイルを所定のフィールドに貼り付け、サービス名をSigNozと設定すれば、基本的な準備は完了する。
サービスが作成されたら、次にSigNozにアクセスするためのURLを設定する。SigNoz本体にアクセスするためのメインURLを設定するとともに、特に重要なのが「OpenTelemetry Collector(OTel Collector)」というサービスのURL設定だ。OTel Collectorは、アプリケーションから送られてくるトレース(処理の流れ)、メトリクス(性能指標)、ログ(動作記録)といった様々な監視データを収集し、SigNozに転送する役割を担う。OTel Collectorは、OpenTelemetryのGRPC形式やHTTP形式、Prometheusのメトリクス形式、FluentBit/FluentDなどのログ形式といった、非常に多岐にわたるデータ形式に対応している。
これらの異なるデータ形式を受け取るために、OTel Collectorはそれぞれ異なるポート番号(ネットワーク上でサービスを識別するための番号)を使用する。これらのポートを外部からアクセスできるように設定する方法は二通りある。一つは、受信するデータ形式ごとにサブドメイン(例:signoz-grpc.example.com)を設定し、それらをOTel Collectorサービスにマッピングする方法だ。この方法では、Coolifyの設定画面で、各サブドメインとコンテナ内部のポート番号を関連付ける。もう一つは、Docker Composeファイルを直接編集し、OTel CollectorコンテナのポートをサーバーのホストOSに直接公開する方法だ。これにより、一つのメインドメインに対してポート番号を付加する形でデータを受け取ることができる。どちらの方法を選択するかは、セキュリティ要件やドメイン管理のアーキテクチャによって決まる。
SigNozのサービスを起動すると、CoolifyがSigNozの一部のコンテナを「不健全」と報告し続ける問題が発生することがある。これは、「Schema Migrator Sync」「Schema Migrator Async」「Init Clickhouse」といった、一度実行されたら終了する性質を持つコンテナが原因だ。Coolifyは、これらのコンテナが終了したことをもってエラーと判断してしまうため、これらをサービスのヘルスチェック(健全性チェック)の対象から除外する必要がある。Coolifyのサービス設定画面で、これらのコンテナを「サービスステータスから除外」する設定を行い、その後SigNozサービス全体を再デプロイすれば、正しく健全な状態が報告されるようになる。
さらに、SigNozにメール送信機能を有効化することもできる。これには、Coolifyの環境変数設定を利用する。SIGNOZ_EMAILING_ENABLEDをtrueにし、SIGNOZ_EMAILING_SMTP_ADDRESSにSMTPサーバー(メール送信サーバー)のアドレスとポート番号、SIGNOZ_EMAILING_SMTP_FROMに送信元メールアドレスを設定する。さらに、必要に応じてSIGNOZ_EMAILING_SMTP_AUTH_USERNAMEとSIGNOZ_EMAILING_SMTP_AUTH_PASSWORDで認証情報を設定する。これらの環境変数は、Docker Composeファイル内のSigNozコンテナの環境変数セクションに追加し、その後にCoolifyの環境変数タブで実際の値を設定する手順となる。
SigNozの新しいバージョンがリリースされた場合も、Coolifyを使えば簡単に更新できる。Coolifyのサービス設定画面から、「Advanced」メニューにある「Pull Latest Images and Restart」を選択するだけで、Coolifyが最新のコンテナイメージをダウンロードし、SigNozサービスを再起動してくれる。これには数分かかる場合があるが、これで常に最新の機能とセキュリティアップデートを利用できるようになる。
このように、CoolifyとSigNozを組み合わせることで、オブザーバビリティ環境の構築が大幅に簡素化される。SigNozが稼働すれば、アプリケーションやインフラストラクチャからのログ、トレース、メトリクスを収集し、システムの深い洞察を得ることが可能になる。さらに詳しい使い方や、アプリケーションへの組み込み方については、SigNozの公式ドキュメントや、OpenTelemetryのドキュメントを参照することが推奨される。これらの資料は、オブザーバビリティを最大限に活用するための具体的なガイダンスを提供してくれるだろう。