DEV Community

Cover image for [DevSecOps] #3 Prometheus,Grafanaを使用したサーバ監視基盤の構築手順
mizuki04
mizuki04

Posted on • Edited on

[DevSecOps] #3 Prometheus,Grafanaを使用したサーバ監視基盤の構築手順

Prometheus,Grafanaを使用したサーバ監視基盤の構築手順

目次--------------------------------

0.はじめに

1.Architecture

2.Prometheus導入手順

3.Node_exporter導入手順

4.Grafana導入手順①(インストール&初期設定)

5.Grafana導入手順②(ダッシュボード初期設定)

-----------------------------------

0.はじめに

監視運用を行う上で、クラウド環境上の既存ツールを利用しているが、グラフの描画が見にくかったり、アラート通知の設定が複雑だったり、サーバ増築時の追加設定が面倒だったりと痒いところに手が届かないポイントが幾つかあるかと思います。そんな時にオススメできるのがPrometheus(監視)+Grafana(可視化)の監視体制がオススメです。具体的には以下の点が容易に実装できることがメリットです。またPrometheusはSoundcloud(https://soundcloud.com)社がリリースしているツールであり、Soundcloudのサービスに馴染みがある方もいるのではないかと思います。

  • 監視対象のサーバーから情報を取得 & 保管
  • 保管済みデータに対して集計クエリを発行できる
  • しきい値を超えた場合のアラート (メール、Slack、がんばればTwilioで電話)
  • 柔軟なアラート設定 (同じエラーはまとめて通知とかの設定ができる)
  • 構築が比較的容易

1.Architecture

まず、各ツールの役割は以下のようになっております。

①Prometheus : サーバ監視基盤
②Grafana : Prometheusのデータを可視化&アラート検知/作成する
③Node_exporter : 被監視サーバのリソースデータをPrometheusへPushする

Alt Text

今回のアーキテクチャはPrometheus,Grafanaをそれぞれ一つのEC2インスタンスに導入し稼働させる構成としています。また監視対象のサーバはAPサーバ群(n台)としています。

2.Prometheus導入手順

環境

Amazon Linux 2 AMI (HVM), SSD Volume Type
Prometheus 2.3.2

今回はAWSに作成されたEC2インスタンスを利用して構築していきます。IPアドレスはそれぞれの環境に合わせて変更ください。

Prometheusの導入

Prometheusサーバにssh接続をし以下の手順で導入を行っていきます。

port 開放

プロメテウスサーバーはデフォルトだと9090ポートでlistenするので開放します。(解放済みの場合はスキップ)

firewall-cmd --add-port=9090/tcp --zone=public --permanent
firewall-cmd --reload
firewall-cmd --list-ports --zone=public
Enter fullscreen mode Exit fullscreen mode

Prometheus Serverのインストール

wget https://github.com/prometheus/prometheus/releases/download/v*.*.*/prometheus-*.*.*.linux-amd64.tar.gz
tar zxvf prometheus-*.*.*.linux-amd64.tar.gz
mv prometheus-*.*.*.linux-amd64 promethus-server
cd promethus-server
cp prometheus.yml prometheus.yml.org
(ver.は任意)
Enter fullscreen mode Exit fullscreen mode

解凍後のディレクトリに入りprometheus.ymlを編集する。- targets:以下に監視対象のサーバip:9100を追加していく

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets:
        - 'XXX.XXX.XXX.XXX:9100'
Enter fullscreen mode Exit fullscreen mode

起動スクリプト作成(任意)

/usr/lib/systemd/system/prometheus.service

[Unit]
Description=Prometheus - Monitoring system and time series database
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/src/prometheus/prometheus-server/prometheus \
  --config.file=/usr/local/src/prometheus/prometheus-server/prometheus.yml \

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode

起動

systemctl daemon-reload
自動起動設定
systemctl enable prometheus.service
起動
systemctl start prometheus.service
Enter fullscreen mode Exit fullscreen mode

バイナリを直接起動する場合は以下

nohup ./node_exporter &
Enter fullscreen mode Exit fullscreen mode

grepしてプロセスがスタートしていることを確認できたらOK

確認

http://<プロメテウスサーバーのIPアドレス>:9090/graphに接続すると
以下のようなページが表示されると思います。表示されたら、インストール&初期設定完了
Alt Text

3.Node_exporter導入手順

被監視サーバにssh接続をし以下の手順で導入を行っていきます。

port 開放

デフォルトだと9100ポートでlistenするので開放します

firewall-cmd --add-port=9100/tcp --zone=public --permanent
firewall-cmd --reload
-- 確認 --
firewall-cmd --list-ports --zone=public
9100/tcp
Enter fullscreen mode Exit fullscreen mode

Node Exporterのインストール

wget https://github.com/prometheus/node_exporter/releases/download/v0.16.0/node_exporter-*.**.*.linux-amd64.tar.gz
tar zxvf node_exporter-*.**.*.linux-amd64.tar.gz
Enter fullscreen mode Exit fullscreen mode

起動スクリプト作成

[Unit]
Description=Node Exporter
Documentation=https://github.com/prometheus/node_exporter

[Service]
Type=simple
ExecStart=EnvironmentFile=/usr/local/src/prometheus/node_exporter/node_exporter $OPTIONS
Restart=always

[Install]
WantedBy=multi-user.target
Enter fullscreen mode Exit fullscreen mode

起動

/usr/lib/systemd/system/prometheus-node-exporter.service

systemctl daemon-reload
-- 自動起動設定 --
systemctl enable prometheus.service
-- 起動 --
systemctl start prometheus.service
Enter fullscreen mode Exit fullscreen mode

確認

http://<監視対象サーバーのIPアドレス>/metricsに接続すると
以下のようなステータスが記載されたページが開くと思います。

ブラウザでip:9100/metriksへアクセスしてみて以下のようにスクレイプ情報が表示されたら正常に動作しています。
Alt Text

4.Grafana導入手順①(インストール&初期設定)

Grafanaサーバにssh接続をし以下の手順で導入を行っていきます。

インストール

wget https://dl.grafana.com/oss/release/grafana-6.2.5.linux-amd64.tar.gz 
tar -zxvf grafana-6.2.5.linux-amd64.tar.gz 
Enter fullscreen mode Exit fullscreen mode

起動

systemctl start grafana-server
Enter fullscreen mode Exit fullscreen mode

バイナリを直接起動する場合は以下

nohup ./grafana &
Enter fullscreen mode Exit fullscreen mode

grepしてプロセスがスタートしていることを確認できたらOK

アクセス

HTTPで3000番ポートにアクセスとあるので、ブラウザからやってみます。
Alt Text

初期ユーザ、パスワードのadmin/adminでログインします。

パスワードの変更

真っ先にやることは、デフォルトパスワードの変更です。画面左下のアイコンをクリックして、Preferencesを選びます。
Alt Text

次の画面で、Chenge Passwordを選択。新旧パスワードを入力して変更します。

データソースの登録

次にデータソースを登録していきます。

Alt Text

Deta Sourcesをクリックします。

Alt Text

名前を入力したらAdd data sourceをクリックしPrometheusを選択

Alt Text

Prometheusを選択する。

Alt Text

ここでhttp://localhost:9090のipはprometheusサーバのipへ変更

Alt Text

「Deta source is working」の表示が出たら設定完了

5.Grafana導入手順②(ダッシュボード初期設定)

データ連携が完了したら、次はデータの可視化を行うダッシュボードを作成していきます。ですが、予めダッシュボードの設計をしていない場合はテンプレートの利用がオススメです。

まず、目的に合わせてGrafanaのテンプレートを選定します。

Alt Text

「Grafana Labs」の「Downloads」にマウスオーバし、「Dashboards」をクリックしましょう。

Alt Text

すると上記のように、ダッシュボードの候補が表示されます。各ページに飛ぶとDashboard id表示されているのでコピーします。

Alt Text

そして、それをGrafanaのImportにidを入力しLoadするとダッシュボードが作成されます。

Alt Text

作成されたダッシュボードに移動し、データが監視データがトラッキングできていれば、完了です。

Alt Text

上記のようなサーバリソース情報が出力されていることが確認できます。

Top comments (0)