В своё время я наткнулся на одну интересную статью на Хабре http://habrahabr.ru/post/204478/. Идея мне понравилась, но показалась сложной, так как о Linux я тогда больше слышал, нежели пользовался. Прошло время, и я решил вернутся к данной статье.
Так же, как и в оригинале, для построения сети был выбран контроллер DS 9490 R. Датчики: DS 18 B 20 и DS 18 B 20+. В роли сервера использовалась виртуальная машина.
Для установки был выбран дистрибутив CentOS 6.5. Процесс установки и обновления дистрибутива описан бесчисленное количество раз, поэтому упоминать об этом в данной статье смысла не вижу.
Далее автор оригинальной статьи предлагает использовать digitemp. Не скажу, что это неправильно, но я решил использовать более распространённую решение для работы с 1-wire - утилиту owfs. Вообще, это даже не утилита, а комплекс программ для работы с 1-wire сетью.
Заходим на сайт http://owfs.org/. Там можно прочитать более подробно про то, что это и с чем это едят. Перейдя в раздел загрузок в верху, мы видим, что последние версии выложены на sourceforge. Мы не гордые, переходим по ссылке и видим, что последняя доступная версия 3.1p0, но вот установить ее мне так и не удалось. Поэтому я выбрал более ранний релиз 2.9p5.
Скачиваем и распаковываем в каталог, из которого будем производить установку. Переходим в каталог owfs-2.9p5 и запускаем:
./ configure
Как результат Вы должны увидеть что-то вроде этого:
Для работы обязательно наличие USB, owfs, owhttpd.
Многие модули по началу будут в состоянии DISABLED.
Мне пришлось доустанавливать следующие пакеты:
autoconf-2.63-5.1.el6.noarch
automake-1.11.1-4.el6.noarch
libtool-2.2.6-15.5.el6.x86_64
swig-1.3.40-6.el6.x86_64
php-common-5.3.3-46.el6_6.x86_64
apr-1.3.9-5.el6_2.x86_64
apr-util-1.3.9-3.el6_0.1.x86_64
httpd-tools-2.2.15-39.el6.centos.x86_64
apr-util-ldap-1.3.9-3.el6_0.1.x86_64
httpd-2.2.15-39.el6.centos.x86_64
php-cli-5.3.3-46.el6_6.x86_64
libXpm-3.5.10-2.el6.x86_64
php-gd-5.3.3-46.el6_6.x86_64
php-5.3.3-46.el6_6.x86_64
php-xml-5.3.3-46.el6_6.x86_64
php-mbstring-5.3.3-46.el6_6.x86_64
python-devel-2.6.6-52.el6.x86_64
php-devel-5.3.3-46.el6_6.x86_64
fuse-2.8.3-4.el6.x86_64
libusb-devel-0.1.12-23.el6.x86_64
После установки запускаем ./ configure еще раз и после того, как все интересующие нас модули включились, выполняем установку:
Make install
Все, owfs установлена. Теперь нам надо ее запустить! В командной строке пишем:
/opt/owfs/bin/owhttpd -u -p 4444 (путь зависит от места куда производилась установка, порт можно указать и другой)
Теперь можно открыть в браузере адрес http://ip_address:4444 и вот, примерно, что мы увидим:
Все, что начинается с числа 28, это и есть наши температурные датчики. Открыв один из датчиков увидим следующую картину:
Теперь нам нужно как-то передать эти данные в Zabbix. Для этого используем zabbix_sender. Скачиваем исходники zabbix с официального сайта, распаковываем и переходим в директорию zabbix. Далее конфигурируем только агента:
./ configure -- enable - agent
И выполняем установку:
Make install
Итак, мы видим датчики, у нас есть средство доставки данных, осталось соединить все это и передать данные на наш сервер zabbix. На самом деле тут у всех свобода действий. Мы использовали небольшой скрипт на python:
#!/usr/bin/python
# Import modules for CGI handling
import cgi, cgitb, os
import urllib
def get_page(url):
try:
return urllib.urlopen(url).read()
except:
return ""
import time
from datetime import date,datetime
from collections import namedtuple
# Create instance of FieldStorage
t1=get_page('http://xx.xx.xx.xx:4444/28.D29B8C050000')
num1=t1.find('temperature')
t1=t1[num1+24:num1+29]
os.system("/usr/local/bin/zabbix_sender -z xx.xx.xx.xx -p 10051 -s Temperature -k temp.t1 -o %s -T" % t1)
И так описываете каждый датчик, меняется только значение ключа t (1,2,3,4…..)
Данный скрипт нужно добавить в crontab, что бы он выполнялся автоматически.
Теперь переходим к настройкам zabbix:
- Создаем узел сети, как пример, Temperature (это название используется в скрипте, так что будьте внимательны);
- Создаем новый элемент данных;
- Создаем тригер.
- Имя – любое понятное вам имя;
- Тип – zabbix траппер;
- Ключ – тут указываем тот ключ, который указали в скрипте.
Если вы все сделали правильно, то заббикс начнет обрабатывать получаемые данные, и на основе них можно уже строить красивые графики, делать прогнозы относительно возможного выхода из строя системы охлаждения и оперативно принимать меры по устранению внештатных ситуаций.