Экспортер Prometheus для метрик оборудования и ОС, предоставляемых ядрами *NIX, написанный на Go, с подключаемыми сборщиками метрик.
Пользователям Windows рекомендуется использовать экспортер Windows. Чтобы предоставить метрики графического процессора NVIDIA, можно использовать prometheus-dcgm.
Если вы новичок в Prometheus и node_exporter
есть простое пошаговое руководство.
По умолчанию node_exporter
прослушивает HTTP-порт 9100. Дополнительные параметры см. в выводе --help
.
Для автоматической установки с помощью Ansible существует роль сообщества Prometheus.
node_exporter
предназначен для мониторинга хост-системы. Развертывание в контейнерах требует особой осторожности, чтобы избежать мониторинга самого контейнера.
В ситуациях, когда требуется контейнерное развертывание, необходимо использовать некоторые дополнительные флаги, чтобы разрешить node_exporter
доступ к пространствам имен хоста.
Имейте в виду, что любые некорневые точки монтирования, которые вы хотите отслеживать, должны быть привязаны к контейнеру.
Если вы запускаете контейнер для мониторинга хоста, укажите аргумент path.rootfs
. Этот аргумент должен соответствовать пути в привязке корня хоста. node_exporter будет использовать path.rootfs
в качестве префикса для доступа к файловой системе хоста.
docker run -d
--net= " host "
--pid= " host "
-v " /:/host:ro,rslave "
quay.io/prometheus/node-exporter:latest
--path.rootfs=/host
Для Docker Compose необходимы аналогичные изменения флагов.
---
version : ' 3.8 '
services :
node_exporter :
image : quay.io/prometheus/node-exporter:latest
container_name : node_exporter
command :
- ' --path.rootfs=/host '
network_mode : host
pid : host
restart : unless-stopped
volumes :
- ' /:/host:ro,rslave '
В некоторых системах сборщику timex
требуется дополнительный флаг Docker --cap-add=SYS_TIME
для доступа к необходимым системным вызовам.
В каждой операционной системе существует различная поддержка сборщиков. В таблицах ниже перечислены все существующие коллекторы и поддерживаемые системы.
Коллекторы включаются с помощью флага --collector.
. Коллекторы, включенные по умолчанию, можно отключить, указав флаг --no-collector.
. Чтобы включить только некоторые конкретные сборщики, используйте --collector.disable-defaults --collector.
.
Некоторые сборщики могут быть настроены на включение или исключение определенных шаблонов с помощью специальных флагов. Флаги исключения используются для обозначения «все кроме», а флаги включения используются для обозначения «нет, кроме». Обратите внимание, что эти флаги являются взаимоисключающими для сборщиков, которые поддерживают оба.
Пример:
--collector.filesystem.mount-points-exclude= ^ /(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)( $ |/)
Список:
Коллекционер | Объем | Включить флаг | Исключить флаг |
---|---|---|---|
арп | устройство | --collector.arp.device-include | --collector.arp.device-exclude |
Процессор | ошибки | --collector.cpu.info.bugs-include | Н/Д |
Процессор | флаги | --collector.cpu.info.flags-include | Н/Д |
статистика дисков | устройство | --collector.diskstats.device-include | --collector.diskstats.device-exclude |
эттул | устройство | --collector.ethtool.device-include | --collector.ethtool.device-exclude |
эттул | метрики | --collector.ethtool.metrics-include | Н/Д |
файловая система | fs-типы | Н/Д | --collector.filesystem.fs-types-exclude |
файловая система | точки монтирования | Н/Д | --collector.filesystem.mount-points-exclude |
хммон | чип | --collector.hwmon.chip-include | --collector.hwmon.chip-exclude |
хммон | датчик | --collector.hwmon.sensor-include | --collector.hwmon.sensor-exclude |
прерывает | имя | --collector.interrupts.name-include | --collector.interrupts.name-exclude |
нетдев | устройство | --collector.netdev.device-include | --collector.netdev.device-exclude |
qдиск | устройство | --collector.qdisk.device-include | --collector.qdisk.device-exclude |
slabinfo | названия плит | --collector.slabinfo.slabs-include | --collector.slabinfo.slabs-exclude |
sysctl | все | --collector.sysctl.include | Н/Д |
системный | единица | --collector.systemd.unit-include | --collector.systemd.unit-exclude |
Имя | Описание | ОС |
---|---|---|
арп | Предоставляет статистику ARP из /proc/net/arp . | Линукс |
bcache | Предоставляет статистику bcache из /sys/fs/bcache/ . | Линукс |
связь | Предоставляет количество настроенных и активных подчиненных интерфейсов соединения Linux. | Линукс |
btrfs | Предоставляет статистику btrfs | Линукс |
время загрузки | Предоставляет время загрузки системы, полученное из sysctl kern.boottime . | Дарвин, Стрекоза, FreeBSD, NetBSD, OpenBSD, Solaris |
контрек | Показывает статистику conntrack (ничего не делает, если нет /proc/sys/net/netfilter/ ). | Линукс |
Процессор | Предоставляет статистику процессора | Дарвин, Стрекоза, FreeBSD, Linux, Solaris, OpenBSD |
cpufreq | Предоставляет статистику частоты процессора | Линукс, Солярис |
статистика дисков | Предоставляет статистику дискового ввода-вывода. | Дарвин, Linux, OpenBSD |
дми | Предоставить информацию об интерфейсе управления рабочим столом (DMI) из /sys/class/dmi/id/ | Линукс |
Эдак | Предоставляет статистику обнаружения и исправления ошибок. | Линукс |
энтропия | Обнажает доступную энтропию. | Линукс |
руководитель | Предоставляет статистику выполнения. | Стрекоза, FreeBSD |
оптоволоконный канал | Предоставляет информацию и статистику оптоволоконного канала из /sys/class/fc_host/ . | Линукс |
файлфд | Предоставляет статистику файлового дескриптора из /proc/sys/fs/file-nr . | Линукс |
файловая система | Предоставляет статистику файловой системы, например, используемое дисковое пространство. | Дарвин, Стрекоза, FreeBSD, Linux, OpenBSD |
хммон | Предоставляйте данные аппаратного мониторинга и датчиков из /sys/class/hwmon/ . | Линукс |
бесконечный диапазон | Предоставляет сетевую статистику, специфичную для конфигураций InfiniBand и Intel OmniPath. | Линукс |
ipvs | Предоставляет статус IPVS из /proc/net/ip_vs и статистику из /proc/net/ip_vs_stats . | Линукс |
нагрузкаavg | Выставляет нагрузку среднюю. | Дарвин, Стрекоза, FreeBSD, Linux, NetBSD, OpenBSD, Solaris |
мдадм | Предоставляет статистику об устройствах в /proc/mdstat (ничего не делает, если /proc/mdstat отсутствует). | Линукс |
меминфо | Предоставляет статистику памяти. | Дарвин, Стрекоза, FreeBSD, Linux, OpenBSD |
сетевой класс | Предоставляет информацию о сетевом интерфейсе из /sys/class/net/ | Линукс |
нетдев | Предоставляет статистику сетевого интерфейса, например количество переданных байтов. | Дарвин, Стрекоза, FreeBSD, Linux, OpenBSD |
нетиср | Предоставляет статистику netisr | FreeBSD |
нетстат | Предоставляет сетевую статистику из /proc/net/netstat . Это та же информация, что и netstat -s . | Линукс |
нфс | Предоставляет статистику клиента NFS из /proc/net/rpc/nfs . Это та же информация, что и nfsstat -c . | Линукс |
НФСД | Предоставляет статистику сервера ядра NFS из /proc/net/rpc/nfsd . Это та же информация, что и nfsstat -s . | Линукс |
НВМЕ | Предоставляет информацию NVMe из /sys/class/nvme/ | Линукс |
ОС | Предоставлять информацию о выпуске ОС из /etc/os-release или /usr/lib/os-release | любой |
класс источника питания | Предоставляет статистику источника питания из /sys/class/power_supply | Линукс |
давление | Предоставляет статистику остановки давления из /proc/pressure/ . | Linux (ядро 4.20+ и/или CONFIG_PSI) |
Рапл | Предоставляет различную статистику из /sys/class/powercap . | Линукс |
Шедстат | Предоставляет статистику планировщика задач из /proc/schedstat . | Линукс |
Селинукс | Предоставляет статистику SELinux. | Линукс |
носкистат | Предоставляет различную статистику из /proc/net/sockstat . | Линукс |
софтнет | Предоставляет статистику из /proc/net/softnet_stat . | Линукс |
статистика | Предоставляет различную статистику из /proc/stat . Сюда входит время загрузки, вилки и прерывания. | Линукс |
магнитофоны | Предоставляет статистику из /sys/class/scsi_tape . | Линукс |
текстовый файл | Предоставляет статистику, считанную с локального диска. Флаг --collector.textfile.directory должен быть установлен. | любой |
термический | Предоставляет тепловую статистику, например pmset -g therm . | Дарвин |
Thermal_zone | Предоставляет статистику тепловой зоны и охлаждающего устройства из /sys/class/thermal . | Линукс |
время | Предоставляет текущее системное время. | любой |
таймекс | Предоставляет выбранную статистику системного вызова adjtimex(2). | Линукс |
udp_queues | Предоставляет UDP общую длину rx_queue и tx_queue из /proc/net/udp и /proc/net/udp6 . | Линукс |
не называть имя | Предоставляет системную информацию, предоставленную системным вызовом uname. | Дарвин, FreeBSD, Linux, OpenBSD |
vmstat | Предоставляет статистику из /proc/vmstat . | Линукс |
сторожевой пес | Предоставляет статистику из /sys/class/watchdog | Линукс |
xfs | Предоставляет статистику времени выполнения XFS. | Linux (ядро 4.4+) |
zfs | Предоставляет статистику производительности ZFS. | FreeBSD, Linux, Солярис |
node_exporter
также реализует ряд сборщиков, которые по умолчанию отключены. Причины этого варьируются в зависимости от коллекционера и могут включать в себя:
scrape_interval
или scrape_timeout
Prometheus. При желании вы можете включить дополнительные сборщики, добавив их в конфигурацию запуска вашей системы инициализации или супервизора службы для node_exporter
, но рекомендуется соблюдать осторожность. Включайте не более одного за раз, тестируя сначала на непроизводственной системе, а затем вручную на одном производственном узле. При включении дополнительных сборщиков вам следует внимательно отслеживать изменения, наблюдая за метрикой scrape_duration_seconds
, чтобы гарантировать, что сбор завершается и не истекает время ожидания. Кроме того, следите за метрикой scrape_samples_post_metric_relabeling
чтобы увидеть изменения мощности.
Имя | Описание | ОС |
---|---|---|
информация о приятеле | Предоставляет статистику фрагментов памяти, сообщаемую /proc/buddyinfo. | Линукс |
группы | Сводная информация о количестве активных и включенных контрольных групп. | Линукс |
cpu_vulnerabilities | Предоставляет информацию об уязвимостях ЦП из sysfs. | Линукс |
devstat | Предоставляет статистику устройства | Стрекоза, FreeBSD |
доктор | Предоставляйте метрики графического процессора с помощью sysfs/DRM, amdgpu — единственный драйвер, который предоставляет эту информацию через DRM. | Линукс |
дрбд | Предоставляет статистику распределенных реплицируемых блочных устройств (до версии 8.4) | Линукс |
эттул | Предоставляет информацию о сетевом интерфейсе и статистику сетевых драйверов, эквивалентную ethtool , ethtool -S и ethtool -i . | Линукс |
прерывает | Предоставляет подробную статистику прерываний. | Линукс, OpenBSD |
ксмд | Предоставляет статистику ядра и системы из /sys/kernel/mm/ksm . | Линукс |
Инстат | Предоставляет статистику из /proc/net/stat/ . | Линукс |
вход в систему | Предоставляет количество сеансов из входа в систему. | Линукс |
meminfo_numa | Предоставляет статистику памяти из /sys/devices/system/node/node[0-9]*/meminfo , /sys/devices/system/node/node[0-9]*/numastat . | Линукс |
монтирование статистики | Предоставляет статистику файловой системы из /proc/self/mountstats . Предоставляет подробную статистику клиентов NFS. | Линукс |
network_route | Предоставляет таблицу маршрутизации как метрики | Линукс |
перформанс | Предоставляет метрики на основе производительности (Предупреждение: метрики зависят от конфигурации и настроек ядра). | Линукс |
процессы | Предоставляет совокупную статистику процесса из /proc . | Линукс |
qдиск | Предоставляет статистику дисциплины очередей | Линукс |
slabinfo | Предоставляет статистику плит из /proc/slabinfo . Обратите внимание, что разрешение /proc/slabinfo обычно равно 0400, поэтому установите его соответствующим образом. | Линукс |
мягкие прерывания | Предоставляет подробную статистику softirqs из /proc/softirqs . | Линукс |
sysctl | Предоставьте значения sysctl из /proc/sys . Используйте --collector.sysctl.include(-info) для настройки. | Линукс |
системный | Предоставляет статус службы и системы из systemd. | Линукс |
tcpstat | Предоставляет информацию о состоянии TCP-соединения из /proc/net/tcp и /proc/net/tcp6 . (Предупреждение: текущая версия имеет потенциальные проблемы с производительностью в ситуациях высокой нагрузки.) | Линукс |
Wi-Fi | Предоставляет статистику Wi-Fi-устройства и станции. | Линукс |
xfrm | Предоставляет статистику из /proc/net/xfrm_stat | Линукс |
информация о зоне | Предоставляет метрики зоны памяти NUMA. | Линукс |
Эти сборщики устарели и будут удалены в следующем основном выпуске.
Имя | Описание | ОС |
---|---|---|
НТП | Предоставляет доступ к локальному демону NTP для проверки времени | любой |
бежать | Предоставляет статус службы из runit. | любой |
руководитель | Предоставляет статус службы от супервизора. | любой |
Сборщик perf
может не работать «из коробки» в некоторых системах Linux из-за конфигурации ядра и настроек безопасности. Чтобы разрешить доступ, установите следующий параметр sysctl
:
sysctl -w kernel.perf_event_paranoid=X
В зависимости от настроенного значения будут доступны разные метрики, в большинстве случаев 0
обеспечит наиболее полный набор. Для получения дополнительной информации см. man 2 perf_event_open
.
По умолчанию сборщик perf
будет собирать показатели только тех процессоров, на которых работает node_exporter
(т. е. runtime.NumCPU
. Если этого недостаточно (например, если вы запускаете node_exporter
с привязкой к процессору, установленной для конкретных процессоров), вы можете указать список альтернативные процессоры с помощью флага --collector.perf.cpus
. Например, чтобы собрать показатели по процессорам 2–6, вы должны указать: --collector.perf --collector.perf.cpus=2-6
. имеет нулевой индекс и также может принимать значение шага, например --collector.perf --collector.perf.cpus=1-10:5
будет собирать данные на процессорах 1, 5 и 10.
Сборщик perf
также может собирать количество точек трассировки при использовании флага --collector.perf.tracepoint
. Точки трассировки можно найти с помощью perf list
или из debugfs. Примером использования этого может быть --collector.perf.tracepoint="sched:sched_process_exec"
.
Сборщик sysctl
можно включить с помощью --collector.sysctl
. Он поддерживает представление числовых значений sysctl в качестве метрик с помощью флага --collector.sysctl.include
и строковых значений в качестве информационных метрик с помощью флага --collector.sysctl.include-info
. Флаги могут повторяться. Для sysctl с несколькими числовыми значениями можно указать дополнительное сопоставление, чтобы представить каждое значение как отдельную метрику. В противном случае для идентификации различных полей используется index
метка.
Использование --collector.sysctl.include=vm.user_reserve_kbytes
: vm.user_reserve_kbytes = 131072
-> node_sysctl_vm_user_reserve_kbytes 131072
sysctl может содержать несколько значений, например:
net.ipv4.tcp_rmem = 4096 131072 6291456
Используя --collector.sysctl.include=net.ipv4.tcp_rmem
сборщик предоставит:
node_sysctl_net_ipv4_tcp_rmem{index="0"} 4096
node_sysctl_net_ipv4_tcp_rmem{index="1"} 131072
node_sysctl_net_ipv4_tcp_rmem{index="2"} 6291456
Если индексы имеют определенное значение, как в этом случае, значения можно сопоставить с несколькими метриками, добавив сопоставление к флагу --collector.sysctl.include: Используя --collector.sysctl.include=net.ipv4.tcp_rmem:min,default,max
коллектор выставит:
node_sysctl_net_ipv4_tcp_rmem_min 4096
node_sysctl_net_ipv4_tcp_rmem_default 131072
node_sysctl_net_ipv4_tcp_rmem_max 6291456
Строковые значения должны быть представлены как информационная метрика. Пользователь выбирает их с помощью флага --collector.sysctl.include-info
.
kernel.core_pattern = core
-> node_sysctl_info{key="kernel.core_pattern_info", value="core"} 1
Учитывая следующий sysctl:
kernel.seccomp.actions_avail = kill_process kill_thread trap errno trace log allow
Установка --collector.sysctl.include-info=kernel.seccomp.actions_avail
даст:
node_sysctl_info{key="kernel.seccomp.actions_avail", index="0", value="kill_process"} 1
node_sysctl_info{key="kernel.seccomp.actions_avail", index="1", value="kill_thread"} 1
...
Сборщик textfile
аналогичен Pushgateway тем, что позволяет экспортировать статистику из пакетных заданий. Его также можно использовать для экспорта статических показателей, например роли, которую играет машина. Pushgateway следует использовать для показателей уровня обслуживания. Модуль textfile
предназначен для метрик, привязанных к машине.
Чтобы использовать его, установите флаг --collector.textfile.directory
в командной строке node_exporter
. Сборщик проанализирует все файлы в этом каталоге, соответствующие glob *.prom
используя текстовый формат. Примечание. Временные метки не поддерживаются.
Чтобы атомарно увеличить время завершения задания cron:
echo my_batch_job_completion_time $(date +%s) > /path/to/directory/my_batch_job.prom.$$
mv /path/to/directory/my_batch_job.prom.$$ /path/to/directory/my_batch_job.prom
Чтобы статически задать роли для машины с помощью меток:
echo 'role{role="application_server"} 1' > /path/to/directory/role.prom.$$
mv /path/to/directory/role.prom.$$ /path/to/directory/role.prom
node_exporter
по умолчанию предоставляет все метрики от включенных сборщиков. Это рекомендуемый способ сбора метрик, чтобы избежать ошибок при сравнении метрик разных семейств.
Для расширенного использования node_exporter
можно передать дополнительный список сборщиков для фильтрации метрик. Параметры collect[]
и exclude[]
можно использовать несколько раз (но нельзя комбинировать). В конфигурации Prometheus вы можете использовать этот синтаксис в конфигурации очистки.
Собирайте только метрики сборщика cpu
и meminfo
:
params:
collect[]:
- cpu
- meminfo
Соберите все включенные метрики сборщика, но исключите netdev
:
params:
exclude[]:
- netdev
Это может быть полезно для того, чтобы разные серверы Prometheus собирали определенные показатели с узлов.
Предпосылки:
glibc-static
.Здание:
git clone https://github.com/prometheus/node_exporter.git
cd node_exporter
make build
./node_exporter
Чтобы просмотреть все доступные флаги конфигурации:
./node_exporter -h
make test
ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ
Экспортер поддерживает TLS через новый файл веб-конфигурации.
./node_exporter --web.config.file=web-config.yml
Дополнительную информацию см. в веб-конфигурации инструмента экспорта.