Prometheus сбор метрик с windows

Уровень сложностиПростой

Время на прочтение3 мин

Количество просмотров9.9K

Авторы: Никита Зубарев — DevOps Team Leader компании Hostkey, Айрат Сягитов — специалист отдела DevOps компании Hostkey 

Ранее мы рассказали о том, как выполняется мониторинг Linux-систем. Теперь рассмотрим, как настроить Windows Server.

В одной из прошлых статей мы говорили об интеграции FreeIPA с Active Directory. В процессе разработки решения, описанного в этой статье, у нас возникла потребность снимать метрики с серверов Windows-инфраструктуры. В данной статье мы рассмотрим, как можно наладить мониторинг для серверов с ОС Windows, используя существующую систему, построенную на связке Prometheus + Grafana + Alertmanager. Собирать будем общие системные метрики: cpu, ram, hdd. 

Экспортер WMI также можно использовать для мониторинга сайтов и приложений IIS, сетевых интерфейсов, служб и даже локальной температуры.

Установка Windows Exporter для мониторинга служб Windows

Для установки Windows Exporter необходимо выполнить несколько действий:

  1. Скачать последнюю версию Windows Exporter с GitHub, выбрав архив .zip или .tar.gz.

  2. Создать папку с именем «Prometheus» на диске C или в другом месте. 

  3. Распаковать скачанный архив Windows Exporter. В нем находится файл windows_exporter.exe.

  4. Скопировать windows_exporter.exe в папку “Prometheus”.

Затем необходимо создать конфигурационный файл YAML для Windows Exporter. Он позволит указать службы, которые необходимо поставить на мониторинг.

В нашем примере это сервис LicenseManager.

Windows Exporter можно запустить двумя способами: вручную и в качестве службы Windows.

1. Для запуска вручную необходимо:

  • Открыть командную строку от имени администратора.

  • Перейти в папку с windows_exporter.exe, например: cd C:\Prometheus.

  • Запустить Windows Exporter с указанием конфигурационного файла с помощью команды: .\windows_exporter.exe —config.windowsconfig=»kms.yml».

  • Теперь Windows Exporter будет работать в режиме мониторинга в текущей сессии.

2. Для настройки как службы Windows необходимо:

  • Открыть командную строку от имени администратора.

  • Создать службу Windows Exporter командой:

 sc create WindowsExporter binPath= "C:\Prometheus\windows_exporter.exe --config.windowsconfig=C:\Prometheus\kms.yml" start= auto.
  • Запустить службу командой sc start WindowsExporter:

A:\Windows\system32>sc create WindowsExporter binpath= "C:\Prometheus\windows_exporter.exe --config.windowsconfig=C:\Prometheus\windows_exporter.yml"=auto
[SC] CreateService: success

A:\Windows\system32>sc start WindowsExporter

Подробную информацию о средстве экспорта WMI можно посмотреть на GitHub.

После установки необходимого экспортера следует перейти в панель «Службы Windows» (достаточно просто ввести «Службы» в меню поиска Windows) и найти в списке запись WMI exporter. Далее необходимо проверить, что сервис работает правильно.

Если экспортер запущен, он должен начать предоставлять метрики на http://localhost:9182/metrics, по аналогии с Node Exporter. Остается подключить сбор метрик в Prometheus, добавить дашборд и настроить алертинг:

Добавить в prometheus.yml:

  - job_name: 'Windows_Infra'
    static_configs:
      - targets: ['”localhost”:9182'] 

Добавить Grafana dashboard, который отслеживает отображение информационной панели, подключает и оптимизирует вывод подробной сводки ресурсов. В результате получаем визуальную панель по каждому хосту:

Осталось описать rule_files, добавив необходимые метрики:

groups:
- name: Windows_Infra
  rules:
  - alert: InstanceDown
    expr: up{job="Windows_Infra"} == 0
    for: 5m
    labels:
      severity: page
    annotations:
      summary: "Instance {{ .instance }} down"
      description: "{{ .instance }} of job {{ .job }} has been down for more than 5 minutes."

  - alert: DiskSpaceUsage
    expr: 100.0 - 100 * (windows_logical_disk_free_bytes{job="Windows_Infra"} / windows_logical_disk_size_bytes{job="Windows_Infra"}) > 90
    for: 10m
    labels:
      severity: high
    annotations:
      summary: "Disk Space Usage (instance {{ $labels.instance }})"
      description: "Disk Space on Drive is used more than 90%\n  VALUE = {{ $value }}\n  LABELS: {{ $labels }}"

