1 Збирни прорачуни
Преглед
Збирни прорачуни су тип израчуната ставка који омогућава прикупљање информација из неколико ставки од стране Zabbix сервера и затим израчунавање агрегата, у зависности од коришћене агрегатне функције.
Агрегатни прорачуни не захтевају никакве агент који ради на домаћину који се надгледа.
Синтакса
Да бисте преузели агрегате, користите једну од подржаних агрегираних функција: avg, max, min, sum, итд.
Затим додајте функцију foreach као једини параметар и њен филтер ставки да бисте изабрали потребне ставке:
aggregate_function(function_foreach(/host/key?[group="host group"],timeperiod))
Функција foreach (нпр. avg_foreach, count_foreach, итд.) враћа једну агрегатну вредност за сваку изабрану ставку.
Ставке се бирају помоћу филтера ставки (/host/key?[group="host group"]), из историје ставки. За више детаља, погледајте
foreach functions.
Ако неке од ставки немају податке за тражени период, оне се игноришу у прорачуну. Ако ниједна ставка нема податке, функција ће вратити грешку.
Алтернативно, можете навести неколико ставки као параметре за агрегацију:
aggregate_function(function(/host/key,parameter),function(/host2/key2,parameter),...)
Имајте на уму да function овде мора бити функција историје/тренда.
Ако агрегат резултира вредношћу са покретним бројем, биће скраћен на цео број ако је тип информација агрегиране ставке Нумерички (без знака).
Кориснички макрои и макрои за откривање ниског нивоа су подржани у:
- параметрима кључа ставке
- параметрима функције
- условима филтера (назив групе хоста и назив ознаке)
- константама израза
Агрегирани прорачун може постати неподржан ако:
- ниједна од референцираних ставки није пронађена (што се може десити ако је кључ ставке нетачан, ниједна од ставки не постоји или све укључене групе су нетачне)
- нема података за израчунавање функције
Примери употребе
Примери кључева за агрегатне прорачуне.
Пример 1
Укупан простор на диску групе хостова 'MySQL Servers'.
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"]))
Пример 2
Збир последњих вредности свих ставки које одговарају net.if.in[*] на домаћину.
sum(last_foreach(/host/net.if.in[*]))
Пример 3
Просечно оптерећење процесора групе хостова 'MySQL Servers'.
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"]))
Пример 4
5-минутни просек броја упита у секунди за групу домаћина 'MySQL Servers'.
avg(avg_foreach(/*/mysql.qps?[group="MySQL Servers"],5m))
Пример 5
Просечно оптерећење процесора на свим хостовима у више група хостова које имају одређене ознаке.
avg(last_foreach(/*/system.cpu.load?[(group="Servers A" or group="Servers B" or group="Servers C") and (tag="Service:" or tag="Importance:High")]))
Пример 6
Израчунавање се користи за збир вредности последње ставке целе групе домаћина.
sum(last_foreach(//net.if.out[eth0,bytes]?[group="video"])) / sum(last_foreach(//nginx_stat.sh[active]?[group="video"]))
Пример 7
Укупан број неподржаних ставки у групи домаћина 'Zabbix сервери'.
sum(last_foreach(/*/zabbix[host,,items_unsupported]?[group="Zabbix servers"]))
Примери исправне/нетачне синтаксе
Изрази (укључујући позиве функција) не могу се користити као параметри историје, тренда или foreach function. Међутим, саме те функције могу се користити у другим (неисторијским) параметрима функција.
| Expression | Example |
|---|---|
| Valid | avg(last(/host/key1),last(/host/key2)*10,last(/host/key1)*100)`max(avg(avg_foreach |
| (//system.cpu.load?[group="Servers A"],5m)),avg(avg_foreach(//system.cpu.load?[group="Servers B"],5m)),avg(avg_foreach(/*/system.cpu.load?[group="Servers C"],5m)))` | |
| Invalid | sum(/host/key,10+2)sum(/host/key, avg(10,2))sum(/host/key,last(/host/key2)) |
Имајте на уму да у изразу као што је:
sum(sum_foreach(//resptime[],5m))/sum(count_foreach(//resptime[],5m))
не може се гарантовати да ће оба дела једначине увек имати исти скуп вредности. Док се један део израза израчунава, може стићи нова вредност за тражени период, а тада ће други део израза имати другачији скуп вредности.