Подскажите пожалуйста, настраиваю Zabbix, пытаюсь сделать пользовательский параметр в /etc/zabbix/zabbix_agent.conf: UserParameter=mon.filecount,dir /test |wc -w, сама команда без проблем выполняется, права на каталог /test 777. Создаю item и пытаюсь на его основе построить график, но выходных данных не поступает. Если же создать график на основе любого встроенного itema, то все работает. В чем может быть проблема
Zabbix UserParameter
zabbix_get'ом тестили локально?
И, таки да, на вход нужно подавать готовое значение, wc -l должен быть в скрипте.
Denlookh, локально тестил, пишет ZBX_NOTSUPPORTED, а в чем принципиальная разница, как я задаю параметр: значение или в скрипте?
Разница в том, что userparameter должен получать готовое значение на вход. Попробуйте вшить wc -w в скрипт и посомтрите результат.
Пробую вместо значения подставить скрипт:
UserParameter=mon.filecount,/etc/zabbix/script/sc.sh
Права на скрипт полные, владелец zabbix
Сам скрипт:
#!bin/bash
dir /test |wc -w
Все равно то же самое, нет данных
Сам скрипт при этом отрабатывает? Что выдает как результат?
И покажите сам тестирующий запрос ключом.
Сам скрипт отрабатывает нормально и выдает количество количество файлов в каталоге /test (в данном случае 4)
При добавлении добавлении itema в поле Ключ я просто указывал имя моего параметра - mon.filecount, Тип - Zabbix aгент
Тогда странно. Когда сталкивался с точно такой же проблемой и начинал копать, то оказывалось, что все дело было в мелочи по невнимательности :)
Уже всю голову себе сломал, никак не получается :(
А вы случаем не перепутали /etc/zabbix/zabbix_agent.conf и /etc/zabbix/zabbix_agentd.conf? На демона по идее действует только второй.
neol, нет, прописывал именно в agentd.conf
Затестил:
# 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 возвращается если агент вообще не знает такого параметра, следовательно у вас или записано не туда, или агент не перечитал конфиг.
Пытаюсь прикрутить к nginx по этой заметке.
Срипт в UserParameter
да и куда правильно в zabbix_agent.conf или zabbix_agentd.conf - добавил оба.
#!/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 не получу ничиго, никто не пробовал?
newzenon, долго парился со статусом nginx... Решил тупо и злобно- lynx'ом :)
#!/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
Denlookh, блин ну это как-то не по человечески, у меня же выдает все что надо... попробуй.
Кстати шаблон для nginx у тебя какой? Может в нем что не так?
Может из-за того что пытаюсь как там
UserParameter=nginx.all,~/zabbix/scripts/nginx_status.sh
А надо каждое значение парсить?
Попробую это http://wiki.enchtex.info/howto/zabbix/nginx_monitoring
Есть официальное https://bitbucket.org/rvs/ztc только мануал не могу найти.
newzenon, если у тебя агент демоном висит- то в agentg.conf, если в inet.d- agent.conf, после добавления, соответсвенно рестартовать.
Это я примеры привел чтобы ключи было видно, так-то можно запись с регулярками типа \[*\] сделать.
К тебе тогда аналогичный вопрос, если заббикс не кажет- zabbix_get'ом тестил?
З.Ы. \\ (искепы) поставил перед скобками потому, что форум определил регулярку заббикса, как тег :)
Блин что-то с этим скриптом не так:
[console]
# zabbix_get -slocalhost -p10050 -knginx.all
1
[/console]
Вот в каком он сейчас виде:
#!/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" из скрипта...
Denlookh, надо в твоем варианте заменить это:
# elinks -source http://localhost/nginx_status
Active connections: 7
server accepts handled requests
2370 2370 17083
Reading: 0 Writing: 1 Waiting: 6
на вот это:
# curl http://localhost/nginx_status
Active connections: 7
server accepts handled requests
2371 2371 17089
Reading: 0 Writing: 1 Waiting: 6
Данные одинаковые.
Только та и не дошло как передача у тебя идёт.
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
Какой все таки шаблон ты использовал?
Должны быть вроде вот эти переменные:
nginx.accepts
nginx.handled
nginx.requests
nginx.active
nginx.reading
nginx.writing
nginx.waitingУ тебя другие немного:
nginx.accepts
nginx.handled
nginx.requests
nginx.connections.active
nginx.connections.reading
nginx.connections.writing
nginx.connections.waiting