Аналогичным образом добавляем другие необходимые параметры. При настроенном Alertmanager сообщения нотификаций автоматически будут приходить в подключенные системы.

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


Арендуйте выделенные и виртуальные серверы с моментальным деплоем в надежных дата-центрах класса TIER III в Москве и Нидерландах. Принимаем оплату за услуги HOSTKEY в Нидерландах в рублях на счет российской компании. Оплата с помощью банковских карт, в том числе и картой МИР, банковского перевода и электронных денег.

config.file# windows_exporter

A Prometheus exporter for Windows machines.

Collectors

Name Description Enabled by default
ad Active Directory Domain Services
adcs Active Directory Certificate Services
adfs Active Directory Federation Services
cache Cache metrics
cpu CPU usage
cpu_info CPU Information
cs «Computer System» metrics (system properties, num cpus/total memory)
container Container metrics
diskdrive Diskdrive metrics
dfsr DFSR metrics
dhcp DHCP Server
dns DNS Server
exchange Exchange metrics
filetime FileTime metrics
fsrmquota Microsoft File Server Resource Manager (FSRM) Quotas collector
hyperv Hyper-V hosts
iis IIS sites and applications
license Windows license status
logical_disk Logical disks, disk I/O
memory Memory usage metrics
mscluster MSCluster metrics
msmq MSMQ queues
mssql SQL Server Performance Objects metrics
netframework .NET Framework metrics
net Network interface I/O
os OS metrics (memory, processes, users)
pagefile pagefile metrics
performancecounter Custom performance counter metrics
physical_disk physical disk metrics
printer Printer metrics
process Per-process metrics
remote_fx RemoteFX protocol (RDP) metrics
scheduled_task Scheduled Tasks metrics
service Service state metrics
smb SMB Server
smbclient SMB Client
smtp IIS SMTP Server
system System calls
tcp TCP connections
terminal_services Terminal services (RDS)
textfile Read prometheus metrics from a text file
thermalzone Thermal information
time Windows Time Service
udp UDP connections
update Windows Update Service
vmware Performance counters installed by the Vmware Guest agent

See the linked documentation on each collector for more information on reported metrics, configuration settings and usage examples.

Filtering enabled collectors

The windows_exporter will expose all metrics from enabled collectors by default. This is the recommended way to collect metrics to avoid errors when comparing metrics of different families.

For advanced use the windows_exporter can be passed an optional list of collectors to filter metrics. The collect[] parameter may be used multiple times. In Prometheus configuration you can use this syntax under the scrape config.

  params:
    collect[]:
      - foo
      - bar

This can be useful for having different Prometheus servers collect specific metrics from nodes.

Flags

windows_exporter accepts flags to configure certain behaviours. The ones configuring the global behaviour of the exporter are listed below, while collector-specific ones are documented in the respective collector documentation above.

Flag Description Default value
--web.listen-address host:port for exporter. :9182
--telemetry.path URL path for surfacing collected metrics. /metrics
--telemetry.max-requests Maximum number of concurrent requests. 0 to disable. 5
--collectors.enabled Comma-separated list of collectors to use. Use [defaults] as a placeholder which gets expanded containing all the collectors enabled by default. [defaults]
--collectors.print If true, print available collectors and exit.
--scrape.timeout-margin Seconds to subtract from the timeout allowed by the client. Tune to allow for overhead or high loads. 0.5
--web.config.file A web config for setting up TLS and Auth None
--config.file Using a config file from path or URL None
--log.file Output file of log messages. One of [stdout, stderr, eventlog, <path to log file>]
NOTE: The MSI installer will add a default argument to the installed service setting this to eventlog
stderr

Installation

The latest release can be downloaded from the releases page.

All binaries and installation packages are signed with an self-signed certificate. The public key can be found here.
Once import into the trusted root certificate store, the binaries and installation packages will be trusted.

Each release provides a .msi installer. The installer will setup the windows_exporter as a Windows service, as well as create an exception in the Windows Firewall.

If the installer is run without any parameters, the exporter will run with default settings for enabled collectors, ports, etc.

The installer provides a configuration file to customize the exporter.

