Apache Flink ダッシュボードを使用すると、ログを簡単に追跡し、インストルメンテーション ソースを監視し、すべてのアプリケーション インスタンスのアップタイムとダウンタイムの概要を把握できます。インフラストラクチャ エージェントと Prometheus OpenMetrics の統合、Flink で構築 OpenMetrics エンドポイント スクレイピングを利用して、最も重要なデータをすべて 1 か所で表示できます。
New Relic で Flink を設定すると、すぐにデータがこのようなダッシュボードに表示されます。
インフラストラクチャエージェントをインストールします
Flink データを New Relic に取り込む前に、まずインフラストラクチャ エージェントをインストールしてから、Prometheus OpenMetrics をインストールしてメトリクスを公開します。
インフラストラクチャ エージェントをインストールするには 2 つの方法があります。
- ガイド付きインストールを通じて。
- コマンド ラインを使用して、インフラストラクチャ エージェントを 手動でインストールします。
メトリクスを公開するように Apache Flink を構成する
構成されたポートでメトリクスを公開するには、Apache Flink prometheus jar ファイルが必要です。理想的には、Apache Flink をダウンロードすると、 flink-metrics-prometheus-VERSION.jar
という名前のファイルが以下のパスに配置されます。
ファイルパス: FLINK-DIRECTORY/plugins/metrics-prometheus/
上記の jar ファイルがダウンロードした flink ディレクトリに存在しない場合は、他の Maven jar アーティファクトからダウンロードできます。以下の URL の例を使用して、 flink-metrics-prometheus-VERSION.jar
ファイルをダウンロードします。以下は外部 URL であり、そこからダウンロードできます。
外部 URL: https://jar-download.com/artifacts/org.apache.flink/flink-metrics-prometheus
flink 構成ファイルを更新して、ポート 9250 ~ 9260 のメトリクスを公開します。
Apache Flink 設定ファイルのパス: FLINK-DIRECTORY/conf/flink-conf.yaml
metrics.reporters: prommetrics.reporter.prom.class: org.apache.flink.metrics.prometheus.PrometheusReportermetrics.reporter.prom.factory.class: org.apache.flink.metrics.prometheus.PrometheusReporterFactorymetrics.reporter.prom.host: localhostmetrics.reporter.prom.port: 9250-9260
以下のコマンドに従って、Apache Flink クラスターを起動します。
$./bin/start-cluster.sh
以下の URL でメトリクスを確認できるようになります。
- ジョブマネージャーのメトリクス
http://YOUR_DOMAIN:9250
- タスクマネージャーのメトリクス
http://YOUR_DOMAIN:9251
以下のコマンドを実行して、PC 上で他のタスク マネージャー ポートが実行されているかどうかをクロスチェックすることもできます。
sudo lsof -i -P -n | grep LISTEN
Apache Flink 用に nri-prometheus
を構成する
まず、以下のパスに nri-prometheus-config.yml
という名前のファイルを作成します
道: /etc/newrelic-infra/integrations.d
ここで、以下にリストされているフィールドを更新します。
- クラスタ名: 「YOUR_DESIRED_CLUSTER_NAME」、例:
cluster_name: "apache_flink"
- URL: ["http://YOUR_DOMAIN:9250", "http://YOUR_DOMAIN:9251"]、例:
urls: [“http://localhost:9250”, “http://localhost:9251”]
nri-prometheus-config.yml
ファイルは次のようになります。
integrations: - name: nri-prometheus config: standalone: false # Defaults to true. When standalone is set to `false`, `nri-prometheus` requires an infrastructure agent to send data. emitters: infra-sdk # When running with infrastructure agent emitters will have to include infra-sdk cluster_name: "YOUR_DESIRED_CLUSTER_NAME" # Match the name of your cluster with the name seen in New Relic. targets: - description: "YOUR_DESIRED_DESCRIPTION_HERE" urls: ["http://YOUR_DOMAIN:9250", "http://YOUR_DOMAIN:9251"] # tls_config: # ca_file_path: "/etc/etcd/etcd-client-ca.crt" # cert_file_path: "/etc/etcd/etcd-client.crt" # key_file_path: "/etc/etcd/etcd-client.key"
verbose: false # Defaults to false. This determines whether or not the integration should run in verbose mode. audit: false # Defaults to false and does not include verbose mode. Audit mode logs the uncompressed data sent to New Relic and can lead to a high log volume. # scrape_timeout: "YOUR_TIMEOUT_DURATION" # `scrape_timeout` is not a mandatory configuration and defaults to 30s. The HTTP client timeout when fetching data from endpoints. scrape_duration: "5s" # worker_threads: 4 # `worker_threads` is not a mandatory configuration and defaults to `4` for clusters with more than 400 endpoints. Slowly increase the worker thread until scrape time falls between the desired `scrape_duration`. Note: Increasing this value too much results in huge memory consumption if too many metrics are scraped at once. insecure_skip_verify: false # Defaults to false. Determins if the integration should skip TLS verification or not. timeout: 10s
ログ転送を手動で設定する
ログ転送 ドキュメントを使用して、アプリケーション固有のログを New Relic に転送できます。
Linux マシンにインフラストラクチャ エージェントをインストールすると、 logging.yml
という名前のログ ファイルがこのパス /etc/newrelic-infra/logging.d/
に存在するはずです。
上記のパスにログ ファイルが表示されない場合は、上記のログ転送ドキュメントに従ってログ ファイルを作成する必要があります。
以下にログ名の例を示します。
- name: flink-u1-taskexecutor-0-u1-VirtualBox.log
以下のスクリプトを logging.yml
ファイルに追加して、Apache Flink ログを New Relic に送信します。
logs: - name: flink-<REST_OF_THE_FILE_NAME>.log file: <FLINK-DIRECTORY>/log/flink-<REST_OF_THE_FILE_NAME>.log attributes: logtype: flink_logs
New Relic インフラストラクチャ エージェントを再起動します
データの読み取りを開始する前に、 インフラストラクチャ エージェントを再起動します。
New Relic で Apache Flink を監視する
Apache Flink という名前の事前に構築されたダッシュボード テンプレートを使用して Apache Flink メトリクスを監視する場合は、次の手順に従います。
- one.newrelic.com に移動し、 + Add Data [+ データの追加]をクリックします。
- 「ダッシュボード」 タブをクリックします。
- 検索ボックスで Apache Flinkを検索します。
- Apache Flink ダッシュボードをクリックしてアカウントにインストールします。
上記の手順に従ってアプリケーションが統合されると、ダッシュボードにメトリクスが反映されるはずです。
Apache Flink クイックスタートを計測し、メトリクスとアラートを確認するには、 Install now [今すぐインストール] ボタンをクリックして Apache Flink クイックスタート ページ に従うこともできます。
NRQL を使用してデータをクエリする
NRQL を使用して データをクエリできます。たとえば、New Relic のクエリ ビルダーで完了したチェックポイントの合計数を表示したい場合は、次の NRQL クエリを使用します。
FROM Metric SELECT latest(flink_jobmanager_job_numberOfCompletedCheckpoints) AS 'Number of Completed Checkpoints'
次は何ですか?
Apache Flink ダッシュボードをさらにカスタマイズしたい場合は、NRQL クエリの作成と管理について詳しく学ぶことができます。 New Relic UI で:
- 基本的なクエリと高度なクエリを作成するためのクエリ ビルダーの概要。
- ダッシュボードをカスタマイズしてさまざまなアクションを実行するためのダッシュボードの概要。
- ダッシュボードを管理して、ダッシュボードの表示モードを調整したり、ダッシュボードにコンテンツを追加したりします。