0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JMXメトリクスをCloudWatch Observabilityアドオンで収集する

Posted at

はじめに

AWSのElastic Kubernetes Service (EKS)を使用している場合、アプリケーションのパフォーマンスを監視することも重要です。特にJavaアプリケーションの場合、JMX(Java Management Extensions)メトリクスは貴重な情報源となります。この記事では、Amazon CloudWatch Observabilityアドオンを使用したJMXメトリクスの収集方法について説明します。

前提条件

  • AWSアカウントとEKSクラスターがセットアップされていること
  • 基本的なKubernetesの知識
  • CloudWatchの基本的な理解

設定手順

1. Amazon CloudWatch Observabilityアドオンのインストール

まず、EKSクラスターにAmazon CloudWatch Observabilityアドオンをインストールする必要があります。このアドオンは、CloudWatchエージェントを利用してCloudWatch Application Signalsで使用するアプリケーションのメトリクスとトレースをデフォルトで収集します。アドオンのインストール方法はAWS公式ドキュメントのAmazon CloudWatch Observability EKS アドオンのクイックスタートを参照してください。

ただし、注意点としてこのアドオンをインストールしただけではJMXメトリクスの収集は行われません。

2. JMXメトリクス収集の有効化

AWS公式ドキュメントの独自のサービスを使用して Amazon EKS クラスターで Application Signals を有効にするにある通り、JMXメトリクスを収集するには、ワークロード(Pod)またはNamespaceのannotationsに特定の設定を追加する必要があります。

具体的には以下のannotationを追加します。

instrumentation.opentelemetry.io/inject-java: "true"

ワークロード単位で設定する場合、DeploymentではなくPodのannotationsに追加する必要があります。以下は、Deploymentの設定例です。

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: java-app
  name: java-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: java-app
  template:
    metadata:
      labels:
        app: java-app
      annotations:
        instrumentation.opentelemetry.io/inject-java: "true"
    spec:
      containers:
      - image: ryotamori/jmx-agent-example:v2
        name: jmx-agent-example

ワークロード側のJMXメトリクス公開方法

JMXメトリクスの公開方法には主に2つあります。

  1. JMXエクスポーター
  2. RMI(Remote Method Invocation)

どちらの方法でメトリクスを公開しても、Container Insightsによって収集されることを確認しています。

メトリクスの確認方法

設定が完了すると、CloudWatchメトリクスのカスタム名前空間にApplicationSignalsが追加されます。ここで収集されたJMXメトリクスを確認することができます。

Application Signalsで収集されるメトリクス

AWS公式ドキュメントのApplication Signals によって収集されるメトリクスに、詳細な情報が記載されています。

また、メトリクスのカスタマイズ方法については、CloudWatch Application Signals を有効にするのドキュメントを参照してください。

不要なメトリクスの抑止

デフォルトでは、neuronやdcgm-exporterなどのメトリクスも収集されますが、これらを使用していない場合、CloudWatch Agentのログに継続的に警告が出力されます。

これらの不要なメトリクスを抑止するには、アドオンの高度な設定でCloudWatch Agentの設定を変更します。以下は、Application Signalsを有効にしつつ、高速コンピューティングメトリクスを抑止する設定例です:

{
  "agent": {
    "config": {
      "logs": {
        "metrics_collected": {
          "application_signals": {},
          "kubernetes": {
            "enhanced_container_insights": true,
            "accelerated_compute_metrics": false
          }
        }
      }
    }
  }
}

この設定方法の詳細は、高速コンピューティングメトリクスの収集をオプトアウトするのドキュメントを参照してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?