The configuration file

  • is located in the same directory as the exporter executable.
  • has the YAML format and is provided with the --config.file parameter.
  • can be used to enable or disable collectors, set collector-specific parameters, and set global parameters.

The following parameters are available:

Name Description
ENABLED_COLLECTORS As the --collectors.enabled flag, provide a comma-separated list of enabled collectors
CONFIG_FILE Use the --config.file flag to specify a config file. If empty, no config file will be set. The special value config.yaml set the path to the config.yaml at install dir
LISTEN_ADDR The IP address to bind to. Defaults to an empty string. (any local address)
LISTEN_PORT The port to bind to. Defaults to 9182.
METRICS_PATH The path at which to serve metrics. Defaults to /metrics
TEXTFILE_DIRS Use the --collector.textfile.directories flag to specify one or more directories, separated by commas, where the collector should read text files containing metrics
REMOTE_ADDR Allows setting comma separated remote IP addresses for the Windows Firewall exception (allow list). Defaults to an empty string (any remote address).
EXTRA_FLAGS Allows passing full CLI flags. Defaults to an empty string. For --collectors.enabled and --config.file, use the specialized properties ENABLED_COLLECTORS and CONFIG_FILE
ADDLOCAL Enables features within the windows_exporter installer. Supported values: FirewallException
REMOVE Disables features within the windows_exporter installer. Supported values: FirewallException
APPLICATIONFOLDER Directory to install windows_exporter. Defaults to C:\Program Files\windows_exporter

Parameters are sent to the installer via msiexec.
On PowerShell, the --% should be passed before defining properties.

Example invocations:

msiexec /i <path-to-msi-file> --% ENABLED_COLLECTORS=os,iis LISTEN_PORT=5000

Example service collector with a custom query.

msiexec /i <path-to-msi-file> --% ENABLED_COLLECTORS=os,service EXTRA_FLAGS="--collectors.exchange.enabled=""ADAccessProcesses"""

Define a config file.

msiexec /i <path-to-msi-file> --% CONFIG_FILE="D:\config.yaml"

Alternative install directory

msiexec /i <path-to-msi-file> --% ADDLOCAL=FirewallException APPLICATIONFOLDER="F:\Program Files\windows_exporter"

On some older versions of Windows,
you may need to surround parameter values with double quotes to get the installation command parsing properly:

msiexec /i C:\Users\Administrator\Downloads\windows_exporter.msi --% ENABLED_COLLECTORS="ad,iis,logon,memory,process,tcp,textfile,thermalzone" TEXTFILE_DIRS="C:\custom_metrics\"

To install the exporter with creating a firewall exception, use the following command:

msiexec /i <path-to-msi-file> --% ADDLOCAL=FirewallException

PowerShell versions 7.3 and above require PSNativeCommandArgumentPassing to be set to Legacy when using --% EXTRA_FLAGS:

$PSNativeCommandArgumentPassing = 'Legacy'
msiexec /i <path-to-msi-file> ENABLED_COLLECTORS=os,service --% EXTRA_FLAGS="--collectors.exchange.enabled=""ADAccessProcesses"""

Docker Implementation

The windows_exporter can be run as a Docker container. The Docker image is available on

  • Docker Hub: docker.io/prometheuscommunity/windows-exporter
  • GitHub Container Registry: ghcr.io/prometheus-community/windows-exporter
  • quay.io Registry: quay.io/prometheuscommunity/windows-exporter

Tags

The Docker image is tagged with the version of the exporter. The latest tag is also available and points to the latest release.

Additionally, a flavor hostprocess with -hostprocess as suffix is based on the https://github.com/microsoft/windows-host-process-containers-base-image
which is designed to run as a Windows host process container. The size of that images is smaller than the default one.

Kubernetes Implementation

See detailed steps to install on Windows Kubernetes here.

Supported versions

windows_exporter supports Windows Server versions 2016 and later, and desktop Windows version 10 and 11 (21H2 or later).

Windows Server 2012 and 2012R2 are supported as best-effort only, but not guaranteed to work.

Usage

go get -u github.com/prometheus/promu
go get -u github.com/prometheus-community/windows_exporter
cd $env:GOPATH/src/github.com/prometheus-community/windows_exporter
promu build -v
.\windows_exporter.exe

The prometheus metrics will be exposed on localhost:9182

HTTP Endpoints

