From: Дмитрий Попов <incvega@gmail.com.>
Newsgroups: email
Date: Mon, 27 Dec 2007 14:31:37 +0000 (UTC)
Subject: Построение графиков для мониторинга состояние оборудования
1) Подготовка ядра (включение lm_sensor)
2) Компилирование пакета NET-SNMP с lm_sensor
3) Установка PGSQL
а) Создание базы таблиц
4) Перенаправление данных с сенсоров в базу.(bash)
5) Установка Apache + PHP+ GD
6) Установка библиотеки JpGraph
7) Строим график.
1. Подготовка ядра
Введение
Для начала, пройдемся по основным моментам. В начале необходимо четко
спланировать для чего ваш сервер собственно предназначен. Продумайте
какая нагрузка на нем будет. В моем примере на машине установленно все
программы, но это делалось все в домашних условиях. Если действительно
кто-то захочет повторить эту связку , я бы рекомендовал разбить на 3
основные части.
1) PgSQL
2) Apache+php+gd
3) Net-SNMP и lm_sensors
Первые два пункта на ваше усмотрение, а вот 3й, это думаю базовые
пакеты которые необходимо поставить на "любой" cервер. На практике
бывает а "вот вот не плохо бы иметь график по тем-то данным" и
начинается апгрейд программ и хвост который тянет только проблемы за
собой. Вывод: планируйте зарание.
Как показала практика данные не бывают лишними, другое дело их
использовать! В данном материале я показал только одну маленькую часть
того , что можно построить имея под рукой базовые пакеты не прибегая к
установке таких программ как MRTG,RDDTOOL итд, мне захотелосьсамому
пощупать, как это строиться и как это работает. Тем более когда вы
закладывается собственную математику вы точно понимаете как это
работает и вы уверенны что это правильно работает! Я использовал
готовую библиотеку "JpGraph" в которой опеределены уже все классы для
построения графиков и это очень форсировало проект. И так результат
всех моих изобретений доступен 24 часа на http://eagle.gameway.ru .
Если кого заинтересовал этот проект для реализации в крупной сети:
incvega@gmail.com
1.1 Выбор дистрибутива
Я использовал для своих эксперементов Gentoo Linux 2007.0 уверен, что
это все работает и на других дистрибутивах выбор за вами .
Нам необходимо включить поддержку lm_sensors для нашего оборудования.
И так подготовим наше ядро:
root# cd /usr/src/linux
root# make menuconfig
Результат ваших страданий должен быть отражен в .config каждый найдет,
тот модуль кторый ему нужен. Добавлю только, что использовалось в
качестве тестов
#
# Miscellaneous I2C Chip support
#
CONFIG_SENSORS_DS1337=m
CONFIG_SENSORS_DS1374=m
CONFIG_SENSORS_EEPROM=m
CONFIG_SENSORS_PCF8574=m
CONFIG_SENSORS_PCA9539=m
CONFIG_SENSORS_PCF8591=m
CONFIG_SENSORS_MAX6875=m
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
# CONFIG_I2C_DEBUG_CHIP is not set
#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
Подведение итогов: Сейчас у нас данные поступают в базу с
периодичностью в 5 минут с local host , вы без труда можете подключить
другие хосты достаточно правильно настроить net-snmp и firewall .
5. Установка Apache + PHP+ GD
Не хотелось бы заострить на этом большое внимание для установки этого
хозяйства на сервер, так как статей по этому просто туча, единственное
на чем хотел бы заострить внимание это GD в Gentoo понравилась
собрать этот пакет как мне угодно тоесть включить те флаги которые мне
нужны:
eagle vega # emerge -pv gd
These are the packages that would be merged, in order:
Calculating dependencies... done!
Total: 1 package (1 reinstall), Size of downloads: 0 kB
eagle vega #
Результат функции
phpinfo();
gd
GD Support enabled
GD Version bundled (2.0.34 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.3.4
T1Lib Support enabled
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled
Тут как вам угодно собирайте оптимизируйте на вашь вкус. Основное это
красным выделенно.
6. Установка библиотеки JpGraph
Пожалу самое легкое ) другое дело - это использовать. Кратенько:
скачать архив и расспаковать его в диррикторию где DocumentRoot у
апача и запустить тестовый файл который вам построит все графики
которые поддерживает ваша конфигурация.
Есть нюанс с текстом я просто скопировал шрифты из windows и прописал
их в конфигурационных файлах этой библиотеки.
Полная документация распологается на (внимательно прочтите):
http://www.aditus.nu/jpgraph/documentation.php
7. Строим график.
За дизайн не ругайте
Создаем папочку cpu в DocumentRoot и добавляем файлы cpu.jpg
new_g3.php user_data3.php
С э того момента начну по подробнее
1) cpu.jpg - это background для графика добавляем любой по вкусу.
2) new_g3.php - график
3) user_data3.php - данные от базы.
Открываем занавес:
new_g3.php
<?php
//путь до библиотеки JpGraph
require_once("../../jpgraph.php");
require_once("../../jpgraph_line.php");
require_once("../../jpgraph_date.php");
require_once("../../jpgraph_bar.php");
// Create a data set in range (50,70) and X-positions
DEFINE('NDATAPOINTS',1440);
DEFINE('SAMPLERATE',1440);
// наши данные из базы
include 'user_data3.php';
$data=$array_1;
$xdata = $array_2;
// Slightly larger than normal margins at the bottom to have room for
// the x-axis labels
$graph->SetMargin(60,50,10,35);
$graph->SetScale('datlin');
//$graph->SetScale("textlin");
$graph->title->Set("http://eagle.gameway.ru $date");
// Set the angle for the labels to 90 degrees
$graph->xaxis->SetLabelAngle(0);
$graph->SetImgFormat('jpeg',100);
// It is possible to adjust the density for the X-axis as well
// The following call makes the dates a little more sparse
// $graph->SetTickDensity(TICKD_NORMAL,TICKD_SPARSE);
// The automatic format string for dates can be overridden
$graph->xaxis->scale->SetDateFormat('h:i');
// Adjust the start/end to a specific alignment
$graph->xaxis->scale->SetTimeAlign(MINADJ_1);
$line = new LinePlot($data,$xdata);
$line->SetLegend('CPU temperature');
$graph->yaxis->HideZeroLabel();
$graph->xgrid->Show(true,false);
$graph->xgrid->SetColor('black@0.8');
//$line->SetFillColor('chartreuse2@0.6');
$line->SetFillColor('lime@0.4');
$graph->Add($line);
$graph->Stroke();
?>
$query="select value_trap,current_ts from snmpwalk_cron_ip where
current_ts >='$date' and oid_id='$oid_id' and host_ip='$host_ip'
order by current_ts;";
Дальше данные можно мультиплексировать и отображать вот так полет
фантазии не ограничен можно прикрутить smart статистику с винтов и
нарисовать, собсвенно все что душе угодно по snmp вы можете вызывать
собственные скрипты man snmp.conf.
Главное показать что это все очень прозрачно и доступно.
Тут как ваша фантазия себя поведет
Удачи.
Inc_Vega(Попов Дмитрий)
1425 Прочтений • [Построение графиков для мониторинга состояние оборудования (monitoring snmp linux gentoo lm_sensor)] [08.05.2012] [Комментариев: 0]