LinuxForum.Fans
Тема

Zabbix UserParameter

Автор: safronowmax 26 сообщений 9437 просмотров
#198762

Подскажите пожалуйста, настраиваю Zabbix, пытаюсь сделать пользовательский параметр в /etc/zabbix/zabbix_agent.conf: UserParameter=mon.filecount,dir /test |wc -w, сама команда без проблем выполняется, права на каталог /test 777. Создаю item и пытаюсь на его основе построить график, но выходных данных не поступает. Если же создать график на основе любого встроенного itema, то все работает. В чем может быть проблема

#198773

zabbix_get'ом тестили локально?
И, таки да, на вход нужно подавать готовое значение, wc -l должен быть в скрипте.

#198776

Denlookh, локально тестил, пишет ZBX_NOTSUPPORTED, а в чем принципиальная разница, как я задаю параметр: значение или в скрипте?

#198875

Разница в том, что userparameter должен получать готовое значение на вход. Попробуйте вшить wc -w в скрипт и посомтрите результат.

#198897

Пробую вместо значения подставить скрипт:
UserParameter=mon.filecount,/etc/zabbix/script/sc.sh

Права на скрипт полные, владелец zabbix

Сам скрипт:
#!bin/bash
dir /test |wc -w

Все равно то же самое, нет данных

#198968

Сам скрипт при этом отрабатывает? Что выдает как результат?
И покажите сам тестирующий запрос ключом.

#198970

Сам скрипт отрабатывает нормально и выдает количество количество файлов в каталоге /test (в данном случае 4)

При добавлении добавлении itema в поле Ключ я просто указывал имя моего параметра - mon.filecount, Тип - Zabbix aгент

#199026

Тогда странно. Когда сталкивался с точно такой же проблемой и начинал копать, то оказывалось, что все дело было в мелочи по невнимательности :)

#199060

Уже всю голову себе сломал, никак не получается :(

#199097

А вы случаем не перепутали /etc/zabbix/zabbix_agent.conf и /etc/zabbix/zabbix_agentd.conf? На демона по идее действует только второй.

#199120

neol, нет, прописывал именно в agentd.conf

#199128

Затестил:

text

# tail -n1 /etc/zabbix/zabbix_agentd.conf 
UserParameter=mon.filecount,dir /var |wc -w
# zabbix_agentd -t mon.filecount
mon.filecount                                 [t|17]
$ zabbix_get -s hostname -k mon.filecount
17

ZBX_NOTSUPPORTED возвращается если агент вообще не знает такого параметра, следовательно у вас или записано не туда, или агент не перечитал конфиг.

#199738

Пытаюсь прикрутить к nginx по этой заметке.

Срипт в UserParameter
да и куда правильно в zabbix_agent.conf или zabbix_agentd.conf - добавил оба.

text
#!/bin/bash

HOST='localhost' SERVER='localhost' CURL=/usr/bin/curl TMPF="/tmp/zabbix_ng_".`/bin/date +%H%M`

$CURL -s "http://${HOST}/nginx_status" > ${TMPF}

active=`cat $TMPF | grep "Active connections" | cut -d':' -f2` accepts=`cat $TMPF | sed -n '3p' | cut -d" " -f2` handled=`cat $TMPF | sed -n '3p' | cut -d" " -f3` requests=`cat $TMPF | sed -n '3p' | cut -d" " -f4` reading=`cat $TMPF | grep "Reading" | cut -d':' -f2 | cut -d' ' -f2` writing=`cat $TMPF | grep "Writing" | cut -d':' -f3 | cut -d' ' -f2` waiting=`cat $TMPF | grep "Waiting" | cut -d':' -f4 | cut -d' ' -f2`

echo "${HOST} nginx.active $active" > ${TMPF} echo "${HOST} nginx.accepts $accepts" >> ${TMPF} echo "${HOST} nginx.handled $handled" >> ${TMPF} echo "${HOST} nginx.requests $requests" >> ${TMPF} echo "${HOST} nginx.reading $reading" >> ${TMPF} echo "${HOST} nginx.writing $writing" >> ${TMPF} echo "${HOST} nginx.waiting $waiting" >> ${TMPF}

/usr/bin/zabbix_sender --zabbix-server ${SERVER} -s ${HOST} \ --port '10051' -i ${TMPF} > /dev/null 2>&1

rm ${TMPF} echo "1" exit 0

Добавил cat ${TMPF} перед rm ${TMPF} для проверки - работает:
[console]/etc/nginx/zabbix_nginx_status.sh
localhost nginx.active 7
localhost nginx.accepts 29
localhost nginx.handled 29
localhost nginx.requests 405
localhost nginx.reading 0
localhost nginx.writing 1
localhost nginx.waiting 6
[/console]
Шаблон этот:
http://rascal.su/uploads/2010/09/Template_NginxServer.xml_.gz

Никак в Zabbix не получу ничиго, никто не пробовал?

#199796

newzenon, долго парился со статусом nginx... Решил тупо и злобно- lynx'ом :)

text

 #!/usr/local/bin/bash
# Script to fetch nginx statuses for tribily monitoring systems
# Author: krish@toonheart.com
# License: GPLv2

# Set Variables BKUP_DATE=`date +%Y%m%d` LOG="/var/log/zabbix/nginx_status.log" HOST="zabbix.novoteka.ru" PORT="80"

# Functions to return nginx stats

function active { elinks -source "http://$HOST:$PORT/nginx_stats" | grep 'Active' | awk '{print $NF}' }

function reading { elinks -source "http://$HOST:$PORT/nginx_stats" | grep 'Reading' | awk '{print $2}' }

function writing { elinks -source "http://$HOST:$PORT/nginx_stats" | grep 'Writing' | awk '{print $4}' }

function waiting { elinks -source "http://$HOST:$PORT/nginx_stats" | grep 'Waiting' | awk '{print $6}' }

function accepts { elinks -source "http://$HOST:$PORT/nginx_stats" | awk NR==3 | awk '{print $1}' }

function handled { elinks -source "http://$HOST:$PORT/nginx_stats" | awk NR==3 | awk '{print $2}' }

function requests { elinks -source "http://$HOST:$PORT/nginx_stats" | awk NR==3 | awk '{print $3}' }

# Run the requested function $1

UserParameter=nginx.accepts,/opt/tribily/bin/nginx_status.sh accepts
UserParameter=nginx.handled,/opt/tribily/bin/nginx_status.sh handled
UserParameter=nginx.requests,/opt/tribily/bin/nginx_status.sh requests
UserParameter=nginx.connections.active,/opt/tribily/bin/nginx_status.sh active
UserParameter=nginx.connections.reading,/opt/tribily/bin/nginx_status.sh reading
UserParameter=nginx.connections.writing,/opt/tribily/bin/nginx_status.sh writing
UserParameter=nginx.connections.waiting,/opt/tribily/bin/nginx_status.sh waiting

#199797

Denlookh, блин ну это как-то не по человечески, у меня же выдает все что надо... попробуй.
Кстати шаблон для nginx у тебя какой? Может в нем что не так?
Может из-за того что пытаюсь как там
UserParameter=nginx.all,~/zabbix/scripts/nginx_status.sh
А надо каждое значение парсить?

#199816

newzenon, если у тебя агент демоном висит- то в agentg.conf, если в inet.d- agent.conf, после добавления, соответсвенно рестартовать.
Это я примеры привел чтобы ключи было видно, так-то можно запись с регулярками типа \[*\] сделать.
К тебе тогда аналогичный вопрос, если заббикс не кажет- zabbix_get'ом тестил?
З.Ы. \\ (искепы) поставил перед скобками потому, что форум определил регулярку заббикса, как тег :)