windows_exporter provides the following HTTP endpoints:

  • /metrics: Exposes metrics in the Prometheus text format.
  • /health: Returns 200 OK when the exporter is running.
  • /debug/pprof/: Exposes the pprof endpoints. Only, if --debug.enabled is set.

Examples

Enable only service collector and specify a custom query

.\windows_exporter.exe --collectors.enabled "service" --collector.service.include="windows_exporter"

Enable only process collector and specify a custom query

.\windows_exporter.exe --collectors.enabled "process" --collector.process.include="firefox.+"

When there are multiple processes with the same name, WMI represents those after the first instance as process-name#index. So to get them all, rather than just the first one, the regular expression must use .+. See process for more information.

Using [defaults] with --collectors.enabled argument

Using [defaults] with --collectors.enabled argument which gets expanded with all default collectors.

.\windows_exporter.exe --collectors.enabled "[defaults],process,container"

This enables the additional process and container collectors on top of the defaults.

Using a configuration file

YAML configuration files can be specified with the --config.file flag. e.g. .\windows_exporter.exe --config.file=config.yml. If you are using the absolute path, make sure to quote the path, e.g. .\windows_exporter.exe --config.file="C:\Program Files\windows_exporter\config.yml"

It is also possible to load the configuration from a URL. e.g. .\windows_exporter.exe --config.file="https://example.com/config.yml"

If you need to skip TLS verification, you can use the --config.file.insecure-skip-verify flag. e.g. .\windows_exporter.exe --config.file="https://example.com/config.yml" --config.file.insecure-skip-verify

collectors:
  enabled: cpu,net,service
collector:
  service:
    include: windows_exporter
log:
  level: warn

An example configuration file can be found here.

Configuration file notes

Configuration file values can be mixed with CLI flags. E.G.

.\windows_exporter.exe --collectors.enabled=cpu,logon

CLI flags enjoy a higher priority over values specified in the configuration file.

License

Under MIT

Prometheus — это система мониторинга и сбора метрик с открытым исходным кодом, разработанная для отслеживания состояния приложений и инфраструктуры. Она активно используется для мониторинга серверов, баз данных, контейнеров и других компонентов IT-инфраструктуры, собирая и храня данные в виде временных рядов.

Prometheus в основном предназначен для работы на Linux, но его можно установить и на Windows. В данной статье разберём, как установить Prometheus на виртуальный выделенный сервер, работающий под управлением Windows Server 2016.

Чтобы установить Prometheus, загрузите соответствующий zip-архив с его официального сайта. На сайте необходимо выбрать операционную систему windows и её разрядность. В нашем примере мы будем использовать актуальную на момент написания LTS-версию Prometheus, а именно — 2.53.2.

Страница загрузки Prometheus - Как установить Prometheus на Windows Server

По окончании загрузки распакуйте содержимое архива, например, в директорию C:\prometheus\.

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

Затем откройте командную строку от имени администратора и там перейдите в директорию, в которой находится файл prometheus.exe:

cd C:\prometheus\

После чего следующей командой запустите Prometheus:

prometheus.exe --config.file=prometheus.yml

Дополнительная настройка Prometheus

Чтобы каждый раз не запускать Prometheus при помощи командной строки, имеет смысл настроить старт приложения в качестве службы Windows. Запуск Prometheus как службы позволит обеспечить его автоматический старт, стабильную работу в фоновом режиме и удобство управления, что должно повысить надёжность данной системы мониторинга.

В Windows Server нет встроенного средства для запуска Prometheus как службы, поэтому для этой цели мы применим сторонний инструмент, такой как NSSM (Non-Sucking Service Manager).

Для того, чтобы установить NSSM в вашей системе, перейдите на его официальную страницу и загрузите zip-архив последней версии данного ПО.

Страница загрузки NSSM - Как установить Prometheus на Windows Server

Затем содержимое архива распакуйте, например, на диск C:\. После чего откройте командную строку и перейдите в директорию, в которой находится файл nssm.exe:

cd C:\nssm-2.24\win64\

Далее при помощи следующей команды запустите установку Prometheus:

nssm install Prometheus

В результате откроется графический интерфейс, где нужно указать следующие параметры:

  • Path: путь к prometheus.exe, например, C:\prometheus\prometheus.exe;
  • Startup directory: каталог, в котором находится prometheus.exe, например, C:\prometheus;
  • Arguments: аргументы командной строки, если нужны, например, --config.file=prometheus.yml.

