シェア
//Prometheus / Loki / Grafanaによるシステムの監視設定 (第1部)

Prometheus / Loki / Grafanaによるシステムの監視設定 (第1部)

現在のデジタル化の世界において、情報システムはほとんどすべての生活やビジネスの側面で欠かせない役割を果たしています。Webアプリケーション、オンラインサービス、データベース、ネットワークインフラに至るまで、そのすべてです。したがって、システムのパフォーマンスと信頼性を確保することは、あらゆる企業の運営において非常に重要な要素です。安定したシステムは業務効率を向上させ、企業の製品に対するユーザーエクスペリエンスを改善します。監視システムを構築することにより、すべてがコントロール下にあり、問題が発生した際に迅速に対応できることが保証されます。それでは、監視システムを構築しない場合の影響や、Prometheus、Loki、Grafanaを使った監視モデルの設定方法について、以下の記事を通じて見ていきましょう。

システム監視がない場合のリスクと影響

監視がないシステムは、多くのリスクに直面し、その結果、組織の品質やパフォーマンスに悪影響を与えます。監視システムを導入しない、または効果的に機能しない場合に直面する可能性のあるいくつかの問題を以下に示します。

パフォーマンスの低下と潜在的な障害

監視システムがなければ、システムのパフォーマンスに影響を与える潜在的な問題を認識することはできません。パフォーマンスに関連するデータを追跡して記録する仕組みがなければ、「処理速度が遅い」、「リソースの使用が過剰」、「応答時間が長くなる可能性」などの問題を正確に検出することが困難です。このような問題は予期しない障害を引き起こし、業務を中断させることもあります。

予測と計画能力の欠如

監視システムがなければ、将来的な問題を予測するためのデータが得られず、計画を立てることも困難です。監視データは、システムのパフォーマンスの成長や変化の傾向を明確にするのに役立ちます。この情報が欠けていると、リソースの計画、インフラの拡張、最適化が難しくなり、リソースの浪費や迅速な対応計画の障害を引き起こす可能性があります。

調査と修復の能力の欠如

障害が発生した場合、データがなければ原因の特定と修復が困難になります。障害前後のシステムの動作に関する情報が不足していると、根本原因の特定と修復に必要な時間が増加し、調査に不必要な時間がかかることになります。これにより、顧客満足度や企業の評判に悪影響を及ぼす可能性があります。

監視とアラートの欠如

監視されていないシステムでは、即座に介入する必要がある重要な状況を見逃す可能性があります。監視指標(メトリック)を追跡するためのアラート機能やダッシュボードがない場合、リソース不足、セキュリティ問題、予期しないリスクなどの問題が早期に検出されないまま発生する可能性があります。これにより、システムの安定性やセキュリティに深刻な影響を与えることがあります。

Prometheus, Loki, Grafana: システム監視のためのソリューション

上記のリスクを解決するために、Prometheus、Loki、Grafanaなどの監視ツールの使用が不可欠です。これらのツールは、パフォーマンスデータ、ログの収集、情報の可視化を自動化することにより、システムの状態と動作に関する包括的な視点を提供します。

これらのツールを組み合わせて監視システムを設定することにより、企業は予測能力、障害対応能力、セキュリティ問題の追跡と検出能力を向上させることができます。

Prometheusとは?

Prometheusは、システム監視へのアプローチを変革したオープンソースプロジェクトです。さまざまなソースからシステムのパフォーマンスと耐障害性に関するデータを収集できる能力を持ち、柔軟で正確な方法でシステムを監視し、分析することを可能にします。

Prometheusは、システムリソース、アプリケーション、およびその他のコンポーネントに関するメトリックを収集します。これらのパラメータは、アラートの生成、統計の作成、およびシステムの進行状況を監視するためのグラフに使用されます。

Prometheusは、タイムスタンプとともにメトリックのデータを時系列データとして保存し、オプションでkey – valueペアを追加できます。このペアはラベルと呼ばれ、データのフィルタリングに使用されます。

Lokiとは?

システム監視においてもう一つ重要な要素は、ログの監視です。Lokiは、Prometheusから派生したプロジェクトで、システムのログの収集、トレース、分析に焦点を当てています。

Lokiは、さまざまなソースからのログを効率的に検索、フィルタリング、トレースできるように設計されています。PrometheusとLokiを組み合わせることで、企業はシステムのメトリックとログの両方を把握でき、システムの状態に関する詳細な視点を得ることができます。

Grafanaとは?

データを監視し、収集することは重要ですが、それを企業が理解できる有益な情報に変換するのはGrafanaの役目です。

Grafanaは、データを視覚化するための強力なプラットフォームです。これにより、サーバーから収集されたデータとメトリックを使って、ダッシュボードやグラフを作成し、情報を視覚的に効率的に表示できます。

