Уровень сложностиПростой
Время на прочтение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 необходимо выполнить несколько действий:
-
Скачать последнюю версию Windows Exporter с GitHub, выбрав архив .zip или .tar.gz.
-
Создать папку с именем «Prometheus» на диске C или в другом месте.
-
Распаковать скачанный архив Windows Exporter. В нем находится файл windows_exporter.exe.
-
Скопировать 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.
По окончании загрузки распакуйте содержимое архива, например, в директорию 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-архив последней версии данного ПО.
Затем содержимое архива распакуйте, например, на диск 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
.
После установки службы её необходимо запустить. Для чего используйте Менеджер служб Windows (services.msc
), где найдите и откройте службу под именем Prometheus
. Здесь установите в поле Startup type
значение Automatic
и нажмите Start
.
Для возможности получения доступа к Prometheus с вашей локальной рабочей станции необходимо в брандмауэре Windows разрешить доступ к серверу с использованием TCP-порта 9090.
Чтобы сделать это, запустите брандмауэр, используя комбинацию клавиш Win
R
, где введите команду firewall.cpl
.
В открывшемся окне брандмауэра перейдите в Advanced settings
.
Затем перейдите в раздел Inbound Rules
и кликните в New Rule
для создания нового правила.
В стартовом окне визарда активируйте строку Port
.
В следующем окне выберите тип порта TCP
и укажите номер порта — 9090
.
Затем выберите Allow the connection
.
В следующем окне отметьте галочками необходимые профили сетей, на которые будет распространяться создаваемое правило.
На завершающем шаге в строке Name
укажите название создаваемого правила, например, Prometheus (TCP-In)
.
Проверка работы
Теперь, чтобы подключиться к веб-интерфейсу Prometheus, откройте браузер и перейдите по адресу: http://X.X.X.X:9090
. В данном случае X.X.X.X
— IP-адрес вашей виртуальной машины. В результате вы должны увидеть веб-интерфейс, где можно будет выполнять запросы к метрикам и проверять состояние системы.
Таким образом, мы рассмотрели, как можно установить систему мониторинга и сбора метрик 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 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. Не закрывайте окно командной строки — это основной процесс, который должен работать в фоновом режиме. При закрытии окна сервер остановится.
Скриншот: командная строка Windows / Skillbox Media
Теперь откройте в браузере адрес http://localhost:9090. Если всё корректно работает, перед вами должен появиться веб-интерфейс Prometheus:
Скриншот: Prometheus / Skillbox Media
Следующий шаг — выбор объекта для мониторинга. Это может быть веб-сервер, база данных или операционная система. Кроме того, вам потребуется экспортер — специальный инструмент, который собирает метрики с сервиса и преобразует их в формат, понятный для Prometheus.
Самый простой способ начать — установить Node Exporter для Linux и macOS или Windows Exporter. После настройки экспортера Prometheus начнёт собирать основные метрики компьютера: загрузку процессора, сетевой трафик, использование памяти, состояние дисков и другие показатели.
Скриншот: Prometheus / Skillbox Media
После добавления экспортера в Prometheus вы сможете анализировать данные с помощью языка запросов PromQL и встроенных инструментов визуализации. Например, чтобы отследить изменение загрузки процессора в пользовательском режиме за последние пять минут, введите следующий запрос:
rate(windows_cpu_time_total{mode="user"}[5m])
Затем перейдите на вкладку Graph, чтобы увидеть результаты в виде графика. В этом режиме вам доступны настройки временного диапазона и других параметров визуализации для детального анализа данных:
Скриншот: 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
- Prometheus
- windows