Показаны сообщения с ярлыком telegraf. Показать все сообщения
Показаны сообщения с ярлыком telegraf. Показать все сообщения

четверг, 24 июня 2021 г.

Мониторинг состояния здоровья и температуры жёстких дисков в Windows с помощью smartmontools + telegraf

 У меня уже развёрнута связка influxdb + grafana и тут в сетке появился хост с блядской виндой... Под линуксами всякими снимать инфу о состоянии жёстких дисков оказалось прилично легко, но с виндой пришлось покрутиться... Попытка прикрутить smartmontools в конфиг телеграфа в плагин [[inputs.smart]] провалилась успешно высыпанием кучей ошибок и прочего... Придётся ставить костыли и сегодняшний костыль будет писан на powershell (дабы не усложнять ничего в окружении и т.п.).

четверг, 30 апреля 2020 г.

Мониторинг интерфейсов mikrotik с помощью mikrotik api, telegraf и grafana

 С чего началось... Меня попросили запилить мониторинг за народом, коий подключается по vpn к офису с использованием pptp (кто когда подключался, кто сколько прокачивал...). Самый первый и очевидный способ - полезть в snmp, да и запилить на нём, НО... Это же тебе надо знать заранее oid каждого интерфейса, а если мы говорим про vpn, то интерфейсы динамические... Вот заводишь ты новый vpn для кого то и потом его в мониторинге прописывать, нафиг... Гемор одним словом... А что если сделать так, чтобы в мониторинг всё попадало автоматом...
 


среда, 19 февраля 2020 г.

Мониторинг за процессами в Windows, согласно их путей выполнения с помощью telegraf, influxdb и grafana

Мне понадобилось следить за процессами в Windows и рисовать по ним графики, а также создавать оповещения о их различных статусах. Для этого я написал отдельное приложение на c# и сделал следующую связку:

1. На windows машинке работает служба telegraf, которая коллекционирует различные метрики, среди которых в ней включен плагин exec.
2. Плагин exec вызывает моё приложение, который отдаёт перечень процессов и их состояние в виде аргумента в telegraf.
3. Telegraf посылает метрики в БД influxdb.
4. Grafana берёт метрики из influxdb и далее рисуются графики и прикручиваются алерты...

Подробнее о используемых технологиях можно почитать тут:



Пример графика

Как работает моё приложение... 

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

C:\Program Files (x86)\ZKTime.Net\ZKTimeNet.exe,$ZKTimeNet
C:\OhmGraphite-0.10.0\OhmGraphite.exe,OhmGraphite
C:\Windows\system32\dns.exe,$DNS_server

Первый столбец указывает на путь выполнения к файлу (регистр букв соблюдается, так что предварительно необходимо посмотреть в таск менеджере корректный путь к выполняемому процессу). Разделителем выступает символ , после которого указывается наименование выполняемого процесса. Для чего это нужно? Представим что в системе есть 2 браузера firefox, но они установленны в разные директории. Таким образом в описании можно указать для разных путей разные наименования. Например firefox1 и firefox2. 

Обратите внимание на символ $ в начале наименования процесса. Таким образом я указываю, что за этим процессом необходимо следить и отсылать состояние его работы даже в том случае, когда он не запущен (допустим критические приложения). В случае наличия данного символа и отсутствия выполняемого процесса в системе - в метрике будет отдано значение -1, тогда как состояние запущенности процесса указывается метрикой, равной 1.

Качаем отсюда (https://github.com/constantinekg/getprocesses) 2 файла:


Файл getprocs.7z распаковываем, получаем getprocs.exe. Эти 2 файла (getprocs.exe и procs.csv) перемещаем в директорию с установленным telegraf'ом (C:\Program Files\telegraf).

Правим по образу и подобию CSV файл. Указываем необходимые для мониторинга процессы и т.д. 

В конфиг telegraf добавляем следующее:

# Читает метрики в stdout
[[inputs.exec]]

commands = [
"C:/\"Program Files\"/telegraf/getprocs.exe C:/\"Program Files\"/telegraf/procs.csv",
]
 
# Интервал сбора метрик
interval = "60s"

## Таймаут для ожидания выполнения процесса
timeout = "10s"

# Оставляем как есть
data_format = "influx"
data_type = "string"
[inputs.exec.tags]
# Возможные теги для полученных метрик процессов (в моём случае мне достаточно знать что это метрики из офиса, но можно добавить что то своё дополнительно
location = "office"

После добавления необходимо перезапустить сервис telegraf в системе ну или перезагрузить компик...

Далее в графане необходимо будет создать какие угодно графики, а лерты и т.д. и т.п. Но об этом лучше почитать в мануалах по графане...