InfluxDBとGrafanaを使ったGethの監視
このチュートリアルでは、Gethノードの監視を設定することで、パフォーマンスをよりよく理解し、潜在的な問題を特定する方法を説明します。
前提条件
- Gethのインスタンスがすでに実行されている必要があります。
- 手順と例のほとんどはLinux環境向けであり、ターミナルの基本的な知識があると役立ちます。
- Gethの一連のメトリクスの概要については、こちらの動画をご覧ください: Péter Szilágyi氏によるイーサリアムインフラストラクチャの監視opens in a new tab。
監視スタック
イーサリアムクライアントは、時系列データベースの形式で読み取り可能な多くのデータを収集します。 監視を容易にするため、このデータをデータ可視化ソフトウェアに入力することができます。 利用可能なオプションは複数あります:
- Prometheusopens in a new tab (プルモデル)
- InfluxDBopens in a new tab (プッシュモデル)
- Telegrafopens in a new tab
- Grafanaopens in a new tab
- Datadogopens in a new tab
- Chronografopens in a new tab
また、InfluxDBとGrafanaで事前設定されたオプションであるGeth Prometheus Exporteropens in a new tabもあります。
このチュートリアルでは、GethクライアントがInfluxDBにデータをプッシュしてデータベースを作成し、Grafanaがそのデータをグラフで可視化するように設定します。 手動で行うことで、プロセスをよりよく理解し、変更を加え、さまざまな環境にデプロイできるようになります。
InfluxDBの設定
まず、InfluxDBをダウンロードしてインストールします。 さまざまなダウンロードオプションはInfluxdataのリリースぺージopens in a new tabで確認できます。 あなたの環境に合わせて選択してください。 リポジトリopens in a new tabからインストールすることもできます。 例えば、Debianベースのディストリビューションの場合は、以下のようになります:
1curl -tlsv1.3 --proto =https -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add2source /etc/lsb-release3echo "deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list4sudo apt update5sudo apt install influxdb -y6sudo systemctl enable influxdb7sudo systemctl start influxdb8sudo apt install influxdb-clientInfluxDB を正常にインストールしたら、バックグラウンドで実行されていることを確認してください。 デフォルトでは、localhost:8086でアクセスできます。
influxクライアントを使用する前に、管理者権限を持つ新しいユーザーを作成する必要があります。 このユーザーは、高度な管理、データベースの作成、ユーザーの作成に使用します。
1curl -XPOST "http://localhost:8086/query" --data-urlencode "q=CREATE USER username WITH PASSWORD 'password' WITH ALL PRIVILEGES"これで、このユーザーでinfluxクライアントを使用してInfluxDBシェルopens in a new tabに入ることができます。
1influx -username 'username' -password 'password'シェル内でInfluxDBと直接通信することで、gethメトリクス用のデータベースとユーザーを作成できます。
1create database geth2create user geth with password choosepassword作成したエントリを以下で確認します:
1show databases2show usersInfluxDBシェルを終了します。
1exitInfluxDBは実行中で、Gethからのメトリクスを保存するように設定されています。
Gethの準備
データベースを設定したら、Gethでのメトリクス収集を有効にする必要があります。 geth --helpのMETRICS AND STATS OPTIONSに注意してください。 そこには複数のオプションがありますが、このケースではGethがInfluxDBにデータをプッシュするようにします。
基本設定では、InfluxDBがアクセスできるエンドポイントと、データベースの認証を指定します。
1geth --metrics --metrics.influxdb --metrics.influxdb.endpoint "http://0.0.0.0:8086" --metrics.influxdb.username "geth" --metrics.influxdb.password "chosenpassword"これらのフラグは、クライアントを起動するコマンドに追加するか、設定ファイルに保存できます。
例えば、データベース内のメトリクスを一覧表示することで、Gethが正常にデータをプッシュしていることを確認できます。 InfluxDBのシェルで、以下を入力してください:
1use geth2show measurementsGrafanaの設定
次に、データをグラフィック表示するためにGrafanaをインストールします。 Grafanaのドキュメントで、お使いの環境に合わせたインストールプロセスに従ってください。 特別な理由がない限り、OSSバージョンをインストールしてください。 リポジトリを使用したDebianディストリビューションへのインストール手順の例:
1curl -tlsv1.3 --proto =https -sL https://packages.grafana.com/gpg.key | sudo apt-key add -2echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list3sudo apt update4sudo apt install grafana5sudo systemctl enable grafana-server6sudo systemctl start grafana-serverGrafanaが実行されたら、localhost:3000でアクセスできるはずです。
お好みのブラウザでこのパスにアクセスし、デフォルトの認証情報(ユーザー: admin、パスワード: admin)でログインしてください。 プロンプトが表示されたら、デフォルトのパスワードを変更して保存してください。
Grafanaのホームページに転送されます。 まず、ソースデータを設定します。 左のバーにある設定アイコンをクリックし、「Data sources」を選択します。
まだデータソースは作成されていません。「Add data source」をクリックして定義します。
この設定では、「InfluxDB」を選択して続行します。
同じマシンでツールを実行している場合、データソースの設定は非常に簡単です。 データベースにアクセスするには、InfluxDBのアドレスと詳細を設定する必要があります。 以下の画像を参照してください。
すべてが完了し、InfluxDBにアクセスできるようになったら、「Save and test」をクリックし、確認のポップアップが表示されるのを待ちます。
GrafanaがInfluxDBからデータを読み取るように設定されました。 次に、データを解釈して表示するダッシュボードを作成する必要があります。 ダッシュボードのプロパティはJSONファイルにエンコードされており、誰でも簡単に作成してインポートできます。 左のバーで、「Create and Import」をクリックしてください。
Gethのモニタリングダッシュボードには、このダッシュボードopens in a new tabのIDをコピーして、Grafanaの「Import page」に貼り付けてください。 ダッシュボードを保存すると、次のようになります:
ダッシュボードは変更できます。 各パネルは、編集、移動、削除、追加が可能です。 設定は変更できます。 あなた次第です! ダッシュボードの仕組みについて詳しくは、Grafanaのドキュメントopens in a new tabを参照してください。 アラートopens in a new tabにも興味があるかもしれません。 これにより、メトリクスが特定の値に達したときにアラート通知を設定できます。 さまざまな通信チャネルがサポートされています。
最終更新: 2025年8月25日







