Немного расскажу про установку Grafana на windows и настройку базовых метрик системы.

Пару слов о самой Grafana и для чего она нужна.

Grafana – это платформа для мониторинга, анализа данных и визуализации собранных данных с открытым исходным кодом. По сути она используется для визуального представления собранных метрик для более комфортного слежения за состоянием системы.

В данной статье буду использовать:

  • Grafana

  • Prometheus

  • Windows_exporter

  • Blackbox_exporter

Для начала скачаем актуальный дистрибутив самой Grafana и установим его (Для скачивания, может потребоваться VPN).

Переходим по ссылке: https://grafana.com/grafana/download и выбираем необходимую версию для скачивания.

Затем скачаем и установим Prometheus.

Prometheus по сути является сборщиком метрик. Установив на один пк, который будет выступать в качестве сервера для Grafana, достаточно будет только запускать сбор метрик с других машин (вносить соответствующий блок в файл конфигурации Prometheus), а Prometheus в свою очередь подготовит метрики уже для самой Grafana.

Prometheus: https://prometheus.io/download

Для установки потребуется NSSM - это сервисный помощник, который помогает установить служебные вспомогательные программы.

Ссылка NSSM: https://www.nssm.cc/download

Приступим к установке Prometheus.

Переходим в CMD и вводим следующие команды (запускаем CMD от админа):

  1. Переходим в директорию с пакетом NSSM:

    cd C:\GrafanaSetup\nssm-2.24\win64

  2. Выполняем установку сервиса Prometheus:

    nssm.exe install prometheus C:\GrafanaSetup\prometheus-2.43.0.windows-amd64\prometheus.exe

На данном этапе служба Prometheus должны быть установлена, Далее установим службы для сбора метрик.

Установим Windows_exporter – сборщик метрик, который как раз собирает статистику с системы и составляет своего рода «логи».

Ссылка для скачивания Windows exporter: https://github.com/prometheus-community/windows_exporter/releases

Выбираем подходящую нам версию и устанавливаем

После установки, так же проверяем в службах, что установка прошла успешно и служба запущена (название службы по умолчанию windows_exporter).

Теперь можно проверить сбор метрик по ссылке к порту службы: http://localhost:9182/metrics

На данном этапе можем установить Blackbock exporter - используется для мониторинга статуса доступности URL-ов. Переходим по ссылка и скачиваем нужную нам версию Blackbox: https://prometheus.io/download/ и устанавливаем.

Теперь приступим к настройке установленных сервисов.

Начинаем с Grafana:

Переходим в папку C:\Program Files\GrafanaLabs\grafana\conf и открываем файл defaults.ini при помощи текстового редактора и меняем значение в блоке smtp в поле enabled на true и сохраняем изменения. Запускаем службу Grafana, если она уже запущена, просто делаем перезапуск для вступления изменений в силу.

Перейдя по ссылке: http://localhost:3000 увидим активный интерфейс Grafana. Для входа по умолчанию используется комбинация admin / admin, затем попопросит Вас изменить пароль и направит на домашнюю страницу управления Grafana.

Далее приступаем к настройке Prometheus:Нам необходимо внести изменения в конфигурацию, включив метрики в конфиг. Для этого переходим в каталог prometheus») и открываем файл prometheus.yml и вносим следующие изменения:

Добавляем блок для подключения windows_exporter:

