要点OTel
filelog receiver を使用して、MySQL のエラーログとスロークエリログを ClickStack で収集・可視化します。デモデータセットとあらかじめ用意されたダッシュボードが含まれています。既存の MySQL とのインテグレーション
前提条件
- 稼働中の ClickStack インスタンス
- 既存の MySQL インストール環境 (バージョン 5.7 以降)
- MySQL の設定ファイルを変更するためのアクセス権限
- ログファイルを保存するための十分なディスク容量
MySQL のログを設定する
MySQL は複数のログタイプをサポートしています。OpenTelemetry を使用して包括的に監視するには、エラーログとスロークエリログを有効にすることを推奨します。my.cnf または my.ini の設定ファイルは、通常、次の場所にあります。- Linux (apt/yum):
/etc/mysql/my.cnfまたは/etc/my.cnf - macOS (Homebrew):
/usr/local/etc/my.cnfまたは/opt/homebrew/etc/my.cnf - Docker: 通常は、環境変数またはマウントされた設定ファイルで構成します
[mysqld] セクションに次の設定を追加または変更します。スロークエリログには、
long_query_time 秒を超えたクエリが記録されます。この閾値は、アプリケーションのパフォーマンス要件に応じて調整してください。低く設定しすぎると、ログが大量に生成されます。カスタム OTel collector の設定を作成する
ClickStack では、カスタム設定ファイルをマウントして環境変数を設定することで、ベースの OpenTelemetry Collector 設定を拡張できます。このカスタム設定は、HyperDX が OpAMP 経由で管理するベース設定にマージされます。以下の設定で、mysql-logs-monitoring.yaml という名前のファイルを作成します。- 標準的な場所から MySQL のエラーログとスロークエリログを読み取ります
- 複数行にまたがるログエントリを処理します (スロークエリは複数行にまたがります)
- 両方のログフォーマットを解析し、構造化されたフィールド (level、error_code、query_time、rows_examined) を抽出します
- 元のログのタイムスタンプを保持します
- HyperDX でフィルタリングできるように
source: mysql-errorとsource: mysql-slowの attribute を追加します - 専用のパイプラインを介してログを ClickHouse エクスポーターにルーティングします
MySQL のエラーログとスロークエリログはフォーマットがまったく異なるため、2 つの receiver が必要です。
time_parser は、タイムゾーンオフセットを含む MySQL の ISO8601 タイムスタンプフォーマットを処理するために gotime layout を使用します。カスタム構成を読み込むように ClickStack を設定する
既存の ClickStack デプロイメントでカスタム collector 構成を有効にするには、カスタム構成ファイルを/etc/otelcol-contrib/custom.config.yaml にマウントし、環境変数 CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml を設定します。ClickStack のデプロイメント構成を更新します:ClickStack collector に、MySQL のログファイルを読み取るための適切な権限が付与されていることを確認してください。読み取り専用マウント (
:ro) を使用し、最小権限の原則に従ってください。HyperDX でログを確認する
設定が完了したら、HyperDX にログインして、ログが流れていることを確認します。- Search view に移動します
- ログソースを Logs に設定します
source:mysql-errorまたはsource:mysql-slowで絞り込むと、MySQL 固有のログを確認できますlevel、error_code、message(エラーログ) 、およびquery_time、rows_examined、query(スロークエリログ) などのフィールドを含む構造化されたログエントリが表示されます
デモデータセット
サンプルデータセットをダウンロードする
サンプルのログファイルをダウンロードします。- エラーログのエントリ (起動メッセージ、警告、接続エラー、InnoDB メッセージ)
- 現実的なパフォーマンス特性を反映した低速クエリ
- 接続のライフサイクルイベント
- データベースサーバーの起動および停止のシーケンス
HyperDX でログを確認する
ClickStack の起動後:- ClickStack が完全に初期化されるまで少し待ちます (通常は 30〜60 秒)
- HyperDX を開いてアカウントにログインします (必要に応じて先にアカウントを作成してください)
- Search view に移動し、ログソースを
Logsに設定します - 時間範囲を 2025-11-13 00:00:00 - 2025-11-16 00:00:00 に設定します
- 合計 40 件のログが表示されるはずです (
source:mysql-demo-errorのエラーログ 30 件 +source:mysql-demo-slowのスロークエリ 10 件)
40 件すべてのログがすぐに表示されない場合は、collector が処理を完了するまで 1 分ほど待ってください。それでもログが表示されない場合は、
docker restart clickstack-demo を実行し、さらに 1 分ほど待ってからもう一度確認してください。これは、既存ファイルを start_at: beginning で一括ロードする際の OpenTelemetry filelog receiver に関する既知の問題です。start_at: end を使用する本番デプロイでは、ログは書き込まれると同時にリアルタイムで処理されるため、この問題は発生しません。タイムゾーン表示HyperDX では、タイムスタンプはブラウザーのローカルタイムゾーンで表示されます。デモデータの期間は 2025-11-14 00:00:00 - 2025-11-15 00:00:00 (UTC) です。時間範囲を広めに設定しているため、どの地域からでもデモログを確認できます。ログが表示されたら、より見やすく可視化できるよう、範囲を 24 時間に絞ることもできます。
ダッシュボードと可視化
ダッシュボード設定
あらかじめ用意されたダッシュボードをインポートする
- HyperDX を開き、Dashboards セクションに移動します
- 右上の三点メニュー内にある Import Dashboard をクリックします
mysql-logs-dashboard.jsonファイルをアップロードし、Finish Import をクリックします
ダッシュボードを表示する
ダッシュボードは、すべての可視化があらかじめ設定された状態で作成されます。デモデータセットでは、時間範囲を 2025-11-14 00:00:00 - 2025-11-15 00:00:00 (UTC) に設定してください (ローカルのタイムゾーンに応じて調整してください) 。インポートしたダッシュボードには、デフォルトでは時間範囲が設定されていません。
トラブルシューティング
カスタム設定が読み込まれない
HyperDX にログが表示されない
スロークエリログが表示されない
ログが正しくパースされない
次のステップ
- 重要なイベント (接続障害、しきい値を超えるスロークエリ、エラーの急増) に対するアラートを設定する
- クエリパターンごとのスロークエリ分析用に、カスタムダッシュボードを作成する
- 観測されたクエリ性能の傾向に基づいて、
long_query_timeを調整する