Monitorando CIFS com Zabbix

Tenho usado o Zabbix como ferramenta de monitoramento a bastante tempo. Além da excelência da própria ferramenta, o que sempre me surpreende positivamente é o suporte da comunidade e a diversidade de soluções encontradas. Não foi diferente desta vez!

Precisei fazer o monitoramento de pontos de montagem CIFS de um cliente (na real achei que eram NFS!). Comecei a pesquisar por soluções que detectasse os pontos de montagem para que eu não precisasse adicioná-los.

Neste artigo [1] do blog Infradev – DevOps & Monitoring encontrei uma excelente solução para o meu problema, no entanto, era para NFS (usarei para necessidades futuras!). Com algumas pequenas adaptações, trouxe a solução para a minha necessidade (CIFS).

A seguir descrevo as modificações, bem como o template que eu criei, baseado na solução original [1].

As modificações não diferem muito da solução original, mas deixo aqui para facilitar a reimplementação da mesma e para minhas consultas futuras.

1. Criar o arquivo /etc/zabbix/zabbix_agentd.d/cifs.conf com o seguinte conteúdo:

UserParameter=cifs.discovery,/bin/mount -l -t cifs | /bin/awk 'BEGIN { FS=OFS=" "; ORS = ""; print "{\42data\42:["; } { print "{\42{#CIFSMOUNT}\42: \42" $3 "\42}" } END { print "]}"; }' | /bin/sed "s^}{^},{^g"
UserParameter=cifs.verify.mount[*],/bin/mountpoint -q '$1' && echo 1 || echo 0

2. Alterar o arquivo de configuração do agente (zabbix_agentd.conf) no computador que será monitorado, adicionando a seguinte linha (caso já não esteja incluída e descomentada):

Include=/etc/zabbix/zabbix_agentd.conf.d/

3. Reiniciar o agente

4. Importar o template abaixo (salve em um arquivo e importe-o) no Zabbix

<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
 <version>2.0</version>
 <date>2017-06-28T12:31:06Z</date>
 <groups>
 <group>
 <name>Templates</name>
 </group>
 </groups>
 <templates>
 <template>
 <template>Template CIFS Linux</template>
 <name>Template CIFS Linux</name>
 <groups>
 <group>
 <name>Templates</name>
 </group>
 </groups>
 <applications>
 <application>
 <name>Network filesystems</name>
 </application>
 </applications>
 <items/>
 <discovery_rules>
 <discovery_rule>
 <name>CIFS Discovery</name>
 <type>0</type>
 <snmp_community/>
 <snmp_oid/>
 <key>cifs.discovery</key>
 <delay>3600</delay>
 <status>0</status>
 <allowed_hosts/>
 <snmpv3_contextname/>
 <snmpv3_securityname/>
 <snmpv3_securitylevel>0</snmpv3_securitylevel>
 <snmpv3_authprotocol>0</snmpv3_authprotocol>
 <snmpv3_authpassphrase/>
 <snmpv3_privprotocol>0</snmpv3_privprotocol>
 <snmpv3_privpassphrase/>
 <delay_flex/>
 <params/>
 <ipmi_sensor/>
 <authtype>0</authtype>
 <username/>
 <password/>
 <publickey/>
 <privatekey/>
 <port/>
 <filter>:</filter>
 <lifetime>30</lifetime>
 <description/>
 <item_prototypes>
 <item_prototype>
 <name>CIFS Mount: {#CIFSMOUNT}</name>
 <type>0</type>
 <snmp_community/>
 <multiplier>0</multiplier>
 <snmp_oid/>
 <key>cifs.verify.mount[{#CIFSMOUNT}]</key>
 <delay>3600</delay>
 <history>7</history>
 <trends>365</trends>
 <status>0</status>
 <value_type>3</value_type>
 <allowed_hosts/>
 <units/>
 <delta>0</delta>
 <snmpv3_contextname/>
 <snmpv3_securityname/>
 <snmpv3_securitylevel>0</snmpv3_securitylevel>
 <snmpv3_authprotocol>0</snmpv3_authprotocol>
 <snmpv3_authpassphrase/>
 <snmpv3_privprotocol>0</snmpv3_privprotocol>
 <snmpv3_privpassphrase/>
 <formula>1</formula>
 <delay_flex/>
 <params/>
 <ipmi_sensor/>
 <data_type>0</data_type>
 <authtype>0</authtype>
 <username/>
 <password/>
 <publickey/>
 <privatekey/>
 <port/>
 <description/>
 <inventory_link>0</inventory_link>
 <applications>
 <application>
 <name>Network filesystems</name>
 </application>
 </applications>
 <valuemap/>
 </item_prototype>
 </item_prototypes>
 <trigger_prototypes>
 <trigger_prototype>
 <expression>{Template CIFS Linux:cifs.verify.mount[{#CIFSMOUNT}].last()}=0</expression>
 <name>CIFS is Unmounted: {#CIFSMOUNT}</name>
 <url/>
 <status>0</status>
 <priority>0</priority>
 <description/>
 <type>0</type>
 </trigger_prototype>
 </trigger_prototypes>
 <graph_prototypes/>
 <host_prototypes/>
 </discovery_rule>
 </discovery_rules>
 <macros/>
 <templates/>
 <screens/>
 </template>
 </templates>
</zabbix_export>

5. Relacione o template aos hosts desejados.

Diferente da solução original, eu monitoro/computo estatísticas do CIFS. Somente descubro pontos de montagem e monitoro se os mesmos estão montados.

Referências:

[1] Monitorar NFS pelo Zabbixhttp://blog.infradev.com.br/monitorar-nfs-pelo-zabbix/

Anúncios

No comments yet

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: