INTEGRITY Документация

Мониторинг Cloudflare Tunnel с помощью Grafana

Grafana это инструмент с дашбордами, который визуализирует данные, хранящиеся в других базах данных. Вы можете использовать Grafana, чтобы преобразовать свои метрики туннеля в практически применимые данные.

Невозможно отправлять метрики напрямую из cloudflared в Grafana. Вместо этого cloudflared выполняет Prometheus конечная точка метрик, которую периодически опрашивает сервер Prometheus. Затем Grafana использует Prometheus как источник данных для отображения метрик администратору.

flowchart LR

  subgraph 192.168.1.1
  A[cloudflared]-->B[Metrics endpoint]
  end

  B--->C
  subgraph 192.168.1.2
  C[Prometheus server]-->D[Grafana dashboard]
  end

В этом руководстве описано, как создать endpoint для метрик, настроить сервер Prometheus и просмотреть данные в Grafana.

Перед началом работы

Создать конечную точку метрик

Если туннель был создан через CLI, выполните следующую команду на cloudflared сервер (192.168.1.1):

cloudflared tunnel --metrics 192.168.1.1:60123 run my-tunnel

Если туннель был создан через панель управления, --metrics флаг нужно добавить в cloudflared конфигурацию системной службы. См. Добавить параметры запуска туннеля с инструкциями о том, как это сделать.

Настройте Prometheus

На сервере Prometheus и Grafana (192.168.1.2):

  1. Скачать Prometheus.

  2. Извлеките Prometheus:

    tar xvfz prometheus-*.tar.gz
    cd prometheus-*
  3. Откройте prometheus.yml в текстовом редакторе и добавьте cloudflared задание в конец файла:

    # my global config
    global:
      scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
      evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
      # scrape_timeout is set to the global default (10s).
    
    # Alertmanager configuration
    alerting:
      alertmanagers:
        - static_configs:
            - targets:
              # - alertmanager:9093
    
    # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
    rule_files:
      # - "first_rules.yml"
      # - "second_rules.yml"
    
    # A scrape configuration containing exactly one endpoint to scrape:
    # Here it's Prometheus itself.
    scrape_configs:
      # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
      - job_name: "prometheus"
    
        # metrics_path defaults to '/metrics'
        # scheme defaults to 'http'.
    
        static_configs:
          - targets: ["localhost:9090"] ## Address of Prometheus dashboard
    
      - job_name: "cloudflared"
        static_configs:
          - targets: ["198.168.1.1:60123"] ## cloudflared server IP and the --metrics port configured for the tunnel
  4. Запустите Prometheus:

    ./prometheus --config.file="prometheus.yml"

    При желании Prometheus можно настроить как службу, чтобы не запускать его вручную после перезагрузки машины.

  5. Откройте браузер и перейдите по адресу http://localhost:9090/. У вас должен появиться доступ к панели управления Prometheus.

  6. Чтобы проверить, что Prometheus получает метрики туннеля, введите cloudflared_tunnel_total_requests в консоль выражений и выберите Выполнить.

    Панель управления Prometheus с данными метрик туннеля

См. Доступные метрики чтобы узнать, какие ещё метрики доступны.

Подключите Grafana к Prometheus

  1. Скачать и установите Grafana.

  2. Запустите Grafana как системную службу:

    sudo systemctl daemon-reload
    sudo systemctl start grafana-server
  3. Убедитесь, что Grafana запущена:

    sudo systemctl status grafana-server
  4. Откройте браузер и перейдите по адресу http://localhost:3000/. HTTP-порт, который Grafana прослушивает по умолчанию: 3000 если вы не настроили другой порт.

  5. На странице входа введите учётные данные Grafana.

    Чтобы протестировать без учетной записи, можно ввести admin для имени пользователя и пароля, чтобы пропустить шаг смены пароля.

  6. В Grafana перейдите в Соединения > Источники данных.

  7. Выберите Добавьте новый источник данных и выберите Prometheus.

  8. В URL-адрес сервера Prometheus поле введите IP-адрес и порт вашей панели мониторинга Prometheus (http://localhost:9090).

  9. Выберите Сохранить и протестировать.

Создание дашборда Grafana

  1. В Grafana перейдите в Панели управления > Новое > Новый дашборд.
  2. Выберите Добавить визуализацию.
  3. Выберите Prometheus.
  4. В поле метрик введите cloudflared_tunnel_total_requests и выберите Запустить запросы. Появится график, показывающий количество запросов в зависимости от времени.
Панель управления Grafana с графиком метрик туннеля

Вы можете добавлять операции к запросам, чтобы изменить отображаемые данные. Например, вместо всех запросов туннеля за всё время сбора метрик можно отобразить только запросы за последний период, например за день.