Table of Contents
Great systems are not just built. They are monitored.
MetricFire is a managed observability platform that helps teams monitor production systems with clean dashboards and actionable alerts. Delivering signal, not noise. Without the operational burden of self-hosting.
はじめに
現代のインフラストラクチャがより動的かつ分散化するにつれ、メトリクスと並行したログ収集はあらゆるオブザーバビリティ戦略において重要な要素となります。これを容易かつ強力に行うため、MetricFireはGrafana Lokiを利用した直接的なログ収集パイプラインをサポートしました。これにより、サーバーからのシステムログをHosted GraphiteのLokiバックエンドに転送し、クエリ・フィルタリング・アラート設定を完全に制御しながらHosted Grafanaダッシュボード上で可視化できます。
本記事では、この新たな統合機能の設定方法と使用方法を解説します。Ubuntuサーバーへのコレクターのインストール、syslog出力全体のHosted Graphite Lokiエンドポイントへの転送、LokiをデータソースとしてGrafanaに設定する方法、生のログと抽出されたメトリクスを両方表示するダッシュボードパネルの構築手順を順を追って説明していきます。
MetricFireの新たなログ統合機能の無料体験をご希望の方は、今すぐチャットでお問い合わせください。収集から可視化まで、全工程を徹底サポートいたします!
ステップ1:サーバーにコレクターをインストール
OpenTelemetry ContribとPromtailによるログ収集をサポートしています。この例では、Grafana Lokiの公式ログ転送エージェントであるPromtailの設定方法を詳しく説明します。Promtailは軽量なバイナリとして動作し、ログファイル(/var/log/syslogなど)をtailし、HTTP経由でLokiエンドポイントに転送します。
Promtail のインストール/展開 (Ubuntu)
wget https://github.com/grafana/loki/releases/download/v3.5.3/promtail_3.5.3_amd64.deb
sudo apt-get install -y ./promtail_3.5.3_amd64.deb
Promtail を設定してログを転送
/etc/promtail/config.yml の Promtail 設定ファイルを更新し、以下を含めるようにしてください。
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: https://<YOUR-API-KEY>@www.hostedgraphite.com/logs/sink
scrape_configs:
- job_name: syslog
static_configs:
- targets:
- localhost
labels:
host: <HOST-NAME>
job: syslog
__path__: /var/log/syslog
注記:上記の設定で YOUR-API-KEY と HOST-NAME を必ず置き換え、Promtail サービスを再起動してください。
sudo systemctl restart promtail
sudo systemctl status promtail
Promtail が /var/log ファイルを読み取れるように権限を割り当てる必要がある場合もあります。
sudo usermod -aG adm promtail
sudo systemctl restart promtail
ステップ2:MetricFireのHosted GrafanaでLokiデータソースを設定
新しいログ機能の無料体験についてお問い合わせいただいた場合、お使いのHosted GraphiteアカウントにLokiアクセスキーを作成いたします。Hosted Graphiteアカウントをお持ちでない場合は、こちらから無料トライアルに登録し、Hosted Graphite APIキーとLokiアクセスキーを取得してください。
Hosted Graphiteのダッシュボードに移動し、[Settings] → [Data sources] → [Add New Data source (Loki)] の順に選択してください。次に、LokiエンドポイントのURLを追加できます。このURLには、お客様のLokiアクセスキーを含めてください。
https://www.hostedgraphite.com/logs/<UID>/<LOKI-ACCESS-KEY>
ステップ3:Hosted Grafanaでのログのクエリと表示
ログがLokiに取り込まれ、データソースが接続された後、新しいダッシュボードパネルを作成し、データソースとしてLokiを選択し、「code mode」でクエリを記述できます。
サーバーからのsyslogメッセージを表示する方法は以下の通りです。
{job="syslog", host="<HOST-NAME>"}
ログの内容を使用してさらにフィルタリングできます。
{job="syslog", host="<HOST-NAME>"} |= "systemd"
Lokiは、正規表現によるフィルタリング、行の解析、フィールド抽出を備えた強力なLogQLをサポートしています。
ステップ4:ログベースのメトリクスを抽出してグラフ化
Lokiでは、count_over_time()などの関数を使用してログをメトリクスに変換できます。これにより、生のログパターンが定量化可能なデータに変換され、グラフ化やアラート設定が可能になります。
CRON実行回数のカウント
sum by (cmd) (
count_over_time(
{job="syslog"} |= "CRON"
| regexp "CMD \\((?P<cmd>[^)]+)\\)"
[1h]
)
)
エラーのカウント
count_over_time({job="syslog"} |= "ERROR" [5m])
サービス開始/停止を名前で追跡
sum by (svc) (
count_over_time(
{job="syslog"} |= "systemd" |~ "Stopped|Started"
| pattern "<_> systemd[<pid>]: <_> <svc>.service."
[1h]
)
)
まとめ
ログとメトリクスを一箇所に集約することで、システム上で発生している状況をより明確に把握できます。今回は、UbuntuサーバーへのPromtail設定、syslogデータのHosted GraphiteのLokiエンドポイントへの転送、そのデータをGrafanaに接続し、生のログと可視化されたメトリクスの両方を確認できる実用的なダッシュボード構築の手順を解説しました。
Grafanaでログとメトリクスを統合することで、トラブルシューティングの高速化、パターンの容易な発見、パフォーマンス問題やシステムイベントに関する重要なコンテキストの把握が可能になります。ツール間を移動したりサーバーログを手動で確認したりする代わりに、単一のダッシュボード上でメトリクスの急上昇と関連する正確なログ行を関連付けられます。
このLokiを基盤としたログ統合は設定が迅速でありながら、実際の運用では強力な効果を発揮します。サービス再起動、失敗した作業、カーネル異常の追跡など、問題の発生を未然に防ぎ、解決までの時間を短縮するために必要な可視性を提供します。自動アラート、構造化ログ解析、高度なGraphiteメトリクスでこのパイプラインを拡張したい場合は、ぜひご相談ください。
MetricFireチームへのお問い合わせをお待ちしております。皆さまと共に価値あるものを創り上げていきましょう!