3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ケーシーエスキャロットAdvent Calendar 2020

Day 24

Prometheusを調べてみました

Last updated at Posted at 2020-12-23

この記事は、ケーシーエスキャロット Advent Calendar 2020の24日目の記事です。

初めに

お仕事でPrometheusのインストールに携わらせて頂く事になったので、
色々調べてみた事のメモ的なものです。
いっぱいググっているので、参考とさせて頂いた皆様、本当に助かりました。。

後、本も参考に。
Prometheus本.png

Prometheusとは

超ざっくり言えば プル型のリソース監視ツール
Prometheus本体から各監視対象サーバのリソースを取得して、
グラフ化したり、予め設定した閾値を超えた場合のアラート通知等が出来ます。
グラフについてはPrometheusのみでは正直グラフィカルな感じではないので、
Grafanaという可視化ツールと連携して、こちらで見る事にします。
※連携はすごく簡単です

exporter

それぞれ、監視したい内容によって、
exporterという監視内容に沿ったデータ(metrics)を出力するツール
(アクセス先のエンドポイントになる)をインストールする必要があります。
※監視対象サーバ全部

また、それぞれ閾値を超えた場合はアラート通知必須なので、
alertmanagerもインストールします。
( https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz )

監視内容に対して利用可能なexporterは以下です。
※代表例のみ

  • パフォーマンス監視
  • ログ監視
  • 死活監視
  • プロセス監視

ざっくり全体像

Prometheus.PNG

高速でパフォーマンス監視環境構築

※ CentOS8でインストールしてみた手順です

AlertManagerインストール

以下手順でインストール

wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz

tar -xzvf alertmanager-0.21.0.linux-amd64.tar.gz 

mv alertmanager-0.21.0.linux-amd64 /etc/alertmanager

cd /etc/alertmanager

alertmanager.ymlを以下の内容に書き換える
※Slackの alert-testチャンネルにアラート通知
------------------
global:
  slack_api_url: 'https://hooks.slack.com/services/XXXXXXXX/XXXXXXXX/xxxxxxxxxxxxxxxxxxxxxxxx'
 
route:
  group_wait: 30s
  group_interval: 30s
  repeat_interval: 30s
  receiver: default
 
receivers:
- name: 'default'
  slack_configs:
  - send_resolved: true
    channel: '#alert-test'
    title: "{{ range .Alerts }}{{ .Annotations.summary }}\n{{ end }}"
    text: "{{ range .Alerts }}{{ .Annotations.description }}\n{{ end }}"
------------------

# 実行(systemctlへの追加推奨)
/etc/alertmanager/alertmanager --config.file /etc/alertmanager/alertmanager.yml

パフォーマンス監視インストール(監視対象サーバでインストール)

以下手順でインストール

wget https://github.com/prometheus/node_exporter/releases/download/v1.0.0/node_exporter-1.0.0.linux-amd64.tar.gz

tar zxvf node_exporter-1.0.0.linux-amd64.tar.gz

mv node_exporter-1.0.0.linux-amd64 /etc/node_exporter

cd /etc/node_exporter

# 起動(systemctlへの追加推奨)
/etc/node_exporter/node_exporter

Prometheusインストール

以下手順でインストール

tar zxvf prometheus-2.18.1.linux-amd64.tar.gz

mv prometheus-2.18.1.linux-amd64 /etc/prometheus

cd /etc/prometheus

prometheus.ymlの内容は以下

------------------
# 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:
      - localhost:9093

rule_files:
  - "./alert_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: 'node'
    scrape_interval: 10s
    static_configs:
    - targets: ['client-host-name:9100']
------------------

alert_rules.ymlを以下内容で作成

------------------
groups:
- name: node
  rules:
  - alert: memory_used
    expr: 100 * (1 - node_memory_MemFree_bytes{job='node'} / node_memory_MemTotal_bytes{job='node'}) > 90
    for: 30s
    labels:
      severity: critical
    annotations:
      summary: "memory {{ $labels.instance }} used over 90%"
      description: "cpu of {{ $labels.instance }} has been used over 90%"
  - alert: disk_used
    expr: 1 - node_filesystem_avail_bytes{job='node',mountpoint='/'} / node_filesystem_size_bytes{job='node',mountpoint='/'} > 90
    for: 30s
    labels:
      severity: critical
    annotations:
      summary: "disk {{ $labels.instance }} used over 90%"
      description: "disk of {{ $labels.instance }} has been used over 90%"
------------------

# api利用可として実行(systemctlへの追加推奨)
/etc/prometheus/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-admin-api

これで監視対象サーバのメモリ/Disk(/)の使用率が90%を超えるとSlackへ通知されます

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?