rsiot::doc::external_services

Module grafana

Source
Expand description

§Grafana

§docker

services:
  grafana:
    container_name: grafana
    hostname: grafana
    image: grafana/grafana:10.2.3 # https://hub.docker.com/r/grafana/grafana/tags
    environment:
      - GF_PATHS_PROVISIONING=/etc/grafana/provisioning
      - GF_AUTH_ANONYMOUS_ENABLED=true
      - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
      - GF_SECURITY_ALLOW_EMBEDDING=true
        # настройки источника - TimescaleDB
      - TIMESCALEDB_HOST=timescaledb
      - TIMESCALEDB_PORT=5432
      - TIMESCALEDB_DB_DATA=db_data
        # настройки источника - логгер loki
      - LOKI_HOST=loki
      - LOKI_PORT=3100
        # настройки источника - InfluxDB
      - INFLUXDB_HOST=influxdb
      - INFLUXDB_PORT=8086
      - INFLUXDB_ORG=org
      - INFLUXDB_BUCKET=bucket
      - INFLUXDB_TOKEN=token
    ports:
      - "3000:3000"
    profiles:
      - dev
      - target
    volumes:
      - ./config_services/grafana/datasources:/etc/grafana/provisioning/datasources
      - ./config_services/grafana/dashboards:/etc/grafana/provisioning/dashboards
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    networks:
      - network_internal

networks:
  network_internal:

§Файлы конфигурации

§datasources/

В папке хранятся файлы для настройки источников данных.

influxdb.yaml:

apiVersion: 1

datasources:
  - name: InfluxDB
    type: influxdb
    access: proxy
    url: http://${INFLUXDB_HOST}:${INFLUXDB_PORT}
    jsonData:
      version: Flux
      organization: ${INFLUXDB_ORG}
      defaultBucket: ${INFLUXDB_BUCKET}
      tlsSkipVerify: true
    secureJsonData:
      token: ${INFLUXDB_TOKEN}

loki.yaml:

apiVersion: 1

datasources:
  - name: loki
    type: loki
    access: proxy
    orgId: 1
    url: http://${LOKI_HOST}:${LOKI_PORT}
    basicAuth: false
    isDefault: true
    version: 1
    editable: false

timescaledb.yaml:

apiVersion: 1

datasources:
  - name: timescaledb
    type: postgres
    url: ${TIMESCALEDB_HOST}:${TIMESCALEDB_PORT}
    user: postgres
    secureJsonData:
      password: "postgres"
    jsonData:
      database: ${TIMESCALEDB_DB_DATA}
      sslmode: "disable" # disable/require/verify-ca/verify-full
      maxOpenConns: 100 # Grafana v5.4+
      maxIdleConns: 100 # Grafana v5.4+
      maxIdleConnsAuto: true # Grafana v9.5.1+
      connMaxLifetime: 14400 # Grafana v5.4+
      postgresVersion: 1500 # 903=9.3, 904=9.4, 905=9.5, 906=9.6, 1000=10
      timescaledb: true
    editable: false

§datasources/

В папке хранятся все дашбоарды. Структура папок переносится в структуру дашбоардов. В корне папки нужно разместить файл config.yaml:

apiVersion: 1

providers:
  - name: dashboards
    type: file
    updateIntervalSeconds: 5
    options:
      path: /etc/grafana/provisioning/dashboards
      foldersFromFilesStructure: true