I. 概要JMX Exporter は、Java アプリケーションから JMX (Java Management Extensions) メトリックを Prometheus 形式にエクスポートするためのオープンソースツールです。Prometheus は、プルモデルを使用してメトリックデータを収集および保存する、人気の高いオープンソースの監視およびアラートツールです。JMX Exporter を使用すると、Java アプリケーションの内部パフォーマンスメトリックを Prometheus にエクスポートし、Java アプリケーションの監視とアラート生成が可能になります。 JMX エクスポーターの主な機能と用途は次のとおりです。 - メトリクスのエクスポート:JMXエクスポーターを使用すると、JavaアプリケーションからエクスポートするJMXメトリクスを選択および設定できます。これらのメトリクスは、JVM内部のパフォーマンスメトリクスまたはアプリケーション固有のカスタムメトリクスのいずれかです。
- Prometheus形式:JMXエクスポーターは、エクスポートされたJMXメトリックをPrometheus形式のメトリックデータに変換します。Prometheus形式はテキストベースの形式で、読みやすく処理しやすく、Prometheusサーバーでの保存やクエリに適しています。
- 様々なJavaアプリケーションに対応:JMXエクスポーターは、スタンドアロンJavaプロセス、Tomcat、Spring Bootアプリケーションなど、幅広いJavaアプリケーションで使用できます。アプリケーションがJMXをサポートしていれば、JMXエクスポーターを使用してメトリックデータをエクスポートできます。
- 設定の柔軟性:JMXエクスポーターでは、設定ファイルを通じてエクスポートするメトリックとマッチングルールを定義できます。これにより、アプリケーションのニーズに合わせて高度なカスタマイズと設定が可能になります。
- ラベルをサポート: Prometheus と同様に、JMX Exporter はラベルをサポートしています。つまり、エクスポートされたメトリックにメタデータを追加して、クエリや視覚化を容易にすることができます。
- 軽量かつ高性能: JMX エクスポーターは、監視への影響を最小限に抑えるために軽量かつ高性能になるように設計されています。
JMX Exporterを使用すると、Javaアプリケーションの主要なパフォーマンスメトリックをPrometheusにエクスポートし、Prometheusの柔軟なクエリおよびアラート機能を活用してアプリケーションを監視および診断できます。これにより、問題をタイムリーに検出して解決し、本番環境におけるアプリケーションの信頼性と安定性を確保できます。 写真 3. JMXエクスポーターjarパッケージをダウンロードするJMX エクスポーター GitHub アドレス: https://github.com/prometheus/jmx_exporter wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.19.0/jmx_prometheus_javaagent-0.19.0.jar IV. JMXエクスポーター(トリノメトリックコレクション)の実践的な操作1) Trinoをインストールする1) TrinoをインストールするTrino 公式ドキュメント: https://trino.io/docs/current/ 迅速な展開のために、docke-compose を使用することを選択しました。 git clone https://gitee.com/hadoop-bigdata/docker-compose-presto.git cd docker-compose-presto 2) 構成を変更する#1、下载mkdir jmx-exporter wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.19.0/jmx_prometheus_javaagent-0.19.0.jar -O jmx-exporter/jmx_prometheus_javaagent-0.19.0.jar # 需要重新构建镜像,将jar包放在镜像包里。 #2、创建jmx 配置文件,可以设置采集规则,默认是采集所有指标touch jmx-exporter/jmx_config.yaml # 内容如下: rules: - pattern: ".*" # 修改配置vi etc/coordinator/jvm.config vi etc/worker/jvm.config # 增加如下内存-javaagent:/opt/apache/trino/lib/jmx_prometheus_javaagent-0.19.0.jar=3900:/opt/apache/trino/etc/jmx_config.yaml
オーケストレーションファイル docker-compose.yaml を変更する version: '3' services: trino-coordinator: image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/trino-jmx-exporter:416 user: "hadoop:hadoop" container_name: trino-coordinator hostname: trino-coordinator restart: always privileged: true env_file: - .env volumes: - ./etc/coordinator/config.properties:${TRINO_HOME}/etc/config.properties - ./etc/coordinator/jvm.config:${TRINO_HOME}/etc/jvm.config - ./etc/coordinator/log.properties:${TRINO_HOME}/etc/log.properties - ./etc/coordinator/node.properties:${TRINO_HOME}/etc/node.properties - ./etc/catalog/:${TRINO_HOME}/etc/catalog/ ports: - "30080:${TRINO_SERVER_PORT}" - "30980:${JMX_RMIREGISTRY_PORT}" - "30981:${JMX_RMISERVER_PORT}" - "3900" command: ["sh","-c","/opt/apache/bootstrap.sh trino-coordinator"] networks: - hadoop-network healthcheck: test: ["CMD-SHELL", "curl --fail http://localhost:${TRINO_SERVER_PORT}/v1/info || exit 1"] interval: 10s timeout: 20s retries: 3 trino-worker: image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/trino:416 user: "hadoop:hadoop" restart: always privileged: true deploy: replicas: 1 env_file: - .env volumes: - ./etc/worker/config.properties:${TRINO_HOME}/etc/config.properties - ./etc/worker/jvm.config:${TRINO_HOME}/etc/jvm.config - ./etc/worker/log.properties:${TRINO_HOME}/etc/log.properties - ./etc/worker/node.properties:${TRINO_HOME}/etc/node.properties - ./etc/catalog/:${TRINO_HOME}/etc/catalog/ - ./jmx-exporter/jmx_config.yaml:${TRINO_HOME}/etc/jmx_config.yaml - ./jmx-exporter/jmx_prometheus_javaagent-0.19.0.jar:${TRINO_HOME}/lib/jmx_prometheus_javaagent-0.19.0.jar ports: - "${TRINO_SERVER_PORT}" command: ["sh","-c","/opt/apache/bootstrap.sh trino-worker"] networks: - hadoop-network healthcheck: test: ["CMD-SHELL", "curl --fail http://localhost:${TRINO_SERVER_PORT}/v1/info || exit 1"] interval: 10s timeout: 10s retries: 3 # 连接外部网络networks: hadoop-network: external: true
3) Trinoのインストールを開始するdocker-compose up -d # 查看docker-compose ps
写真 収集されたデータはWeb経由でアクセスして閲覧できます。 写真 4) Trino JMX メトリック データを収集するために Prometheus の構成を開始します。 Prometheus のインストール手順については、こちらの記事を参照してください: Kubernetes のデプロイメントと実用的なアプリケーションにおける Prometheus の高度なガイド。 1. Prometheus インストール パッケージをダウンロードします。 #官方下载地址:https://github.com/prometheus-operator/kube-prometheus #在官方的基础之上进行了修改和增加内容git clone https://gitee.com/hadoop-bigdata/kube-prometheus.git cd kube-prometheus 2. 画像をインポートするミラーダウンロードログ: リンク: https://pan.baidu.com/s/10ksK1OtKwlvZqbExKmZgLw?pwd=bcu6 抽出コード: bcu6
# 下载完镜像包,批量分发到所有k8s节点,解压进入镜像包目录,直接执行以下命令就可将所有镜像加载sh load-images.sh 3. Prometheusのインストールを開始するkubectl apply --server-side -f manifests/setup kubectl wait \ --for cnotallow=Established \ --all CustomResourceDefinition \ --namespace=monitoring kubectl apply -f manifests/ # 查看kubectl get all -n monitoring
写真 4. Trino JMX メトリック データを収集するために Prometheus の構成を開始します。 jmx/trino.yaml ファイルの内容は次のとおりです。 apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: trino namespace: monitoring labels: app.kubernetes.io/name: trino spec: namespaceSelector: matchNames: - monitoring selector: matchLabels: app.kubernetes.io/name: trino endpoints: - port: metrics interval: 10s path: / --- apiVersion: v1 kind: Service metadata: name: trino namespace: monitoring labels: app.kubernetes.io/name: trino spec: ports: - name: metrics port: 3900 targetPort: 49215 protocol: TCP type: ClusterIP clusterIP: None --- apiVersion: v1 kind: Endpoints metadata: name: trino namespace: monitoring labels: app.kubernetes.io/name: trino subsets: - addresses: - ip: 192.168.182.110 ports: - name: metrics port: 49215 protocol: TCP 埋め込む kubectl apply -f trino.yaml # 查看kubectl get ServiceMonitor,Service,Endpoints -n monitoring
Prometheus で trino jmx が収集されているかどうかを確認します。 写真 4. Trino JMX Grafana監視パネルを構成する公式モジュールダウンロードアドレス: https://grafana.com/grafana/dashboards/ よく使われるテンプレートは https://grafana.com/grafana/dashboards/8563 で、直接インポートできます。パネルのスクリーンショットを以下に示します。 写真 このセクションでは、上記のテンプレートに基づいていくつかの指標を変更します。必要に応じてパネルを追加できます。 写真 Alibaba Cloud でよく使用される Trino 監視メトリックの参照リストは次のとおりです: https://help.aliyun.com/document_detail/474222.html |