templates-zabbix-itguys/template_nginx_custom_extra...

750 lines
30 KiB
YAML

zabbix_export:
version: '7.4'
template_groups:
- uuid: 7df96b18c230490a9a0a9e2307226338
name: Templates/Applications
templates:
- uuid: cb591855-1b11-4789-9cdd-9f9aaeea5edb
template: Template Nginx Custom Insight
name: Template Nginx Custom Insight
description: Template extracted from host configuration containing custom Nginx
Insight rules.
groups:
- name: Templates/Applications
items: []
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\n\
\ // Usamos um objeto para garantir que cada usuário seja único.\n\
\ var uniqueUsers = {};\n\n var remoteUserRegex = /\"remote_user\"\
:\"([a-zA-Z0-9._-]+)\"/g;\n var cookieUserRegex = /nc_username=([a-zA-Z0-9._-]+);/g;\n\
\ var urlUserRegex = /\\/remote\\.php\\/dav\\/files\\/([a-zA-Z0-9._-]+)\\\
//g;\n\n var lines = value.split('\\n');\n\n for (var i = 0; i <\
\ lines.length; i++) {\n var line = lines[i];\n var match;\n\
\n // Função auxiliar para adicionar usuários ao nosso objeto de\
\ unicidade\n function findAndAdd(regex) {\n while ((match\
\ = regex.exec(line)) !== null) {\n if (match[1] && match[1].length\
\ > 0) {\n // Adiciona o usuário completo como uma\
\ chave do objeto.\n uniqueUsers[match[1]] = true;\n\
\ }\n }\n }\n \n findAndAdd(remoteUserRegex);\n\
\ findAndAdd(cookieUserRegex);\n findAndAdd(urlUserRegex);\n\
\ }\n\n // Pega todas as chaves do objeto para formar o array final\
\ de usuários únicos.\n var userArray = Object.keys(uniqueUsers);\n\
\n // --- LINHA ALTERADA ---\n // Une todos os elementos do array\
\ em uma única string,\n // separando cada um com um caractere de quebra\
\ de linha ('\\n').\n return userArray.join('\\n');\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}]) + \nlast(//nginx.request_time.count.21-50ms.1m.[{#HOST_SITE}])\
\ + \nlast(//nginx.request_time.count.51-100ms.1m.[{#HOST_SITE}]) + \nlast(//nginx.request_time.count.101-200ms.1m.[{#HOST_SITE}])\n"
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 {\n // O valor chega em segundos (ex: 0.015), convertemos para\
\ milissegundos.\n var value_ms = parseFloat(value) * 1000;\n\n \
\ // Verifica se o valor está na faixa de 0 a 20ms.\n if (value_ms\
\ >= 0 && value_ms <= 20) {\n return 1;\n }\n\n // Se não\
\ estiver na faixa, retorna null para o Zabbix descartar.\n return\
\ 0;\n} catch (e) {\n // Se der qualquer erro, também descarta.\n \
\ return 0;\n}\n"
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 {\n // O valor chega em segundos (ex: 0.015), convertemos para\
\ milissegundos.\n var value_ms = parseFloat(value) * 1000;\n\n \
\ // Verifica se o valor está na faixa de 0 a 20ms.\n if (value_ms\
\ >= 21 && value_ms <= 50) {\n return 1;\n }\n\n // Se não\
\ estiver na faixa, retorna null para o Zabbix descartar.\n return\
\ 0;\n} catch (e) {\n // Se der qualquer erro, também descarta.\n \
\ return 0;\n}\n"
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 {\n // O valor chega em segundos (ex: 0.015), convertemos para\
\ milissegundos.\n var value_ms = parseFloat(value) * 1000;\n\n \
\ // Verifica se o valor está na faixa de 0 a 20ms.\n if (value_ms\
\ >= 51 && value_ms <= 100) {\n return 1;\n }\n\n // Se não\
\ estiver na faixa, retorna null para o Zabbix descartar.\n return\
\ 0;\n} catch (e) {\n // Se der qualquer erro, também descarta.\n \
\ return 0;\n}\n"
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 {\n // O valor chega em segundos (ex: 0.015), convertemos para\
\ milissegundos.\n var value_ms = parseFloat(value) * 1000;\n\n \
\ // Verifica se o valor está na faixa de 0 a 20ms.\n if (value_ms\
\ >= 201 && value_ms <= 300) {\n return 1;\n }\n\n // Se\
\ não estiver na faixa, retorna null para o Zabbix descartar.\n return\
\ 0;\n} catch (e) {\n // Se der qualquer erro, também descarta.\n \
\ return 0;\n}\n"
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 {\n // O valor chega em segundos (ex: 0.015), convertemos para\
\ milissegundos.\n var value_ms = parseFloat(value) * 1000;\n\n \
\ // Verifica se o valor está na faixa de 0 a 20ms.\n if (value_ms\
\ >= 301 && value_ms <= 400) {\n return 1;\n }\n\n // Se\
\ não estiver na faixa, retorna null para o Zabbix descartar.\n return\
\ 0;\n} catch (e) {\n // Se der qualquer erro, também descarta.\n \
\ return 0;\n}\n"
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 {\n // O valor chega em segundos (ex: 0.015), convertemos para\
\ milissegundos.\n var value_ms = parseFloat(value) * 1000;\n\n \
\ // Verifica se o valor está na faixa de 0 a 20ms.\n if (value_ms\
\ >= 401 && value_ms <= 500) {\n return 1;\n }\n\n // Se\
\ não estiver na faixa, retorna null para o Zabbix descartar.\n return\
\ 0;\n} catch (e) {\n // Se der qualquer erro, também descarta.\n \
\ return 0;\n}\n"
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 {\n // O valor chega em segundos (ex: 0.015), convertemos para\
\ milissegundos.\n var value_ms = parseFloat(value) * 1000;\n\n \
\ // Verifica se o valor está na faixa de 0 a 20ms.\n if (value_ms\
\ >= 501 && value_ms <= 600) {\n return 1;\n }\n\n // Se\
\ não estiver na faixa, retorna null para o Zabbix descartar.\n return\
\ 0;\n} catch (e) {\n // Se der qualquer erro, também descarta.\n \
\ return 0;\n}\n"
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 {\n // O valor chega em segundos (ex: 0.015), convertemos para\
\ milissegundos.\n var value_ms = parseFloat(value) * 1000;\n\n \
\ // Verifica se o valor está na faixa de 0 a 20ms.\n if (value_ms\
\ >= 601 && value_ms <= 700) {\n return 1;\n }\n\n // Se\
\ não estiver na faixa, retorna null para o Zabbix descartar.\n return\
\ 0;\n} catch (e) {\n // Se der qualquer erro, também descarta.\n \
\ return 0;\n}\n"
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 {\n // O valor chega em segundos (ex: 0.015), convertemos para\
\ milissegundos.\n var value_ms = parseFloat(value) * 1000;\n\n \
\ // Verifica se o valor está na faixa de 0 a 20ms.\n if (value_ms\
\ >= 701 && value_ms <= 800) {\n return 1;\n }\n\n // Se\
\ não estiver na faixa, retorna null para o Zabbix descartar.\n return\
\ 0;\n} catch (e) {\n // Se der qualquer erro, também descarta.\n \
\ return 0;\n}\n"
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 {\n // O valor chega em segundos (ex: 0.015), convertemos para\
\ milissegundos.\n var value_ms = parseFloat(value) * 1000;\n\n \
\ // Verifica se o valor está na faixa de 0 a 20ms.\n if (value_ms\
\ >= 801 && value_ms <= 900) {\n return 1;\n }\n\n // Se\
\ não estiver na faixa, retorna null para o Zabbix descartar.\n return\
\ 0;\n} catch (e) {\n // Se der qualquer erro, também descarta.\n \
\ return 0;\n}\n"
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 {\n // O valor chega em segundos (ex: 0.015), convertemos para\
\ milissegundos.\n var value_ms = parseFloat(value) * 1000;\n\n \
\ // Verifica se o valor está na faixa de 0 a 20ms.\n if (value_ms\
\ >= 1001 && value_ms <= 2000) {\n return 1;\n }\n\n // Se\
\ não estiver na faixa, retorna null para o Zabbix descartar.\n return\
\ 0;\n} catch (e) {\n // Se der qualquer erro, também descarta.\n \
\ return 0;\n}\n"
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 {\n // O valor chega em segundos (ex: 0.015), convertemos para\
\ milissegundos.\n var value_ms = parseFloat(value) * 1000;\n\n \
\ // Verifica se o valor está na faixa de 0 a 20ms.\n if (value_ms\
\ >= 3001) {\n return 1;\n }\n\n // Se não estiver na faixa,\
\ retorna null para o Zabbix descartar.\n return 0;\n} catch (e) {\n\
\ // Se der qualquer erro, também descarta.\n return 0;\n}\n"
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 {\n // A variável 'value' contém a linha de log completa.\n \
\ // A regex procura por \"request_time\": e captura o número que vem\
\ depois.\n var regex = /\"request_time\":(\\d+\\.?\\d*)/;\n var\
\ match = value.match(regex);\n\n // Se encontrar, match[1] conterá\
\ apenas o número (ex: \"0.282\").\n if (match && match[1]) {\n \
\ return match[1];\n }\n\n // Se não encontrar, descarta o valor.\n\
\ return null;\n} catch (e) {\n // Se houver qualquer erro, também\
\ descarta.\n return null;\n}\n"
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 {\n var regex = /\"request_uri\":\"([^\"]+)\"/;\n var match\
\ = value.match(regex);\n if (match && match[1]) {\n return\
\ match[1];\n }\n return null;\n} catch (e) {\n return null;\n\
}\n"
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\n\
// separados por vírgula, espaço e/ou quebra de linha.\n // A Regex /[\\\
s,]+/ divide a string em:\n // - Vírgulas (,)\n // - Espaços (incluindo\
\ múltiplos)\n // - Quebras de linha (\\n, \\r)\n // O filter(Boolean)\
\ remove quaisquer entradas vazias que o split possa gerar.\n var full_paths\
\ = value.trim().split(/[\\s,]+/).filter(Boolean);\n \n var lld_data\
\ = [];\n \n // Regex para extrair o nome do site:\n // ^ -> Início\
\ do item (após o split)\n // (.+) -> Captura o nome do site (o que for\
\ que esteja lá)\n var regex = /^\\/var\\/log\\/nginx\\/(.+)\\.access\\\
.log$/;\n \n // Itera sobre todos os caminhos.\n for (var i = 0;\
\ i < full_paths.length; i++) {\n var path = full_paths[i];\n \
\ \n // Aplica a regex em cada item.\n var match = path.match(regex);\n\
\ \n // match[1] contém o nome do site capturado em (.+).\n\
\ if (match && match[1]) { \n lld_data.push({\n \
\ \"{#HOST_SITE}\": match[1]\n });\n }\n }\n\
\ \n // Retorna o JSON LLD final.\n return JSON.stringify({ \"\
data\": lld_data });\n"