Prometheus、Loki、Grafanaを組み合わせることで、企業は統合されたダッシュボードを作成し、システムの状態を全体的に把握でき、セキュリティのリスクや潜在的な問題を簡単に識別できる強力なシステムを構築できます。

システム監視モデルの展開

このガイドの範囲では、以下の情報源を監視する基本的なシステム監視のセットアップを行います:

  1. サーバーのCPU使用率
  2. サーバーのメモリ使用率
  3. sshdプロセスの監視
  4. /var/log/messagesシステムログ
  5. Cronジョブのログ

使用するツール:

  1. Prometheus: サービスやアプリケーションのメトリックを収集・視覚化するツール
  2. Loki: システムログとクエリ
  3. Grafana: データを視覚的なインターフェースに変換するツール
  4. Node Exporter: メトリック収集ツール
  5. Promtail: ログの形式設定ツール
  1. デモサーバーの構造
サーバー名サーバーIP構成使用ツール
監視対象サーバー192.168.88.233OS: Centos8
Ram: 2GB
CPU: 2Core
・Node Exporter
・Process Exporter
・Promtail
監視サーバー192.168.88.206OS: Centos8
Ram: 2GB
CPU: 2Core
・Grafana
・Loki
・Prometheus

サーバー監視のセットアップ手順

1. 監視対象サーバーの設定

Node Exporter、Process Exporter、Promtailなどの必要なツールをインストールします。

a. Node Exporterのインストール

最新バージョンを以下からダウンロードします:Prometheus

# ソースをダウンロードするためのフォルダーを作成
$ mkdir /usr/local/src/prometheus
# 作成したソースフォルダーに移動
$ cd /usr/local/src/prometheus
# ソースファイルをダウンロード
$ wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
# ダウンロードしたファイルを解凍
$ tar zxvf node_exporter-1.6.1.linux-amd64.tar.gz
$ mv node_exporter-1.6.1.linux-amd64.tar.gz node_exporter
# /usr/binに保存
$ cp -r node_exporter /usr/bin

起動スクリプトを作成します。

# 起動スクリプトを作成
$ vi /usr/lib/systemd/system/prometheus-node-exporter.service

prometheus-node-exporter.serviceの内容は次の通りです:

[Unit]
Description=Node Exporter
Documentation=https://github.com/prometheus/node_exporter
[Service]
Type=simple
ExecStart=/usr/bin/node_exporter/node_exporter $OPTIONS
Restart=always
[Install]
WantedBy=multi-user.target

サービスを起動し、動作を確認します。

# デーモンを再読み込み
$ systemctl daemon-reload
# サービスの自動起動設定
$ systemctl enable prometheus-node-exporter.service
# サービスを起動
$ systemctl start prometheus-node-exporter.service
# サービスのステータスを確認
$ systemctl status prometheus-node-exporter.service

結果を確認します。

# APIを呼び出して確認
$ curl 192.168.88.233:9100/metrics

結果は次のように正しいです。

b. Process Exporterのインストール

最新バージョンを以下からダウンロードします:Process Exporter

# ソースをダウンロードするためのフォルダーを作成
$ mkdir /usr/local/src/process-exporter
# 作成したソースフォルダーに移動
$ cd /usr/local/src/process-exporter
# ソースファイルをダウンロード
$ wget https://github.com/ncabatoff/process-exporter/releases/download/v0.7.10/process-exporter-0.7.10.linux-amd64.tar.gz
# ダウンロードしたファイルを解凍
$ tar zxvf process-exporter-0.7.10.linux-amd64.tar.gz
$ mv process-exporter-0.7.10.linux-amd64 process-exporter
# /usr/binに保存
$ cp -r /usr/local/src/process-exporter/process-exporter /usr/bin
# プロセスエクスポーター用の設定ファイル用フォルダを作成
$ mkdir /etc/process-exporter
# 設定ファイルを作成
$ vi /etc/process-exporter/config.yml

設定ファイルの内容は以下の通りです:

process_names:
  - cmdline:
    - .+

起動スクリプトを作成します。

$ vi /usr/lib/systemd/system/process-exporter.service

process-exporter.serviceの内容は次の通りです:

[Unit]
Description=Process Exporter
Documentation=https://github.com/ncabatoff/process-exporter
[Service]
Type=simple
ExecStart=/usr/bin/process-exporter/process-exporter \
  -config.path /etc/process-exporter/config.yml
[Install]
WantedBy=multi-user.target

サービスを起動し、動作を確認します。

# デーモンを再読み込み
$ systemctl daemon-reload
# サービスの自動起動設定
$ systemctl enable process-exporter.service
# サービスを起動
$ systemctl start process-exporter.service
# サービスのステータスを確認
$ systemctl status process-exporter.service

