P.S: Данная заметка актуальта только отчасти, за обновленными сведениями прошу сюда.
Долго меня интересовала задача, каким образом производить мониторинг уличной погоды – т.е. формировать статистику в течении дня, недели, месяца как она изменяется. Вот если вспомнить если конечно кто-то помнит, к примеру я помню со школьной поры, как нас учительница географии заставляла в течение месяца вести таблицу таких параметров: день, время, направление ветра, влажность, температура. Ну тогда я был маленький и еще не знал, что буду системным администратором с уклоном в самостоятельное решение проблем и вот я поставил себе небольшую задачку. Хочу имея такой инструмент как Zabbix вести мониторинг за такими параметрами, но не в блокнотике, а в виде графика. Сейчас я покажу, на примере значений влажности и температуры, как это добиться. Ниже пошаговые действия ориентированные на ось Ubuntu 12.04.5 Server amd64 и Zabbix версии (2.2.13).
Информацию по погоде через консоль можно получить так:
ekzorchik@srv-mon:~$ sudo apt-get install weather-util -y
ekzorchik@srv-mon:~$ weather
weather: error: id required for conditions
Чтобы узнать ID места с которого запрашивать и получать информацию состояния погоды нужно зайти через браузер на сайт: http://weather.noaa.gov/
После выбираем страну (в которой сейчас находимся, в моем случае это Россия) Russian и нажимаем Go!
После указываю город текущего расположения:
Most recently observed weather conditions for Russian: Select a location: т.к. я живу в подмосковье, а информацию можно запросить только с ближайших аэропортов на которых находится метеостанция это: Внуково, Шереметьево, Домодедово – то я выбираю Moscow/Domodedovo как наиболее близ лежащий к моему дому и нажимаю Go, получаю следующий вывод
В данном выводе меня интересует идентификатор аэропорта “Домодедова”, а именно: UUDD
Теперь зная идентификатор информацию по погоде на консоль можно вывести с использованием утилиты weather так:
ekzorchik@srv-mon:~$ weather --id=UUDD
Current conditions at Moscow / Domodedovo, Russia (UUDD) 55-24N 037-54E (UUDD)
Last updated Jun 12, 2016 – 10:30 AM EDT / 2016.06.12 1430 UTC
Temperature: 53 F (12 C) Температура
Relative Humidity: 76% Относительная влажность
Wind: from the WSW (250 degrees) at 16 MPH (14 KT) gusting to 27 MPH (23 KT) (direction variable)
Weather: Cumulonimbus clouds observed
Sky conditions: mostly cloudy
Теперь посредством консоли командной строки мне нужно получить градусы и относительную влажность которую я буду мониторить:
ekzorchik@srv-mon:~$ weather --id=UUDD | grep 'Temperature' | awk '{print $4}' | sed -e 's/(//g'
15
ekzorchik@srv-mon:~$ weather --id=UUDD | grep 'Relative Humidity' | awk '{print $3}'
54%
ekzorchik@srv-mon:~$ weather --id=UUEE | grep 'Relative Humidity' | awk '{print $3}' | sed 's/^\(.*\).$/\1/'
55
Имея данные значения можно настроить элементы данных, т.к. эти данные ни как не связаны с другими, то для них создам шаблон: Template_Weather
http://IP&DNS – user&pass – Configuration – Templates – Create Template –
Template Name: Template Weather
Groups – Zabbix servers
а после нажимаю Save, теперь перехожу в данный Template и создаю элементы (Items) данных: → Create Item
- Name: Temperature
- Type: Zabbix agent
- Key: temp
- Type of information: Numeric (unsigned)
- Data type: Decimal
- Units: C
- New application: Temperature
- Enabled: Отмечаю галочкой и нажимаю Save
и еще один элемент данных для влажности:
- Name: Relative Humidity
- Type: Zabbix agent
- Key: humi
- Type of information: Numeric (unsigned)
- Data type: Decimal
- Units: %
- Applications: выбираю Temperature
- Enabled: Отмечаю галочкой и нажимаю Save
Для того, чтобы с сервера Zabbix можно было осуществлять проверку данного элемент данных, нужно на сам сервер поставить агент zabbix:
ekzorchik@srv-mon:~$ sudo apt-get install zabbix-agent=1:2.2.13-1+precise -y
Создаю скрипты получения информации о температуре и относительной влажности:
ekzorchik@srv-mon:~$ sudo nano /usr/lib/zabbix/externalscripts/temp
#!/bin/bash
/usr/bin/weather --id=UUDD | grep 'Temperature' | awk '{print $4}' | sed -e 's/(//g'
exit
ekzorchik@srv-mon:~$ sudo nano /usr/lib/zabbix/externalscripts/humi
#!/bin/bash
/usr/bin/weather --id=UUDD | grep 'Relative Humidity' | awk '{print $3}' | sed 's/^\(.*\).$/\1/'
exit
Изменяю права доступа до скриптов и делаю их исполняемыми:
ekzorchik@srv-mon:~$ sudo chmod 755 /usr/lib/zabbix/externalscripts/*
ekzorchik@srv-mon:~$ sudo chmod +x /usr/lib/zabbix/externalscripts/*
ekzorchik@srv-mon:~$ sudo ls -l /usr/lib/zabbix/externalscripts/
total 8
-rwxr-xr-x 1 root root 114 Apr 25 16:59 humi
-rwxr-xr-x 1 root root 102 Apr 25 16:47 temp
После конфигурационный файл Zabbix-агента на хосте будет следующим:
ekzorchik@srv-mon:~$ sudo nano /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=10
DebugLevel=3
EnableRemoteCommands=1
LogRemoteCommands=1
Server=localhost
ListenPort=10050
Hostname=srv-mon
UserParameter=temp[*],/usr/lib/zabbix/externalscripts/temp
UserParameter=humi[*],/usr/lib/zabbix/externalscripts/humi
Перезапускаю сервис Zabbix-агента:
ekzorchik@srv-mon:~$ sudo service zabbix-agent restart
После проверяю получение Zabbix-агентом данных и скриптов:
ekzorchik@srv-mon:~$ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t humi
humi [t|66]
ekzorchik@srv-mon:~$ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t temp
temp [t|13]
Отлично результаты возвращаются. Теперь нужно данный шаблон (Template) нацепить на текущий хост на котором у меня развернут сам сервис по мониторингу за инфраструктурой. Ну а далее можно в самом шаблоне создать график на который и вывести оба значения от элементов данных которые посредством скрипта получают необходимое.
http://IP&DNS – user&pass – Configurations – Templates – Group – Zabbix Servers – Template Weather – Graphs – Create graph
- Name: Current Temperature
- Items: Template Weather: Relative Humidity & Template Weather: Temperature
все остальные поля оставляю дефолтными, а после нажимаю Save
Теперь если обратиться к графикам, то картина по шаблону Template Weather будет следующей:
http://IP&DNS – user&pass – Monitoring – Graphs,
- Group: Zabbix Servers
- Host: Zabbix server
- Graph: Current Temperature
По сути все сводится выбору инструмента и составлению скрипта на основе которого будет извлекаться необходимые значения по которым нужно вести мониторинг и еще в конфигурационном файле /etc/zabbix/zabbix_agentd.conf
нужно обратить внимание на правильность указания пути до скриптов. А так все работает, на этом я прощаюсь и до новых заметок, с уважением автор блога – ekzorchik.