templates-zabbix-itguys/zbx_export_hosts.yaml

933 lines
39 KiB
YAML

zabbix_export:
version: '7.4'
host_groups:
- uuid: 7fd3a689a3874d0b9212a8f11af9f356
name: 'IT GUYS'
- uuid: 5b5d7aa968304e2191657b4d0b0e5a4b
name: LINUX
- uuid: 137f19e6e2dc4219b33553b812627bc2
name: 'VM / MAQUINA VIRTUAL'
hosts:
- host: srvproxy001
name: 'iT Guys - Debian 12 - Pathfinder (Nginx Proxy)'
templates:
- name: Fail2ban
- name: 'Linux via Agente Zabbix'
- name: 'Nginx por Zabbix agent'
groups:
- name: 'IT GUYS'
- name: LINUX
- name: 'VM / MAQUINA VIRTUAL'
interfaces:
- ip: 172.16.254.1
interface_ref: if1
discovery_rules:
- name: 'Insight: Log de Acesso'
type: ZABBIX_ACTIVE
key: nginx.access.logs.list
delay: 1s
enabled_lifetime_type: DISABLE_AFTER
enabled_lifetime: 1h
item_prototypes:
- name: 'Insight: Acesso {#HOST_SITE}'
type: ZABBIX_ACTIVE
key: 'log[/var/log/nginx/{#HOST_SITE}.access.log]'
delay: 1s
history: 91d
value_type: LOG
timeout: 120s
tags:
- tag: Insight
value: 'access log'
- name: 'Insight: Bad-Bot {#HOST_SITE}'
type: ZABBIX_ACTIVE
key: 'log[/var/log/nginx/{#HOST_SITE}.bad-bot.log]'
delay: 1s
value_type: LOG
timeout: 120s
tags:
- tag: Insight
value: bad-bot
- name: 'Insight: Erros {#HOST_SITE}'
type: ZABBIX_ACTIVE
key: 'log[/var/log/nginx/{#HOST_SITE}.error.log]'
delay: 1s
value_type: LOG
timeout: 120s
tags:
- tag: Insight
value: 'error log'
- name: 'Nginx: Cache HITs Flag for {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.cache.hit.flag.[{#HOST_SITE}]'
preprocessing:
- type: REGEX
parameters:
- 'upstream_cache_status":"HIT"'
- '1'
error_handler: CUSTOM_VALUE
error_handler_params: '0'
master_item:
key: 'log[/var/log/nginx/{#HOST_SITE}.access.log]'
tags:
- tag: Insight
value: performance
- name: 'Insight: Cache Hit Ratio (Ultimo 1m) (%) {#HOST_SITE}'
type: CALCULATED
key: 'nginx.cache.hit.ratio.1m.[{#HOST_SITE}]'
value_type: FLOAT
units: '%'
params: '(last(//nginx.cache.hits.1m.[{#HOST_SITE}]) * 100) / (last(//nginx.cache.hits.1m.[{#HOST_SITE}]) + last(//nginx.cache.miss.1m.[{#HOST_SITE}]) + (last(//nginx.cache.hits.1m.[{#HOST_SITE}]) + last(//nginx.cache.miss.1m.[{#HOST_SITE}]) = 0))'
tags:
- tag: Insight
value: carga
- name: 'Insight: Cache HITs no Ultimo minuto {#HOST_SITE}'
type: CALCULATED
key: 'nginx.cache.hits.1m.[{#HOST_SITE}]'
units: hits
params: 'sum(//nginx.cache.hit.flag.[{#HOST_SITE}],1m)'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Insight: Cache HITs nos Ultimos 5 minuto {#HOST_SITE}'
type: CALCULATED
key: 'nginx.cache.hits.5m.[{#HOST_SITE}]'
delay: 4m
units: hits
params: 'sum(//nginx.cache.hit.flag.[{#HOST_SITE}],5m)'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Insight: Cache HITs nos Ultimos 15 minuto {#HOST_SITE}'
type: CALCULATED
key: 'nginx.cache.hits.15m.[{#HOST_SITE}]'
delay: 14m
units: hits
params: 'sum(//nginx.cache.hit.flag.[{#HOST_SITE}],15m)'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Insight: Cache HITs nos Ultimos 24 hrs {#HOST_SITE}'
type: CALCULATED
key: 'nginx.cache.hits.24h.[{#HOST_SITE}]'
delay: 1h
units: hits
params: 'sum(//nginx.cache.hit.flag.[{#HOST_SITE}],24h)'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Insight: Cache MISS no Ultimo minuto {#HOST_SITE}'
type: CALCULATED
key: 'nginx.cache.miss.1m.[{#HOST_SITE}]'
units: miss
params: 'sum(//nginx.cache.miss.flag.[{#HOST_SITE}],1m)'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Insight: Cache MISS no Ultimos 5 minuto {#HOST_SITE}'
type: CALCULATED
key: 'nginx.cache.miss.5m.[{#HOST_SITE}]'
delay: 4m
units: miss
params: 'sum(//nginx.cache.miss.flag.[{#HOST_SITE}],5m)'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Insight: Cache MISS no Ultimos 15 minuto {#HOST_SITE}'
type: CALCULATED
key: 'nginx.cache.miss.15m.[{#HOST_SITE}]'
delay: 14m
units: miss
params: 'sum(//nginx.cache.miss.flag.[{#HOST_SITE}],15m)'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Insight: Cache MISS no Ultimos 24 horas {#HOST_SITE}'
type: CALCULATED
key: 'nginx.cache.miss.24h.[{#HOST_SITE}]'
delay: 1h
units: miss
params: 'sum(//nginx.cache.miss.flag.[{#HOST_SITE}],24h)'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Nginx: Cache MISS Flag for {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.cache.miss.flag.[{#HOST_SITE}]'
preprocessing:
- type: REGEX
parameters:
- 'upstream_cache_status":"MISS"'
- '1'
error_handler: DISCARD_VALUE
master_item:
key: 'log[/var/log/nginx/{#HOST_SITE}.access.log]'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Insight: Cache Miss Ratio (Ultimo 1m) (%) {#HOST_SITE}'
type: CALCULATED
key: 'nginx.cache.miss.ratio.1m.[{#HOST_SITE}]'
value_type: FLOAT
units: '%'
params: '(last(//nginx.cache.miss.1m.[{#HOST_SITE}]) * 100) / (last(//nginx.cache.hits.1m.[{#HOST_SITE}]) + last(//nginx.cache.miss.1m.[{#HOST_SITE}]) + (last(//nginx.cache.hits.1m.[{#HOST_SITE}]) + last(//nginx.cache.miss.1m.[{#HOST_SITE}]) = 0))'
tags:
- tag: Insight
value: carga
- name: 'Insight: {#HOST_SITE} Marcações Usuario Online'
type: DEPENDENT
key: 'nginx.log.user_status.list[{#HOST_SITE}}]'
value_type: TEXT
preprocessing:
- type: JAVASCRIPT
parameters:
- |
// Versão compatível com JavaScript antigo (ES5) - Saída em Texto Puro
// Usamos um objeto para garantir que cada usuário seja único.
var uniqueUsers = {};
var remoteUserRegex = /"remote_user":"([a-zA-Z0-9._-]+)"/g;
var cookieUserRegex = /nc_username=([a-zA-Z0-9._-]+);/g;
var urlUserRegex = /\/remote\.php\/dav\/files\/([a-zA-Z0-9._-]+)\//g;
var lines = value.split('\n');
for (var i = 0; i < lines.length; i++) {
var line = lines[i];
var match;
// Função auxiliar para adicionar usuários ao nosso objeto de unicidade
function findAndAdd(regex) {
while ((match = regex.exec(line)) !== null) {
if (match[1] && match[1].length > 0) {
// Adiciona o usuário completo como uma chave do objeto.
uniqueUsers[match[1]] = true;
}
}
}
findAndAdd(remoteUserRegex);
findAndAdd(cookieUserRegex);
findAndAdd(urlUserRegex);
}
// Pega todas as chaves do objeto para formar o array final de usuários únicos.
var userArray = Object.keys(uniqueUsers);
// --- LINHA ALTERADA ---
// Une todos os elementos do array em uma única string,
// separando cada um com um caractere de quebra de linha ('\n').
return userArray.join('\n');
master_item:
key: 'log[/var/log/nginx/{#HOST_SITE}.access.log]'
tags:
- tag: Insight
value: performance
- name: 'Nginx: Requests Excelentes por minuto {#HOST_SITE}'
type: CALCULATED
key: 'nginx.requests.excellent.count.1m.[{#HOST_SITE}]'
units: reqs/min
params: |
last(//nginx.request_time.count.0-20ms.1m.[{#HOST_SITE}]) +
last(//nginx.request_time.count.21-50ms.1m.[{#HOST_SITE}]) +
last(//nginx.request_time.count.51-100ms.1m.[{#HOST_SITE}]) +
last(//nginx.request_time.count.101-200ms.1m.[{#HOST_SITE}])
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Insight: Requisição nos Ultimos 5 Minuto em {#HOST_SITE}'
type: CALCULATED
key: 'nginx.requests.per_5minute[{#HOST_SITE}]'
delay: 4m
units: requests
params: 'count(//log[/var/log/nginx/{#HOST_SITE}.access.log],5m)'
tags:
- tag: Insight
value: carga
- name: 'Insight: Requisição nos Ultimos 15 Minuto em {#HOST_SITE}'
type: CALCULATED
key: 'nginx.requests.per_15minute[{#HOST_SITE}]'
delay: 14m
units: requests
params: 'count(//log[/var/log/nginx/{#HOST_SITE}.access.log],15m)'
tags:
- tag: Insight
value: carga
- name: 'Insight: Requisição nos Ultimos 24 horas em {#HOST_SITE}'
type: CALCULATED
key: 'nginx.requests.per_24h[{#HOST_SITE}]'
delay: 1h
units: requests
params: 'count(//log[/var/log/nginx/{#HOST_SITE}.access.log],24h)'
tags:
- tag: Insight
value: carga
- name: 'Insight: Requisição no Ultimo 1 Minuto em {#HOST_SITE}'
type: CALCULATED
key: 'nginx.requests.per_minute[{#HOST_SITE}]'
units: requests
params: 'count(//log[/var/log/nginx/{#HOST_SITE}.access.log],1m)'
tags:
- tag: Insight
value: carga
- name: 'Insight: Média de Tempo de Resposta (1m) {#HOST_SITE}'
type: CALCULATED
key: 'nginx.request_time.avg.1m.[{#HOST_SITE}]'
value_type: FLOAT
units: ms
params: 'avg(//nginx.request_time.[{#HOST_SITE}],1m)'
tags:
- tag: Insight
value: carga
- name: 'Insight: Média de Tempo de Resposta (5m) {#HOST_SITE}'
type: CALCULATED
key: 'nginx.request_time.avg.5m.[{#HOST_SITE}]'
delay: 4m
value_type: FLOAT
units: ms
params: 'avg(//nginx.request_time.[{#HOST_SITE}],5m)'
tags:
- tag: Insight
value: carga
- name: 'Insight: Média de Tempo de Resposta (15m) {#HOST_SITE}'
type: CALCULATED
key: 'nginx.request_time.avg.15m.[{#HOST_SITE}]'
value_type: FLOAT
units: ms
params: 'avg(//nginx.request_time.[{#HOST_SITE}],15m)'
tags:
- tag: Insight
value: carga
- name: 'Nginx: RTime Flag (0-20ms) {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.request_time.flag.0-20ms.[{#HOST_SITE}]'
preprocessing:
- type: JAVASCRIPT
parameters:
- |
try {
// O valor chega em segundos (ex: 0.015), convertemos para milissegundos.
var value_ms = parseFloat(value) * 1000;
// Verifica se o valor está na faixa de 0 a 20ms.
if (value_ms >= 0 && value_ms <= 20) {
return 1;
}
// Se não estiver na faixa, retorna null para o Zabbix descartar.
return 0;
} catch (e) {
// Se der qualquer erro, também descarta.
return 0;
}
master_item:
key: 'nginx.request_time.[{#HOST_SITE}]'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Nginx: RTime Flag (21-50ms) {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.request_time.flag.21-50ms.[{#HOST_SITE}]'
preprocessing:
- type: JAVASCRIPT
parameters:
- |
try {
// O valor chega em segundos (ex: 0.015), convertemos para milissegundos.
var value_ms = parseFloat(value) * 1000;
// Verifica se o valor está na faixa de 0 a 20ms.
if (value_ms >= 21 && value_ms <= 50) {
return 1;
}
// Se não estiver na faixa, retorna null para o Zabbix descartar.
return 0;
} catch (e) {
// Se der qualquer erro, também descarta.
return 0;
}
master_item:
key: 'nginx.request_time.[{#HOST_SITE}]'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Nginx: RTime Flag (51-100ms) {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.request_time.flag.51-100ms.[{#HOST_SITE}]'
preprocessing:
- type: JAVASCRIPT
parameters:
- |
try {
// O valor chega em segundos (ex: 0.015), convertemos para milissegundos.
var value_ms = parseFloat(value) * 1000;
// Verifica se o valor está na faixa de 0 a 20ms.
if (value_ms >= 51 && value_ms <= 100) {
return 1;
}
// Se não estiver na faixa, retorna null para o Zabbix descartar.
return 0;
} catch (e) {
// Se der qualquer erro, também descarta.
return 0;
}
master_item:
key: 'nginx.request_time.[{#HOST_SITE}]'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Nginx: RTime Flag (201-300ms) {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.request_time.flag.201-300ms.[{#HOST_SITE}]'
preprocessing:
- type: JAVASCRIPT
parameters:
- |
try {
// O valor chega em segundos (ex: 0.015), convertemos para milissegundos.
var value_ms = parseFloat(value) * 1000;
// Verifica se o valor está na faixa de 0 a 20ms.
if (value_ms >= 201 && value_ms <= 300) {
return 1;
}
// Se não estiver na faixa, retorna null para o Zabbix descartar.
return 0;
} catch (e) {
// Se der qualquer erro, também descarta.
return 0;
}
master_item:
key: 'nginx.request_time.[{#HOST_SITE}]'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Nginx: RTime Flag (301-400ms) {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.request_time.flag.301-400ms.[{#HOST_SITE}]'
preprocessing:
- type: JAVASCRIPT
parameters:
- |
try {
// O valor chega em segundos (ex: 0.015), convertemos para milissegundos.
var value_ms = parseFloat(value) * 1000;
// Verifica se o valor está na faixa de 0 a 20ms.
if (value_ms >= 301 && value_ms <= 400) {
return 1;
}
// Se não estiver na faixa, retorna null para o Zabbix descartar.
return 0;
} catch (e) {
// Se der qualquer erro, também descarta.
return 0;
}
master_item:
key: 'nginx.request_time.[{#HOST_SITE}]'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Nginx: RTime Flag (401-500ms) {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.request_time.flag.401-500ms.[{#HOST_SITE}]'
preprocessing:
- type: JAVASCRIPT
parameters:
- |
try {
// O valor chega em segundos (ex: 0.015), convertemos para milissegundos.
var value_ms = parseFloat(value) * 1000;
// Verifica se o valor está na faixa de 0 a 20ms.
if (value_ms >= 401 && value_ms <= 500) {
return 1;
}
// Se não estiver na faixa, retorna null para o Zabbix descartar.
return 0;
} catch (e) {
// Se der qualquer erro, também descarta.
return 0;
}
master_item:
key: 'nginx.request_time.[{#HOST_SITE}]'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Nginx: RTime Flag (501-600ms) {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.request_time.flag.501-600ms.[{#HOST_SITE}]'
preprocessing:
- type: JAVASCRIPT
parameters:
- |
try {
// O valor chega em segundos (ex: 0.015), convertemos para milissegundos.
var value_ms = parseFloat(value) * 1000;
// Verifica se o valor está na faixa de 0 a 20ms.
if (value_ms >= 501 && value_ms <= 600) {
return 1;
}
// Se não estiver na faixa, retorna null para o Zabbix descartar.
return 0;
} catch (e) {
// Se der qualquer erro, também descarta.
return 0;
}
master_item:
key: 'nginx.request_time.[{#HOST_SITE}]'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Nginx: RTime Flag (601-700ms) {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.request_time.flag.601-700ms.[{#HOST_SITE}]'
preprocessing:
- type: JAVASCRIPT
parameters:
- |
try {
// O valor chega em segundos (ex: 0.015), convertemos para milissegundos.
var value_ms = parseFloat(value) * 1000;
// Verifica se o valor está na faixa de 0 a 20ms.
if (value_ms >= 601 && value_ms <= 700) {
return 1;
}
// Se não estiver na faixa, retorna null para o Zabbix descartar.
return 0;
} catch (e) {
// Se der qualquer erro, também descarta.
return 0;
}
master_item:
key: 'nginx.request_time.[{#HOST_SITE}]'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Nginx: RTime Flag (701-800ms) {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.request_time.flag.701-800ms.[{#HOST_SITE}]'
preprocessing:
- type: JAVASCRIPT
parameters:
- |
try {
// O valor chega em segundos (ex: 0.015), convertemos para milissegundos.
var value_ms = parseFloat(value) * 1000;
// Verifica se o valor está na faixa de 0 a 20ms.
if (value_ms >= 701 && value_ms <= 800) {
return 1;
}
// Se não estiver na faixa, retorna null para o Zabbix descartar.
return 0;
} catch (e) {
// Se der qualquer erro, também descarta.
return 0;
}
master_item:
key: 'nginx.request_time.[{#HOST_SITE}]'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Nginx: RTime Flag (801-900ms) {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.request_time.flag.801-900ms.[{#HOST_SITE}]'
preprocessing:
- type: JAVASCRIPT
parameters:
- |
try {
// O valor chega em segundos (ex: 0.015), convertemos para milissegundos.
var value_ms = parseFloat(value) * 1000;
// Verifica se o valor está na faixa de 0 a 20ms.
if (value_ms >= 801 && value_ms <= 900) {
return 1;
}
// Se não estiver na faixa, retorna null para o Zabbix descartar.
return 0;
} catch (e) {
// Se der qualquer erro, também descarta.
return 0;
}
master_item:
key: 'nginx.request_time.[{#HOST_SITE}]'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Nginx: RTime Flag (1001-2000ms) {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.request_time.flag.1001-2000ms.[{#HOST_SITE}]'
preprocessing:
- type: JAVASCRIPT
parameters:
- |
try {
// O valor chega em segundos (ex: 0.015), convertemos para milissegundos.
var value_ms = parseFloat(value) * 1000;
// Verifica se o valor está na faixa de 0 a 20ms.
if (value_ms >= 1001 && value_ms <= 2000) {
return 1;
}
// Se não estiver na faixa, retorna null para o Zabbix descartar.
return 0;
} catch (e) {
// Se der qualquer erro, também descarta.
return 0;
}
master_item:
key: 'nginx.request_time.[{#HOST_SITE}]'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Nginx: RTime Flag (>3001ms) {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.request_time.flag.3001ms.[{#HOST_SITE}]'
preprocessing:
- type: JAVASCRIPT
parameters:
- |
try {
// O valor chega em segundos (ex: 0.015), convertemos para milissegundos.
var value_ms = parseFloat(value) * 1000;
// Verifica se o valor está na faixa de 0 a 20ms.
if (value_ms >= 3001) {
return 1;
}
// Se não estiver na faixa, retorna null para o Zabbix descartar.
return 0;
} catch (e) {
// Se der qualquer erro, também descarta.
return 0;
}
master_item:
key: 'nginx.request_time.[{#HOST_SITE}]'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
- name: 'Insight: Tempo de Resposta Total {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.request_time.[{#HOST_SITE}]'
value_type: FLOAT
units: s
preprocessing:
- type: JAVASCRIPT
parameters:
- |
try {
// A variável 'value' contém a linha de log completa.
// A regex procura por "request_time": e captura o número que vem depois.
var regex = /"request_time":(\d+\.?\d*)/;
var match = value.match(regex);
// Se encontrar, match[1] conterá apenas o número (ex: "0.282").
if (match && match[1]) {
return match[1];
}
// Se não encontrar, descarta o valor.
return null;
} catch (e) {
// Se houver qualquer erro, também descarta.
return null;
}
master_item:
key: 'log[/var/log/nginx/{#HOST_SITE}.access.log]'
tags:
- tag: Insight
value: 'access log'
- name: 'Nginx: URI da Requisição {#HOST_SITE}'
type: DEPENDENT
key: 'nginx.request_uri.[{#HOST_SITE}]'
value_type: TEXT
preprocessing:
- type: JAVASCRIPT
parameters:
- |
try {
var regex = /"request_uri":"([^"]+)"/;
var match = value.match(regex);
if (match && match[1]) {
return match[1];
}
return null;
} catch (e) {
return null;
}
master_item:
key: 'log[/var/log/nginx/{#HOST_SITE}.access.log]'
tags:
- tag: Insight
value: cache
- tag: Insight
value: performance
graph_prototypes:
- name: 'Insight: Cache HITS {#HOST_SITE}'
yaxismax: '0'
percent_right: '20'
ymin_type_1: FIXED
graph_items:
- color: 199C0D
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.cache.hits.5m.[{#HOST_SITE}]'
- sortorder: '1'
color: F63100
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.cache.hits.15m.[{#HOST_SITE}]'
- sortorder: '2'
color: 2774A4
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.cache.hits.24h.[{#HOST_SITE}]'
- sortorder: '3'
color: F7941D
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.cache.hits.1m.[{#HOST_SITE}]'
- name: 'Insight: Cache HIT vs MISS {#HOST_SITE}'
show_work_period: 'NO'
show_triggers: 'NO'
type: PIE
graph_items:
- color: F63100
item:
host: srvproxy001
key: 'nginx.cache.miss.ratio.1m.[{#HOST_SITE}]'
- sortorder: '1'
color: 199C0D
item:
host: srvproxy001
key: 'nginx.cache.hit.ratio.1m.[{#HOST_SITE}]'
- name: 'Insight: Cache MISS {#HOST_SITE}'
yaxismax: '0'
percent_right: '20'
ymin_type_1: FIXED
graph_items:
- color: 199C0D
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.cache.miss.1m.[{#HOST_SITE}]'
- sortorder: '1'
color: F63100
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.cache.miss.5m.[{#HOST_SITE}]'
- sortorder: '2'
color: 2774A4
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.cache.miss.15m.[{#HOST_SITE}]'
- sortorder: '3'
color: F7941D
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.cache.miss.24h.[{#HOST_SITE}]'
- name: 'Insight: Requisições {#HOST_SITE}'
yaxismax: '0'
ymin_type_1: FIXED
graph_items:
- color: F63100
yaxisside: RIGHT
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.requests.per_minute[{#HOST_SITE}]'
- sortorder: '1'
color: 199C0D
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.requests.per_5minute[{#HOST_SITE}]'
- sortorder: '2'
color: 2774A4
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.requests.per_15minute[{#HOST_SITE}]'
- sortorder: '3'
color: F7941D
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.requests.per_24h[{#HOST_SITE}]'
- name: 'Insight: Saúde do Site {#HOST_SITE}'
show_work_period: 'NO'
graph_items:
- color: 199C0D
calc_fnc: ALL
item:
host: srvproxy001
key: 'net.tcp.service[http,"{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PORT}"]'
- sortorder: '1'
color: F63100
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.cache.hit.ratio.1m.[{#HOST_SITE}]'
- sortorder: '2'
color: F7941D
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.request_time.avg.1m.[{#HOST_SITE}]'
- name: 'Insight: Tempo de Resposta vs Requisições {#HOST_SITE}'
ymin_type_1: FIXED
graph_items:
- sortorder: '1'
color: F63100
yaxisside: RIGHT
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.requests.per_minute[{#HOST_SITE}]'
- sortorder: '2'
drawtype: FILLED_REGION
color: 199C0D
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.request_time.[{#HOST_SITE}]'
- name: 'Insight: Tempos de Resposta {#HOST_SITE}'
percent_right: '20'
ymin_type_1: FIXED
graph_items:
- color: 199C0D
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.request_time.avg.1m.[{#HOST_SITE}]'
- sortorder: '1'
color: F63100
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.request_time.avg.5m.[{#HOST_SITE}]'
- sortorder: '2'
color: 2774A4
calc_fnc: ALL
item:
host: srvproxy001
key: 'nginx.request_time.avg.15m.[{#HOST_SITE}]'
preprocessing:
- type: JAVASCRIPT
parameters:
- |
// A variável 'value' é a string completa do UserParameter, contendo caminhos
// separados por vírgula, espaço e/ou quebra de linha.
// A Regex /[\s,]+/ divide a string em:
// - Vírgulas (,)
// - Espaços (incluindo múltiplos)
// - Quebras de linha (\n, \r)
// O filter(Boolean) remove quaisquer entradas vazias que o split possa gerar.
var full_paths = value.trim().split(/[\s,]+/).filter(Boolean);
var lld_data = [];
// Regex para extrair o nome do site:
// ^ -> Início do item (após o split)
// (.+) -> Captura o nome do site (o que for que esteja lá)
var regex = /^\/var\/log\/nginx\/(.+)\.access\.log$/;
// Itera sobre todos os caminhos.
for (var i = 0; i < full_paths.length; i++) {
var path = full_paths[i];
// Aplica a regex em cada item.
var match = path.match(regex);
// match[1] contém o nome do site capturado em (.+).
if (match && match[1]) {
lld_data.push({
"{#HOST_SITE}": match[1]
});
}
}
// Retorna o JSON LLD final.
return JSON.stringify({ "data": lld_data });
macros:
- macro: '{$NGINX.STUB_STATUS.HOST}'
value: 172.16.254.1
description: 'O hostname ou endereço IP do host Nginx ou do contêiner Nginx com `stub_status`.'
- macro: '{$NGINX.STUB_STATUS.PATH}'
value: nginx_status
description: 'The path of the `Nginx stub_status` page.'
- macro: '{$NGINX.STUB_STATUS.PORT}'
value: '8080'
description: 'The port of the `Nginx stub_status` host or container.'
inventory_mode: AUTOMATIC
inventory:
name: srvproxy001
os: 'Linux version 6.1.0-39-amd64 (debian-kernel@lists.debian.org) (gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0, GNU ld (GNU Binutils fo'