サービスの状態が正しく表示されれば、インストールが成功です。

APIを呼び出して結果を確認します。

# APIを呼び出して確認
$ curl 192.168.88.233:9256/metrics

結果は次の通りです。

c. Promtailのインストール

最新バージョンを Grafana/Loki からダウンロードしてインストール

# ソースをダウンロードするためのフォルダーを作成
$ mkdir /usr/local/src/promtail
# 作成したソースフォルダーに移動
$ cd /usr/local/src/promtail
# ソースの圧縮ファイルをダウンロード
$ curl -O -L "https://github.com/grafana/loki/releases/download/v2.8.4/promtail-linux-amd64.zip"
# ダウンロードしたファイルを解凍
$ unzip "promtail-linux-amd64.zip"
# ファイルに実行権限を付与
$ chmod a+x promtail-linux-amd64
# /usr/bin に保存
$ cp -r /usr/local/src/promtail/promtail-linux-amd64 /usr/bin

設定ファイル promtail-local-config.yaml をダウンロード

# 設定ファイルをダウンロードするためのフォルダーを作成
$ mkdir /etc/promtail
# 作成したフォルダーに移動
$ cd /etc/promtail
# 設定ファイルをダウンロード
$ wget https://raw.githubusercontent.com/grafana/loki/main/clients/cmd/promtail/promtail-local-config.yaml

設定ファイル promtail-local-config.yaml を適切に編集

  • 監視サーバーからの情報をプッシュするサーバーのIPを更新(監視サーバーのIPは 192.168.88.206)
  • システムログとcronジョブログを収集できるように設定:
    /var/log/messages と /var/log/crond
  • 設定ファイル /etc/promtail/promtail-local-config.yaml を以下のように変更
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yam
clients:
- url: http://192.168.88.206:3100/loki/api/v1/push
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
      __path__: /var/log/messages
- job_name: cron
  static_configs:
  - targets:
     - localhost
    labels:
      job: cronlogs
      __path__: /var/log/cron

起動スクリプトの作成

$ vi /usr/lib/systemd/system/promtail.service

スクリプト promtail.service の内容は以下の通り

[Unit]
Description=Promtail
Documentation=https://github.com/grafana/loki/releases/
[Service]
Type=simple
ExecStart=/usr/bin/promtail-linux-amd64 \
  --config.file=/etc/promtail/promtail-local-config.yaml
[Install]
WantedBy=multi-user.target

サービスを再起動し、結果を確認

# リロードと起動
$ systemctl daemon-reload
$ systemctl enable promtail.service
$ systemctl start promtail.service
$ systemctl status promtail.service

サービスの状態が以下のように表示されることを確認

APIで結果を確認

# APIを使って確認
$ curl 192.168.88.233:9080/targets

結果は以下の通りです

ブラウザ(Chrome)でPromtailが動作していることを確認:リンク
http://192.168.88.233:9080/targets

パート1終了

* パート2では、サーバー監視の設定方法について説明します。引き続き記事をお楽しみに!

Phan Văn Liền
ウェブ開発者

今すぐ応募







    福利厚生

    給料・ボーナス制度

    社員の感情・願望を理解しているので、リバークレーンベトナムは特に年2回の定期昇給制度を設けています。毎年6月と12月に評価を行い、毎年1月と7月に給与が変更されます。また、社員は月次と年次の優秀な個人には定期的な業績賞与が別で支給されます。

    日本研修制度

    世界中の新しい技術分野に触れるために、社員を日本にオンサイトさせる方針があります。さらに、技術分野か管理分野かのキャリアパスは社員の決定次第です。

    毎年社員旅行

    リバークレイン・ベトナムは、スタッフに挑戦の機会を提供するだけでなく、年に一度の魅力的な旅行で彼らを楽しませています。エキサイティングなガラディナーやチームビルディングゲームは、リバークレインのメンバー同士の絆をさらに深める手助けをします。

    リバークレイン イベント

    チームビルディング・ファミリーデー・お夏休み・中秋節などのイベントはチーム内のメンバーが接続出来るしお互いに自分のことを共有出来る機会です。ご家族員に連携する際にはそれも誇りに言われています。

    社会保険制度

    リバークレーンベトナムは従業員に社会保険、医療保険、失業手当などの社会保険制度があります。当社は、これらの保険に関するあらゆる手続きをスタッフに必ずサポートしています。さらに、他の保険契約も考慮され、検討されています。

    他福利

    社員向けの活動をサポートすることもあります。 ・文化・芸術・スポーツクラブの運営費用 ・技術研究の教科書を購入する金額 ・エンジニア試験・言語能力試験を受験料 ・ソフトスキルのセミナー・コースの参加費 ・等 また会社政策通り、他のベネフィットもあります。

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close