Для того, чтобы установить службу, нажмите Install service.

Установка службы Prometheus - Как установить Prometheus на Windows Server

После установки службы её необходимо запустить. Для чего используйте Менеджер служб Windows (services.msc), где найдите и откройте службу под именем Prometheus. Здесь установите в поле Startup type значение Automatic и нажмите Start.

Служба Prometheus - Как установить Prometheus на Windows Server

Для возможности получения доступа к Prometheus с вашей локальной рабочей станции необходимо в брандмауэре Windows разрешить доступ к серверу с использованием TCP-порта 9090.

Чтобы сделать это, запустите брандмауэр, используя комбинацию клавиш Win R, где введите команду firewall.cpl.

Запуск брандмауэра Windows - Как установить Prometheus на Windows Server

В открывшемся окне брандмауэра перейдите в Advanced settings.

Брандмауэр Windows - Как установить Prometheus на Windows Server

Затем перейдите в раздел Inbound Rules и кликните в New Rule для создания нового правила.

Добавление нового правила в брандмауэре Windows

В стартовом окне визарда активируйте строку Port.

Стартовое окно мастера создания нового правила в брандмауэре Windows

В следующем окне выберите тип порта TCP и укажите номер порта — 9090.

Выбор типа и номера порта - Как установить Prometheus на Windows Server

Затем выберите Allow the connection.

Выбор типа правила как разрешающего

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

Выбор типов сетей - Как установить Prometheus на Windows Server

На завершающем шаге в строке Name укажите название создаваемого правила, например, Prometheus (TCP-In).

Название создаваемого правила - Как установить Prometheus на Windows Server

Проверка работы

Теперь, чтобы подключиться к веб-интерфейсу Prometheus, откройте браузер и перейдите по адресу: http://X.X.X.X:9090. В данном случае X.X.X.X — IP-адрес вашей виртуальной машины. В результате вы должны увидеть веб-интерфейс, где можно будет выполнять запросы к метрикам и проверять состояние системы.

Веб-интерфейс Prometheus - Как установить Prometheus на Windows Server

Таким образом, мы рассмотрели, как можно установить систему мониторинга и сбора метрик Prometheus на виртуальную машину, работающую на операционной системе Windows Server 2016.

#статьи


  • 0

Простое введение для тех, кто знакомится с системами мониторинга.

Иллюстрация: Оля Ежак для Skillbox Media

Пишет о сетях, инструментах для разработчиков и языках программирования. Любит готовить, играть в инди‑игры и программировать на Python.

Наверняка вы хоть раз получали оповещения от МЧС о заморозках, сильном ветре или тумане. Эти предупреждения формируются на основе данных метеорологических систем мониторинга, которые отслеживают погодные условия в реальном времени. Подобные системы используются и в IT-сфере для контроля работоспособности серверов, приложений и инфраструктуры.

Одна из самых популярных таких систем — Prometheus. В этой статье мы разберём её устройство, принципы работы и особенности использования.

Содержание

  • Что такое Prometheus
  • Как работает Prometheus
  • Как пользоваться Prometheus

Prometheus — это система мониторинга и оповещения с открытым исходным кодом, которая в реальном времени собирает и анализирует метрики работы приложений и серверов. Название системы происходит от титана Прометея из греческой мифологии, который подарил людям огонь. Подобно своему тёзке, Prometheus «освещает» работу IT-систем — помогает администраторам следить за процессами и быстро реагировать на возникающие проблемы.

Представьте интернет-магазин, который находится под наблюдением Prometheus. Система отслеживает количество посетителей, среднюю скорость загрузки страниц, частоту критических ошибок и другие метрики. Если происходит что-то необычное — например, во время распродажи резко возрастает поток покупателей — Prometheus тут же оповещает администратора, чтобы тот мог предотвратить сбои в работе магазина.

История Prometheus началась в 2012 году в компании SoundCloud, когда произошёл переход на микросервисную архитектуру — подход, при котором приложение разбивается на множество небольших, независимых сервисов. Тогдашние инструменты мониторинга не справлялись с отслеживанием такого большого количества сервисов, особенно когда их число постоянно менялось из-за масштабирования системы. В результате команда SoundCloud создала Prometheus — собственный инструмент мониторинга, разработанный специально для современных распределённых систем.

