4
4

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.

GrafanaとPrometheus

Posted at

VirtualBox 6

ゲストOS: CentOS Linux release 7.5.1804 (Core)

仮想マシンの [設定] -> [ネットワーク設定]
割り当て: NAT
[高度] -> [ポートフォワーディング]
SSH: TCP 1022 -> 22
Promethus GUI: TCP 19090 -> 9090
Grafana GUI: TCP 13000 -> 3000

モジュールバージョンとパッケージ

Prometheus: 2.14.0
パッケージ: prometheus-2.14.0.linux-amd64.tar.gz

Node exporter: 0.18.1
パッケージ: node_exporter-0.18.1.linux-amd64.tar.gz

Grafana: 6.4.4
パッケージ: grafana-6.4.4-1.x86_64.rpm

CentOSセットアップ

firewalldでhttp httpsを許可

Firewall参考

$ systemctl status firewalld  # active (runnig)
$ sudo firewall-cmd --list-all
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

# ポート許可
$ sudo firewall-cmd --permanent --add-port=22/tcp
$ sudo firewall-cmd --permanent --add-port=9090/tcp
$ sudo firewall-cmd --permanent --add-port=9100/tcp
$ sudo firewall-cmd --permanent --add-port=3000/tcp
$ sudo firewall-cmd --list-ports
$ sudo firewall-cmd --reload

$ sudo systemctl stop firewalld  # 以下検証環境
$ sudo systemctl is-enabled firewalld  # enabledになっていたら下記を実施
$ sudo systemctl disable firewalld
$ sudo systemctl is-enabled firewalld

Prometheusインストール

インストール作業

公式サイト
Owner等は全てroot

$ cd /tmp
$ curl -LO https://github.com/prometheus/prometheus/releases/download/v2.14.0/prometheus-2.14.0.linux-amd64.tar.gz
$ tar xvzf prometheus-2.14.0.linux-amd64.tar.gz
$ sudo cp -r prometheus-2.14.0.linux-amd64 /etc/prometheus

Prometheus の起動スクリプト設定、ログローテート設定 参考

$ sudo /etc/init.d/prometheus start
$ sudo /etc/init.d/prometheus status
$ sudo /etc/init.d/prometheus stop

Prometheusへのアクセス確認

http://localhost:19090/graph
1.JPG

PromQLの実行確認

Expressionと表示されているの枠にクエリを入力してExecuteをクリックして実行。

上がっているサーバを確認
Expression: up
Element: up{instance="localhost:9090",job="prometheus"}
Value: 1

使用中メモリを確認
(基本単位はバイト、秒、など)
Expression: process_resident_memory_bytes
Element: process_resident_memory_bytes{instance="localhost:9090",job="prometheus"}
Value: 49057792

Exporter

使用されているポート一覧:port allocations

Node exporterインストール

$ cd /tmp
$ curl -LO https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
$ tar xvzf node_exporter-0.18.1.linux-amd64.tar.gz
$ sudo cp -r node_exporter-0.18.1.linux-amd64 /etc/node_exporter

Node exporterの起動スクリプト設定、ログローテート設定 参考

$ sudo vim /etc/rc.d/init.d/node_exporter  # 起動スクリプト作成
$ sudo chmod +x /etc/rc.d/init.d/node_exporter
$ sudo mkdir /var/log/node_exporter
$ sudo /etc/init.d/node_exporter start  # 起動スクリプトにてスタート
$ sudo /etc/init.d/node_exporter status
$ sudo chkconfig node_exporter on

$ sudo vim /etc/logrotate.d/node_exporter  # ログローテート設定作成

$ sudo vim /etc/prometheus/prometheus.yml  # Prometheus 設定ファイルに追記
$ sudo /etc/prometheus/promtool check config /etc/prometheus/prometheus.yml
Checking /etc/prometheus/prometheus.yml 
  SUCCESS: 0 rule files found
$ sudo /etc/init.d/prometheus reload

