Prometheusの導入メモ
Prometheus + Grafanaでサーバの監視をするメモの第二弾として、Prometheusを導入してサーバやスイッチの監視をしてみたメモ。
環境
- OS: Ubuntu 20.04.2
監視対象のLinux Serverの設定(node exporter)
監視対象になるLinux Serverには、Node Exporterを導入する。
Ubuntuの場合は、sudo apt install prometheus-node-exporter
でインストールできるが、バージョンは2021/2/12現在以下の通りだった。
Ubuntu 18.04のリポジトリからインストールできるバージョンは0.15.2+ds-1
(2017/12/5)
Ubuntu 20.04のリポジトリからインストールできるバージョンは0.18.1+ds-2
(2019/6/5)
公式サイトのバージョンは1.1.2
(2021/5/22)
とりあえず、Ubuntu 18.04と20.04でUbuntuのリポジトリからインストールしてみたが、取得できる内容が結構異なっており、特に18.04の場合はNode Exporter Fullで値が表示されなかった。
そのため、公式サイトのバージョンを入れることにした。
wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
tar xvf node_exporter-1.1.2.linux-amd64.tar.gz
sudo cp node_exporter-1.1.2.linux-amd64/node_exporter /usr/local/bin/prometheus-node-exporter
sudo mkdir -p /var/log/prometheus
sudo mkdir -p /var/lib/prometheus
# ubuntu
if ! getent passwd prometheus > /dev/null; then
sudo adduser --system --home /var/lib/prometheus --no-create-home --group --gecos "Prometheus daemon" prometheus
fi
# centos
if ! getent passwd prometheus > /dev/null; then
sudo useradd --system --home-dir /var/lib/prometheus --no-create-home --comment "Prometheus daemon" prometheus
fi
sudo chown prometheus:prometheus /var/log/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus
# 後始末
rm -rf node_exporter-1.1.2.linux-amd64
- /lib/systemd/system/prometheus-node-exporter.service
- 作成後、
ll /lib/systemd/system/prometheus-node-exporter.service
でroot:root 644になっていることを確認。
- 作成後、
[Unit]
Description=Prometheus exporter for machine metrics
Documentation=https://github.com/prometheus/node_exporter
[Service]
Restart=always
User=prometheus
#EnvironmentFile=/etc/default/prometheus-node-exporter
ExecStart=/usr/local/bin/prometheus-node-exporter $ARGS
ExecReload=/bin/kill -HUP $MAINPID
TimeoutStopSec=20s
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
配置したファイルの起動と、自動起動の設定。
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus-node-exporter
Prometheus(サーバ)のインストール
前回のGrafanaと同様にaptで導入しようとしてみたが、バージョンが古いようだった。
suuei@mon:~$ sudo apt policy prometheus
prometheus:
インストールされているバージョン: (なし)
候補: 2.15.2+ds-2
バージョンテーブル:
2.15.2+ds-2 500
500 http://jp.archive.ubuntu.com/ubuntu focal/universe amd64 Packages
標準のリポジトリに入っているのは嬉しいが、2.15.2のリリース日はどうやら2020/1/6と1年以上前….
これはちょっと良くなさそうなので、別の方法を取ることにした。
公式サイトを見ても特にaptリポジトリなどの表示がないので、今回はaptではなく公式が配布している.tar.gzを展開してインストールする。
その後、自動起動とかいろいろのために、aptで配布されているdebから必要そうな部分を抜きだして実行した。
// たぶん環境を作り直すときに修正する
実行するスクリプト
aptから取れるdebを展開して抜き出したスクリプト。
ログフォルダの作成とPrometheus実行用ユーザの作成。
sudo mkdir -p /var/log/prometheus
sudo mkdir -p /var/lib/prometheus/metrics2
if ! getent passwd prometheus > /dev/null; then
sudo adduser --system --home /var/lib/prometheus --no-create-home --group --gecos "Prometheus daemon" prometheus
fi
sudo chown prometheus:prometheus /var/log/prometheus
sudo chown -R prometheus:prometheus /var/lib/prometheus
ファイルを配置する
配置するファイルは計3つ。適当なテキストエディタで作成する。
-
/etc/default/prometheus
-
パーミッションはroot:root 644
# Set the command-line arguments to pass to the server. ARGS="--config.file=\"/etc/prometheus/prometheus.yml\" --web.console.templates=\"/etc/prometheus/consoles\" --web.console.libraries=\"/etc/prometheus/console_libraries\" --storage.tsdb.path=\"/var/lib/prometheus/metrics2/\""
-
-
/lib/systemd/system/prometheus.service
-
パーミッションはroot:root 644
[Unit] Description=Monitoring system and time series database Documentation=https://prometheus.io/docs/introduction/overview/ [Service] Restart=always User=prometheus EnvironmentFile=/etc/default/prometheus ExecStart=/usr/local/bin/prometheus $ARGS ExecReload=/bin/kill -HUP $MAINPID TimeoutStopSec=20s SendSIGKILL=no LimitNOFILE=8192 [Install] WantedBy=multi-user.target
-
-
/etc/logrotate.d/prometheus
-
パーミッションはroot:root 644
/var/log/prometheus/prometheus.log { weekly rotate 10 copytruncate compress delaycompress notifempty missingok }
-
本体の配置
本体のダウンロードとコピー
# 最新版のURLに変更する
wget https://github.com/prometheus/prometheus/releases/download/v2.24.1/prometheus-2.24.1.linux-amd64.tar.gz
tar xvfz prometheus-*.tar.gz
cd prometheus-2.24.1.linux-amd64
sudo mkdir -p /etc/prometheus
sudo chmod 755 /etc/prometheus
sudo cp -r prometheus.yml /etc/prometheus/
sudo cp -r consoles /etc/prometheus/consoles
sudo cp -r console_libraries /etc/prometheus/console_libraries
sudo cp prometheus /usr/local/bin/
sudo cp promtool /usr/local/bin/
自動起動設定と同時に起動する
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus
以上でインストールは完了。
設定
/etc/prometheus/prometheus.yml
を編集し、ノードの登録を行う。
以下のように、scrape_configsの下にstatic_configsでホストのIPアドレスを記述していく。
scrape_configs:
- job_name: node
static_configs:
- targets:
- '10.0.0.100:9100'
- 'example.com:9100'
修正が終わったら、sudo service prometheus restart
で適用。
(参考)aptインストール時のスクリプトの抜き出し工程
apt download prometheus
mkdir tmp
dpkg-deb -R prometheus_2.15.2+ds-2_amd64.deb tmp
cat tmp/DEBIAN/postinst