Cacti не малює графіки(дубль2), Адмінчег

Posted on Серпень 1, 2014

дубль2

Це спроба номер 2. Зрозуміти, чому Cacti не малює графіки.

Якщо нічого не допомогло в 1м прикладі, то можна подивитися тут.

Інфа взята на просторах мережі.

І так насамперед потрібно перевірити лог фаїл, там можна почерпнути багато інформації для того, щоб далі вже шукати конкретну причину.

Перевірка Cacti логфайлу

SPINE: Host[. ] DS [. ] WARNING: SNMP timeout detected [500 ms], ignoring host '. '

Це означає найімовірніше, що опитуване вами пристрій може повністю відпрацювати, то кількість SNMP OID в SNMP запиті, що до нього приходить. Для усунення цієї помилки слід зменшити кількість SNMP OID у запиті. Ідемо вSettings,Pollerі зменшуємо значенняThe Maximum SNMP OID's Per SNMP Get Request. Слід встановити значення в 1 і після того, як poller почне збирати необхідну статистику, слід його поступово збільшити, вибравши відповідне для вашого випадку значення.

Перевірка функціонування вашого скрипта

Хоч це і очевидно, але все ж таки не варто ігнорувати — слід перевірити зайвий раз роботу вашого скрипта, що видає дані в командному рядку. Зробити це слід обов'язково з привілеями користувача cacti. su - cactivor /full/path/to/perl your-perl-script.pl p1 p2 . (перевіряємо відповідь) Якщо ви отримуєте дані за допомогою snmp запиту, то для перевірки слід використовуватиsnmpget, у запиті вкажіть OID, використовуйте також значення community і вкажіть версію snmp, тужніше, що ви визначили в cacti. Наприклад опитування OID of .1.3.6.1.4.blablabla, зі значенням community «very-secret» і версією 2 SNMP опитуваний хост target цебуде виглядати так: snmpget -c very-secret -v 2c target .1.3.6.1.4.blablabla . (перевіряємо відповідь)

Перевіряємо Cacti Poller

Насамперед перевірте наявність poller.php в cron. Ця програма викликає базовий скрипт cmd.php, або spine, альтернативний метод запитів даних, написаний на C. Встановити який поллер використовується вбудований або spine можна в налаштуваннях -Settings,Poller. Якщо ви хочете використовуватиSpine, його слід встановити окремо, в базову установку Cacti він не входить. Тепер слід очистити лог файл /log/cacti.log (ну або перейменуйте його, щоб не було «старого сміття»). Потім змініть налаштування -Settings,Poller Logging Levelвстановивши значенняDEBUG. Тепер вам слід визначити ID вашого запиту та ID вашого хоста. Знайти необхідний ID запиту слід у менюData Sources. ID хоста визначається менюDevices. Тепер слід запустити наш poller вручну і тільки для вибраного запиту даних. Робиться це в такий спосіб.

php -q cmd.php id id

якщо ви використовуєте Spine, то запустити таку перевірку в режимі логування на рівні Debug можна так:

./spine --verbosity=5 id id

В обох випадках ми побачимо відповідь у STDOUT. Цю процедуру можна повторювати, не чекаючи встановленого в Cacti часового інтервалу. Крім того, це дуже зручно - вам не треба шукати помилку в сотнях записів лога, коли у вас вже дуже велика кількість даних моніториться в Cacti.

Перевірка стан MySQL

Здебільшого дана перевірка є зайвою, і її можна на першому етапі дабага проблеми просто опустити, але якщо всі далі описані кроки, показують що все працюєправильно, то слід її все-таки зробити. У дебаг лозі, знайдіть запит MySQL update відповідний досліджуваному хосту. Там буде SQL запит, який слід виконати безпосередньо на сервері mysql або через термінал, або засобами phpmyadmin. Перевірте, що запит сервером mysql виконується коректно.

Перевірка оновлення RRD файлу

Перевірте лог файл, у ньому повинні бути приблизно такі рядки:

rrdtool update filename --template .

Для кожного RRD файлу має бути один рядок у лозі. RRD файли повинні створюватися спочатку самим полером. Якщо він їх не створив, то відповідно не піде і їх оновлення. Якщо їх немає, перевіртеPoller Cacheу менюUtilitiesі перевірте запит до файлу.

Перевірка власника RRD файлів

Якщо rrd файли були створені з правами root-а, а поллер запущений у системи з привілеями cactivoer, то природно поллер не зможе оновити дані в файлі RRD.

