Eu tenho um servidor zabbix e um agente, em dois computadores diferentes. O agente é executado no modo ativo, por exemplo, tenho isso no arquivo de configuração:
StartAgents=0
ServerActive=my.zabbix.server.com
Hostname=my.zabbix.agent.com
O servidor zabbix pode ser acessado da máquina com o agente, por exemplo:
telnet my.zabbix.server.com 10051
Trying 111.111.111.111...
Connected to my.zabbix.server.com.
Escape character is '^]'.
Connection closed by foreign host.
Além disso, o registro automático do host foi ativado no servidor e o agente registrou o host com sucesso quando o iniciei. Então a conexão deve estar viva. Isto é o que vejo no log do agente quando o inicio:
83074:20171128:082440.324 Starting Zabbix Agent [my.zabbix.agent.com]. Zabbix 3.4.1 (revision 71734).
83074:20171128:082440.324 **** Enabled features ****
83074:20171128:082440.324 IPv6 support: YES
83074:20171128:082440.324 TLS support: YES
83074:20171128:082440.324 **************************
83074:20171128:082440.324 using configuration file: /usr/local/etc/zabbix34/zabbix_agentd.conf
83074:20171128:082440.324 agent #0 started [main process]
83076:20171128:082440.325 agent #1 started [collector]
83077:20171128:082440.326 agent #2 started [active checks #1]
Em outras palavras, o agente poderia se conectar ao servidor, até mesmo reconhecer sua versão. Nada mais acontece no log do agente.
No servidor, ainda diz que o host está inacessível!
Qual poderia ser o problema?
UPDATE : no front-end, vejo esta mensagem:
Não sei por que ele quer se conectar a 10050? É usado para agentes passivos. Meu agente deve estar ativo.
UPDATE2 : Se eu excluir o host do servidor zabbix e reiniciar o agente, acontece o seguinte:
O host é registrado automaticamente no servidor novamente. O registro do agente:
14551:20171128:193954.483 Starting Zabbix Agent [my.zabbix.server.com]. Zabbix 3.4.1 (revision 71734).
14551:20171128:193954.484 **** Enabled features ****
14551:20171128:193954.484 IPv6 support: YES
14551:20171128:193954.484 TLS support: YES
14551:20171128:193954.484 **************************
14551:20171128:193954.484 using configuration file: /usr/local/etc/zabbix34/zabbix_agentd.conf
14551:20171128:193954.484 agent #0 started [main process]
14553:20171128:193954.485 agent #1 started [collector]
14554:20171128:193954.485 agent #2 started [active checks #1]
14554:20171128:193954.614 no active checks on server [my.zabbix.server.com:10051]: host [my.zabbix.agent.com] not found
Onde:
- my.zabbix.server.com é o FQDN do servidor
- my.zabbix.agent.com é o FQDN do agente e também o parâmetro HostName na configuração do agente.
Assim, parece que o agente registra o host com sucesso, mas por algum motivo, o servidor tenta obter as informações do agente no modo passivo. Apesar do fato de que o agente foi configurado no modo ativo.
ATUALIZAÇÃO 3 : Embora os agentes estejam enviando dados, a lista de hosts ainda mostra um problema:
Disponibilidade/ZBX tem um sinalizador vermelho e uma mensagem dizendo que "Obter valor do agente falhou: não é possível conectar a [[endereço_ip_aqui]:1050]: [4] chamada de sistema interrompida". Eu verifiquei cada item e cada descoberta para esses hosts, e todos eles têm type="Zabbix Agent Active". Então eu não entendo porque o servidor está tentando se conectar a eles no modo passivo??? Isso não causa um "problema" real (por exemplo, algo que gera uma ação e envia notificações do servidor zabbix), mas é muito perturbador ver bandeiras vermelhas na tela.
Até que esse problema seja totalmente resolvido, nem aceitarei minha própria resposta.
ATUALIZAÇÃO 4 : depois de alterar todos os tipos de itens, tipos de descoberta e os tipos dos protótipos de itens das regras de descoberta de baixo nível de todos os modelos que estão conectados aos meus hosts e todos os modelos vinculados ali, as bandeiras vermelhas do ZBX finalmente desapareceram . Acredito que sou um usuário experiente de software, mas foi bastante difícil entender o que está acontecendo e alterar todos os parâmetros para que funcione.
Para que as verificações ativas funcionem, o nome do host do agente deve corresponder ao nome do host do host no servidor Zabbix. "Agent hostname" não é necessariamente o nome do host do sistema - depende dos parâmetros de configuração "Hostname" e "HostnameItem". O nome do host no Zabbix não é o DNS ou o endereço IP - é o conteúdo do campo "Host" nas propriedades do host.
Quando o agente é iniciado, ele imprime o nome do host que está enviando ao servidor. No seu exemplo:
Starting Zabbix Agent [my.zabbix.server.com]
- ou seja, o agente se identifica para o servidor comomy.zabbix.server.com
. Faça com que esse valor corresponda ao nome de host adequado (observe que diferencia maiúsculas de minúsculas) e as verificações ativas começarão a funcionar. Observe que o outro host pode ter valores incorretos se dois ou mais agentes estiverem enviando dados, identificando-os como ele.Observe que a versão impressa no log do agente é a versão do agente, não a versão do servidor - o agente não pode determinar a versão do servidor.
Resposta curta: o problema era que todos os itens tinham Type="Zabbix Agent" em vez de Type="Zabbix Agent Active".
Resposta longa: um host será um agente ativo ou um agente passivo. (Bem, talvez se você tentar iniciar dois agentes na mesma máquina, você possa fazer ambos em um único host, mas parece inútil.) Lógico, certo?
Então, na realidade, ser ativo ou passivo é uma propriedade do hospedeiro, não do item. Apesar deste fato, o modo de coleta de dados (por exemplo, passivo ou ativo) está vinculado ao item, não ao host. Eu vejo isso como uma falha de design no zabbix. Isso é muito contra intuitivo. A ÚNICA maneira que eu poderia superar esse problema é esta:
Você precisa clonar quase todos os modelos no sistema. Você não pode ter um único gatilho para um único item que seja independente do tipo de item, porque isso não existe. Se você quer mudar algo em um ambiente onde há agentes passivos e ativos misturados, então você tem que fazer tudo duas vezes.
Por fim, ao adicionar um host, você precisa atribuir a versão de modelo ativa ou passiva, dependendo de qual modo deseja usar para esse host específico.
Tudo isso porque o modo ativo/passivo não pode ser propriedade do host. Deve ser uma propriedade do item. É pior que isso: também é propriedade das regras de descoberta, e os protótipos das regras de descoberta (e os itens de protótipo não podem ser atualizados em massa, você tem que fazer isso um por um, manualmente). Sério, um item como "cpu.load" não tem absolutamente nenhuma relação com a forma como os dados foram coletados. Quero dizer, vamos lá, você pode mudar de ideia e mudar do modo ativo para o passivo, ou voltar. Isso não deve forçá-lo a excluir todos os itens antigos, criar novos. Mas se você decidir fazer isso, perderá todo o histórico, porque você não está apenas alterando os itens, mas os substituindo. Isso é realmente muito irritante!
Espero que eles corrijam isso na próxima versão 4.0.
mude o valor do /etc/zabbix/zabbix_agentd.conf e coloque o ip do zabbix