<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mike Fortes</title>
    <description>The latest articles on DEV Community by Mike Fortes (@mromeiro-f).</description>
    <link>https://dev.to/mromeiro-f</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F861643%2F70331b08-15fb-4121-99f4-be84484aeb8f.png</url>
      <title>DEV Community: Mike Fortes</title>
      <link>https://dev.to/mromeiro-f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mromeiro-f"/>
    <language>en</language>
    <item>
      <title>Segurança com Zabbix</title>
      <dc:creator>Mike Fortes</dc:creator>
      <pubDate>Thu, 29 May 2025 19:35:33 +0000</pubDate>
      <link>https://dev.to/mromeiro-f/seguranca-com-zabbix-1kei</link>
      <guid>https://dev.to/mromeiro-f/seguranca-com-zabbix-1kei</guid>
      <description>&lt;p&gt;Hoje vi um post interessante no linkedin sobre um bruteforce com mais de 300 tentativas seguidas vindos de um IP chinês.&lt;/p&gt;

&lt;p&gt;Como você identificaria isso no Zabbix?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fynyltat7nuj9z5ymfeys.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fynyltat7nuj9z5ymfeys.jpeg" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vou usar um Grafana como exemplo, mas todo sistema tem suas próprias características que podem ser customizadas utilizando o mesmo fluxo demonstrado abaixo.&lt;/p&gt;

&lt;p&gt;Primeiro precisamos identificar nos logs da sua aplicação o padrão em que o mesmo é escrito e identificar as tentativas de login com sucesso e sem sucesso.&lt;/p&gt;

&lt;p&gt;O grafana escreve logs em /var/log/grafana/grafana.log e a linha escrita descrevendo um login sem sucesso/não autorizado é assim:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8xr9uzlyf569ehbkblv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8xr9uzlyf569ehbkblv.png" width="800" height="128"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ou seja, identificamos o erro pelo ‘path=/login status=401'&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Então bora pro Zabbix!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Crie um item do tipo Zabbix Agent (Active) para leitura de logs de forma rotativa (logrt) e na chave identifique o caminho do arquivo a ser lido e o termo a ser buscado dentro do log.&lt;/p&gt;

&lt;p&gt;Lembrando que todo item Zabbix Agent (Active) alguns parametros precisam estar configurados corretamente dentro do agent.conf, como o parametro ActiveServer, etc…&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvuapf0a1xgw8gzs1fs08.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvuapf0a1xgw8gzs1fs08.png" width="728" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Observe que o tempo de armazenamento e intervalo de coleta são de escolhas suas e devem fazer sentido no ambiente em que &lt;strong&gt;seu&lt;/strong&gt; monitoramento esta inserido…&lt;/p&gt;

&lt;p&gt;Esse é o resultado desse item:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg7q75js6nkf673pvx4zv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg7q75js6nkf673pvx4zv.png" width="800" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora que ja temos os logs, vamos criar a trigger que identificara um possível ataque.&lt;/p&gt;

&lt;p&gt;Crie uma trigger baseado em contadores, defina:&lt;/p&gt;

&lt;p&gt;T em 5m&lt;/p&gt;

&lt;p&gt;O deve ser o termo desejado ‘path=/login status=401’&lt;/p&gt;

&lt;p&gt;V &amp;gt;5, ou seja, acima de 5 tentativas deve alarmar&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flillyly55ztv4oe68s3q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flillyly55ztv4oe68s3q.png" width="800" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Essa trigger está verificando, &lt;strong&gt;nos últimos 5 minutos&lt;/strong&gt; , quantas vezes o seu item de log logrt["/var/log/grafana/grafana.log","path=/login status=401"] retornou uma entrada contendo exata­mente a string "path=/login status=401", e dispara se esse total for &lt;strong&gt;maior que 5&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Ou seja, você será alertado sempre que detectar um padrão forte de possíveis ataques de força-bruta (mais de 5 tentativas de login mal-sucedido em 5 minutos).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F30dh8cwcy7h4m2z8smx7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F30dh8cwcy7h4m2z8smx7.png" width="800" height="52"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>zabbix</category>
      <category>devops</category>
      <category>observability</category>
    </item>
    <item>
      <title>Do zero ao completo Desastre</title>
      <dc:creator>Mike Fortes</dc:creator>
      <pubDate>Thu, 27 Jul 2023 21:05:15 +0000</pubDate>
      <link>https://dev.to/mromeiro-f/do-zero-ao-completo-desastre-47dk</link>
      <guid>https://dev.to/mromeiro-f/do-zero-ao-completo-desastre-47dk</guid>
      <description>&lt;p&gt;Recentemente tive um cliente que cresceu MUITO em pouquíssimo tempo, perdendo completamente as rédeas do seu ambiente de monitoração. Como retomar o controle? Como evitar que ocorra novamente? Onde erraram pra que isso acontecesse? Vamos lá.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn6mno44tnvud02s80p1y.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn6mno44tnvud02s80p1y.jpeg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Em 2 anos, um cliente com parque de uma centena de servidores monitorados (infra e aplicação) foi para quase 4 mil servidores e equipamentos monitorados, somando pouco mais de meio milhão de itens monitorados. Sem profissionais especialistas que dessem auxilio no crescimento do ambiente, o caos foi instalado com sucesso.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bancos de dados não otimizados&lt;/li&gt;
&lt;li&gt;Proxys não padronizados&lt;/li&gt;
&lt;li&gt;Diversas automações&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;E com o tempo, todo esse ambiente caótico se tornou o core de todo seu suporte técnico, funcionando ou não, esse era nosso ponto de partida.&lt;/p&gt;

&lt;p&gt;Aqui vou tentar trazer alguns pontos cruciais a serem observados dentro do seu ambiente, para que se você assim como meu cliente tambem tenha crescido muito nos ultimos anos, identifique melhorias e procure ajuda antes que o caos tambem seja sua realidade.&lt;/p&gt;

&lt;h3&gt;
  
  
  Essa informação é mesmo importante?
&lt;/h3&gt;

&lt;p&gt;Existem sim dúzias e dúzias de métricas que podem ser interessantes para seu negócio e que devem sim ser coletadas e armazenadas… mas existe o triplo disso que não é.&lt;br&gt;&lt;br&gt;
Muitos clientes gastam fortunas com bancos de dados, quando na verdade estão armazenando toneladas de dados inúteis.&lt;/p&gt;

&lt;p&gt;Imagina você coletando a versão do sistema operacional de uma maquina a cada 1 hora, e armazenando esse texto imenso no banco de dados…&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fapoue1nj12vcog96t575.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fapoue1nj12vcog96t575.jpeg" width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Revise seus templates, reveja prioridades… Oque deve ser guardado? Por quanto tempo preciso dessas informações? Esse item vai mesmo sofrer alterações em um intervalo tão curto de tempo?&lt;/p&gt;

&lt;p&gt;No caso acima, questões como textos que devem ser monitorados mas não guardados em banco de dado, pode ser utilizado a solução dada nesse &lt;a href="https://medium.com/@mromeiro-f/coletas-quase-instant%C3%A2neas-981cd8ca9fbd" rel="noopener noreferrer"&gt;post&lt;/a&gt; onde ensino a criar monitoramentos mais performáticos, sem impactar negativamente seu banco de dados.&lt;/p&gt;