cd /var/www/html/cacti/rra ls -l localhost* -rw-r--r-- 1 root root 463824 May 31 12:40 localhost_load_1min_5.rrd -rw-r --r-- 1 cactivor cactivor 155584 Jun 1 17:10 localhost_mem_buffers_3.rrd -rw-r--r-- 1 cactivor cactivor 155584 Jun 1 17:10 localhost_mem_swap_4.rrd <13 r-- 1 cactivor cactivor 155584 Jun 1 17:10 localhost_proc_7.rrd -rw-r--r-- 1 cactivor cactivor 155584 Jun 1 17:10 localhost_users_6.rrd

Виконайте наступну команду для вирішення такої проблеми, якщо вона у вас є:

chown cactivor:cactivor *.rrd

Перевірка меж у RRD файлі

Можливо, причиною ваших проблем є некоректно встановлені межі MAXIMUM і MINIMUM в RRD файлі даних. Виконайте таке:

rrdtool fetch rrd_file AVERAGE

rrdtool inforrd_file

нас цікавлять значення ds[loss].min ds[loss].max (loss - це приватний приклад - у вас буде ім'я ваших даних) і в результаті ви побачите наприклад таку картину:

ds[loss].min = 0.00000000000e+00 ds[loss].max = 1.0000000000ee+02

У цьому прикладі ми маємо MINIMUM = 0 і MAXIMUM = 100. Тепер слід порівняти значення ds.[…].type=ВЕЛИЧИНА, тобто ми переконуємося, що отримана нами ВЕЛИЧИНА перебуває у встановлених значеннях максимуму і мінімуму. Якщо значення не вкладається у встановлені межі, то недостатньо змінити межі вData Template, слід виконати:

rrdtool tune rrd_file --maximum ds-name:new_ds_maximum>

де ds_name ім'я для даних визначене всередині файлу RRD, а new_ds_maximum — нове значення максимуму для даних. (Зміна мінімуму робиться аналогічно). На цьому кроці слід також перевірити значенняstepіheartbeatцікавого для нас RRD файлу.

Перевірка зв'язку RRD файлу та графіка

Нарешті слід перевірити, чи сховища даних використовує графік, який ми намагаємося отримати. Ідемо доGraph Managementі вибираємо наш графік. У даному режимі вибираємоTurn On Graph Debug Modeі в вікніRRDTool Command:бачимо до яких RRD файлів звертається наш графік (на це вказує вираз DEF).

Різне

Ще один дуже просто варіант у властивостях SNMP хоста не вірно вказана версія.

SNMP Version Choose SNMP version for this device.

Наприклад, у моєму випадку був вказаний snmp ver1.

Рішення: Встановлюємо версію 2.

До версії 0.8.6j, poller_output міг "вилізти за межі розуму"). Ео зазвичай відбувалося через параметри налаштування пам'яті в php.ini значення 8 МБ.Змініть це значення принаймні на 64 MB. Щоб перевірити це, виконайте запит sql через mysql cli (або phpmyadmin) select count(*) from poller_output; Для усунення проблеми виконайте: truncate table poller_output; Ця проблема вирішена, починаючи з версії 0.8.7

Установка через RPM

Деякі RPM інсталяції некоректно вбудовують полер у cron - у результаті поллер присутній у cron у двох таблицях. Необхідно зробити перевірку /etc/crontab та таблиці cron користувача cactiuser (ну або як ви там у себе його назвали) та налаштувати cron так щоб виклик йшов одноразово.

Не Nan, але значення 0

По-перше, уважно пишіть свої скрипти. Якщо ви скрипті використовуєте зовнішні команди, то не треба сподіватися на змінну $PATH. Вказуйте нормальний, повний шлях до команди /full/path/to/external/command

По-друге, стежте, щоб скрипт виконувався швидко. Якщо в логах cacti ви бачите "U", це означає, що Cacti втомився чекати виконання скрипту, і в результаті ви зловите NaN. Скрипт повинен виконуватись швидко! Але це вже ваша турбота щодо його оптимізації.

Проблема : CACTID: ERROR: Проблема з MySQL: 'Can't find file: 'poller_output' (errno: 2)'Проблема виникає через загибель таблички poller_output (звичайна справа для myisam табличок при переповнення диска):

select TABLE_NAME,TABLE_TYPE,ENGINE,TABLE_ROWS,DATA_FREE,CHECK_TIME,CHECKSUM,TABLE_COMMENT from information_schema.tables; … poller_output BASE TABLE NULL NULL NULL NULL NULL NULLCan't find file: 'poller_output' (errno: 2)… Вирішується : mysql -uroot -p -e'repair table cacti.poller_output';

mysql -uroot -p -e'truncate table poller_output';