dilan1998
(usa Debian)
Enviado em 16/01/2022 - 16:48h
Opa, cheguei a uma gambiarra, mas pode ser útil a colegas que usem a ferramenta de monitoração, me esbarrei em ter que monitorar uso de CPU de processos do MySQL, porém haviam parâmetros, aí algumas coisas não fecharam. Vou compartilhar a solução que encontrei!
########## Comentários ##########
O resultado do script é o PercentProcessorTime (busca baseada no PID do processo), esse valor pode ser dividido pelo número de cpus resultando na utilização de cpu do processo com paramâmetro.
O external Script segue a seguinte sintaxe no frontend Zabbix
win.proc.param[IP,PORTA,PROCESSO,PARÂMETRO]
O resultado do script é o PercentProcessorTime (busca baseada no PID do processo), esse valor pode ser dividido pelo número de cpus resultando na utilização de cpu do processo com paramâmetro.Verifique se o host contem a chave system.cpu.num, se não pode criar a chave para retornar o numero de CPUS, intervalo de coleta de 24 á 12 horas pode ser interessante, talvez o item ficará como não suportado, no entanto você pode tentar executar a chave com "Execute Now" e já obter o valor assim o item calculado retorna suportado novamente.
O external Script segue a seguinte sintaxe no frontend Zabbix
win.proc.param[IP,PORTA,PROCESSO,PARÂMETRO]
No meu caso foi criado o item a nivel de host, com outro item calculado baseado na chave system.cpu.num
Exemplo :
Type = Calculated
Fórmula = last("win.proc.param[IP,PORTA,PROCESSO,PARAMETRO]") / last("system.cpu.num")
Type of information = Numeric (float)
Units = %
a nivel de host, com outro item calculado baseado na chave system.cpu.num
Exemplo :
Type = Calculated
Fórmula = last("win.proc.param[IP,PORTA,PROCESSO,PARAMETRO]") / last("system.cpu.num")
Type of information = Numeric (float)
Units = %
########## SCRIPT ##########
#!/usr/bin/env bash
####script criado em /usr/lib/zabbix/externalscripts/(NAME= win.proc.param)
#nome da chave = win.proc.param
IPHOST=$1
PORTNUM=$2
PROC=$3
PARAM=$4
GETPID="$(zabbix_get -s ${IPHOST} -p ${PORTNUM} -k wmi.getall["root\cimv2,select * from Win32_Process where name= '${PROC}' and CommandLine like '%${PARAM}%'"] | jq | awk '/"ProcessId":/ {print $2}' | sed 's/,//g')"
GETCPUTIMEPID="$(zabbix_get -s ${IPHOST} -p ${PORTNUM} -k wmi.getall["root\cimv2,SELECT * FROM Win32_PerfFormattedData_PerfProc_Process where IDProcess='${GETPID}'"] | jq | awk '/"PercentProcessorTime":/ {print $2}' | sed 's/[[:punct:]]//g')"
echo ${GETCPUTIMEPID}