&lt;h3&gt;
  
  
  Automações? Quero
&lt;/h3&gt;

&lt;p&gt;Quer dizer que você quer integrar seu Zabbix com o telegram, email, Slack. Criar hosts via ServiceNow que se integram em outra esteira que instala o agent e atribui templates e o proxy destinado para aquela range, atualizar pacotes, importar scri……&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6figmn6xajmo9y9pthu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6figmn6xajmo9y9pthu.jpg" width="500" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sei que quando mais integrações e automações você tiver, mais seu Zabbix fica eficiente, produtivo de forma barata… mas até que ponto?&lt;/p&gt;

&lt;p&gt;Sempre que criar uma automação/integração pense que isso vai estar lá pra sempre, talvez até mesmo depois de você, logo deve ser obrigatório ter uma DOCUMENTAÇÃO.&lt;/p&gt;

&lt;p&gt;Cavando ambientes gigantes como esse sem documentação alguma, você começa a descobrir scripts e automações que nunca ouviu falar, e começa a documentar cada parte de seu funcionamento para que seu entendimento seja completo no futuro.&lt;/p&gt;

&lt;p&gt;Mas infelizmente esse trabalho só ocorre em momentos críticos, onde a integração parou de funcionar no meio de uma sexta-feira, e sua equipe vai precisar virar a noite tentando fazer com que seu negócio volte a operar corretamente, fazendo com que seu tempo indisponivel se torne mais caro que o tempo do funcionario que implementou aquela integração e poderia ter documentado a mesma ali mesmo.&lt;/p&gt;

&lt;h3&gt;
  
  
  Não seja enganado
&lt;/h3&gt;

&lt;p&gt;A moda agora é abstrair esse proxy pra que ele rode de dentro de uma caixa de fosforo, todo lugar está usando isso, vou usar também, vai dar certo…&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/media/ba438a21cd9041c4c5fa08e9b3460c35/href" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://medium.com/media/ba438a21cd9041c4c5fa08e9b3460c35/href" rel="noopener noreferrer"&gt;https://medium.com/media/ba438a21cd9041c4c5fa08e9b3460c35/href&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Não caia nessa pelo amor de deus.&lt;/p&gt;

&lt;p&gt;Existe o certo e o duvidoso, e ao menos que você tenha DIVERSOS especialistas que tenham conhecimento sólido na ferramenta que estão tentando te fazer apostar suas fichinhas, não aposte, porque depois que seu ambiente crescer e seu parque estiver gigante… vai ser bem mais complicado uma migração caso o milagre que te venderam não performe como deveria !&lt;/p&gt;

&lt;p&gt;Aqui deixei meus 2 centavos sobre o assunto, mas claro que como sempre falo, é minha visão sobre um assunto, e você pode discordar de algo ou tudo… é perfeitamente normal!&lt;br&gt;&lt;br&gt;
Até mais !&lt;/p&gt;

</description>
      <category>linux</category>
      <category>opensource</category>
      <category>monitoring</category>
      <category>zabbix</category>
    </item>
    <item>
      <title>Instalei, mas e agora?</title>
      <dc:creator>Mike Fortes</dc:creator>
      <pubDate>Wed, 22 Sep 2021 13:32:36 +0000</pubDate>
      <link>https://dev.to/mromeiro-f/instalei-mas-e-agora-53o5</link>
      <guid>https://dev.to/mromeiro-f/instalei-mas-e-agora-53o5</guid>
      <description>&lt;p&gt;Sempre que é lançado uma nova versão do Zabbix, vemos uma chuva de “cookbook’s” ensinando como instala-lo em diversos tipos de ambientes e cenários (inclusive eu tenho um publicado &lt;a href="https://dev.to/mikefortes/rocky-linux-ljf-temp-slug-9596249"&gt;aqui&lt;/a&gt;). &lt;strong&gt;Mas e depois?&lt;/strong&gt; Você sabe oque fazer para começar um ambiente do zero, aplicando boas praticas e sem se preocupar com dores de cabeça no futuro?&lt;/p&gt;

&lt;p&gt;Segue a leitura que vou dar algumas dicas que você pode seguir (ou não rs) para ter seu ambiente de monitoramento novinho em folha, rodando da melhor forma possível!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr6vjofh9qzr3kwf64wva.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr6vjofh9qzr3kwf64wva.png" width="800" height="590"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aposto que em algum momento algum gestor pediu pra você subir um Zabbix na sua empresa, e você pegou alguma receitinha de bolo na internet e pronto, o Zabbix tá criado.&lt;/p&gt;

&lt;p&gt;A questão é que existem vários “ajustes finos”, que são perfeitos para se aplicar nesse momento, ou seja, assim que o ambiente foi criado. Seu banco quase não possui informação armazenada, não existem rotinas criadas nem nada do tipo, então toda alteração feita será aplicada daquele momento em diante, te poupando muito trabalho e dor de cabeça no futuro (e acredite, eles vão ocorrer)&lt;/p&gt;

&lt;p&gt;Abaixo vou listar algumas dessas dicas/ajustes finos pra você conhecer e caso goste da ideia, já vai aplicando em laboratório, que no próximo ambiente que você criar o monstro vai sair da jaula!&lt;/p&gt;

&lt;h3&gt;
  
  
  Housekeeping
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjih58vj0m8ejg92v9bbh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjih58vj0m8ejg92v9bbh.jpg" width="381" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O housekeeping se divide em duas partes. A &lt;strong&gt;primeira&lt;/strong&gt; que conhecemos, esta dentro da aba geral, e é essencial que você seja o mais realista possível no que se trata de quanto tempo de dados retidos você pretende manter em seu banco. Por padrão esse cara vem configurado para 1 ano, então pelo amor de deus, altere isso antes de cadastrar qualquer host rs.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;segunda&lt;/strong&gt; parte se trata dos parâmetros de Housekeeping dentro do zabbix_server.conf. Devemos nos atentar ao valor do HousekeepingFrequency e MaxHousekeeperDelete.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HousekeepingFrequency&lt;/strong&gt; é a frequência (em horas) que ele será executado. Você precisa ser realista nesse parâmetro, e informar um intervalo que você sabe que seu banco pode executar essa tarefa, antes que a próxima tente se iniciar. Caso esse cara não funcione corretamente, seu banco vai começar a acumular dados antigos e crescer desordenadamente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MaxHousekeeperDelete&lt;/strong&gt; é o parâmetro que indica quantas linhas serão excluídas em cada rotina. Se você informar um valor baixo, sempre ira sobrar dados antigos, e caso seu banco não tenha grandes recursos, um alto valor também pode não funcionar. Se colocar o valor 0 nesse parâmetro, ele não vai ter limites para exclusão, então nesse caso, é bom saber oque você esta fazendo…&lt;/p&gt;

&lt;p&gt;Lembrando que esse cara não se aplica caso você queira seguir a próxima dica que vou dar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Particionamento de tabelas
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd75m04om6o9cvu7050sm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd75m04om6o9cvu7050sm.png" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Essa dica você deve tá cansado de ouvir, mas como vale a pena, vou apenas mencionar.&lt;/p&gt;