В 2016 году Prometheus вошёл в состав Cloud Native Computing Foundation (CNCF) и стал вторым после Kubernetes проектом в этой организации. Поддержка CNCF позволила Prometheus быстро развиться и стать одним из самых популярных инструментов мониторинга для облачных систем.

Процесс мониторинга в Prometheus включает несколько основных этапов: сбор метрик, хранение данных и обработку полученных запросов.

Сбор метрик. На этом этапе Prometheus по заданному расписанию опрашивает настроенные точки мониторинга через HTTP-эндпойнты и собирает числовые показатели их работы. Например, каждые 15 секунд система получает данные о загрузке процессора, объёме используемой памяти, количестве активных пользователей, времени отклика сервера, сетевых задержках и других ключевых параметрах производительности.

Хранение данных. Все собранные показатели Prometheus сохраняет в специализированной временной базе данных (TSDB). Эта база организована как таблица с двумя колонками: временем измерения и значением метрики. Например, каждые 15 секунд Prometheus записывает использование памяти сервера: в 17:00 — 80%, в 17:00:15 — 82%. Такая структура позволяет легко отслеживать изменения показателей за любой выбранный период.

Если выражаться более техническим языком, Prometheus хранит метрики в формате временных рядов — это структура данных, похожая на таблицу, где каждая запись включает значение метрики и время измерения. Также к метрикам можно добавлять специальные метки (labels) — дополнительную информацию для более точной идентификации и классификации данных.

Например, когда мы измеряем количество HTTP-запросов метрикой http_requests_total, мы добавляем метки method (GET для получения данных или POST для отправки) и endpoint (конкретный адрес запроса). Это похоже на маркировку папок с документами — вместо простой надписи «Документы» мы указываем «Документы по проекту X за 2025 год». Такая детальная маркировка позволяет быстро находить нужную информацию.

Обработка запросов. После сохранения метрик во временной базе (TSDB) администратор приступает к настройке мониторинга:

  • Создаёт запросы на языке PromQL для извлечения и анализа данных. Например, можно написать запрос rate(http_requests_total[1h]) для подсчёта среднего количества HTTP-запросов за последний час или count(error_count > 0) для отслеживания числа ошибок в минуту.
  • Настраивает информативные панели мониторинга (дашборды) в Grafana или других системах визуализации. На этих панелях в виде графиков и диаграмм отображаются основные показатели работы системы, что помогает быстро замечать проблемы и изменения.
  • Выставляет пороговые значения для ключевых метрик в Alertmanager — системе оповещений Prometheus. Например, если загрузка процессора превышает 90% более пяти минут, система должна отправить SMS дежурному администратору. Или, если число HTTP-ошибок превысит десять в минуту, — предупредить всю команду через Telegram.

После завершения настройки Prometheus переходит в автоматический режим: он регулярно собирает метрики, анализирует данные по заданным правилам и отправляет уведомления при обнаружении нарушений.

Основные компоненты архитектуры Prometheus

Изображение: Prometheus

Prometheus server — центральный элемент системы мониторинга. Он выполняет рад задач:

  • собирает метрики с серверов и приложений (Retrieval);
  • хранит их в базе (TSDB);
  • позволяет выполнять запросы через HTTP (HTTP server).

Service discovery — автоматически обнаруживает сервисы для мониторинга. Например, в Kubernetes или через файлы конфигурации.

Alertmanager — управляет системой оповещения и отправляет уведомления при сбоях.

Источники метрик (targets)

  • Exporters — собирают метрики из сервисов (например, MySQL, Redis).
  • Short-lived jobs — передают данные через Pushgateway.
  • Node Exporter — отправляет системные метрики (нагрузка на CPU, использование дисков HDD/SSD и так далее).

Инструменты визуализации

  • Prometheus Web UI — базовый интерфейс для просмотра данных.
  • Grafana — создаёт дашборды и графики.
  • API Clients — позволяют интегрировать Prometheus с другими приложениями.

Для начала перейдите на сайт prometheus.io и скачайте актуальную версию приложения для вашей операционной системы. После этого распакуйте архив и запустите исполняемый файл prometheus.exe. В результате вы должны увидеть командную строку с логами сервера, информацией о загрузке конфигурации, инициализации компонентов и сборе метрик.

Эти логи нужны для отладки и мониторинга работы Prometheus. Не закрывайте окно командной строки — это основной процесс, который должен работать в фоновом режиме. При закрытии окна сервер остановится.

