Макросы в Zabbix могут быть удобны для умного использования. Известно что макросы в Zabbix определяются на нескольких уровнях, более локальный перекрывает предыдущий по ниспадающей:
глобальный макрос
{$PROC_NUM} = 200
Его перекрывает макрос уровня шаблона
{$PROC_NUM} = 300
А его перекрывает макрос уровня узла сети
{$PROC_NUM} = 500
Например, можно использовать {$USER_MACROS} в качестве порогового значения для таких элементов данных как загрузка CPU, размер свободной памяти, количества процессов и т.д.
{Template OS: system.cpu.load[percpu,avg1].avg(5m)}>{$CPU_LOAD}
{Template OS: vm.memory.size[available].last(0)}<{$MEMORY_FREE}
{Template OS: proc.num[].avg(5m)}>{$PROC_NUM}
Где макрос уровня шаблона:
{$PROC_NUM} = 300
А макрос уровня узла сети разделить по нагруженности:
- обычный узел сети
{$PROC_NUM} = 300
- сильно нагруженный узел сети
{$PROC_NUM} = 500
- менее загруженный узел сети
{$PROC_NUM} = 200
Используйте{$USER_MACROS} как номер порта для tcp/udp-соединений, ssh, http, https и других служб:
{Template OS: net.tcp.service[ssh,{$SSH_PORT}]
{Template OS: net.tcp.service[http,{$HTTP_PORT}]
{Template OS: net.tcp.service[https,{$HTTPS_PORT}]
Где макрос уровня шаблона:
{$HTTP_PORT} = 80
{$SSH_PORT} = 22
А макрос уровня узла сети разделить по номеру порта:
- обычный узел сети
{$HTTP_PORT} = 80
- нестандартный узел сети 1
{$HTTP_PORT} = 8080
- нестандартный узел сети 2
{$HTTP_PORT} = 8000
Другой вариант - пишем правило LLD SNMP для printer-а:
Discovery rule для катриджа:
Key - suppliesDiscovery
SNMP OID - discovery[{#SNMPVALUE},.1.3.6.1.2.1.43.11.1.1.6]
Тогда рrototype item для уровня наполнения катриджа:
Key - suppliesDiscovery[{#SNMPVALUE}]
SNMP OID - .1.3.6.1.2.1.43.11.1.1.9.{#SNMPINDEX}
Третий вариант - правило LLD check_remote_port для проверки открытого порта с помощью внешнего shell-скрипта:
check_remote_port_lld.sh:
#/bin/bash
IFS=':,' read -r -a array <<< "$1"
idx=0
echo {\"data\":[
while [ -n "${array[$idx]}" ]; do
echo -n \{\"{#R_IP}\":\""${array[$idx]}"\",\"{#R_PORT}\":""${array[$idx+1]}"\"\}
let idx=$idx+2
[ -n "${array[idx]}" ] && echo "," || echo
done
echo ]}
exit
А в само Discovery rule для проверки remote port пишем:
Type - внешнняя проверка
Key - check_remote_port_lld.sh[{$LLD_REMOTE_CHECK}]
Macros: {$LLD_REMOTE_CHECK} = 192.168.1.1:8080,192.168.1.1:22
И последнее - для оптимизации накопления данных используйте троттлинг. Т.е. обрабатывать значение только в случае его изменения. Для этого в предобработку правила обнаружения указываем "Discard unchanged with heartbeat - 24h".
Отбрасывать не изменившееся: отбросить зачение, если оно не изменилось. Отбрасывать не изменившееся с периодическим контролем: отбросить значение, если оно не изменилось в течние определенного периода (в секундах).
No comments:
Post a Comment
А что вы думаете по этому поводу?