&lt;p&gt;O Zabbix armazena os dados em tabelas conjuntas, e as que mais acumulam dados são as &lt;strong&gt;históricos&lt;/strong&gt; e  &lt;strong&gt;trends&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Dessa forma, a ideia é particionar essas tabelas, seja em dias/semanas/meses, para que quando ocorra qualquer tipo de consulta (seja adicionando ou excluindo dados) ela ocorra de forma mais performática.&lt;/p&gt;

&lt;p&gt;Não vou indicar nenhum tutorial especifico aqui, pois os comandos ou scripts podem varias de acordo com o banco ou versão do Zabbix, mas tenha em mente sempre que em toda alteração no banco, é importante um backup antes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rotina de Backup
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fety5uygymfto5jcxg7lq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fety5uygymfto5jcxg7lq.png" width="352" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O bem mais precioso que possuímos quando trabalhamos com monitoramento, é nosso banco de dados.&lt;/p&gt;

&lt;p&gt;Nesse caso, a dica é criar uma rotina de backup, que sempre que executada, faça um backup do schema do seu banco e dos dados coletados.&lt;/p&gt;

&lt;p&gt;Abaixo vou deixar um link com uma das maneiras de efetuar esse backup, lembrando que assim que efetuado, o arquivo final deve ser transferido pra outro host, mantendo assim sua segurança.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://share.zabbix.com/zabbix-tools-and-utilities/tools-and-utilities/realizando-backup-do-schema-e-do-banco-de-dados-do-zabbix" rel="noopener noreferrer"&gt;Zabbix Share - Realizando Backup do Schema e do Banco de Dados do Zabbix&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ps: Normalmente as tabelas histórico e trends são deixadas de fora desse backup, mas não é regra.&lt;/p&gt;

&lt;h3&gt;
  
  
  Usuários— Autenticação— Permissões
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedkrbpb7rl5kudabclzz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedkrbpb7rl5kudabclzz.png" width="800" height="194"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aqui, querendo ou não, esta tudo linkado.&lt;/p&gt;

&lt;p&gt;Antes de qualquer coisa, o mais importante é ter em mente os grupos de usuários que terão acesso ao seu Zabbix. Delimitar suas permissões de visualização/escrita e das próprias funcionalidades da sua ferramenta.&lt;/p&gt;

&lt;p&gt;Ps: Muito importante &lt;strong&gt;desabilitar&lt;/strong&gt; o acesso ao front-end do usuário Guest. -&lt;em&gt;Sim, tem pessoas que esquecem isso.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Depois de delimitado o que cada grupo poderá acessar, chegou a hora de criar os usuários.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frmu4kct5f7dte1ls2swk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frmu4kct5f7dte1ls2swk.png" width="399" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sei que parece mais fácil criar o usuário na mão, senha e etc… mas acredite, não é. Por exemplo, se um funcionário for mandado embora por algum motivo, e ninguém te notificar, ele vai continuar tendo acesso ao ambiente, mesmo de fora da empresa, caso seu Zabbix esteja na internet.&lt;/p&gt;

&lt;p&gt;Aqui, o ideal seria habilitar alguma autenticação fornecida por um LDAP (mais comuns hoje em dia) ou os novos SAML (como OAuth por exemplo). Os passos são simples, e basta criar o usuário com o mesmo “apelido” que foi criado em sua infra, e pronto.&lt;/p&gt;

&lt;p&gt;A maior vantagem nesse caso, é que para acessar o Zabbix ele tem que estar habilitado no LDAP/SAML, sendo assim, no exemplo acima, mesmo não sendo avisado sobre a demissão do funcionário, ele não conseguiria acessar, visto que no AD (por exemplo) ele já estaria bloqueado.&lt;/p&gt;

&lt;h3&gt;
  
  
  TIPOS DE MIDIA
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fewv23ejq87frdmm66nwo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fewv23ejq87frdmm66nwo.png" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Essa é a parte onde é mais customizava e diversificada de todos os ambientes.&lt;/p&gt;

&lt;p&gt;Recomendo de cara criar suas mídias de alertas, talvez um padrão como email, telegram… Ou tentar as novas integrações como com o Jira, ServiceNow, Zendesk…&lt;/p&gt;

&lt;p&gt;De cara, caso já tenha desenhado o cenário, também já seria interessante pensar nas ações que vão utilizar cada tipo de mídia.&lt;/p&gt;

&lt;h3&gt;
  
  
  TEMPLATES
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5lakzs44pl9zduet8lyl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5lakzs44pl9zduet8lyl.png" width="264" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Os templates oficiais são legais, tem itens e ideias pertinentes (graficos bugados rs), porem o seu maior problema esta nos intervalos surreais, dados que se repetem, entre outras peculiaridades.&lt;/p&gt;

&lt;p&gt;O ideal nesse caso, é utilizar templates que já foram ajustados pela comunidade, ou ajustar você mesmo de acordo com sua necessidade.&lt;/p&gt;

&lt;p&gt;Aumentar o intervalo de coleta de dados string como hostname/sistema operacional (que dificilmente são alterados). Alterar valores de disparo de triggers, ajustar descobertas de baixo nível, vincular macros criadas em templates para que não conflitam com macros “universais” do Zabbix, etc…&lt;/p&gt;

&lt;h3&gt;
  
  
  EXPRESSÕES REGULARES
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzuvk9wnos878ykn76fq1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzuvk9wnos878ykn76fq1.png" width="736" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Complementando os templates citados anteriormente, expressões regulares podem te ajudar no quesito “ignorar dados inúteis”.&lt;/p&gt;

&lt;p&gt;No print por exemplo, criei macros para ignorar certos serviços do Windows, para que quando o LLD rode, ele não crie itens/triggers para eles. Dessa forma diminuo a quantia de chamados abertos pela minha operação, visto que tais serviços não são de responsabilidade do nosso suporte.&lt;/p&gt;

&lt;p&gt;Lembrando que esse post se trata de dicas, não de regras. Você pode ou não concordar com algum ponto, porem o principal aqui é ajudar alguém que esta “iniciando” um ambiente de monitoramento em sua empresa e quer começar da melhor forma possível.&lt;/p&gt;

&lt;p&gt;Qualquer duvida sobre algum ponto citado, ou caso queira indicações de algum tutorial, me chama no LinkedIn. Vou ter o maior prazer em bater um papo contigo!!&lt;/p&gt;

</description>
      <category>tips</category>
      <category>monitoring</category>
      <category>opensource</category>
      <category>devops</category>
    </item>
    <item>
      <title>ZbxTable — A saga dos relatórios</title>
      <dc:creator>Mike Fortes</dc:creator>
      <pubDate>Fri, 20 Aug 2021 19:22:23 +0000</pubDate>
      <link>https://dev.to/mromeiro-f/zbxtable-a-saga-dos-relatorios-56dl</link>
      <guid>https://dev.to/mromeiro-f/zbxtable-a-saga-dos-relatorios-56dl</guid>
      <description>&lt;h3&gt;
  
  
  ZbxTable — A saga dos relatórios
&lt;/h3&gt;

&lt;p&gt;ZbxTable can seamlessly connect to the existing Zabbix system, adapt to all current Zabbix versions, export indicators, analyze alarm history alarm messages, and support GraphTree function.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F52xnxaaxbxqwuaiuiw7r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F52xnxaaxbxqwuaiuiw7r.png" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Após sofre muito, mas MUITO MESMO, com scripts gigantescos consumindo a API do Zabbix pra extrair relatórios básicos (que demoram horas) e tratando os dados extraídos para ficar no mínimo apresentável, eu encontrei a luz…&lt;/p&gt;

&lt;h3&gt;
  
  
  ZbxTable
&lt;/h3&gt;

&lt;p&gt;O nome é simples, e não traz muita expectativa… mas é um sonho que se torna realidade.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/canghai908" rel="noopener noreferrer"&gt;Canghai908&lt;/a&gt; desenvolveu junto do &lt;a href="https://github.com/ahyiru" rel="noopener noreferrer"&gt;Ahyiru&lt;/a&gt; oque basicamente é uma ferramenta de Gestão de Negócios, que utiliza os dados do seu Zabbix para criar métricas, extrair relatórios detalhados sobre hosts, itens, alarmes, etc…&lt;/p&gt;

&lt;p&gt;Abaixo vou mostrar um passo-a-passo de como implantar essa ferramenta no seu ambiente pra você brincar um pouquinho com suas funcionalidades.&lt;/p&gt;

&lt;p&gt;Lembrando que ainda esta em desenvolvimento, sendo assim esta apenas em inglês/chines, então aconselho abrir pelo Chrome para poder traduzir a pagina em tempo real.&lt;/p&gt;

&lt;p&gt;E pra quem tem interesse em saber mais do projeto, abaixo o link do mesmo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/canghai908/zbxtable" rel="noopener noreferrer"&gt;GitHub - canghai908/zbxtable: ZbxTable is an open source Zabbix reporting system developed using Go language&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp898vbf4s94c08k4ho5v.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp898vbf4s94c08k4ho5v.jpg" width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Antes de qualquer coisa, não recomendo instalar isso no mesmo servidor que seu Zabbix. Ele possui um consumo alto de recursos da maquina, sendo assim pode ter impactos negativos na performance do seu ambiente de monitoração.&lt;/p&gt;

&lt;p&gt;*** Três itens são requisitados para essa instalação.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;MySQL Server/Client&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://www.hostinger.com.br/tutoriais/como-instalar-mysql-no-centos-7" rel="noopener noreferrer"&gt;https://www.hostinger.com.br/tutoriais/como-instalar-mysql-no-centos-7&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Compilador Go&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://linuxize.com/post/how-to-install-go-on-centos-7/" rel="noopener noreferrer"&gt;https://linuxize.com/post/how-to-install-go-on-centos-7/&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Nginx&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7" rel="noopener noreferrer"&gt;https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vamos adicionar o repositório necessário&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CentOS 6.x x86_64&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rpm -Uvh [https://repo.cactifans.com/zbxtable/1.0/rhel/6/x86\_64/zbxtable-release-1.0-1.el6.noarch.rpm](https://repo.cactifans.com/zbxtable/1.0/rhel/6/x86_64/zbxtable-release-1.0-1.el6.noarch.rpm)
yum clean all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CentOS 7.x x86_64&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rpm -Uvh [https://repo.cactifans.com/zbxtable/1.0/rhel/7/x86\_64/zbxtable-release-1.0-1.el7.noarch.rpm](https://repo.cactifans.com/zbxtable/1.0/rhel/7/x86_64/zbxtable-release-1.0-1.el7.noarch.rpm)
yum clean all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;CentOS 8.x x86_64&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rpm -Uvh [https://repo.cactifans.com/zbxtable/1.0/rhel/8/x86\_64/zbxtable-release-1.0-1.el8.noarch.rpm](https://repo.cactifans.com/zbxtable/1.0/rhel/8/x86_64/zbxtable-release-1.0-1.el8.noarch.rpm)
yum clean all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Feito isso, instalamos o pacote do app, web e agent.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yum install zbxtable -y
yum install zbxtable-web -y
yum install ms-agent -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Agora vamos para a parte de configuração&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Banco de dados&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# mysql -uroot -p
password
mysql&amp;gt; create database zbxtable character set utf8 collate utf8_bin;
mysql&amp;gt; create user zbxtable@localhost identified by 'zbxtablepwd123';
mysql&amp;gt; grant all privileges on zbxtable.* to zbxtable@localhost;
mysql&amp;gt; quit;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Entre no diretório do Zbxtable e inicie o mesmo.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#cd usr/local/zbxtable
#./ zbxtable init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Aqui, ele vai te guiar para as configurações que você colocou acima. Usuário do banco, senha, ip do zabbix, etc etc etc…&lt;/li&gt;
&lt;li&gt;Uma parte foi feita, podemos iniciar
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;systemctl enable --now zbxtable

systemctl restart zbxtable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Agora só falta a parte WEB
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yum install nginx -y

cp /usr/local/zbxtable/nginx.conf /etc/nginx/conf.d/

systemctl restart nginx

systemctl enable nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Obs: Caso utilize SELinux e Firewall, as devidas regras de permissão precisam ser aplicadas.&lt;/li&gt;
&lt;li&gt;Finalizado!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para acessar o caminho é &lt;a href="http://ip:8088," rel="noopener noreferrer"&gt;http://ip:8088,&lt;/a&gt; usuário admin / senha: Zbxtable&lt;/p&gt;

&lt;p&gt;Para mais detalhes, segue abaixo as fontes utilizadas para instalação&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://zbxtable.cactifans.com/en/docs/install/rpm/" rel="noopener noreferrer"&gt;RPM [Recommended]&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://chowdera.com/2021/01/20210129190441225d.html" rel="noopener noreferrer"&gt;Column | community experts independently develop ZABBIX open source report component zbxtable to help alarm analysis!&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>report</category>
      <category>opensource</category>
      <category>monitoring</category>
      <category>projects</category>
    </item>
    <item>
      <title>Rocky Linux</title>
      <dc:creator>Mike Fortes</dc:creator>
      <pubDate>Thu, 24 Jun 2021 17:04:57 +0000</pubDate>
      <link>https://dev.to/mromeiro-f/rocky-linux-17lc</link>
      <guid>https://dev.to/mromeiro-f/rocky-linux-17lc</guid>
      <description>&lt;p&gt;Tá passada? Bota cerva pra gela 🍺, a carne na brasa 🍖… E vem ler sobre o &lt;a href="https://rockylinux.org" rel="noopener noreferrer"&gt;Rocky Linux&lt;/a&gt;, essa maravilhosidade criada pela comunidade para comunidade&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falslchbincqmw44q4kqb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falslchbincqmw44q4kqb.png" width="800" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dia 21 de Junho de 2021 a história foi feita, e eu estava lá rs&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdebdua9dyy8q44yo1lnf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdebdua9dyy8q44yo1lnf.png" width="451" height="183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Link mencionado no twet: &lt;a href="https://forums.rockylinux.org/t/rocky-linux-8-4-available-now/3015" rel="noopener noreferrer"&gt;https://forums.rockylinux.org/t/rocky-linux-8-4-available-now/3015&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Com as atualizações de dezembro de 2020 anunciadas pela Red Hat, foi informado oque mais temíamos… CentOS 9 nunca vera a luz do dia, e o CentOS 8 estava com os dias contados…&lt;/p&gt;

&lt;p&gt;O criador original do CentOS (Gregory M. Kurtzer) não gostou muito do anuncio nem do caminho que seu projeto tomou, e decidiu apostar novamente na comunidade com um novo fork do RHEL, chamado Rocky Linux.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mas e o Zabbix?
&lt;/h3&gt;

&lt;p&gt;Normalmente, oque mais vemos em tutoriais, artigos, etc… é o Zabbix sendo instalado em maquinas CentOS. E agora?&lt;br&gt;&lt;br&gt;
Relaxa… que tá safe!&lt;/p&gt;

&lt;p&gt;Baixei a imagem do Rocky Linux 8 e montei um ambiente Zabbix 5.0 com MySQL e Apache, assim como teria feito em um CentOS 8 (de acordo com o próprio passo a passo disponibilizado pelo Zabbix).&lt;/p&gt;

&lt;p&gt;“Ai Mike, mas nunca instalei o Zabbix em um CentOS 8”&lt;/p&gt;

&lt;p&gt;Então continua lendo, que vou te ensinar agora…&lt;/p&gt;

&lt;p&gt;Bem, primeiramente, baixamos a release que temos a intenção de usar. Nesse caso, vamos baixar a 5.0, já que é uma release LTS e seria o mais próximo de algo que você usaria em sua empresa.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Primeiramente baixe a ISO e monte sua VM de acordo com o tamanho do ambiente a ser monitorado. &lt;a href="https://rockylinux.org/download" rel="noopener noreferrer"&gt;https://rockylinux.org/download&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A instalação é exatamente a mesma que a do CentOS 8.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instale o repositorio utilizado pelo Zabbix&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  rpm -Uvh &lt;a href="https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm" rel="noopener noreferrer"&gt;https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm&lt;/a&gt;
&lt;/h1&gt;
&lt;h1&gt;
  
  
  dnf clean all
&lt;/h1&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Instale o Zabbix Server, Front end, Agent&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent
&lt;/h1&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Instale o MySQL&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  rpm -ivh &lt;a href="https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm" rel="noopener noreferrer"&gt;https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm&lt;/a&gt;
&lt;/h1&gt;
&lt;h1&gt;
  
  
  yum install mysql-server
&lt;/h1&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Inicie e habilite o MySQL&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  systemctl start mysqld
&lt;/h1&gt;
&lt;h1&gt;
  
  
  systemctl enable mysqld
&lt;/h1&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nesse caso, o usuário root do banco vem sem senha. Aconselho alterar depois de finalizar o processo todo rs&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Crie o banco inicial do Zabbix (LEMBRE, NÃO TEM SENHA)&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  mysql -uroot -p
&lt;/h1&gt;

&lt;p&gt;password&lt;br&gt;&lt;br&gt;
mysql&amp;gt; create database zabbix character set utf8 collate utf8_bin;&lt;br&gt;&lt;br&gt;
mysql&amp;gt; create user zabbix@localhost identified by ‘password’;&lt;br&gt;&lt;br&gt;
mysql&amp;gt; grant all privileges on zabbix.* to zabbix@localhost;&lt;br&gt;&lt;br&gt;
mysql&amp;gt; quit;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;No servidor, importe o schema do banco&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p zabbix
&lt;/h1&gt;
&lt;/blockquote&gt;

&lt;p&gt;** Muita gente se embola AQUI… o -p no fim do comando, esta indicando o BANCO zabbix, criado ali encima… E não a senha do usuário zabbix criado. Nesse caso, indico FORTEMENTE a usar usuarios e senhas diferentes do tutorial, pra não sofrer com essas confusões.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Edite o arquivo conf do seu Zabbix Server /etc/zabbix/zabbix_server.conf&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;DBName=zabbix&lt;/p&gt;

&lt;p&gt;DBUser=zabbix&lt;/p&gt;

&lt;p&gt;DBPassword=zabbix&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Configurar o PHP do Front End /etc/php-fpm.d/zabbix.conf&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;; php_value[date.timezone] = Europe/Riga&lt;/p&gt;

&lt;p&gt;para&lt;/p&gt;

&lt;p&gt;php_value[date.timezone] = America/Sao_Paulo&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;** Outro ponto importante, é que precisa estar exatamente como mencionei, caso não saiba exatamente qual usar, olhe aqui: &lt;a href="https://www.php.net/manual/pt_BR/timezones.america.php" rel="noopener noreferrer"&gt;https://www.php.net/manual/pt_BR/timezones.america.php&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inicie e habilite os serviços do Zabbix&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;h1&gt;
  
  
  systemctl restart zabbix-server zabbix-agent httpd php-fpm
&lt;/h1&gt;
&lt;h1&gt;
  
  
  systemctl enable zabbix-server zabbix-agent httpd php-fpm
&lt;/h1&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Você vai entrar no seu navegador e digitar&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://server_ip_or_name/zabbix" rel="noopener noreferrer"&gt;http:// &lt;strong&gt;server_ip_or_name&lt;/strong&gt; /zabbix&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Preencher tudo que você criou lá encima e Voilà!!!&lt;/p&gt;

&lt;p&gt;Nosso Zabbix esta vivooooo !!!!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7jgb2uvrhn8pdykc1nv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7jgb2uvrhn8pdykc1nv.png" width="620" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Qualquer problema na criação do seu Zabbix, ou até mesmo com o Rocky Linux. Comente aqui embaixo, ou me chama no LinkedIn. Vou ter o maior prazer em bater um papo contigo!!&lt;/p&gt;

</description>
      <category>zabbix</category>
      <category>rockylinux</category>
      <category>monitoring</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Pimp my Zabbix</title>
      <dc:creator>Mike Fortes</dc:creator>
      <pubDate>Fri, 18 Jun 2021 18:25:48 +0000</pubDate>
      <link>https://dev.to/mromeiro-f/pimp-my-zabbix-28dl</link>
      <guid>https://dev.to/mromeiro-f/pimp-my-zabbix-28dl</guid>
      <description>&lt;h4&gt;
  
  
  Então você gostou do meu ultimo post e decidiu criar vários itens de 1 segundo e agora seu banco de dados ta daquele jeito…
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk4a8hs7a7236pq7qlrui.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk4a8hs7a7236pq7qlrui.jpeg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bem, espero realmente que você não tenha criado milhares de itens a 1 segundo por aí rs.&lt;/p&gt;

&lt;p&gt;Mas caso tenha criado, seu ambiente está preparado pra uma carga tão grande de trabalho? Não digo somente em questões de hardware, mas você já deu uma olhada na documentação ou testou alguma configuração interessante pra ter uma alta performance em seu ambiente, independente do tamanho que ele possui?&lt;/p&gt;

&lt;p&gt;Vou listar aqui alguns itens que creio ser fundamentais pra ter um ambiente extremamente performático com aquele cheirinho de carro novo.&lt;/p&gt;

&lt;p&gt;Bem vindos ao PIMP MY Zabbix ! 😎&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9f6oc2m1o35khncdfg3h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9f6oc2m1o35khncdfg3h.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Hardware
&lt;/h3&gt;

&lt;p&gt;Blá Blá Blá Se você, assim como eu, trabalha para alguma empresa, utilizamos o melhor que nos é disponibilizado/ofertado… Disco/CPU/Memorias…&lt;/p&gt;

&lt;p&gt;Único ponto interessante aqui é: Crie um ambiente onde tudo esteja “apartado”, ou seja, tenha hardware para 3 maquinas (Front, Banco, Server)&lt;/p&gt;

&lt;h3&gt;
  
  
  Sistema Operacional
&lt;/h3&gt;

&lt;p&gt;Aqui vai do seu &lt;strong&gt;gosto&lt;/strong&gt; e do seu &lt;strong&gt;bolso&lt;/strong&gt;. Gosto muito de usar o CentOS, e caso tenha verba, um RedHat por exemplo…&lt;/p&gt;

&lt;p&gt;Mas o ponto crucial aqui é: Usar um sistema operacional ESTÁVEL. Nada de ficar fuçando no kernel, removendo ou instalando funcionalidades não nativas. Lembre-se que é um servidor e não seu desktop gamer rs&lt;/p&gt;

&lt;p&gt;Obs: Estou falando de remover/instalar terceiros… otimizar parâmetros do kernel é comum em todo ambiente de alta performance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Zabbix Server
&lt;/h3&gt;

&lt;p&gt;Aqui vão alguns caras que são interessantes ficar de olho no valor que eles possuem e se é possível alterar algo para um possível ganho de performance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;StartPollers: Quanto menor esse valor, melhor. Infelizmente o valor é baseado na quantia de itens você monitora, sua fila de checagem, etc… Mas lembre-se que cada poller, será um novo processo trabalhando em paralelo com os demais, utilizando recursos da sua máquina.&lt;/li&gt;
&lt;li&gt;Debug Level: Use o 3, já te traz muita informação. O 4 fará seu arquivo de log crescer MUITO e não traz tanta ajuda quanto pensa.&lt;/li&gt;
&lt;li&gt;Zabbix Proxy: Como o amigo &lt;a href="https://medium.com/u/14784e7fec2c" rel="noopener noreferrer"&gt;Peterson Basso&lt;/a&gt; mencionou no último post, coloque o proxy pra trabalhar pra você, pré-processamentos por exemplo, são feitos diretamente pelo proxy, enviando o valor “puro” para que o Zabbix server não precise gastar processamento com isso.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Banco de dados
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Antes mesmo de importar o schema do Zabbix, SEMPRE use a documentação de tunning do banco de dados que você for usar, seja MySQL, PostgreSQL… Faz muita diferença, e se não fizer, vai lembrar disso no futuro.&lt;/li&gt;
&lt;li&gt;Se usar MySQL ou outro banco que tenha essa tecnologia, use sempre InnoDB ao invés do MyISAM.&lt;/li&gt;
&lt;li&gt;Como falei nesse &lt;a href="https://dev.to/mikefortes/otimizando-seu-banco--2bki-temp-slug-9092001"&gt;post&lt;/a&gt;, periodicamente otimize seu banco. Coloca aí na sua agenda todo dia 1 e agenda um horário de manutenção com sua equipe.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9qxei33l64ie0r3h3gql.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9qxei33l64ie0r3h3gql.png" width="407" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Essa dica é a mais “complicada” porém uma das mais efetivas (junto com a anterior). Todos sabemos que algumas tabelas são mais pesadas que outras, como a history_str, history_log, itens… Então a dica é: mantenha esses caras “pesados” em diferentes discos.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Dicas gerais
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Priorize! Otimize intervalos de coleta de itens importantes e aumente o intervalo de outros. Quanto mais curto o intervalo mais bonito fica o gráfico, isso é fato! Porém, sua performance vai pro lixo. Sendo assim, não utilize NADA padrão da ferramenta, sempre a customize em seu favor.&lt;/li&gt;
&lt;li&gt;Seja direto quanto aos itens monitorados, não faz sentido monitorar hostname 3 vezes, porque o item está em 3 templates diferentes…&lt;/li&gt;
&lt;li&gt;Não crie gatilhos que envolvam grandes intervalos de tempo, e se você acha que isso não acontece… acredite, tem louco pra tudo.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>database</category>
      <category>tunning</category>
      <category>monitoring</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Monitoramento de 1 segundo? Temos !</title>
      <dc:creator>Mike Fortes</dc:creator>
      <pubDate>Wed, 09 Jun 2021 12:17:43 +0000</pubDate>
      <link>https://dev.to/mromeiro-f/monitoramento-de-1-segundo-temos--1d65</link>
      <guid>https://dev.to/mromeiro-f/monitoramento-de-1-segundo-temos--1d65</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frp4vnvzx0jgef7kdijab.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frp4vnvzx0jgef7kdijab.jpeg" width="778" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Então seu cliente desenvolve uma aplicação nota 11 na escala Richter e diz que se ela espirrar ele precisa ficar sabendo, caso contrário a raça humana será extinta ¯_(ツ)_/¯&lt;/p&gt;

&lt;p&gt;Você pensa em explicar qual seria o impacto negativo de se criar um monitoramento com intervalos tão curtos… até que você lembra do milagroso “Throttling”.&lt;/p&gt;

&lt;p&gt;Não se lembra do “Throttling”? Então continua essa leitura que vou te mostrar do que ele é capaz.&lt;/p&gt;

&lt;p&gt;Na versão 4.2, junto com outras opções de pré-processamento, foi lançado o Throttling.&lt;/p&gt;

&lt;p&gt;Sendo mais claro, seu funcionamento consiste em trabalhar com “descarte” de valores. Isso somado a uma coleta de 1 segundo (por exemplo) faz você se tornar o Thanos do monitoramento.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnlk5gzxy6cwhvxywv94j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnlk5gzxy6cwhvxywv94j.png" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E não sou eu quem estou falando, olha ai na documentação dizendo: “Zabbix God tools”.&lt;/p&gt;

&lt;p&gt;Link da documentação abaixo:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.zabbix.com/documentation/4.2/manual/config/items/item" rel="noopener noreferrer"&gt;Zabbix Documentation 5.4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Normalmente, se você alterar a coleta para 1 segundo, você teria valores assim:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;1; 2; 3; 3; 3; 3; 5; 2; 1; 2 …&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Com o pré-processamento, sempre que a coleta receber um valor igual ao valor anterior, ele descarta aquele valor, ou seja, não será escrito em banco, e o mantém até que um novo valor ocorra. Dessa forma, o exemplo acima ficaria gravado como:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;1; 2; 3;;;;5;2;1;2…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Vamos criar um item na prática pra explicar melhor essa dádiva dos deuses.&lt;/p&gt;

&lt;p&gt;Criei um item, alterei seu tempo de coleta para 1 segundo e em pré-processamento criei uma regra de Throttling.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhcagngbvfes8v4wd31gq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhcagngbvfes8v4wd31gq.png" width="739" height="249"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4pmg1h7xpccf13afr1b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4pmg1h7xpccf13afr1b.png" width="800" height="99"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Existem duas opções, a “Discard Unchanged” e a “Discard Unchanged with heartbeat”. Observe os valores coletados no item acima:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqvw8qj0ocqtkwd5yd46i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqvw8qj0ocqtkwd5yd46i.png" width="198" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Exemplo configurado com 30sec&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A imagem acima se trata da opção “Discard Unchanged with heartbeat” que faz o descarte dos valores somente após o tempo que estipulamos em sua configuração (em segundos). Podendo ser usado nesse campo LLD-macros e macros comuns.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi7pko8nfjbkfn3h1yetz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi7pko8nfjbkfn3h1yetz.png" width="200" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Já esta outra opção “Discard Unchanged”, como podemos ver, sempre que o valor se mantém ele o descarta até que o próximo seja diferente.&lt;/p&gt;

&lt;p&gt;IMPORTANTE: Caso o valor seja descartado, ele não é salvo no banco de dados, sendo assim o Zabbix Server não saberá da existência dele no futuro. Tenha isso em mente caso em algum momento queira criar triggers que se baseiam em valor/tempo, pois sua trigger pode não disparar/resolver corretamente.&lt;/p&gt;

</description>
      <category>monitoring</category>
      <category>graph</category>
      <category>datavisualization</category>
      <category>zabbix</category>
    </item>
    <item>
      <title>Comandos no Shell do Windows</title>
      <dc:creator>Mike Fortes</dc:creator>
      <pubDate>Mon, 17 May 2021 21:08:26 +0000</pubDate>
      <link>https://dev.to/mromeiro-f/comandos-no-shell-do-windows-17fn</link>
      <guid>https://dev.to/mromeiro-f/comandos-no-shell-do-windows-17fn</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk3jktm2dzsg4njt23wud.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk3jktm2dzsg4njt23wud.png" alt="Windows Shell" width="550" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Algumas várias vezes um analista surge com uma ideia mirabolante de monitoramento, e isso é bom… sério… mas vamos combinar… MEU DEUS rs Testes que mais parecem robôs, contadores complexos, querys duvidosas, etc…&lt;br&gt;&lt;br&gt;
Onde trabalho, grande parte da solução é Windows, e muitas vezes os analistas são bem focados em sistemas operacional… Pedem monitoramentos de tamanho de pasta, quantia de arquivos com mesmo nome em um diretório, tempo limite de um diretório sem novos arquivos… coisa do tipo.&lt;/p&gt;

&lt;p&gt;Nesse caso, utilizando o Zabbix, quase sempre faço esses monitoramentos criando itens que executam comandos remotos dentro do Shell do Windows. Vou listar aqui alguns que mais utilizo.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Contador de arquivos em um diretório&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Muitas vezes preciso saber se existem (e quantos existem) arquivos de logs, de backups, ligações gravadas, coisas do tipo, precisando sempre estar atento a quantos itens tem em determinado diretório para saber se tudo esta correndo bem.&lt;/p&gt;

&lt;p&gt;Nesse caso, crio um item (exemplo abaixo) informando que:&lt;/p&gt;

&lt;p&gt;O tipo é “Agent Zabbix (Ativo)”, ou seja, o parâmetro de “Active Server” dentro do agent precisa estar configurado com o endereço do seu Zabbix Server (ou Proxy). Lembrando que como vamos rodar um comando remoto, o parâmetro de comando remoto dentro do agent também precisa estar como “1”&lt;/p&gt;

&lt;p&gt;Na chave, o comando responsável por executar comandos no Shell é o “system.run”. Após informar a key, informamos o caminho do diretório: dir “G:\NotImported” /b /a | find /c /v “”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frwjwjl83laa0n4rne6yj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frwjwjl83laa0n4rne6yj.png" width="681" height="175"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O item foi configurado para ser checado a cada 24h, então olha que interessante o retorno que eu tenho. Limpo e claro, trazendo a quantia exata de quantos arquivos tenho dentro daquele diretório.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F83h25x33gs26fx9rxcp2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F83h25x33gs26fx9rxcp2.png" width="176" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Contador de arquivos do mesmo nome&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A utilização desse método é quase o mesmo que o anterior, porém em alguns momentos, o diretório usado possui outros diretórios ou arquivos que você não quer na sua contagem.&lt;/p&gt;

&lt;p&gt;Dessa forma, o comando utilizado continua sendo o “system.run”. E a key, informamos o caminho do diretório: dir “G:\NotImported” /b /a-d | find /c /v “img” .&lt;/p&gt;

&lt;p&gt;Dentro dos “” eu inseri a palavra img por exemplo, dessa forma, todo arquivo que conter o termo img será listado.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tamanho usado de um diretório específico
&lt;/h3&gt;

&lt;p&gt;Sabe aquela chave que mais amamos para capturar utilização de um diretório? Sim, o dito cujo vfs.fs.size. Mesmo a questão se tratando de um diretório especifico e não de um disco, essa chave também funciona perfeitamente.&lt;/p&gt;

&lt;p&gt;Por exemplo, ao invés de utilizar o vfs.fs.size[G:,used], podemos utilizar o vfs.fs.size[G:\InputFromClient,used].&lt;/p&gt;

&lt;p&gt;Esses são itens criados no meu dia a dia, então da mesma forma que um dia procurei sobre, espero que caso você esteja procurando algo desse tipo pra utilizar em seu projeto, trabalho, etc… que seja de grande utilidade!&lt;/p&gt;

&lt;p&gt;Caso tenham alguma dúvida, dica, conselho, etc… Me chama no meu Linked-in, vamos bater um papo.&lt;/p&gt;

</description>
      <category>monitoring</category>
      <category>shell</category>
      <category>zabbix</category>
      <category>windows</category>
    </item>
    <item>
      <title>Otimizando seu banco !</title>
      <dc:creator>Mike Fortes</dc:creator>
      <pubDate>Tue, 22 Dec 2020 18:49:26 +0000</pubDate>
      <link>https://dev.to/mromeiro-f/otimizando-seu-banco--5gjc</link>
      <guid>https://dev.to/mromeiro-f/otimizando-seu-banco--5gjc</guid>
      <description>&lt;h3&gt;
  
  
  Otimizando seu banco !
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fonp1gkp70au3577sbgyh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fonp1gkp70au3577sbgyh.png" width="771" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Essa semana dei atenção a um problema que estava postergando a bastante tempo aqui onde trabalho, o MySQL.&lt;/p&gt;

&lt;p&gt;Desde o inicio atestei que o ambiente estava crescendo de forma desordenada, e o banco estava uma bagunça, porem não tinha conhecimentos tão aprofundados em MySQL para manipular suas tabelas com segurança, ou efetuar qualquer tipo de procedimento sem medo de corromper tudo e perder o emprego (rs);&lt;/p&gt;

&lt;p&gt;Fiz algumas pesquisas, e vi que como o Zabbix efetua muitas consultas de DELETE, o principal problema de crescimento, pode ser corrigido com alguns comandos simples.&lt;/p&gt;

&lt;p&gt;Importante, aconselho utilizar os comandos abaixo apenas com seu Zabbix parado.&lt;/p&gt;

&lt;h3&gt;
  
  
  Check Table
&lt;/h3&gt;

&lt;p&gt;Primeiramente o mais importante creio que seja verificar a saúde do seu banco ao todo. Com o “check table” você pode verificar erros e inconsistências nas tabelas;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fj2r5mh7xnt8pzqibcy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3fj2r5mh7xnt8pzqibcy.png" width="387" height="116"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Repair Table
&lt;/h3&gt;

&lt;p&gt;Se o comando anterior detectar erros, é necessário utilizar o repair table;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fypy8dtyd1tyy7rma0bxb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fypy8dtyd1tyy7rma0bxb.png" width="447" height="123"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Optimize Table
&lt;/h3&gt;

&lt;p&gt;Normalmente o Zabbix efetua muitas operações de exclusão, deixando assim os registros desordenados. Com o optimize table, ele vai desfragmentar e liberar algum espaço da sua tabela.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc15g1l7etkhzk3hw5ina.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc15g1l7etkhzk3hw5ina.png" width="800" height="114"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mas e como saber disso pode me ajudar?&lt;br&gt;&lt;br&gt;
Bem, o Zabbix é um monstro em leitura/escrita dentro do MySQL, sendo assim, sempre tem tabelas que podem ter espaço sendo desperdiçado, aguardando um optimize… a pergunta é, como saber quais tabelas posso fazer isso?&lt;/p&gt;

&lt;p&gt;Ao logar no MySQL, selecione o banco utilizado pelo zabbix, e rode o comando abaixo:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;SELECT TABLE_NAME, ROUND((DATA_LENGTH + INDEX_LENGTH)/1024/1024) AS USED_SPACE_MB, ROUND(DATA_FREE/1024/1024) AS UNUSED_SPACE_MB FROM INFORMATION_SCHEMA.TABLES WHERE ROUND(DATA_FREE/1024/1024) &amp;gt; 100 ORDER BY UNUSED_SPACE_MB DESC;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ele vai mostrar todas as tabelas com mais de 100MB sem uso, prontas para seu deleite (rs). Depois é só dar um “optimize table ___ ;” e ver seu disco sendo liberado.&lt;/p&gt;

</description>
      <category>mysql</category>
      <category>tipsandtricks</category>
      <category>zabbixbr</category>
      <category>zabbix</category>
    </item>
    <item>
      <title>Saltos duplos</title>
      <dc:creator>Mike Fortes</dc:creator>
      <pubDate>Tue, 13 Oct 2020 16:53:13 +0000</pubDate>
      <link>https://dev.to/mromeiro-f/saltos-duplos-1n16</link>
      <guid>https://dev.to/mromeiro-f/saltos-duplos-1n16</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fftak9mkn7t4cojd3amby.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fftak9mkn7t4cojd3amby.png" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Creio que todos temos aquele arquivo .conf de estimação, que guardamos com carinho e usamos sempre que temos liberdade, seja para o Zabbix-Server, Proxy ou Agent. E ontem me deparei com um problema que sua solução me fez adicionar uma ou duas linhas no meu arquivo, e queria compartilhar essa dica por aqui.&lt;/p&gt;

&lt;p&gt;Como a grande maioria dos meus clientes são bancos ou financeiras, tenho muitos problemas em questão de liberações internas para que meu proxy alcance redes distintas para validar uma disponibilidade de host ou serviço, visto que para todo tipo de alteração é necessário todo uma burocracia com RDM’s e envolvimento de diversas áreas envolvendo redes, segurança da informação, firewalls de terceiro e etc…&lt;/p&gt;

&lt;p&gt;Então nasceu a necessidade de validar a disponibilidade de um link sip para 3 hosts específicos de dentro da rede do cliente.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp368y6plkisr36b9eu05.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp368y6plkisr36b9eu05.png" width="659" height="396"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Representação&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;O link SIP é enxergado pelos hosts, mas não pelo proxy… e agora?&lt;/p&gt;

&lt;p&gt;Para verificar a disponibilidade desse link sip, crio um item como se fosse um “ping extendido”. E para isso, utilizo o marametro “UserParameter”.&lt;/p&gt;

&lt;p&gt;Dentro do arquivo de .conf do agent, encontramos o UserParameter e o UnsafeUserParameters.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fap0ankgx4zyc8g3glivs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fap0ankgx4zyc8g3glivs.png" width="668" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para criar o item mencionado, eu adicionei o seguinte texto no meu “UserParameters”&lt;/p&gt;

&lt;p&gt;&lt;em&gt;UserParameter=customping[*],ping -n 2 -w 1 -4 $1 &amp;gt;nul &amp;amp;&amp;amp; echo 1 || echo 0&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Como podemos ver, criei a chave “customping[*]” no parâmetro, sendo assim, dentro do host, você deve criar um item “Zabbix agent — Ativo” com a chave customping[*], com o IP destino no lugar do *. Como o parâmetro possui caracteres especiais, habilito também o UnsafeUserParameters para que não tenha problemas na checagem.&lt;/p&gt;

&lt;p&gt;Dessa forma, o valor retornado sera 1 para UP e 0 para Down, sendo assim pode ser usado o “Service State” no mapeamento de valores.&lt;/p&gt;

&lt;p&gt;Qualquer duvida sobre a criação do monitoramento, estou sempre a disposição. Até mais !!!&lt;/p&gt;

</description>
      <category>monitoring</category>
      <category>zabbix</category>
      <category>zabbixagent</category>
      <category>monitoramento</category>
    </item>
    <item>
      <title>Extração de dados em massa</title>
      <dc:creator>Mike Fortes</dc:creator>
      <pubDate>Fri, 24 Apr 2020 15:29:26 +0000</pubDate>
      <link>https://dev.to/mromeiro-f/extracao-de-dados-em-massa-3o65</link>
      <guid>https://dev.to/mromeiro-f/extracao-de-dados-em-massa-3o65</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdukpfbwemrocs8bmeffw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdukpfbwemrocs8bmeffw.png" width="800" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alguma vez ja te pediram uma quantia absurda de dados e você ficou na duvida de como faria isso?&lt;/p&gt;

&lt;p&gt;Podem existir varias formas criativas de se fazer isso, mas por exemplo, coletando dados a cada 30 segundos de um item, um mes de dados coletados pode ser algo meio dificil de se retirar da ferramenta de forma “utilizavel” para se utilizar em uma reunião ou apresentação a um cliente.&lt;/p&gt;

&lt;p&gt;Procurando por uma solução, encontrei um script alterado, que mesmo nas mais atuais versões, ele continua funcionando, diferente do script base, que parece ter sido abandonado pelos desenvolvedores.&lt;br&gt;&lt;br&gt;
O cara se chama monitoring_data_to_csv (link no fim do post), que por meio de um script feito em python consegue coletar os dados e registra-los em CSV (oque ja ajuda muito não é mesmo?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj0nmwzx43z3nu4dklh92.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj0nmwzx43z3nu4dklh92.jpeg" width="668" height="636"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ./fetch_monitoring_data_to_csv.py -s 192.168.xxx.xxx -n 192.168.xxx.xxx -u 'usuario' -p 'senha' -k 'chave do item' -t1 'data inicio' -t2 'data final' -v 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ps: Por algum motivo bizarro, as vezes ao executar ele não finaliza, então deve-se tentar executar novamente… parece gambiarra, mas acredite, funcione rs.&lt;/p&gt;

&lt;p&gt;Creio que muita gente ja conheça, mas acho que possa acabar ajudando se alguem procura uma luz e não tem tanto tempo pra ficar garimpando github’s a fora ou posts em outros idiomas.&lt;/p&gt;

&lt;p&gt;Editado: recentemente alterei o script para que fosse mais efetivo e corrigi alguns bugs, então abaixo segue o mesmo em meu github.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Punkays/ZBX-Automations" rel="noopener noreferrer"&gt;https://github.com/Punkays/ZBX-Automations&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>data</category>
      <category>zabbix</category>
    </item>
  </channel>
</rss>
