アーキテクチャ#
簡単に描いて浅く理解しました。
- Flink のネイティブ環境には、Prometheus との連携に使用するプラグインが既に存在しています。
- Prometheus はメトリクスの収集に使用されます。
- node-exporter が使用されます。
- pushgateway が使用されます。
- Grafana は、ダッシュボードのカスタマイズに主に使用されます。Prometheus のページは表示できますが、見た目は美しくありません。
環境#
環境 / コンポーネント | バージョン |
---|---|
オペレーティングシステム | CentOS Linux release 7.9.2009 (Core) |
Docker | Docker version 1.13.1 |
Flink | 1.13.6 on docker |
デプロイ#
Prometheus+Grafana はすべて Docker 上にデプロイします。
- 準備作業
Linux で次のコマンドを実行します:
mkdir /opt/grafana-storage # grafanaのデータストレージディレクトリ
chmod -R 777 /opt/grafana-storage
vim /opt/prometheus/prometheus.yml # 作成して編集します
prometheus.yml(IP を変更するのを忘れないでください)
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['localhost:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['ip:9100']
labels:
instance: localhost
- job_name: 'pushgateway'
static_configs:
- targets: ['ip:9091']
labels:
instance: 'pushgateway'
Flink の設定ファイルに追加します:
metrics.reporter.promgateway.class: org.apache.flink.metrics.prometheus.PrometheusPushGatewayReporter
metrics.reporter.promgateway.host: ip
metrics.reporter.promgateway.port: 9091
metrics.reporter.promgateway.jobName: flink
metrics.reporter.promgateway.randomJobNameSuffix: true
metrics.reporter.promgateway.deleteOnShutdown: true
- デプロイ
mkdir /opt/grafana-storage
chmod -R 777 /opt/grafana-storage
docker run -d -p 3000:3000 --name=grafana -v /opt/grafana-storage:/var/lib/grafana grafana/grafana
docker run -d -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" --net="host" prom/node-exporter
docker run -d -p 9090:9090 -v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
docker run -d -p 9091:9091 prom/pushgateway
Flink でテスト用のジョブを適当に起動します。
- 観察
ゲートウェイで Prometheus の 3 つのコンポーネントの起動状態を確認します(up が起動中を意味します)。
http://ip:9090/targets#pool-pushgateway
ゲートウェイで監視されている Flink ジョブを確認します。
http://ip:9091
実践#
- Grafana に Prometheus ソースを追加
設定で Prometheus を追加します。
URL を追加し、保存をクリックします。
- Grafana ダッシュボードテンプレートを追加
Grafana のダッシュボードライブラリでテンプレートを検索し、ID をコピーします。
https://grafana.com/grafana/dashboards/
Grafana にインポートし、ID を追加すると自動的にダウンロードされます。
あとは調整するだけです。
一部のテンプレートにはデータがなく、原因がわかりません。
追加#
- Flink プロセスでは、ベンチマーク、QPS、データ量、遅延などの監視指標を設定できます。