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?

CloudWatch AgentでKonnectのData Planeのメトリクスを取得する

Posted at

CloudWatch AgentでKonnectのData Planeのメトリクスを取得した時のメモ。
こちらを参考にした。
ただ、CloudWatch Agentを使ったPrometheusのメトリクスの取り込みでは、ヒストグラムの取り込みがサポートされていないのであまり実用的ではなく、バッドノウハウの共有に近いかも。

前提

以下の環境で動作確認した。

  • Data PlaneはEC2上にDockerで構築

検証手順

まず、Data Plane側でメトリクスが出せるようにStatusAPIを利用する設定を追加してコンテナを起動する。

docker run -d --restart=always --name konnect-dp \
	:(省略)
	-e "KONG_STATUS_LISTEN=0.0.0.0:8100" \
	-p 8100:8100

これでメトリクスが取れるようになる。

$ curl -s localhost:8100/metrics | head
# HELP kong_control_plane_connected Kong connected to control plane, 0 is unconnected
# TYPE kong_control_plane_connected gauge
kong_control_plane_connected 1

次にスクレイプ設定となるprometheus.ymlを作成する。

cat <<EOF > ./konnect-dp-prometheus.yml
global:
  scrape_interval: 1m
  scrape_timeout: 10s
scrape_configs:
  - job_name: 'konnect-dp'
    sample_limit: 10000
    scrape_interval: 15s
    static_configs:
      - targets: ['localhost:8100']
EOF

次にAWS側の設定をする。
EC2のロールにCloudWatchAgentServerPolicyのポリシーを割り当てる

CloudWatch AgentをEC2にインストールする。
インストール方法はこちらを参照。

以下はUbuntuの例。

wget https://amazoncloudwatch-agent.s3.amazonaws.com/debian/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i amazon-cloudwatch-agent.deb

インストール後、自動起動を有効化しておく。

sudo systemctl enable amazon-cloudwatch-agent

CloudWatch Agentの設定ファイルを作成する。

cat <<'EOF' | sudo tee /etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.d/konnect-config.json
{
  "agent": {
    "metrics_collection_interval": 60,
    "run_as_user": "root"
  },
   "logs":{
      "metrics_collected":{
         "prometheus":{
            "cluster_name": "konnect-dp",
            "log_group_name": "konnect-dp-logs",
            "prometheus_config_path":"/home/ubuntu/cloudwatch-agent/konnect-dp-prometheus.yml",
            "emf_processor": {
                "metric_declaration_dedup": true,
                "metric_namespace": "KonnectDPMetrics",
                "metric_declaration": [
                  {
                    "source_labels": ["job"],
                    "label_matcher": ".*", 
                    "dimensions": [
                        ["InstanceId"],
                        ["job"] 
                    ],
                    "metric_selectors": [ 
                      ".*"
                    ]
                  }
                ]
            }
        }
      },
      "force_flush_interval": 5 
  }
}
EOF

CloudWatch Agentに設定を読み込ませる。

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.d/konnect-config.json

CloudWatch Agentを起動する。

sudo systemctl restart amazon-cloudwatch-agent

状態を確認し、Activeの項目がactive (running)になっていることを確認する。

sudo systemctl status amazon-cloudwatch-agent

CloudWatchを確認する。
カスタム名前空間のところにmetric_namespace設定したNamespaceが作成されている。
Pasted image 20250619162814.png

クリックすると取れているメトリクスの一覧が確認できる。
Pasted image 20250619162945.png

数が少ないように見える。
これは前述の通りCloudWatch Agentを使ったPrometheusのメトリクスの取り込みでは、ヒストグラムの取り込みがサポートされていないためである。
なので、レイテンシ系の確認で利用するkong_request_latency_msなどは確認することが出来ない。

取れているものについては以下のような感じで値の推移などを確認できる。
Pasted image 20250619163342.png

まとめ

上述のように設定自体はそれほど大変ではないが、ヒストグラムが取れないのであまり実用的ではない。
AWS Distro for OpenTelemetry(ADOT)やAmazon Managed Service for Prometheus(AMP)を使いましょう。

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?