- job_name: "Любое комфортное имя"

      static_configs:

            #IP-адрес и порт, где собираются метрики window_exporter\

            - targets: ["localhost:9182”]

При добавлении нескольких машин, можно добавить блок lables, который изменит отображаемый IP-адрес на свое описание:

  static_configs:

      - targets: ["localhost:9182"]

        labels:

            instance: Server-1

      - targets: ["192.168.0.254:9182"]    

        labels:

            instance: Server-2

Сразу добавим блок для blackbox_exporter:

- job_name: 'blackbox'

      metrics_path: /probe

      params:

            module: [http_2xx]  # Look for a HTTP 200 response.

    static_configs:

      - targets:

            -https://youtube.com

            -https://google.com

    relabel_configs:

      - source_labels: [__address__]

            target_label: __param_target

      - source_labels: [__param_target]

            target_label: instance

      - target_label: __address__

            replacement: localhost:9115  # The blackbox exporter's real hostname:port

В блоке targets перечисляем необходимые URL-адреса.

Только обратите внимание, для того, что бы блок корректно заработал и не было ошибок при запуске службы, необходимо строго соблюдать табуляцию строк.
Добавив необходимые блоки можем запускать prometheus.

Затем убедитесь, что все службы запущены:

  1. Grafana

  2. Prometheus

  3. Windows_ exporter

  4. Blackbox_exporter

и теперь проверяем статус сервисов по ссылке: http://localhost:9090/targets

В целом мы настроили базовые метрики, осталось включить отображение метрик в Grafana.

Переходим на главную страницу grafana ( По умолчанию: http://localhost:3000 ).

Подключаем источник данных Prometheus:

На главной странице, переходим в меню Data sources

Выбираем наш Prometheus

И указываем наш URL. В нашем случае, всё находится на одной локальной машине и можем прописывать через формат: http://localhost:port/

И нажимаем кнопку: Save & test

Теперь необходимо настроить панели мониторинга для метрик windows exporter. Для настройки переходим на главную страницу и добавляем панель:

На момент написания статьи, нашёл два наиболее охватывающих Dashboard`а:

  1. 14510

  2. 14694

Можете использовать их или же настроить всё самостоятельно.

Для добавления Dashboard`а указываем в поле ID и нажимаем на кнопку Load.

Затем нас направляет на панель настроек, где мы указываем источник данных Prometheus и можем изменить имя самой панели. Затем жмём кнопку Import

И у нас уже готовая, настроенная панель мониторинга, которую уже можно добавлять необходимым функционалом. Не нужные графики можно удалить или расставить в нужном для себя порядке.

При добавлении новых пк для мониторинга, достаточно внести строки в конфигурационный файл Prometheus.yml и перезапустить службу Prometheus. Служба самостоятельно разберёт метрики и добавить новый пк к мониторингу на уже готовый dashboard, где уже не составит труда переключаться между пк.

Далее уже можно поиграть с конкретными метриками, и отображением конкретных служб с различных машин. К примеру: На главном экране нажимаем ADD > Visualization и попадаем в меню создания панели. В поле Metrics browser вносим выбранную метрику и указываем параметры, которые хотим получить (ну или отобразить). Сделаем на примере службы windows:

  1. Name - имя службы

  2. State - вид статуса, который относится к метрике windows_service_state

  3. Instance - с какой конкретной машины брать метрику.

windows_service_state{name="нужная служба", state="running", instance="Server-1"}

и в правом верхнем углу выбираем нужный вид панели, в моем случае это Stat:

В параметрах панели в меню Value mappings и меняем цифровые значения метрик на удобные для восприятия слова, к примеру: Ok/Bad Up/Down.

Сохраняем и получаем такую панель :

Ну и настроим метрику для получения статусов HTTP:

Используем метрику: probe_http_status_code и настроим Value mapping:

probe_http_status_code{instance="https://youtube.com"}

И в итоге получаем такую панель:

Далее можно самостоятельно зайти в http://localhost:9090/targets выбрать нужные для своих задач метрики и настроить нужные под свои задачи.

Думаю, на этом можно закончить. Базовая настройка не так сложна, но когда ты сталкиваешься с этим в первый раз, могут возникнуть трудности, поэтому хотел поделиться пошаговой настройкой. Надеюсь, кому-то это поможет и сократить достаточно времени на поиске информации и первичной настройки.

Комментарии (6)


  1. olegtsss
    29.08.2023 01:05
    +2

    Чем описанная связка будет отличаться в положительную сторону от Zabbix?


    1. MyZoneITteam Автор
      29.08.2023 01:05

      На самом деле у Prometheus достаточно удобный и простой язык запросов prom.ql, плюсом возможность масштабирования под новые задачи и большое кол-во различных готовых exporter`ов без необходимости их писать с нуля.


      1. olegtsss
        29.08.2023 01:05
        +1

        Я периодически встречаю подобные реализации внутри российских коммерческих продуктов. Какие плюсы (или минусы) можно получить, если перенести работающую инфраструктуру мониторинга с Zabbix (zabbix сервер, zabbix прокси-серверы, zabbix-агенты, snmp агенты) на Prometheus (Grafana)?


        1. MyZoneITteam Автор
          29.08.2023 01:05

          Что касается плюсов и минусов при переходе с Zabbix, на свой взгляд, могу выделить: Более приятная визуализация временных рядов и метрик у Prometheus+Grafana по отношению к Zabbix. Отсутствие как таковой БД с метриками, все храниться локально в виде логов. По поводу сбора метрики с удаленных устройств по snmp - есть готовый snmp_exporter, который как раз разворачивается удаленно . Мы разворачивали связку Grafana + Prometheus на одной машине, которая выступала в роли сервера, основную часть, а вот на остальных просто делали сбор метрик, которые забирал Prometheus просто по IP:port. А вот по функционалу Prometheus охватывает те же возможности мониторинга, что и Zabbix. Ниже приложу картинку со сравнением и ссылку на статью, где более подробно описаны ключевые отличия


        1. MyZoneITteam Автор
          29.08.2023 01:05
          +1

          https://www.metricfire.com/blog/prometheus-vs-zabbix/ - Сравнение метрик Zabbix и Prometheus


          1. olegtsss
            29.08.2023 01:05

            Спасибо, ответили.