O objetivo da criação do modelo é automatizar o monitoramento dos servidores do sistema de videovigilância com base nos registradores Trassir sob o controle do mesmo software baseado no linux via servidor da Web SDK.
O Trassir SDK está incluído nas configurações do servidor web, você também deve especificar uma senha lá. De acordo com a
documentação do fabricante, você não precisa criar uma conta separada para fazer leituras sobre o servidor.
O Trassir SDK oferece acesso ao status do servidor mediante solicitação
https://{ip }:{ }/health?password={ SDK}
Quando você abre esse link por meio de um navegador, aparece uma mensagem informando que o certificado usado não é seguro e você deve seguir as instruções do navegador para continuar.
Para um exemplo específico, no corpo da resposta, obtemos o seguinte:
{ "disks": "1", "database": "1", "channels_total": "13", "channels_online": "13", "uptime": "882232", "cpu_load": "33.96", "network": "1", "automation": "1", "disks_stat_main_days": "16.41", "disks_stat_priv_days": "0.00", "disks_stat_subs_days": "16.41" } /* Meanings of values: -1 - undefined value 0 - bad health (error) 1 - good health (ok) Values for channels are channel counters. Value of cpu_load is given in percents.
A primeira parte da saída do caractere {para o caractere} corresponde à documentação e é uma saída padronizada no formato JSON, que corresponde à documentação, e depois há uma descrição da saída, que não se encaixa no padrão.
Anteriormente, para usar essa saída no sistema de monitoramento Zabbix, você precisava escrever seu próprio script, que seria usado no agente e obter os dados necessários. Com essa abordagem, você precisa armazenar o arquivo de resposta e monitorar sua relevância ou solicitar cada elemento separadamente, ou seja, use 11 consultas em vez de 1.
Na versão Zabbix 4.0, apareceu um tipo de elemento de dados do agente, que permite receber dados via protocolos http e https e processá-los, além de elementos dependentes, calculados a partir dos principais.
A idéia é obter uma resposta do servidor em um elemento de dados de texto e selecionar os elementos de dados necessários.
Inicialmente, definiremos macros para o número da porta e senha para a versatilidade e segurança do nosso modelo.
Criamos um modelo e adicionamos um elemento de dados com o tipo "agente HTTP", uma chave conforme desejado, o URL https: // {HOST.IP}: {$ TRASSIR_SDK_PORT} / health e o campo de solicitação de senha {$ TRASSIR_SDK_PASS}. Aqui {HOST.IP} é uma macro que, ao adicionar um modelo ao host, será convertida no endereço IP do host.
Como já descobrimos experimentalmente anteriormente, essa solicitação não está totalmente em conformidade com o formato JSON e simplesmente não funciona para extrair dados dele.
Usaremos a nova funcionalidade do Zabbix e adicionaremos a expressão regular \ {(\ n |.) * \} Na guia "pré-processamento" do modelo do elemento de dados com a saída \ 0, que retornará apenas os dados no formato JSON.
Quem se importa por que isso é tãoDesenvolver essas expressões para iniciantes é muito mais fácil no
editor visual . Nesta expressão, estamos procurando um caractere específico da chave de abertura e, como nas expressões regulares esses colchetes são usados, é necessário especificar a barra invertida antes do caractere. Pode haver caracteres (de fato, não, mas vamos omitir este momento) nos dados JSON, além de um feed de linha. Essas opções de caracteres que indicam um ponto ou um caractere de controle de avanço de linha \ n são indicadas entre parênteses com uma barra vertical. Atrás dos colchetes está um asterisco, que indica que o caractere encontrado ou o avanço de linha pode ser repetido um número infinito de vezes. Em seguida, vem a chave de fechamento. A saída \ 0 significa que todas as seqüências encontradas serão exibidas.
Em seguida, um elemento de dados dependente é criado para o qual o elemento de dados principal é indicado como resposta JSON recebida anteriormente e o pré-processamento é indicado com a etapa "caminho JSON" que permite acessar qualquer elemento de dados especificando o caminho JSON. No nosso exemplo, todos os dados estão no nível superior, portanto, especificamos $ .disks e assim por diante para todos os elementos.
Resta apenas criar gatilhos que verificarão novos dados, sua entrada em intervalos normais e também gráficos opcionais.
Acontece que, com muita facilidade e rapidez, pelos métodos regulares do Zabbix, recebemos dados de um sistema externo, cuja saída não está totalmente em conformidade com o padrão. A ausência de scripts externos simplifica o entendimento do sistema de monitoramento e aumenta a facilidade de manutenção.
O modelo especificado
está disponível no portal de intercâmbio share.zabbix.com .