Pushgatewayとは
Pushgatewayは、Prometheusがデータを収集するための代替手段として利用されるツールです。通常、Prometheusはターゲットからメトリクスを直接取得しますが、特定のユースケースではアクティブにメトリクスをプッシュする必要があります。そのような場合に役立つのがPushgatewayです。
このプラグインは任意のノード上で動作し、監視対象のクライアントと同じマシン上にある必要はありません。ユーザーがカスタムスクリプトを作成して監視データをPushgatewayに送信し、そこからPrometheusサーバーへデータが転送されます。
Pushgatewayのインストールと設定
1. インストール手順
公式サイトからバイナリをダウンロードし、解凍後に実行可能です。以下のコマンドで簡単にインストールできます。
# ダウンロード
wget https://github.com/prometheus/pushgateway/releases/download/v1.0.0/pushgateway-1.0.0.linux-amd64.tar.gz
# 解凍および配置
tar -zxf pushgateway-1.0.0.linux-amd64.tar.gz -C /usr/local/
mv /usr/local/pushgateway-1.0.0.linux-amd64 /usr/local/pushgateway-1.0.0
ln -sv /usr/local/pushgateway-1.0.0 /usr/local/pushgateway
# 実行
cd /usr/local/pushgateway
./pushgateway &
デフォルトではポート9091でリスニングを開始します。
2. systemdでの管理
Pushgatewayをsystemdで管理するために、以下のようなサービスファイルを作成します。
[Unit]
Description=Pushgateway Service
After=network.target
[Service]
ExecStart=/usr/local/pushgateway/pushgateway
Restart=always
[Install]
WantedBy=multi-user.target
これにより、システム起動時に自動的にPushgatewayが起動します。
カスタムスクリプトによるデータ送信
Pushgateway自体にはデータ収集機能はなく、単にデータを受け取るだけです。例えば、TCP接続数を監視するスクリプトを作成できます。
#!/bin/bash
HOST=$(hostname)
LABEL="tcp_connections"
COUNT=$(netstat -an | grep ESTABLISHED | wc -l)
curl --data-binary "$LABEL $COUNT" "http://localhost:9091/metrics/job/tcp_monitor/instance/$HOST"
このスクリプトを定期的に実行するためにcronジョブを使用できます。
* * * * * /path/to/script.sh
Pushgatewayの利点と欠点
Pushgatewayの主な特徴について、以下にまとめます。
- 利点: 短期的なジョブや一時的なメトリクスを効率的に収集できる。
- 欠点: 単一障害点となる可能性があり、同時に多くのスクリプトがデータを送信すると負荷がかかりやすい。
- 欠点: 送信されたデータの検証やフィルタリングを行わないため、誤ったデータがPrometheusに転送されるリスクがある。