The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Построение графиков для мониторинга состояние оборудования (monitoring snmp linux gentoo lm_sensor)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: monitoring, snmp, linux, gentoo, lm_sensor,  (найти похожие документы)
From: Дмитрий Попов <incvega@gmail.com.> Newsgroups: email Date: Mon, 27 Dec 2007 14:31:37 +0000 (UTC) Subject: Построение графиков для мониторинга состояние оборудования Связка: GENTOO+NET-SNMP+APACHE+PGSQL+PHP+BASH+ lm_sensor. Живая система: http://eagle.gameway.ru Схема План работ: 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 каждый найдет, тот модуль кторый ему нужен. Добавлю только, что использовалось в качестве тестов CPU: Intel Celetron MB: Gigabyte ICH7 # I2C Algorithms # CONFIG_I2C_ALGOBIT=m CONFIG_I2C_ALGOPCF=m CONFIG_I2C_ALGOPCA=m # # I2C Hardware Bus support # CONFIG_I2C_ALI1535=m CONFIG_I2C_ALI1563=m CONFIG_I2C_ALI15X3=m CONFIG_I2C_AMD756=m CONFIG_I2C_AMD756_S4882=m CONFIG_I2C_AMD8111=m CONFIG_I2C_I801=m CONFIG_I2C_I810=m CONFIG_I2C_PIIX4=m CONFIG_I2C_ISA=m CONFIG_I2C_NFORCE2=m CONFIG_I2C_OCORES=m CONFIG_I2C_PARPORT_LIGHT=m CONFIG_I2C_PROSAVAGE=m CONFIG_I2C_SAVAGE4=m CONFIG_I2C_SIMTEC=m CONFIG_SCx200_ACB=m CONFIG_I2C_SIS5595=m CONFIG_I2C_SIS630=m CONFIG_I2C_SIS96X=m CONFIG_I2C_STUB=m CONFIG_I2C_TINY_USB=m CONFIG_I2C_VIA=m CONFIG_I2C_VIAPRO=m CONFIG_I2C_VOODOO3=m # # 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 # # Dallas's 1-wire bus # # CONFIG_W1 is not set CONFIG_HWMON=y CONFIG_HWMON_VID=m CONFIG_SENSORS_ABITUGURU=m CONFIG_SENSORS_AD7418=m CONFIG_SENSORS_ADM1021=m CONFIG_SENSORS_ADM1025=m CONFIG_SENSORS_ADM1026=m CONFIG_SENSORS_ADM1029=m CONFIG_SENSORS_ADM1031=m CONFIG_SENSORS_ADM9240=m CONFIG_SENSORS_K8TEMP=m CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ATXP1=m CONFIG_SENSORS_DS1621=m CONFIG_SENSORS_F71805F=m CONFIG_SENSORS_FSCHER=m CONFIG_SENSORS_FSCPOS=m CONFIG_SENSORS_GL518SM=m CONFIG_SENSORS_GL520SM=m CONFIG_SENSORS_CORETEMP=m CONFIG_SENSORS_IT87=m CONFIG_SENSORS_LM63=m CONFIG_SENSORS_LM75=m CONFIG_SENSORS_LM77=m CONFIG_SENSORS_LM78=m CONFIG_SENSORS_LM80=m CONFIG_SENSORS_LM83=m CONFIG_SENSORS_LM85=m CONFIG_SENSORS_LM87=m CONFIG_SENSORS_LM90=m CONFIG_SENSORS_LM92=m CONFIG_SENSORS_MAX1619=m CONFIG_SENSORS_MAX6650=m CONFIG_SENSORS_PC87360=m CONFIG_SENSORS_PC87427=m CONFIG_SENSORS_SIS5595=m CONFIG_SENSORS_SMSC47M1=m CONFIG_SENSORS_SMSC47M192=m CONFIG_SENSORS_SMSC47B397=m CONFIG_SENSORS_VIA686A=m CONFIG_SENSORS_VT1211=m CONFIG_SENSORS_VT8231=m CONFIG_SENSORS_W83781D=m CONFIG_SENSORS_W83791D=m CONFIG_SENSORS_W83792D=m CONFIG_SENSORS_W83793=m CONFIG_SENSORS_W83L785TS=m CONFIG_SENSORS_W83627HF=m CONFIG_SENSORS_W83627EHF=m CONFIG_SENSORS_HDAPS=m CONFIG_SENSORS_APPLESMC=m Далее eagle linux # emerge -pv lm_sensors These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] sys-apps/lm_sensors-2.10.4 USE="-sensord" 911 kB Суммарный результат вашего старания должен быть такой eagle linux # lsmod Module Size Used by it87 19856 0 hwmon_vid 6400 1 it87 i2c_isa 7168 1 it87 i2c_i801 11280 0 eagle linux # sensors it8718-isa-0290 Adapter: ISA adapter in0: +1.36 V (min = +0.00 V, max = +4.08 V) in1: +1.82 V (min = +0.00 V, max = +4.08 V) in2: +3.34 V (min = +0.00 V, max = +4.08 V) in3: +4.08 V (min = +0.00 V, max = +4.08 V) ALARM in4: +3.07 V (min = +0.00 V, max = +4.08 V) in5: +0.03 V (min = +0.00 V, max = +4.08 V) in6: +1.23 V (min = +0.00 V, max = +4.08 V) in7: +4.08 V (min = +0.00 V, max = +4.08 V) ALARM in8: +4.08 V fan1: 1901 RPM (min = 0 RPM) fan2: 2872 RPM (min = 0 RPM) fan3: 0 RPM (min = 0 RPM) temp1: -53°C (low = +127°C, high = +127°C) sensor = thermistor temp2: -2°C (low = +127°C, high = +127°C) sensor = thermistor temp3: +42°C (low = +127°C, high = +90°C) sensor = diode vid: +1.088 V eagle linux # Необходимо добавить его соответсвующий уровень загрузки (rc.d) у меня он в default: eagle linux # rc-config show Status of init scripts in runlevel default apache2 [started] lm_sensors [started] local [started] named [started] net.eth0 [started] netmount [started] ntpd [started] postgresql [started] snmpd [started] sshd [started] syslog-ng [started] vixie-cron [started] 2. Компилирование пакета NET-SNMP с lm_sensor В Gentoo этот процес занимает не долгое время и поиск. Выбираем флаги и собираем его с нашим lm_sensor. eagle linux # emerge -pv net-snmp These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild U ] net-analyzer/net-snmp-5.4.1-r1 [5.4] USE="ipv6 lm_sensors perl python%* ssl tcpd -X -diskio* -doc -elf* -mfd-rewrites -minimal -rpm (-selinux) -sendmail -smux" 5,003 kB Total: 1 package (1 upgrade), Size of downloads: 5,003 kB Необходимо отредактировать по вашему вкусу snmpd. и добавить его соответсвующий уровень загрузки (rc.d) у меня он в default: eagle linux # rc-config show Status of init scripts in runlevel default apache2 [started] lm_sensors [started] local [started] named [started] net.eth0 [started] postgresql [started] snmpd [started] sshd [started] syslog-ng [started] vixie-cron [started] Тестирование сводится к тому чтобы увидеть следующее: eagle snmp #snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.13.16 LM-SENSORS-MIB::lmTempSensorsIndex.1 = INTEGER: 0 LM-SENSORS-MIB::lmTempSensorsIndex.2 = INTEGER: 1 LM-SENSORS-MIB::lmTempSensorsIndex.3 = INTEGER: 2 LM-SENSORS-MIB::lmTempSensorsDevice.1 = STRING: temp1 LM-SENSORS-MIB::lmTempSensorsDevice.2 = STRING: temp2 LM-SENSORS-MIB::lmTempSensorsDevice.3 = STRING: temp3 LM-SENSORS-MIB::lmTempSensorsValue.1 = Gauge32: 4294914296 LM-SENSORS-MIB::lmTempSensorsValue.2 = Gauge32: 4294965296 LM-SENSORS-MIB::lmTempSensorsValue.3 = Gauge32: 42000 LM-SENSORS-MIB::lmFanSensorsIndex.1 = INTEGER: 0 LM-SENSORS-MIB::lmFanSensorsIndex.2 = INTEGER: 1 LM-SENSORS-MIB::lmFanSensorsIndex.3 = INTEGER: 2 LM-SENSORS-MIB::lmFanSensorsDevice.1 = STRING: fan1 LM-SENSORS-MIB::lmFanSensorsDevice.2 = STRING: fan2 LM-SENSORS-MIB::lmFanSensorsDevice.3 = STRING: fan3 LM-SENSORS-MIB::lmFanSensorsValue.1 = Gauge32: 1923 LM-SENSORS-MIB::lmFanSensorsValue.2 = Gauge32: 2848 LM-SENSORS-MIB::lmFanSensorsValue.3 = Gauge32: 0 LM-SENSORS-MIB::lmMiscSensorsIndex.1 = INTEGER: 0 LM-SENSORS-MIB::lmMiscSensorsIndex.2 = INTEGER: 1 LM-SENSORS-MIB::lmMiscSensorsIndex.3 = INTEGER: 2 LM-SENSORS-MIB::lmMiscSensorsIndex.4 = INTEGER: 3 LM-SENSORS-MIB::lmMiscSensorsIndex.5 = INTEGER: 4 LM-SENSORS-MIB::lmMiscSensorsIndex.6 = INTEGER: 5 LM-SENSORS-MIB::lmMiscSensorsIndex.7 = INTEGER: 6 LM-SENSORS-MIB::lmMiscSensorsIndex.8 = INTEGER: 7 LM-SENSORS-MIB::lmMiscSensorsIndex.9 = INTEGER: 8 LM-SENSORS-MIB::lmMiscSensorsIndex.10 = INTEGER: 9 LM-SENSORS-MIB::lmMiscSensorsIndex.11 = INTEGER: 10 LM-SENSORS-MIB::lmMiscSensorsDevice.1 = STRING: in0 LM-SENSORS-MIB::lmMiscSensorsDevice.2 = STRING: in1 LM-SENSORS-MIB::lmMiscSensorsDevice.3 = STRING: in2 LM-SENSORS-MIB::lmMiscSensorsDevice.4 = STRING: in3 LM-SENSORS-MIB::lmMiscSensorsDevice.5 = STRING: in4 LM-SENSORS-MIB::lmMiscSensorsDevice.6 = STRING: in5 LM-SENSORS-MIB::lmMiscSensorsDevice.7 = STRING: in6 LM-SENSORS-MIB::lmMiscSensorsDevice.8 = STRING: in7 LM-SENSORS-MIB::lmMiscSensorsDevice.9 = STRING: in8 LM-SENSORS-MIB::lmMiscSensorsDevice.10 = STRING: vid LM-SENSORS-MIB::lmMiscSensorsDevice.11 = STRING: alarms LM-SENSORS-MIB::lmMiscSensorsValue.1 = Gauge32: 1360 LM-SENSORS-MIB::lmMiscSensorsValue.2 = Gauge32: 1824 LM-SENSORS-MIB::lmMiscSensorsValue.3 = Gauge32: 3343 LM-SENSORS-MIB::lmMiscSensorsValue.4 = Gauge32: 4080 LM-SENSORS-MIB::lmMiscSensorsValue.5 = Gauge32: 3072 LM-SENSORS-MIB::lmMiscSensorsValue.6 = Gauge32: 32 LM-SENSORS-MIB::lmMiscSensorsValue.7 = Gauge32: 1231 LM-SENSORS-MIB::lmMiscSensorsValue.8 = Gauge32: 4080 LM-SENSORS-MIB::lmMiscSensorsValue.9 = Gauge32: 4080 LM-SENSORS-MIB::lmMiscSensorsValue.10 = Gauge32: 1088 LM-SENSORS-MIB::lmMiscSensorsValue.11 = Gauge32: 34832000 Если вы добились этого, то пловина успеха за вами есть. 3. Установка PGSQL eagle snmp # emerge -pv postgresql These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] dev-db/postgresql-8.0.13 USE="nls pam perl python readline ssl xml* zlib -doc -kerberos -pg-intdatetime (-selinux) -tcl* -test" 7,796 kB Total: 1 package (1 reinstall), Size of downloads: 7,796 kB eagle snmp # Выбираем флаги и собираем нашу базу PGSQL (или альтернативную"up to you )") создаем базу. Cоздание таблицы для данных: CREATE sequence msg_seq_num_ip; CREATE TABLE snmpwalk_cron_ip ( id bigint default nextval('msg_seq_num_ip'), oid_id text, host_ip inet, value_trap bigint, current_ts timestamp(0) without time zone NOT NULL DEFAULT now() ); Результат создания должен быть следующий: 24houts=# SELECT * from snmpwalk_cron_ip limit 1; id | oid_id | host_ip | value_trap | current_ts ----+--------------------------+-----------+------------+----------------------- 1 | .1.3.6.1.4.1.2021.4.11.0 | 127.0.0.1 | 504536 | 2007-11-22 11:15:02 (1 row) 4. Перенаправление данных с сенсоров в базу.(bash) Для начало создадим скрипт с правами 711: linux# touch sensor.sh и добавим следующие строки: #!/bin/bash # описание значения который нам нужен OID3=".1.3.6.1.4.1.2021.13.16.2.1.3.3" OID4=".1.3.6.1.4.1.2021.13.16.3.1.3.1" OID5=".1.3.6.1.4.1.2021.13.16.3.1.3.2" # HOST="127.0.0.1" TEMP1=`snmpwalk -v 2c -c public1 localhost $OID3 |awk ' BEGIN {FS = " ";} {print $4 }'` FAN1=`snmpwalk -v 2c -c public1 localhost $OID4 |awk ' BEGIN {FS = " ";} {print $4 }'` FAN2=`snmpwalk -v 2c -c public1 localhost $OID5 |awk ' BEGIN {FS = " ";} {print $4 }'` # Запись в базу psql -d post57 -U vega -c "INSERT INTO snmpwalk_cron_ip(oid_id,host_ip,value_trap) VALUES ('$OID3','$HOST','$TEMP1');" psql -d post57 -U vega -c "INSERT INTO snmpwalk_cron_ip(oid_id,host_ip,value_trap) VALUES ('$OID4','$HOST','$FAN1');" psql -d post57 -U vega -c "INSERT INTO snmpwalk_cron_ip(oid_id,host_ip,value_trap) VALUES ('$OID5','$HOST','$FAN2');" Необходимо поставить этот скрипт по крону раз в 5 минут (на ваше усмотрение) и получить такой результат: 24hours=# SELECT * from snmpwalk_cron_ip limit 10; id | oid_id | host_ip | value_trap | current_ts ----+---------------------------------+-----------+------------+------ ---------- 1 | .1.3.6.1.4.1.2021.4.11.0 | 127.0.0.1 | 504536 | 2007-11-22 11:15:02 2 | .1.3.6.1.4.1.2021.4.6 | 127.0.0.1 | 6696 | 2007-11-22 11:15:02 3 | .1.3.6.1.4.1.2021.13.16.2.1.3.3 | 127.0.0.1 | 40000 | 2007-11-22 11:15:02 4 | .1.3.6.1.4.1.2021.13.16.3.1.3.1 | 127.0.0.1 | 1829 | 2007-11-22 11:15:03 5 | .1.3.6.1.4.1.2021.13.16.3.1.3.2 | 127.0.0.1 | 2860 | 2007-11-22 11:15:03 6 | .1.3.6.1.2.1.2.2.1.16.2 | 127.0.0.1 | 3868724396 | 2007-11-22 11:15:03 7 | .1.3.6.1.2.1.2.2.1.10.2 | 127.0.0.1 | 3391331837 | 2007-11-22 11:15:03 8 | .1.3.6.1.4.1.2021.4.11.0 | 127.0.0.1 | 509960 | 2007-11-22 11:20:02 9 | .1.3.6.1.4.1.2021.4.6 | 127.0.0.1 | 12120 | 2007-11-22 11:20:02 10 | .1.3.6.1.4.1.2021.13.16.2.1.3.3 | 127.0.0.1 | 42000 | 2007-11-22 11:20:02 (10 rows) Подведение итогов: Сейчас у нас данные поступают в базу с периодичностью в 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! [ebuild R ] media-libs/gd-2.0.35 USE="truetype -fontconfig* -jpeg* -png* -xpm*" 1,185 kB Total: 1 package (1 reinstall), Size of downloads: 1,185 kB eagle vega # emerge -pv apache These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild R ] www-servers/apache-2.2.6-r5 USE="ssl -debug -doc -ldap -mpm-event -mpm-itk -mpm-peruser -mpm-prefork -mpm-worker -no-suexec (-selinux) -static-modules -threads" 0 kB Total: 1 package (1 reinstall), Size of downloads: 0 kB eagle vega # [ebuild R ] dev-lang/php-5.2.5-r1 USE="apache2 berkdb bzip2 cli crypt gd gdbm iconv imap ipv6 ncurses nls pcre postgres readline reflection session soap spl ssl truetype unicode xml zlib -adabas -bcmath -birdstep -calendar -cdb -cgi -cjk -concurrentmodphp -ctype -curl -curlwrappers -db2 -dbase -dbmaker -debug -discard-path -doc -empress -empress-bcs -esoob -exif -fastbuild -fdftk -filter -firebird -flatfile -force-cgi-redirect -frontbase -ftp -gd-external -gmp -hash -inifile -interbase -iodbc -java-external -json -kerberos -ldap -ldap-sasl -libedit -mcve -mhash -msql -mssql -mysql -mysqli -oci8 -oci8-instant-client -odbc -pcntl -pdo -pic -posix -qdbm -recode -sapdb -sharedext -sharedmem -simplexml -snmp -sockets -solid -spell -sqlite -suhosin -sybase -sybase-ct -sysvipc -threads -tidy -tokenizer -wddx -xmlreader -xmlrpc -xmlwriter -xpm -xsl -yaz -zip -zip-external" 0 kB 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; // Create the new graph $graph = new Graph(650,200); $graph->SetScale("textlin"); $graph->SetShadow(); $txt=new Text("C"); $txt->SetPos(12,12); $txt->SetFont(FF_FONT1,FS_BOLD); $txt->SetOrientation("h"); //$txt->SetBox('yellow','navy','gray'); //$txt->SetColor("red"); $graph->AddText($txt); $txt1=new Text("h"); $txt1->SetPos(625,173); $txt1->SetFont(FF_FONT1,FS_BOLD); $txt1->SetOrientation("h"); $graph->AddText($txt1); $txt2=new Text("24 часа"); $txt2->SetPos(300,20); $txt2->SetFont(FF_ARIAL,FS_BOLD,9); $txt2->SetOrientation("h"); $graph->AddText($txt2); $graph ->title->SetFont(FF_ARIAL,FS_BOLD,8); // 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); // background $graph->SetBackgroundImage("cpu.jpg",BGIMG_FILLFRAME); // 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(); ?> user_data3.php <?php $timestampRightNow = strtotime("Now")- (1 * 24 * 60 * 60); $date = date('Y-m-d, H:i:s',$timestampRightNow); $oid_id=".1.3.6.1.4.1.2021.13.16.2.1.3.3"; $host_ip="127.0.0.1"; $conn=pg_connect("host=localhost dbname=24hours user=24hours password= "); $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;"; $result=pg_query($conn,$query); $rows = pg_num_rows($result); for ($i=0;$i<$rows;$i++){ $final=pg_fetch_array($result,$i); $array_1[$i]=$final['value_trap']/1000; $array_2[$i]=strtotime($final['current_ts']); } pg_close($conn); ?> Все что выделeнно цветом "основные моменты". Дальше данные можно мультиплексировать и отображать вот так полет фантазии не ограничен можно прикрутить smart статистику с винтов и нарисовать, собсвенно все что душе угодно по snmp вы можете вызывать собственные скрипты man snmp.conf. Главное показать что это все очень прозрачно и доступно. Тут как ваша фантазия себя поведет Удачи. Inc_Vega(Попов Дмитрий)

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1.1, Gray (??), 16:36, 27/12/2007 [ответить]  
  • +/
    Зачот ;)
     
  • 1.2, usr (?), 17:56, 27/12/2007 [ответить]  
  • +/
    А гуглом пользоваться и munin находить, значит, не умеем.
     
     
  • 2.3, Iscander (??), 21:17, 27/12/2007 [^] [^^] [^^^] [ответить]  
  • +/
    А читать с начала то что автор написал не читаем? Претит ему rrad, да ипосимпатичнее получилось, к тому же Munin на Perl и по теме ближе будет cacti.
    Вообщем то какая разница, чем отображать если внутри всё на snmp завязано)
     

  • 1.4, yun (?), 03:48, 28/12/2007 [ответить]  
  • +/
    Как мин. оиды хранить в отдельной таблице и связывать с таблицей данных через id
     
  • 1.5, anonymous (??), 00:28, 29/12/2007 [ответить]  
  • +/
    Гламурненько так...=)
     
  • 1.6, idtest (?), 02:40, 30/12/2007 [ответить]  
  • +/
    спасибо за доку по настройке sensors, попробую. но для отображения графиков буду использовать cacti - когда все графики вместе - это есть имхо хорошо
     
  • 1.7, chip (ok), 09:46, 30/12/2007 [ответить]  
  • +/
    Домашнее задание школьника какое-то.

    1. Для построения графиков вводить столько дополнительных сущностей - php и pgsql. Причем судя по направленности всего изложения это обычный шлюз.

    2. Данные исключительно пишутся, выгребать их предлагается самостоятельно. Причем для того чтобы посмотреть за год агрегированную статистику придется ворошить нефиговое кол-во записей. Посмотрите таки как сделана RRD.

    3. По сути полулось не маштабируемое решение с захардкоженными OID'aми.

    4. +1 за творческий подход.

     
  • 1.8, Inc_Vega (??), 19:47, 25/01/2008 [ответить]  
  • +/
    весть проект http://eagle.gameway.ru
    и вообще это для школьников а не для вас могучие гуру )
     
  • 1.9, StormZel (?), 12:49, 04/03/2008 [ответить]  
  • +/
    ну и чем же хуже MRTG ?! :)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру