Como você monitorar o seu sistema de monitoramento?
Quais são as métricas que você usa para dizer onde e quando fazer algum ajuste?
É. Essas perguntas as vezes são complicadas de responder, ainda mais quando não temos os dados para avaliar o cenário.
Felizmente, o Zabbix possui alguns mecanismos que facilitam a sua vida como SysAdmin na hora de ajustar a criança.
Então, vamos ver bater um papo sobre alguns desses itens.
Values Per Second:
O VPS é uma métrica utilizada para calcular, como o nome diz, a quantidade de itens por segundo processados pelo servidor Zabbix.
Esse valor é calculado internamente pelo Zabbix e apresentado no dashboard de monitoramento com o nome de “Required server performance, new values per second”.
Esse valor é calculado levando em consideração a Quantidade de Itens Monitorados X Tempo de atualização do Item. Logo, se você possui 3000 itens a uma taxa de atualização de 60 segundos, o VPS apresentado será 50. (3000/60 = 50)
Ok, e qual o valor ideal?
Bem, depende do seu hardware. Se você possui um 200 VPS e seu servidor apresenta um gargalo no processamento, deixando a fila de espera muito alta, talvez seja uma boa idéia diminuir para 150 VPS e verificar se o gargalo diminui. Uma boa maneira de diminuir as VPS sem abrir mão dos itens monitorados é diminuir a taxa de atualização do item.
Por exemplo, se você pegar os 3000 itens do exemplo anterior e aumentar o tempo de atualização para 120 segundos, seu VPS vai cair para 25. =)
Em compensação, se você tem 2000 VPS e seu servidor não apresenta nenhum tipo de gargalo, você está em uma situação confortável para aumentar a quantidade de itens monitorados, desde que sua database comporte a quantidade de leitura e escrita, é claro. ;)

Uso do cache:
Monitorar o uso do cache é essencial quando temos a finalidade de ajustar a performance de monitoramento. Por exemplo, cache de escrita com poucos valores e muitos itens acumulados na fila podem indicar um garagalo no banco de dados. Já esse mesmo cache com muitos valores e também muitos itens na fila, podem ser resolvidos aumentando a quantidade de cache no arquivo de configuração. O mesmo vale para cache de estatísticas, históricos e demais valores.

A queue:
Ah, a fila. Um dos melhores indicadores de performance do Zabbix. O Zabbix é capaz de mostrar a quantas anda sua fila, o que pode facilitar muito a sua vida na hora de ajustar a taxa de atualização de determinado conjunto de Itens.
Na aba Administração -> Fila, é possível verificar a quantidade de items aguardando o processamento e armazenamento em banco, junto com os intervalos de tempo, que são respectivamente 5, 10, e 30 segundos, 1 minuto, 5 minutos e mais que 10 minutos.

Como podemos ver na figura acima, o Zabbix exibe os tempos de permanencia em fila para cada tipo de checagem, dando indícios de quais configurações precisam ser alteradas. Felizmente, essa fila já passou por ajustes. :D
Por exemplo, muitos itens na fila para os itens de Agente do Zabbix podem indicar, novamente, que o tempo de atualização precisa ser ajustado, ou quantidade máxima de linhas de log enviadas precisam ser diminuidas.
Abaixo, dois exemplos, antes de depois de eu ajustar a taxa de atualização para os templates de servidores e mais alguns ajustes, como desabilitar itens não suportados e marcar a maioria das checagens para Zabbix Active. Em nenhum momento, precisei ajustar o banco de dados ou sistema operacional. =)

Antes dos ajustes e depois dos ajustes. Sweet!!!

Dicas rápidas:
Cuide bem da sua fila: Um atraso muito grande na fila significa que aquela mensagem de roteador fora só vai chegar 2 horas depois que ele caiu.
Seja moderado na taxa de atualização: Não ceda a tentação de checar espaço em disco a cada 30 segundos, a não ser que isso seja necessário. Seja criterioso
na escolha das taxas de atualização e você vai conseguir monitorar todo o seu parque sem estresse e com confiabilidade.
Use agentes ativos sempre que possível: Em grandes instalações, esse pequeno ajuste faz toda a diferença, uma vez que todas as verificações serão processadas pelo agente e enviadas em lotes ao servidor, diminuindo consderavelmente o número de consultas feitas no banco e tempo gasto pelo servidor para processar essas consultas.
Use proxies ativos: Distribua a sua monitoração em alguns servers ao invés de concentrar tudo em um único nó. Isso remove boa parte da carga do servidor zabbix e também remove a carga do banco de dados, possibilitando uma performance maior no monitoramento.
Separe a aplicação/frontend e o banco de dados: Sim, isso traz um ganho de performance considerável não só para o Zabbix, mas para qualquer aplicação que use banco de dados.
Crie triggers para o Zabbix: Construa um perfil de funcionamento do seu servidor, e então crie triggers para alarmá-lo, por exemplo, quando existirem itens na fila por mais de uma hora.
E para terminar o post, o template que eu fiz para coletar todas essas métricas. =)
Zabbix Internals Template