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?

Amazon EKS on Fargate ADOT でメトリクスを取得

Last updated at Posted at 2023-12-23

Fargate でメトリクスを取得するには

AWS Distro for OpenTelemetry (ADOT) を使用する。

仕組み

以下のページで紹介されている「Design of Container Insights support in ADOT Collector for EKS Fargate」のような仕組みのようである。

取得されるメトリクス

  • pod_cpu_utilization_over_pod_limit
  • pod_cpu_usage_total
  • pod_cpu_limit
  • pod_memory_utilization_over_pod_limit
  • pod_memory_working_set
  • pod_memory_limit
  • pod_network_rx_bytes
  • pod_network_tx_bytes

作成されるディメンション

  • ClusterName, LaunchType
  • ClusterName, Namespace, LaunchType
  • ClusterName, Namespace, PodName, LaunchType

Demo

1. fargateProfiles の作成

ここでは、fargate-default と fargate-container-insights の 2 つのプロファイルを作成しています。

ClusterConfig.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: cluster-demo
  region: ap-northeast-1
  version: "1.27"

iam:
  withOIDC: true

fargateProfiles:
  - name: fargate-default
    selectors:
      - namespace: default
      - namespace: kube-system
  - name: fargate-container-insights
    selectors:
      - namespace: fargate-container-insights

2. ADOT Collector に CloudWatch に送信するための IAM を付与する

ADOT Collector には、パフォーマンスログイベントを CloudWatch に送信するために IAM 権限が必要です。

これは、Kubernetes のサービスアカウントを IAM ロールに関連付けることで実現します。

※ サービスアカウントとは、こちら のページでも紹介している通り、Pod 単位で IAM ロールを割り当てるものです。

そして、IAM ロールには、 CloudWatchAgentServerPolicy をアタッチします。

eksctl create iamserviceaccount \
--cluster=cluster-demo \
--region=ap-northeast-1 \
--name=adot-collector \
--namespace=fargate-container-insights \
--role-name=EKS-Fargate-ADOT-ServiceAccount-Role \
--attach-policy-arn=arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy \
--approve

Kubernetes のサービスアカウントを確認

kubectl describe sa adot-collector  -n fargate-container-insights

Name:                adot-collector
Namespace:           fargate-container-insights
Labels:              app.kubernetes.io/managed-by=eksctl
Annotations:         eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/EKS-Fargate-ADOT-ServiceAccount-Role
Image pull secrets:  <none>
Mountable secrets:   <none>
Tokens:              <none>
Events:              <none>

3. ADOT Collector を Kubernetes StatefulSet としてデプロイする

otel-fargate-container-insights.yaml を取得

wget https://raw.githubusercontent.com/aws-observability/aws-otel-collector/main/deployment-template/eks/otel-fargate-container-insights.yaml

sed コマンドで、YOUR-EKS-CLUSTER-NAMEcluster-demo に置き換え

sed -i -e 's/YOUR-EKS-CLUSTER-NAME"/cluster-demo"/g' otel-fargate-container-insights.yaml

sed コマンドで、us-east-1ap-northeast-1 に置き換え

sed -i -e 's/region: us-east-1/region: ap-northeast-1/g' otel-fargate-container-insights.yaml

ADOT Collector を apply し、pod が起動していることを確認

kubectl apply -f otel-fargate-container-insights.yaml
kubectl get pod -n fargate-container-insights

NAME               READY   STATUS    RESTARTS   AGE
adot-collector-0   1/1     Running   0          2m40s

4. サンプルアプリケーションのデプロイ

動作確認用として、適当なサンプルアプリケーションをデプロイし、Pod の起動を確認

deplyment.yaml
apiVersion: apps/v1
kind: Deployment

metadata:
  name: nginx-deployment

spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
kubectl apply -f deployment.yml
kubectl get pod

NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-57d84f57dc-6fxd6   1/1     Running   0          73s
nginx-deployment-57d84f57dc-bgr9g   1/1     Running   0          73s

5. 動作チェック

ロググループ

ロググループ /aws/containerinsights/cluster-demo/performance に、各 Pod のログストリームが作成されていることが確認できました。

スクリーンショット 2023-12-23 15.55.13.png

ディメンション

ContainerInsights というカスタム名前空間に先述したディメンションが作成されていることが確認できました。

スクリーンショット 2023-12-23 15.49.55.png

メトリクス

ざっくりですが、先述したメトリクスが作成されていることが確認できました。

スクリーンショット 2023-12-23 16.13.52.png

Container Insights

Container Insights で可視化し表示されたことが確認できました。
スクリーンショット 2023-12-23 16.32.44.png

なお、Amazon EKS 向けにオブザーバビリティが強化された Container Insights は、2023/12 現在では Fargate ではサポートされていないので、焦らないようにしましょう。
スクリーンショット 2023-12-23 16.34.50.png

リンク

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?