aptでインストールしたprometheusのオプションを変える
Overview
経緯
最初は設定したきっかけです。興味なければ飛ばしてね。
以下のサーバに対してprometheusでメトリクスを収集しています。
- swarm worker * 3 ~ 5台
- nginx兼swarm manager
- PostgreSQL兼Redis兼prometheusサーバ
prometheus自体はデータベースサーバに乗せて兼任させており、負荷はGrafanaを動かさない限り大したことはありませんが、ストレージ容量が気になるところ。
容量の計算式などはここ。
1ノードあたり800サンプル(node-exporterをcurlしてコメント行除いてwcでカウントしました)、15秒ごとに収集、サンプル取得対象7つで適当に計算すると、デフォルトの15日保存では約1GBほど消費する計算です。
一日86400秒 * 15日 * (1ノードあたり800サンプル/15秒) * 1サンプルあたり2バイト * 取得対象7ノード = 967680000バイト(約923MB)
私の趣味サーバはケチケチ運用してるので、重要性高くないデータに対してEBSを1GBも使わせたくない、かつ15日もいらんっつーことで保存期間一週間くらいに減らそうと思い立ち作業開始。
環境
- ubuntu 18.04.3 LTS
- prometheus 2.1.0+ds (branch: debian/sid, revision: 2.1.0+ds-1)
タイトルの通りprometheusはubuntuのaptからインストールしたのでバージョンが古いです。
作業
systemdで管理されているのでとりあえずデフォルトの実行コマンドがどうなってるかを見てみる。
% systemctl cat prometheus.service
# /lib/systemd/system/prometheus.service
[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/bin/prometheus $ARGS
ExecReload=/bin/kill -HUP $MAINPID
TimeoutStopSec=20s
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
ExecStart=/usr/bin/prometheus $ARGS となっているので、$ARGSを確認。
% cat /etc/default/prometheus
ARGS=""
~略~
# --storage.tsdb.retention=15d
# How long to retain samples in the storage.
~略~
$ARGSは特に設定されていないご様子。
というわけで以下のように書き換え
% cat /etc/default/prometheus
# Set the command-line arguments to pass to the server.
ARGS="--storage.tsdb.retention=7d"
~以下略~
バージョンが古いので上のprometheusのドキュメントページには廃止されたと書いてあるオプションで設定しています。
今回はunitファイルを書き換えていないので
systemctl daemon-reload
は無し。
なので、/etc/default/prometheusを書き換えた後は
systemctl restart prometheus.service
を実行。
結果
おっけー
いい方法ではない
本当は
- EnvironmentFileを /etc/prometheus/environment とかにコピーして書き換え
systemctl edit prometheus.service
でEnvironmentFileだけ上書き
って方が正しいはず。
まぁ大したことしてないし、そろそろubuntu 20.04 LTSも来るからprometheusのバージョン上がって設定書き換えなきゃならないのでええかなとか考えてます(雑)。