コンテンツにスキップ

ArgoCD

Argo CD のサービス状態、アプリケーション状態、およびログ・トレース情報を収集

設定

前提条件

  • K8S 環境をインストール
  • ArgoCD をインストール
  • DataKit をインストール

Argo CD 監視

Argo CD は Prometheus プロトコルでメトリクスを公開しており、これらのメトリクスを使って Argo CD のサービス状態とアプリケーション状態を監視できます。Argo CD は主に 3 種類のメトリクスを公開します。

  • Application Controller Metrics:アプリケーション関連のメトリクス。たとえばアプリケーション数、Argo CD の状態など。
  • API Server Metrics:Argo CD API のリクエスト指標。たとえばリクエスト数、レスポンスコードなど。
  • Repo Server Metrics:Repo Server 関連のメトリクス。たとえば Git リクエスト数、Git 応答時間など。

コレクター設定

Argo CD メトリクス収集

  • datakit.yaml ファイルの ConfigMapkubernetesprometheus.conf を追加する
    kubernetesprometheus.conf: |-
      [inputs.kubernetesprometheus]
        [[inputs.kubernetesprometheus.instances]]
          role       = "service"
          namespaces = ["argocd"]
          selector   = "app.kubernetes.io/name=argocd-server-metrics"

          scrape     = "true"
          scheme     = "http"
          port       = "__kubernetes_service_port_metrics_targetport"
          path       = "/metrics"
          params     = ""

          [inputs.kubernetesprometheus.instances.custom]
            measurement        = "argocd-server"
            job_as_measurement = false
            [inputs.kubernetesprometheus.instances.custom.tags]
              svc_name      = "__kubernetes_service_name"
              pod_name      = "__kubernetes_service_target_name"
              pod_namespace = "__kubernetes_service_target_namespace"
        [[inputs.kubernetesprometheus.instances]]
          role       = "service"
          namespaces = ["argocd"]
          selector   = "aapp.kubernetes.io/name=argocd-metrics"

          scrape     = "true"
          scheme     = "http"
          port       = "__kubernetes_service_port_metrics_targetport"
          path       = "/metrics"
          params     = ""

          [inputs.kubernetesprometheus.instances.custom]
            measurement        = "argocd"
            job_as_measurement = false
            [inputs.kubernetesprometheus.instances.custom.tags]
              svc_name      = "__kubernetes_service_name"
              pod_name      = "__kubernetes_service_target_name"
              pod_namespace = "__kubernetes_service_target_namespace"

        [[inputs.kubernetesprometheus.instances]]
          role       = "service"
          namespaces = ["argocd"]
          selector   = "app.kubernetes.io/name=argocd-notifications-controller-metrics"

          scrape     = "true"
          scheme     = "http"
          port       = "__kubernetes_service_port_metrics_targetport"
          path       = "/metrics"
          params     = ""

          [inputs.kubernetesprometheus.instances.custom]
            measurement        = "argocd-application-controller"
            job_as_measurement = false
            [inputs.kubernetesprometheus.instances.custom.tags]
              svc_name      = "__kubernetes_service_name"
              pod_name      = "__kubernetes_service_target_name"
              pod_namespace = "__kubernetes_service_target_namespace"

      [inputs.kubernetesprometheus.global_tags]
        instance = "__kubernetes_mate_instance"
        host     = "__kubernetes_mate_host"
  • kubernetesprometheus.conf を DataKit の /usr/local/datakit/conf.d/kubernetesprometheus/kubernetesprometheus.conf にマウントする
          - mountPath: /usr/local/datakit/conf.d/kubernetesprometheus/kubernetesprometheus.conf
            name: datakit-conf
            subPath: kubernetesprometheus.conf
            readOnly: true
  • 以下のコマンドを実行して DataKit を再起動する
kubectl delete -f datakit.yaml
kubectl apply -f datakit.yaml

Argo CD トレース収集

  • datakit.yaml ファイルを修正して OpenTelemetry トレースコレクターを有効にする
apiVersion: v1
kind: ConfigMap
metadata:
  name: datakit-conf
  namespace: datakit
data:
  #### opentelemetry
  opentelemetry.conf: |-
    [[inputs.opentelemetry]]
      [inputs.opentelemetry.http]
       enable = true
       http_status_ok = 200

      [inputs.opentelemetry.grpc]
       trace_enable = true
       metric_enable = true
       addr = "0.0.0.0:4317"
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: daemonset-datakit
  name: datakit
  namespace: datakit
spec:
  ...
  template:
    ...
    spec:
      ...
      containers:
        ...
        volumeMounts:
        ...
        - mountPath: /usr/local/datakit/conf.d/opentelemetry/opentelemetry.conf
          name: datakit-conf
          subPath: opentelemetry.conf
        ...
  • DataKit サービスの OpenTelemetry Svc ポートを有効にする
apiVersion: v1
kind: Service
metadata:
  name: datakit-service
  namespace: datakit
spec:
  selector:
    app: daemonset-datakit
  ports:
    - name: datakit
      protocol: TCP
      port: 9529
      targetPort: 9529
    - name: opentelemetry
      protocol: TCP
      port: 4317
      targetPort: 4317
  • Argo CD の ConfigMap にある argocd-cmd-params-cm.yaml ファイルを修正し、otlp.address アドレスを追加すると、Argo CD のトレースを取得できます。
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    app.kubernetes.io/name: argocd-cmd-params-cm
    app.kubernetes.io/part-of: argocd
  name: argocd-cmd-params-cm
  namespace: argocd
data:
  otlp.address: datakit-service.datakit:4317
  • 以下のコマンドを実行して Argo CD サービスを再起動する
kubectl apply -f argocd-cmd-params-cm.yaml 

Argo CD ログ収集

DataKit はデフォルトでコンテナの標準出力ログを収集するため、追加設定は不要です。

メトリクス

argocd-server

メトリクス 説明
process_start_time_seconds API Server における、unix epoch からのプロセス開始時刻(秒)
go_goroutines API Server に現在存在する goroutines の数
grpc_server_handled_total 成功・失敗を問わず、サーバー上で完了した RPC の総数
grpc_server_started_total サーバー上で開始された RPC の総数
go_memstats_alloc_bytes API Server で割り当てられ、現在も使用中のヒープバイト数

argocd-application-controller

メトリクス 説明
argocd_app_info Application に関する情報。syncstatushealthstatus など、Argo CD におけるアプリケーション状態を表すタグを含む。メトリクス値は一定
go_memstats_heap_alloc_bytes Application Controller で割り当てられ、現在も使用中のヒープバイト数
process_cpu_seconds_total Application Controller で消費されたユーザー CPU 時間とシステム CPU 時間の合計(秒)
argocd_app_reconcile_count アプリケーションの reconcile 回数
argocd_app_reconcile_bucket 設定された時間境界ごとの Application Reconciliation の件数
workqueue_depth Workqueue の深さ
argocd_kubectl_exec_total Kubectl 実行回数
argocd_app_k8s_request_total 実行された Kubernetes リクエスト数
argocd_kubectl_exec_pending 保留中の Kubectl 実行数

argocd-repo-server

メトリクス 説明
argocd_git_request_total Git Ls-Remote リクエスト数
argocd_git_request_duration_seconds_bucket Git Ls-Remote リクエストのパフォーマンス

その他のメトリクスはArgoCD 公式ドキュメントを参照してください

フィードバック

このページは役に立ちましたか?