🗂

ArgoCDのメトリクスをGrafanaダッシュボードに表示する

2024/01/13に公開

記事の内容

以下の画像のようなArgoCDのメトリクスをGrafana上に構築します。

Grafana

記事の長さ

3分で読めます

Grafana, Prometheusを準備する

ローカルクラスター上にGrafanaとPrometheusをセットアップします。

https://zenn.dev/ring_belle/articles/prometheus-grafana-metrics

こちらの記事にPrometheusとGrafanaをローカルクラスター上に構築し、PrometheusのメトリクスをGrafanaで表示する方法を紹介しています。

上記記事を参考にして、PrometheusとGrafanaをkindクラスター上に構築してください。
今回は、上記環境を利用して作成していきます。

ArgoCDの準備

https://argo-cd.readthedocs.io/en/stable/getting_started/

ArgoCDをKindクラスターにinstallしていきます。(公式チュートリアル通りに進めていきます)

Install ArgoCD

$ kubectl create namespace argocd
$ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/core-install.yaml

上記コマンドでKubernetesクラスターにargocdというnamespaceを作成し、そのnamespaceにArgoCDをInstallします。

管理画面にアクセスする

ArgoCDのInstallが完了したので、Port Forwardを利用してArgoCDの管理画面にアクセスします。

$ kubectl port-forward svc/argocd-server -n argocd 8080:443

上記を実行後、https://localhost:8080 にアクセスします。すると、ArgoCDの初期画面が表示されるため、ログインを行います。

Grafana

ArgoCDの初期パスワード

  • id: admin
  • password: <以下のコマンドで取得可能>
$ argocd admin initial-password -n argocd

無事ArgoCDの初期画面にアクセスできました

Grafana

ArgoCDでアプリケーションをDeployする

ArgoCDの準備が完了したため、ArgoCDでアプリケーションをDeployします。

Test Applicationの作成

テストアプリケーションを以下で作成します。

kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - ./deployment.yaml

deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: demo
  template:
    metadata:
      labels:
        app: demo
    spec:
      containers:
        - name: demo
          image: nginx
          ports:
            - containerPort: 80

nginxサーバーが起動するDeploymentを作成しました。このDeploymentをArgoCDでDeployできるようにします。

ArgoCDにGithub Repositoryを登録する

以下画像のように、Connected Repositoryを追加します。Public Repositoryの場合、すぐにコネクトできます。

Grafana

ArgoCD Applicationを作成する

次に、ArgoCD Applicationを作成します。

Applicationsのページから、+ NEW APPを選択し、以下のように入力していきます。

  • Application Name: demo
  • Project Name: default
  • Repository URL: 先ほどコネクトしたGithub Repository
  • Revision: HEAD
  • Path: .
  • Cluster URL: https://kubernetes.default.svc
  • Namespace: default

上記設定後、Applicationを作成します。

すると、以下のようにdemoアプリケーションが作成されて、先ほど作成したdeploymentがdeployされます。

Grafana

$ kubectl get pod -n default
NAME                  READY   STATUS    RESTARTS   AGE
demo-65c7859f64-xqpqd 1/1     Running   0          38m
...

ArgoCDのメトリクスを取得する

ArgoCDの準備が完了したので、次にArgoCDのメトリクスを取得します。

ServiceMonitorを追加する

ArgoCDのメトリクスを取得するためにServiceMonitorリソースを追加して、PrometheusにArgoCDメトリクスのありかを教えます。

prometheus_servicemonitor.yaml

...
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: argocd-metrics
  labels:
    app: prometheus
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: argocd-metrics
  namespaceSelector:
    matchNames:
    - argocd
  endpoints:
  - port: metrics
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: argocd-server-metrics
  labels:
    app: prometheus
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: argocd-server-metrics
  namespaceSelector:
    matchNames:
    - argocd
  endpoints:
  - port: metrics
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: argocd-repo-server-metrics
  labels:
    app: prometheus
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: argocd-repo-server
  namespaceSelector:
    matchNames:
    - argocd
  endpoints:
  - port: metrics
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: argocd-applicationset-controller-metrics
  labels:
    app: prometheus
spec:
  selector:
    matchLabels:
      app.kubernetes.io/name: argocd-applicationset-controller
  namespaceSelector:
    matchNames:
    - argocd
  endpoints:
  - port: metrics

上記ファイルをKubernetesクラスターにapplyします。

$ kubectl apply -f prometheus_servicemonitor.yaml
...
servicemonitor.monitoring.coreos.com/argocd-metrics created
servicemonitor.monitoring.coreos.com/argocd-server-metrics created
servicemonitor.monitoring.coreos.com/argocd-repo-server-metrics created
servicemonitor.monitoring.coreos.com/argocd-applicationset-controller-metrics created

Grafana DashboardでArgoCDのDashboardを作成する

PrometheusにArgoCDのメトリクス情報を蓄積できるようになったので、GrafanaでDashboardを作成します。

https://github.com/argoproj/argo-cd/blob/master/examples/dashboard.json

ArgoCDの公式がGrafanaのダッシュボード用のjsonを提供していますので、このjsonファイルをimportします。

GrafanaのDashboard新規作成画面にいき、import を選択し、上記jsonファイルをコピペしてください。

正常にimportが完了すると、以下のようなDashboardが表示されます。

Grafana

まとめ

これでArgoCDのメトリクスをGrafanaダッシュボード上で作成できました!

sample source

こちらに今回作成した構成のファイルをアップロードしてあります。

https://github.com/rara-tan/zenn-argocd-grafana-metrics

note

勉強法やキャリア構築法など、エンジニアに役立つ記事をnoteで配信しています。

https://note.com/ring_belle/membership

Discussion