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する
今回のアーキテクチャは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
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.は任意)
解凍後のディレクトリに入り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'
起動スクリプト作成(任意)
/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
起動
systemctl daemon-reload
自動起動設定
systemctl enable prometheus.service
起動
systemctl start prometheus.service
バイナリを直接起動する場合は以下
nohup ./node_exporter &
grepしてプロセスがスタートしていることを確認できたらOK
確認
http://<プロメテウスサーバーのIPアドレス>:9090/graphに接続すると
以下のようなページが表示されると思います。表示されたら、インストール&初期設定完了
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
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
起動スクリプト作成
[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
起動
/usr/lib/systemd/system/prometheus-node-exporter.service
systemctl daemon-reload
-- 自動起動設定 --
systemctl enable prometheus.service
-- 起動 --
systemctl start prometheus.service
確認
http://<監視対象サーバーのIPアドレス>/metricsに接続すると
以下のようなステータスが記載されたページが開くと思います。
ブラウザでip:9100/metriksへアクセスしてみて以下のようにスクレイプ情報が表示されたら正常に動作しています。
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
起動
systemctl start grafana-server
バイナリを直接起動する場合は以下
nohup ./grafana &
grepしてプロセスがスタートしていることを確認できたらOK
アクセス
HTTPで3000番ポートにアクセスとあるので、ブラウザからやってみます。
初期ユーザ、パスワードのadmin/adminでログインします。
パスワードの変更
真っ先にやることは、デフォルトパスワードの変更です。画面左下のアイコンをクリックして、Preferencesを選びます。
次の画面で、Chenge Passwordを選択。新旧パスワードを入力して変更します。
データソースの登録
次にデータソースを登録していきます。
Deta Sourcesをクリックします。
名前を入力したらAdd data sourceをクリックしPrometheusを選択
Prometheusを選択する。
ここでhttp://localhost:9090のipはprometheusサーバのipへ変更
「Deta source is working」の表示が出たら設定完了
5.Grafana導入手順②(ダッシュボード初期設定)
データ連携が完了したら、次はデータの可視化を行うダッシュボードを作成していきます。ですが、予めダッシュボードの設計をしていない場合はテンプレートの利用がオススメです。
まず、目的に合わせてGrafanaのテンプレートを選定します。
「Grafana Labs」の「Downloads」にマウスオーバし、「Dashboards」をクリックしましょう。
すると上記のように、ダッシュボードの候補が表示されます。各ページに飛ぶとDashboard id表示されているのでコピーします。
そして、それをGrafanaのImportにidを入力しLoadするとダッシュボードが作成されます。
作成されたダッシュボードに移動し、データが監視データがトラッキングできていれば、完了です。
上記のようなサーバリソース情報が出力されていることが確認できます。
Top comments (0)