АвтоматичСскоС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ datasource

Grafana ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ provisioning β€” ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ автоматичСской настройки ΠΏΡ€ΠΈ стартС Ρ‡Π΅Ρ€Π΅Π· Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Datasource описан Π² ConfigMap Π²Π½ΡƒΡ‚Ρ€ΠΈ infrastructure/prometheus-stack/grafana.yaml:

apiVersion: v1
kind: ConfigMap
metadata:
  name: grafana-datasources
data:
  prometheus.yaml: |
    apiVersion: 1
    datasources:
      - name: Prometheus
        type: prometheus
        url: http://prometheus:9090   # Service DNS-имя
        isDefault: true
        editable: false

Π­Ρ‚ΠΎΡ‚ ConfigMap монтируСтся Π² Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ /etc/grafana/provisioning/datasources/ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. ΠŸΡ€ΠΈ стартС Grafana Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ всС .yaml Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· этой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ автоматичСски добавляСт datasource.

url: http://prometheus:9090 β€” Kubernetes DNS Ρ€Π΅Π·ΠΎΠ»Π²ΠΈΡ‚ prometheus Π² ClusterIP сСрвиса Prometheus. Grafana ΠΈ Prometheus находятся Π² ΠΎΠ΄Π½ΠΎΠΌ namespace monitoring, поэтому достаточно ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ.

АвтоматичСская Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ΠΎΠ²

Аналогично datasource β€” Ρ‡Π΅Ρ€Π΅Π· provisioning. НуТны Π΄Π²Π° ConfigMap.

ΠŸΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ β€” Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Grafana, Π³Π΄Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹:

data:
  dashboards.yaml: |
    apiVersion: 1
    providers:
      - name: default
        type: file
        options:
          path: /var/lib/grafana/dashboards   # ← ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ здСсь

Π‘Π°ΠΌΠΈ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹ β€” JSON-Ρ„Π°ΠΉΠ»Ρ‹, скачанныС с grafana.com:

apiVersion: v1
kind: ConfigMap
metadata:
  name: dashboard-node-exporter
data:
  node-exporter.json: |
    { ... JSON Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Π° ... }

Оба ConfigMap ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. ΠŸΡ€ΠΈ стартС Grafana Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ всС .json Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· path ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ ΠΈΡ….

Π’Π°ΠΆΠ½Ρ‹ΠΉ нюанс: Π΄Π°ΡˆΠ±ΠΎΡ€Π΄Ρ‹ с grafana.com содСрТат ${DS_PROMETHEUS} вмСсто Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ datasource. ΠŸΠ΅Ρ€Π΅Π΄ созданиСм ConfigMap Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ:

sed -i 's/\${DS_PROMETHEUS}/Prometheus/g' dashboard.json

Π˜Π½Π°Ρ‡Π΅ Grafana Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π°ΡˆΠ±ΠΎΡ€Π΄ с datasource.

БвязанныС Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