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ファイルのConfigMapにkubernetesprometheus.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 を再起動する
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 サービスを再起動する
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 に関する情報。syncstatus や healthstatus など、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 公式ドキュメントを参照してください