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"