Демо на GitHub

link-to-grafana-cloud

Конфигурация Grafana Private data source connect

Official dcoumentations

Залогиньтесь в Grafana cloud, перейдите в раздел Connections и выберите Private data source connect

link-to-grafana-cloud

Нажмите кнопку +Add new network

link-to-grafana-cloud

link-to-grafana-cloud

Далее следует создать новый токен для настройки подключения, в созданном коннекторе выберите вариант Docker . Ввведите имя и нажмите на кнопку Create token

link-to-grafana-cloud

Сохраните токен для дальнейшего использования, также скопируйте параметры -cluster и -gcluud-hosted-grafana-id из поля Docker скрипта. Вы можете проверить правильность подключения агента нажав на Test agent connection.

link-to-grafana-cloud

Токен может быть использован для нескольких агентов одновременно

link-to-grafana-cloud

Разворачивание локального PDC агента

Используйте Ansible для доставки скриптов на целеыой сервер

..
|-- ansible
    |-- invertory.yaml
    |-- playbook.grafana-pdc.yaml 
|-- docker
    |-- docker-compose.grafana-pdc.yaml
    |-- grafana-pdc.env
|-- prometheus
    |-- prometheus.yml
inventory.yaml
maingroup:
  hosts:
    host1:
playbook.grafana-pdc.yaml
---
- hosts: maingroup
  become: yes
  remote_user: root

  tasks:
    - name: Create MONITORING directory
      ansible.builtin.file:
        path: /MONITORING
        state: directory
        mode: '0777'  

    - name: Create prometheus directory
      ansible.builtin.file:
        path: /MONITORING/prometheus
        state: directory
        mode: '0777'

    - name: Create prometheus config directory
      ansible.builtin.file:
        path: /MONITORING/prometheus/config
        state: directory
        mode: '0777'
      
    - name: Create prometheus data directory
      ansible.builtin.file:
        path: /MONITORING/prometheus/data
        state: directory
        mode: '0777'

    - name: Copy prometheus conf
      ansible.builtin.copy:
        src: ../prometheus/
        dest: /MONITORING/prometheus/config/
        owner: root
        group: root
        mode: '0744'

    - name: Create Docker directory
      ansible.builtin.file:
        path: /opt/docker-compose/grafana-pdc
        state: directory
        mode: '0755'

    - name: Copy docker compose fie
      ansible.builtin.copy:
        src: ../docker/docker-compose.grafana-pdc.yaml
        dest: /opt/docker-compose/grafana-pdc/docker-compose.grafana-pdc.yaml
        owner: root
        group: root
        mode: '0744'
    - name: Copy docker compose env file
      ansible.builtin.copy:
        src: ../docker/grafana-pdc.env
        dest: /opt/docker-compose/grafana-pdc/grafana-pdc.env
        owner: root
        group: root
        mode: '0744'
    
    - name: Compose up grafana-pdc
      ansible.builtin.shell: |
          docker compose -f docker-compose.grafana-pdc.yaml up -d
      args:
        chdir: /opt/docker-compose/grafana-pdc
docker-compose.grafana-pdc.yaml
name: grafana-pdc
services:
  prometheus:
    image: prom/prometheus
    container_name: prometheus
    restart: always
    ports:
      - "9090:9090/tcp"
    networks:
      - grafana-pdc
    volumes:
      - type: bind
        source: /MONITORING/prometheus/config
        target: /etc/prometheus
      - type: bind
        source: /MONITORING/prometheus/data
        target: /prometheus

  pdc-agent:
    image: grafana/pdc-agent
    container_name: pdc-agent
    restart: always
    command: ["-token", "${TOKEN}", "-cluster", "${CLUSTER}", "-gcloud-hosted-grafana-id", "${HOSTED_GRAFANA_ID}"]
    secrets:
      - param
    networks:
      - grafana-pdc

networks:
  grafana-pdc:

secrets:
  param:
    file: ./grafana-pdc.env
grafana-pdc.env
TOKEN="here insert the connection token"
CLUSTER="cluster param from docker script"
HOSTED_GRAFANA_ID="gcluud-hosted-grafana-id param from docker script"
prometheus.yml
global:
  scrape_interval: 15s
  scrape_timeout: 10s
  scrape_protocols:
  - OpenMetricsText1.0.0
  - OpenMetricsText0.0.1
  - PrometheusText0.0.4
  evaluation_interval: 15s
runtime:
  gogc: 75
alerting:
  alertmanagers:
  - follow_redirects: true
    enable_http2: true
    http_headers: null
    scheme: http
    timeout: 10s
    api_version: v2
    static_configs:
    - targets: []
scrape_configs:
- job_name: prometheus
  honor_timestamps: true
  track_timestamps_staleness: false
  scrape_interval: 15s
  scrape_timeout: 10s
  scrape_protocols:
  - OpenMetricsText1.0.0
  - OpenMetricsText0.0.1
  - PrometheusText0.0.4
  metrics_path: /metrics
  scheme: http
  enable_compression: true
  follow_redirects: true
  enable_http2: true
  http_headers: null
  static_configs:
  - targets:
    - localhost:9090

Добавление Data source в Grafana Cloud

Вернитесь в Grafana cloud, перейдите в раздел Connections->Datasources. Нажмите + Addnew data source и выберите Prometheus

link-to-grafana-cloud

В поле Connection впишите локальный Prometheus URL http://prometheus:9090

link-to-grafana-cloud

Выберите правильное PDC подключение в Private data source connect и нажмите Save & Test

link-to-grafana-cloud