集中監視とアラート
単一サーバーを超えて監視を拡張します。メトリクスとログを中央システムに送信し、ダッシュボードを作成し、ユーザーが気づく前に問題を把握できるようアラートを設定します。
「集中監視とアラート」はCoddyKit上の無料Linux Server Deployment & SSH Masteryレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLinux Server Deployment & SSH Mastery学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
一元化する理由
1台のマシンであれば、topやjournalctlを使って各サーバーにログインしても問題ありません。しかしサーバーが増えると、この方法は拡張できず、問題が起きても確認するまで気付けません。
一元監視では、すべてのサーバーからメトリクスとログを1か所に集め、ダッシュボードと自動アラートで確認できます。
メトリクスとログの違い
可観測性を支えるデータには、次の2種類があります。
- メトリクス — CPU使用率、メモリ、リクエストレートなどの数値時系列データ
- ログ — エラーやアクセス記録などの個別のテキストイベント
通常は両方を収集しますが、それぞれに最適化された異なるツールを使用します。
Prometheusのモデル
Prometheusは、広く使われているメトリクスシステムです。各サーバーが公開するHTTPエンドポイントをスクレイピングして、メトリクスをプルします。
各サーバーではexporterを実行します。ホストのメトリクスにはnode_exporterを使い、Prometheusが読み取るデータを公開します。
# On each monitored server:
sudo apt install prometheus-node-exporter
curl http://localhost:9100/metrics | headスクレイプ対象の設定
Prometheusがスクレイプする対象は、設定ファイルで指定します。各ジョブには対象(exporterのhost:port)を列挙します。
このスニペットは、2台のサーバー上のnode_exporterからスクレイプします。
scrape_configs:
- job_name: 'nodes'
static_configs:
- targets: ['web1:9100', 'web2:9100']PromQLによるメトリクスのクエリ
Prometheusには独自のクエリ言語PromQLがあります。これを使って、サーバー群全体のレートや平均などを計算できます。
この式は、サーバーごとのCPU使用率を推定します。
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode='idle'}[5m])) * 100)Grafanaによる可視化
GrafanaはPrometheusやその他多くのデータソースに接続し、ダッシュボードを作成します。Prometheusをデータソースとして追加し、PromQLクエリからパネルを作成します。
node_exporter用の既成ダッシュボードを使えば、数分でCPU、メモリ、ディスク、ネットワークのグラフを表示できます。
sudo apt install grafana
sudo systemctl enable --now grafana-server
# Open http://server:3000 and add Prometheus as a data sourceログの一元化
ログについては、各サーバーから中央の保存先に送信します。よく使われる構成は、Grafanaと連携するLokiとPromtailの組み合わせです。
Promtailを各サーバーで実行し、ログファイルとジャーナルをLokiに転送します。
# promtail tails the journal and ships to Loki
clients:
- url: http://loki:3100/loki/api/v1/push
scrape_configs:
- job_name: journal
journal:
max_age: 12hアラートルールの定義
アラートによって、メトリクスを対応につなげられます。Prometheusのアラートルールは、式が一定時間にわたって真である場合に発火します。
このルールは、ノードが2分間停止している場合にアラートを発します。
groups:
- name: node
rules:
- alert: NodeDown
expr: up == 0
for: 2m
labels:
severity: critical
annotations:
summary: 'Instance {{ $labels.instance }} is down'アラートの振り分け
Alertmanagerは発火したアラートを受け取り、メール、Slack、PagerDutyなど適切な送信先に振り分けます。また、アラートの重複排除や抑制も行います。
severityのようなラベルに基づいて、アラートを受信者に割り当てます。
route:
receiver: 'team-slack'
receivers:
- name: 'team-slack'
slack_configs:
- channel: '#alerts'アラート疲れを防ぐ
アラートがまったくないのと同じくらい、多すぎるアラートも問題です。人はアラートを無視するようになります。適切なアラート設計では、次の点を心がけます。
- すべてのメトリクスの変動ではなく、ユーザーが感じる症状に対してアラートを発します
forで継続時間を指定し、フラッピングを防ぎます- 重大度を設定して、ノイズをフィルタリングできるようにします
ベストプラクティス
長期的に使える可観測性を構築するためのポイントです。
- メトリクスとログの両方を一元的に収集します
- コミュニティ製のダッシュボードを基に始め、必要に応じてカスタマイズします
- 対応可能な条件に対してのみアラートを発します
- アラートが実際に届くことをテストします
理解度チェック
一元監視についての理解度を確認しましょう。
振り返り
これで、サーバー群全体を一元的に監視できるようになりました。
- node_exporterをPrometheusでスクレイプし、PromQLでクエリするメトリクス
- Grafanaのダッシュボード
- Promtail経由でLokiに送るログ
- Prometheusのルールで検出し、Alertmanagerで振り分けるアラート
これにより、1台のサーバーのログ管理スキルを、サーバー群全体を対象としたプロアクティブな可観測性へと発展させられます。
よくある質問
「集中監視とアラート」レッスンは無料ですか?
はい。「集中監視とアラート」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Linux Server Deployment & SSH Masteryコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Linux Server Deployment & SSH Masteryコースには全4レッスンが含まれています。
「集中監視とアラート」で何を学びますか?
単一サーバーを超えて監視を拡張します。メトリクスとログを中央システムに送信し、ダッシュボードを作成し、ユーザーが気づく前に問題を把握できるようアラートを設定します。 ブラウザで直接実行するハンズオンコードでLinux Server Deployment & SSH Masteryを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Linux Server Deployment & SSH Masteryを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLinux Server Deployment & SSH Masteryは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「集中監視とアラート」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLinux Server Deployment & SSH Masteryレッスンでコードを書いて実行できますか?
はい。すべてのLinux Server Deployment & SSH Masteryレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- システム監視ツール
- システムログを理解する
- ログローテーションとアーカイブ
- 集中監視とアラート