Prometheusのコンソールから下記を実行&確認
Expression: node_memory_Cached_bytes
Element: node_memory_Cached_bytes{instance="localhost:9100",job="node"}
Value: 996540416

Grafana インストール & Prometheus と連携

$ wget https://dl.grafana.com/oss/release/grafana-6.4.4-1.x86_64.rpm
$ sudo yum install initscripts urw-fonts
$ sudo rpm -Uvh grafana-6.4.4-1.x86_64.rpm
$ sudo /etc/init.d/grafana-server start
$ sudo chkconfig grafana-server on

http://localhost:13000/ へアクセス
admin/admin でログインし初回パスワード変更を実施

Datasourceを追加

[Create your first data source] -> [Add data source] -> [Prometheus] -> [Select]
datasource.JPG

[Save & Test]をクリックすると"Data source is working"が表示された。

Dashboard作成

Dashboards - Official & community built dashboards からjsonファイルをダウンロードする。
左のプラスマークから[Import] -> [Upload .json file]を選択してアップロードする。
dashboard.JPG

Environment file

$ cat /etc/sysconfig/grafana-server
GRAFANA_USER=grafana

GRAFANA_GROUP=grafana

GRAFANA_HOME=/usr/share/grafana

LOG_DIR=/var/log/grafana

DATA_DIR=/var/lib/grafana

MAX_OPEN_FILES=10000

CONF_DIR=/etc/grafana

CONF_FILE=/etc/grafana/grafana.ini

RESTART_ON_UPGRADE=true

PLUGINS_DIR=/var/lib/grafana/plugins

PROVISIONING_CFG_DIR=/etc/grafana/provisioning

# Only used on systemd systems
PID_FILE_DIR=/var/run/grafana

Configuration

/etc/grafana/grafana.ini

PromQL

以下、node_exporterを入れたサーバ(localhost:9100)に関する受信(bytes)の出力結果。

node_network_receive_bytes_total
アウトプット例:

Element Value
node_network_receive_bytes_total{device="enp0s3",instance="localhost:9100",job="node"} 54247
node_network_receive_bytes_total{device="lo",instance="localhost:9100",job="node"} 354136
node_network_receive_bytes_total{device="virbr0",instance="localhost:9100",job="node"} 0
node_network_receive_bytes_total{device="virbr0-nic",instance="localhost:9100",job="node"} 0

ラベルの正規表現例

virbrがつくdevice情報をすべて出力
node_network_receive_bytes_total{device=~"virbr.+"}

deviceがvirbr0 or virbr0-nicのものを出力
node_network_receive_bytes_total{device=~"virbr0|virbr0-nic"}

metricの正規表現

node_network_receive_bytes_totalとnode_network_transmit_bytes_totalの両方をクエリする。
{__name__=~"node_network_(receive|transmit)_bytes_total"}

rate() 指定時間毎の値

  • counterのみに使用すること。

node_network_receive_bytes_totalのように時間に比例してデータが蓄積されていくため、時間毎のデータを出力したい場合に使用。

10分毎の値
rate(node_network_receive_bytes_total[10m])

ランキング

上位5個のデータを返す。
topk(5, max_over_time(node_network_receive_bytes_total[30m]))

演算子

下記のような演算子も記述可能。
rate(node_network_transmit_bytes_total[10m])+ 1000 / 10 * 20 - 5 ^ 2 % 2

比較演算子

==!=>>=<<=が使用可能。
rate(node_network_receive_bytes_total[10m]) !=0
rate(node_network_receive_bytes_total[10m]) <= 1000

グルーピング

instance="localhost:9100"のものをグループして合計値を取得する。
sum(node_network_receive_bytes_total) by (instance)
sum(rate(node_network_receive_bytes_total[5m])) by (instance)

ゲージ

  • 決まった範囲の値が上下するメモリなどに使う。

max_over_timemin_over_timeavg_over_time functions.
max_over_time(node_memory_MemFree_bytes[5m])

参考にさせて頂いたサイト

4
4
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
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?