Пример запущенного сервера Prometheus в операционной системе Windows
Скриншот: командная строка Windows / Skillbox Media

Теперь откройте в браузере адрес http://localhost:9090. Если всё корректно работает, перед вами должен появиться веб-интерфейс Prometheus:

Интерфейс Prometheus в браузере Google Chrome
Скриншот: Prometheus / Skillbox Media

Следующий шаг — выбор объекта для мониторинга. Это может быть веб-сервер, база данных или операционная система. Кроме того, вам потребуется экспортер — специальный инструмент, который собирает метрики с сервиса и преобразует их в формат, понятный для Prometheus.

Самый простой способ начать — установить Node Exporter для Linux и macOS или Windows Exporter. После настройки экспортера Prometheus начнёт собирать основные метрики компьютера: загрузку процессора, сетевой трафик, использование памяти, состояние дисков и другие показатели.

На изображении показаны два активных задания (jobs) в интерфейсе Prometheus: одно отвечает за сбор метрик самого Prometheus, другое — за сбор метрик операционной системы Windows через Windows Exporter
Скриншот: Prometheus / Skillbox Media

После добавления экспортера в Prometheus вы сможете анализировать данные с помощью языка запросов PromQL и встроенных инструментов визуализации. Например, чтобы отследить изменение загрузки процессора в пользовательском режиме за последние пять минут, введите следующий запрос:

rate(windows_cpu_time_total{mode="user"}[5m])

Затем перейдите на вкладку Graph, чтобы увидеть результаты в виде графика. В этом режиме вам доступны настройки временного диапазона и других параметров визуализации для детального анализа данных:

График PromQL-запроса в Prometheus, который отображает загрузку процессора за пятиминутный период через Windows Exporter
Скриншот: Prometheus / Skillbox Media

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

  • официальная документация Prometheus;
  • руководство по использованию PromQL;
  • инструкция по подключению Grafana к Prometheus;
  • примеры файлов конфигурации на GitHub;
  • каталог поддерживаемых экспортеров;
  • руководство по настройке оповещений через Alertmanager;
  • библиотека готовых правил оповещения.

Научитесь: Профессия DevOps-инженер
Узнать больше

Level 0

Prometheus gathers metrics in two ways, pulling from exporters and Push gateway pushes the metrics from batch jobs and ephemeral workload applications to Prometheus.

Service discovery mechanism lets discover new metrics running inside of supported environments like kubernetes.

Alerts are triggered via Alert Manager

And visualization engines (Dashboard) like Grafana or Prometheus UI can query data out of Prometheus and display it.

Download And Install

Download and extract Prometheus and altertmanager from here

Configuration

Alert Manager

alertmanager.yml

global:
  resolve_timeout: 5m
  smtp_smarthost: 'mail.org.com:25'
  smtp_from: 'mnadeem@org.com'
  smtp_require_tls: false

route:
  group_by: ['alertname']
  group_wait: 10s
  group_interval: 10s
  repeat_interval: 1h
  receiver: 'email-notification'

receivers:
  - name: email-notification
    email_configs:
      - to: 'mnadeem@org.com'

inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

Prometheus

prometheus.yml

Refer more on prometheus configuration

# 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.

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - localhost:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  - rules.yml
  # - "second_rules.yml"

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'faulty-node'
    static_configs:
      - targets: ['localhost:5555']

rules.yml

groups:
 - name: example
   rules:
   - alert: InstanceDown
     expr: up == 0
     for: 1m

Start

Alert Manager

http://localhost:9093/#/alerts

Prometheus

Access http://localhost:9090/classic/alerts

Node Exporter

Time to augment it with node-exporter , lets download windows exporter

Download

Store

Start

http://localhost:9182/

Metrics

Nothing on prometheus about windows node

Add the following to prometheus.yml

  - job_name: 'windows-node'
    static_configs:
      - targets: ['localhost:9182']

Restart prometheus

Also See

  • Awesome Prometheus
  • Awesome Prometheus Alerts
  • Exporters and Port Allocation
  • Alertmanager
  • Email
  • Prometheus
  • windows

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Проблемы со спящим режимом windows 10
  • Device harddiskvolume2 windows system32 winlogon exe
  • Unicode to windows 1251 online
  • Вылетает из параметров windows 10
  • Как активировать windows 111