監視環境の構築
Prometheusは、監視対象のmetrics endpointからmetricsを取得し、時系列データとして保存する監視システムです。
Grafanaは、Prometheusなどに保存されたデータをダッシュボードとして可視化するためのツールです。
1. 監視構成
本手順では、Cardano Nodeのmetricsをcardano-tracer経由でPrometheusへ取得し、Grafanaで可視化します。
cardano-nodeから出力されるtrace(ログ)やmetricsは、Forwarderを使用してUnix Socket経由でcardano-tracerへ転送されます。
cardano-tracerは受け取ったデータを処理し、Prometheus形式のmetrics endpointとして公開します。
PrometheusはこのendpointからCardano Nodeのmetricsを取得します。
また、CPU、メモリ、ディスクなどのシステムmetricsはprometheus-node-exporterから取得します。
この手順では、 Grafana稼働サーバー(リレーサーバー1) でprometheusとGrafanaを稼働させ、各Cardano Node稼働サーバーからmetricsを取得します。
構成図
本構成では、以下のmetrics endpointを使用します。
| ポート | 公開元 | 用途 |
|---|---|---|
12798 | cardano-node / PrometheusSimple | gLiveView / blocklogなどのローカルツール |
12808 | cardano-tracer / hasPrometheus | Cardano Node metrics |
9100 | prometheus-node-exporter | CPU、メモリ、ディスクなどのシステムmetrics |
Prometheus / Grafanaによる監視では、PrometheusSimpleの12798ポートからCardano Nodeのmetricsを直接取得せず、cardano-tracerが公開する12808ポートを使用します。
2. cardano-tracerの確認
初期構築時に設定したcardano-tracerが、各Cardano Node稼働サーバーで正常に動作していることを確認します。
cardano-tracerのサービス確認
cardano-tracerが正常に起動していることを確認します。
sudo systemctl status cardano-tracer --no-pageractive (running)であることを確認します。
Unix Socketの確認
Tracer用のUnix Socketが作成されていることを確認します。
ls -la ${NODE_HOME}/tracer/socketが作成されていることを確認します。
Prometheus endpointの確認
TracerがPrometheus用の12808ポートをListenしていることを確認します。
sudo ss -lntp | grep ':12808'cardano-tracerが0.0.0.0:12808でListenしていることを確認します。
Cardano Nodeとの接続確認
Cardano Nodeがcardano-tracerへ接続していることを確認します。
curl -s http://127.0.0.1:12808/接続しているNode名が表示されることを確認します。
例えば、Previewのリレー1では以下のように表示されます。
<html><head><title>Prometheus metrics</title></head><body><ul><li><a href="/preview-relay-1">preview-relay-1</a></li></ul></body></html>3. PrometheusとGrafanaのインストール
Prometheusのインストール
sudo apt updatesudo apt install -y prometheus prometheus-node-exportersudo apt updatesudo apt install -y prometheus-node-exporterGrafanaのインストール
sudo apt install -y apt-transport-https gnupgsudo mkdir -p /etc/apt/keyringswget -4 -O - https://apt.grafana.com/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/grafana.gpgsudo chmod 644 /etc/apt/keyrings/grafana.gpgecho "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.listsudo apt update && sudo apt install -y grafanaサービス有効化とファイアウォールの設定
sudo systemctl enable --now grafana-server.service prometheus.service prometheus-node-exporter.serviceGrafanaの3000ポートへの接続を許可します。
sudo ufw allow 3000/tcpsudo ufw reloadsudo systemctl enable --now prometheus-node-exporter.servicePrometheus稼働サーバーから9100と12808ポートへの接続を許可します。
sudo ufw allow from <Grafana稼働サーバーのIP> to any port 9100 proto tcpsudo ufw allow from <Grafana稼働サーバーのIP> to any port 12808 proto tcpsudo ufw reload4. Prometheusの設定
Grafana稼働サーバーにインストールしたPrometheusの設定ファイルを作成します。
各Cardano Node稼働サーバーで以下を実行し、Tracerに接続しているNode名を確認します。
curl -s http://127.0.0.1:12808/<html><head><title>Prometheus metrics</title></head><body><ul><li><a href="/mainnet-relay-1">mainnet-relay-1</a></li></ul></body></html>接続しているNode名が表示されれば正常です。
設定前に置き換える値
リレー2のIPアドレスまたはDNSを代入します。
relay2_ipv4_or_dns=BPのIPアドレスを代入します。
bp_ipv4=Node名を設定します。
NODE_NAME_RELAY_1=${NODE_CONFIG}-relay-1
NODE_NAME_RELAY_2=${NODE_CONFIG}-relay-2
NODE_NAME_BP=${NODE_CONFIG}-bp設定するNode名は、各Cardano NodeのTraceOptionNodeNameと一致している必要があります。
Prometheusの設定ファイル作成
cat > $HOME/prometheus.yml << EOF
global:
scrape_interval: 15s
external_labels:
monitor: 'codelab-monitor'
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9100']
labels:
alias: 'relaynode1'
type: 'system'
- targets: ['${relay2_ipv4_or_dns}:9100']
labels:
alias: 'relaynode2'
type: 'system'
- targets: ['${bp_ipv4}:9100']
labels:
alias: 'block-producing-node'
type: 'system'
- targets: ['localhost:12808']
labels:
alias: 'relaynode1'
type: 'cardano-node'
__metrics_path__: '/${NODE_NAME_RELAY_1}'
- targets: ['${relay2_ipv4_or_dns}:12808']
labels:
alias: 'relaynode2'
type: 'cardano-node'
__metrics_path__: '/${NODE_NAME_RELAY_2}'
- targets: ['${bp_ipv4}:12808']
labels:
alias: 'block-producing-node'
type: 'cardano-node'
__metrics_path__: '/${NODE_NAME_BP}'
EOFprometheus.yml構文チェック
sudo promtool check config $HOME/prometheus.yml構文エラーがない場合は、以下のように表示されます。
Checking /home/$USER/prometheus.yml
SUCCESS: /home/$USER/prometheus.yml is valid prometheus config file syntax構文エラーがある場合は、以下のように表示されます。
Checking /home/$USER/prometheus.yml
FAILED: parsing YAML file /home/$USER/prometheus.yml: yaml: line **: did not find expected '-' indicator構文エラーだった場合は、$HOME/prometheus.ymlを開き、余分なスペースや記号の有無を確認して修正してください。
nano $HOME/prometheus.yml修正したら、
Ctrl + Oで保存し、Enter。その後Ctrl + Xで閉じます。
prometheus.ymlファイルのバックアップ
sudo cp /etc/prometheus/prometheus.yml /etc/prometheus/prometheus.yml.bakprometheus.ymlファイルの移動
sudo mv $HOME/prometheus.yml /etc/prometheus/prometheus.ymlGrafanaプラグインのインストール
sudo grafana cli plugins install yesoreyeram-infinity-datasourceGrafanaダッシュボードでJSONデータを取得するため、Infinity datasourceプラグインをインストールします。
サービス再起動
sudo systemctl restart grafana-server.service prometheus.service prometheus-node-exporter.serviceサービスが正しく実行されていることを確認します。
sudo systemctl --no-pager status grafana-server.service prometheus.service prometheus-node-exporter.service以下3つのサービスがactive (running)になっていることを確認してください。
grafana-server.serviceprometheus.serviceprometheus-node-exporter.service
バージョン確認
Grafana、Prometheus、node_exporterのバージョンを確認します。
grafana server -v
prometheus --version
prometheus-node-exporter --versionnode_exporterのバージョンを確認します。
prometheus-node-exporter --versionそれぞれ以下のような形式で表示されれば正常です。
Version 13.2.2
prometheus, version 2.45.3+ds
node_exporter, version 1.7.0既存の設定ファイルを更新する場合
sudo nano /etc/prometheus/prometheus.yml修正したら、
Ctrl + Oで保存し、Enter。その後Ctrl + Xで閉じます。
prometheus.yml構文チェック
sudo promtool check config /etc/prometheus/prometheus.yml構文エラーがない場合は、以下のように表示されます。
Checking /etc/prometheus/prometheus.yml
SUCCESS: /etc/prometheus/prometheus.yml is valid prometheus config file syntax構文エラーがある場合は、以下のように表示されます。
Checking /etc/prometheus/prometheus.yml
FAILED: parsing YAML file /etc/prometheus/prometheus.yml: yaml: line **: did not find expected '-' indicator/etc/prometheus/prometheus.ymlを開き、余分なスペースや記号の有無を確認してください。
サービスの再起動
sudo systemctl restart prometheus.service5. Grafanaダッシュボードの設定
-
ローカルPCのブラウザから
http://Grafana稼働サーバーIPアドレス:3000を開きます。 -
ログイン名・パスワードはadmin / adminです。
-
パスワードを変更します。
-
左ペインの「Connections」→「Data sources」を選択します。
-
「Add data source」を選択し、「Prometheus」を選択します。
-
「Name」は以下を入力します。
Prometheus- 「URL」は以下を入力します。
http://localhost:9090-
最下部に配置されている「Save & Test」を選択し、
Successfully queried the Prometheus API.と表示されたら再度左ペインから「Data sources」を選択します。 -
「Add new data source」を選択し、検索欄から「Infinity」を検索し、選択します。
-
設定内容を変更することなく、「Save & Test」を選択し、
Health check successfulと表示されたら問題ありません。 -
BPサーバーでパネル用JSONファイルをダウンロードします。
curl -o $NODE_HOME/spo-japan-guild-cardano-node-dashboard.json https://docs.spojapanguild.net/grafana/cardano-node/spo-japan-guild-cardano-node-dashboard.jsonsed -i \
-e "s/bech32_id_of_your_pool/$(cat $NODE_HOME/pool.id-bech32)/g" \
$NODE_HOME/spo-japan-guild-cardano-node-dashboard.json-
BPの
cnodeフォルダにあるspo-japan-guild-cardano-node-dashboard.jsonをローカルPCにダウンロードします。 -
左ペインの「Dashboards」→「New」→「Import」を選択します。
-
「Upload dashboard JSON file」を選択し、ダウンロードした
spo-japan-guild-cardano-node-dashboard.jsonを指定します。 -
「DS_PROMETHEUS」→「Prometheus」を選択し、「DS_YESOREYERAM-INFINITY-DATASOURCE」→「yesoreyeram-infinity-datasource」を選択し、
Importボタンを選択します。
これで基本的な監視設定は完了です。
以下の追加設定も実施してください。
Last updated on