Open1
Amazon LinuxでPing統計を取得しGrafana Cloudに送信する
Amazon LinuxでPing統計を取得しGrafana Cloudに送信する手順
この手順では、ping_exporter
を使ってPing統計を収集し、Grafana Cloudに送信する方法を説明します。
今回の検証で使用したAMIは「amzn2-ami-hvm-2.0.20221004.0-x86_64-gp2」です。
Amazon Linux上で実施する手順
2. ping_exporterのセットアップ
今回はこちらのオープンソースを使います。
2.1 ダウンロードとインストール
wget https://github.com/czerwonk/ping_exporter/releases/download/1.1.3/ping_exporter_1.1.3_linux_amd64.rpm
sudo rpm -i ping_exporter_1.1.3_linux_amd64.rpm
環境によっては違うパスになるので
which ping_exporter
コマンドで確認をお願いします。
2.2 権限の設定
sudo setcap cap_net_raw+ep /bin/ping_exporter
2.3 設定ファイルの作成
sudo mkdir /etc/ping_exporter
sudo nano /etc/ping_exporter/config.yml
以下は設定例です。各環境に応じて設定を変えてください:
# List of target hosts (IP addresses or host names) to ping.
targets:
- 8.8.8.8
ping:
interval: 30s # How often to ping a target?
timeout: 10s # Timeout for a single ICMP Echo Request
他の設定例は以下から確認できます。
-
デフォルト値
- pingInterval: Pingを送る間隔(デフォルト5秒)。短くすると負荷増、長くすると遅延。
- pingTimeout: 応答を待つ時間(デフォルト4秒)。短いとタイムアウト多発、長いと待機時間増加。
- pingSize: パケットサイズ(デフォルト56バイト)。大きいと負荷増、小さいと軽量。
- dnsRefresh: DNSレコードの更新間隔(デフォルト1分)。短いと負荷増、長いと情報遅延。
- dnsNameServer: DNSサーバー指定(デフォルトなし)。未指定の場合、システムデフォルト使用。
- disableIPv6/IPv4: IPv6/IPv4の解決を無効にする。ネットワーク環境に応じて設定。
- logLevel: ログの出力レベル(デフォルトinfo)。レベルを上げると詳細なログ。
- targetFlag: Ping対象のリストを指定。
- historySize: Ping結果の履歴数(デフォルト10)。大きいと分析向き、小さいとリソース節約。
3. ping_exporterの実行
3.1 サービスファイルの作成
sudo nano /etc/systemd/system/ping_exporter.service
以下の内容を貼り付けます:
[Unit]
Description=Ping Exporter
[Service]
ExecStart=/bin/ping_exporter --config.path /etc/ping_exporter/config.yml
[Install]
WantedBy=multi-user.target
3.2 サービスの開始
sudo systemctl daemon-reload
sudo systemctl start ping_exporter
sudo systemctl enable ping_exporter
3.3 動作確認
curl localhost:9427/metrics
Pingの統計情報が表示されれば成功です。
# HELP ping_loss_ratio Packet loss from 0.0 to 1.0
# TYPE ping_loss_ratio gauge
ping_loss_ratio{ip="8.8.8.8",ip_version="4",target="8.8.8.8"} 0
# HELP ping_rtt_best_seconds Best round trip time in seconds
# TYPE ping_rtt_best_seconds gauge
ping_rtt_best_seconds{ip="8.8.8.8",ip_version="4",target="8.8.8.8"} 0.05860412216186523
# HELP ping_rtt_mean_seconds Mean round trip time in seconds
# TYPE ping_rtt_mean_seconds gauge
ping_rtt_mean_seconds{ip="8.8.8.8",ip_version="4",target="8.8.8.8"} 0.05893426513671875
# HELP ping_rtt_std_deviation_seconds Standard deviation in seconds
# TYPE ping_rtt_std_deviation_seconds gauge
ping_rtt_std_deviation_seconds{ip="8.8.8.8",ip_version="4",target="8.8.8.8"} 0.0004530584812164307
# HELP ping_rtt_worst_seconds Worst round trip time in seconds
# TYPE ping_rtt_worst_seconds gauge
ping_rtt_worst_seconds{ip="8.8.8.8",ip_version="4",target="8.8.8.8"} 0.060954967498779294
# HELP ping_up ping_exporter version
# TYPE ping_up gauge
ping_up{version="1.1.3"} 1
4. Alloyのセットアップ
4.1 インストール
wget -q -O gpg.key https://rpm.grafana.com/gpg.key
sudo rpm --import gpg.key
echo -e '[grafana]\nname=grafana\nbaseurl=https://rpm.grafana.com\nrepo_gpgcheck=1\nenabled=1\ngpgcheck=1\ngpgkey=https://rpm.grafana.com/gpg.key\nsslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt' | sudo tee /etc/yum.repos.d/grafana.repo
sudo yum update
sudo yum install alloy
キャッシュの関係で1回目の
sudo yum update
でエラーが発生する可能性があります。その場合は再度実行してみてください。
4.2 設定
sudo nano /etc/alloy/config.alloy
以下の内容を貼り付けます(YOUR_GRAFANA_CLOUD_情報は実際の値に置き換えてください):
logging {
level = "warn"
}
prometheus.remote_write "grafana_cloud" {
endpoint {
url = "https://YOUR_GRAFANA_CLOUD_REGION.grafana.net/api/prom/push"
basic_auth {
username = "YOUR_GRAFANA_CLOUD_USERNAME"
password = "YOUR_GRAFANA_CLOUD_API_KEY"
}
}
}
prometheus.scrape "ping_exporter" {
targets = [{
job = "ping_exporter",
__address__ = "localhost:9427",
}]
forward_to = [prometheus.remote_write.grafana_cloud.receiver]
}
prometheus.relabel "ping_metrics" {
rule {
source_labels = ["__name__"]
regex = "ping_.*"
action = "keep"
}
forward_to = [prometheus.remote_write.grafana_cloud.receiver]
}
Grafana Cloudは使用したメトリクス量に応じて課金されるため、
prometheus.relabel "ping_metrics"
のように許可されたメトリクスのみを送信する手段を「Block-All and Whitelist」方式とボクは読んで愛用しています。
- 参考:
4.3 Alloyの起動
sudo systemctl start alloy
sudo systemctl enable alloy
5. デバッグ手順
場合によっては都度configの内容を書き換えてシステムログを確認する必要があります。
- Alloy Configの変更と適用
sudo nano /etc/alloy/config.alloy
sudo systemctl reload alloy
- システムログの確認
sudo journalctl -u alloy | less
Grafana Cloud上で実施する手順
1. メトリクスの確認
- Grafana Cloudにログインします。
- 左側メニューの「Explore」をクリックします。
- 以下のクエリを入力して、Pingの統計情報を確認します:
ping_rtt_best_seconds # 最良の往復時間(秒)
ping_rtt_worst_seconds # 最悪の往復時間(秒)
ping_rtt_mean_seconds # 平均往復時間(秒)
ping_rtt_std_deviation_seconds # 標準偏差(秒)
ping_loss_ratio # パケット損失率(0.0から1.0の値)
これで、Amazon LinuxからPingの統計情報を収集し、Alloyを通じてGrafana Cloudで可視化できるようになりました。
注意:Grafana AgentはAlloyに置き換えられました。Alloyは長期的なサポートが予定されている新しいソリューションです。