#199824

Блин что-то с этим скриптом не так:
[console]
# zabbix_get -slocalhost -p10050 -knginx.all
1
[/console]
Вот в каком он сейчас виде:

text
#!/bin/bash

HOST='localhost' SERVER='localhost' CURL=/usr/bin/curl TMPF="/tmp/zabbix_ng_".`/bin/date +%H%M`

$CURL -s "http://${HOST}/nginx_status" > ${TMPF}

active=`cat $TMPF | grep "Active connections" | cut -d':' -f2` accepts=`cat $TMPF | sed -n '3p' | cut -d" " -f2` handled=`cat $TMPF | sed -n '3p' | cut -d" " -f3` requests=`cat $TMPF | sed -n '3p' | cut -d" " -f4` reading=`cat $TMPF | grep "Reading" | cut -d':' -f2 | cut -d' ' -f2` writing=`cat $TMPF | grep "Writing" | cut -d':' -f3 | cut -d' ' -f2` waiting=`cat $TMPF | grep "Waiting" | cut -d':' -f4 | cut -d' ' -f2`

echo "${HOST} nginx.active $active" > ${TMPF} echo "${HOST} nginx.accepts $accepts" >> ${TMPF} echo "${HOST} nginx.handled $handled" >> ${TMPF} echo "${HOST} nginx.requests $requests" >> ${TMPF} echo "${HOST} nginx.reading $reading" >> ${TMPF} echo "${HOST} nginx.writing $writing" >> ${TMPF} echo "${HOST} nginx.waiting $waiting" >> ${TMPF}

/usr/bin/zabbix_sender --zabbix-server ${SERVER} -s ${HOST} \ --port '10051' -i ${TMPF} > /dev/null 2>&1

rm ${TMPF} echo "1" exit 0

Я просто пока не могу разобрать кто/куда/как должен передавать параметры.
zabbix_sender - как я понял должен передать забранное zabbix'у
тогда почему не передает, zabbix_get выдает только echo "1" из скрипта...

#199829

Denlookh, надо в твоем варианте заменить это:

text
# elinks -source  http://localhost/nginx_status
Active connections: 7 
server accepts handled requests
 2370 2370 17083 
Reading: 0 Writing: 1 Waiting: 6 

на вот это:

text
# curl http://localhost/nginx_status
Active connections: 7 
server accepts handled requests
 2371 2371 17089 
Reading: 0 Writing: 1 Waiting: 6 

Данные одинаковые.
Только та и не дошло как передача у тебя идёт.

#199834
Denlookh написал:

UserParameter=nginx.accepts,/opt/tribily/bin/nginx_status.sh accepts
UserParameter=nginx.handled,/opt/tribily/bin/nginx_status.sh handled
UserParameter=nginx.requests,/opt/tribily/bin/nginx_status.sh requests
UserParameter=nginx.connections.active,/opt/tribily/bin/nginx_status.sh active
UserParameter=nginx.connections.reading,/opt/tribily/bin/nginx_status.sh reading
UserParameter=nginx.connections.writing,/opt/tribily/bin/nginx_status.sh writing
UserParameter=nginx.connections.waiting,/opt/tribily/bin/nginx_status.sh waiting

Какой все таки шаблон ты использовал?
Должны быть вроде вот эти переменные:

text

nginx.accepts
nginx.handled
nginx.requests
nginx.active 
nginx.reading
nginx.writing
nginx.waiting

У тебя другие немного:

text
nginx.accepts
nginx.handled
nginx.requests
nginx.connections.active
nginx.connections.reading
nginx.connections.writing
nginx.connections.waiting
Войдите или зарегистрируйтесь, чтобы ответить.