How to monitor MS DFSR Replication Queue with Zabbix
Olá, meu nome é Diego Luisi e no artigo de hoje demonstrarei como monitorar fila de replicação do DFS entre servidores windows usando o Zabbix.
Edite o arquivo zabbix_agentd.conf e insira as seguintes linhas
Timeout=30
UnsafeUserParameters=1
UserParameter=dfs_queue[*], "C:Zabbixdfs_queue.bat" $1,$2,$3,$4
Salve, saia e reinicie o serviço do zabbix_agent.
Agora crie um novo arquivo "c:zabbixdfs_queue.bat" e insira o seguinte conteúdo:
@echo off
@del C:zabbixlista.txt
@dfsrdiag backlog /rgname:%3 /rfname:%4 /sendingmember:%1 /receivingmember:%2 > C:zabbixlista.txt
@for /F "delims=" %%a in (‘findstr Membro C:zabbixlista.txt’) do set var=%%a
@set var1=%var:~67,75%
@IF "%var1%" EQU "~67,75" (
echo 0
)
@IF "%var1%" GTR "0" (
echo %var1%
)
Agora crie um arquivo chamado "Template_DFSR-QUEUE.xml" e cole o seguinte conteúdo:
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>2.0</version>
<date>2014-05-13T03:34:18Z</date>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<templates>
<template>
<template>Template_DFSR-QUEUE</template>
<name>Template_DFSR-QUEUE</name>
<groups>
<group>
<name>Templates</name>
</group>
</groups>
<applications>
<application>
<name>DSFR</name>
</application>
</applications>
<items>
<item>
<name>DFS Queue {$RECIVE} x {$SEND}</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>dfs_queue["{$RECIVE}","{$SEND}","{$RFNAME}","{$RGNAME}"]</key>
<delay>180</delay>
<history>90</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>50/1-7,00:00-24:00</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>DSFR</name>
</application>
</applications>
<valuemap/>
</item>
<item>
<name>DFS Queue {$SEND} x {$RECIVE}</name>
<type>0</type>
<snmp_community/>
<multiplier>0</multiplier>
<snmp_oid/>
<key>dfs_queue["{$SEND}","{$RECIVE}","{$RFNAME}","{$RGNAME}"]</key>
<delay>180</delay>
<history>90</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>50/1-7,00:00-24:00</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>DSFR</name>
</application>
</applications>
<valuemap/>
</item>
</items>
<discovery_rules/>
<macros/>
<templates/>
<screens/>
</template>
</templates>
<triggers>
<trigger>
<expression>{Template_DFSR-QUEUE:dfs_queue["{$RECIVE}","{$SEND}","{$RFNAME}","{$RGNAME}"].last()}>100</expression>
<name>DFS Fila alta de {$RECIVE} para {$SEND} é {ITEM.LASTVALUE}</name>
<url/>
<status>0</status>
<priority>4</priority>
<description>Fila alta no DFSR</description>
<type>0</type>
<dependencies/>
</trigger>
<trigger>
<expression>{Template_DFSR-QUEUE:dfs_queue["{$SEND}","{$RECIVE}","{$RFNAME}","{$RGNAME}"].last()}>100</expression>
<name>DFS Fila alta de {$SEND} para {$RECIVE} é {ITEM.LASTVALUE}</name>
<url/>
<status>0</status>
<priority>4</priority>
<description>Fila alta no DFSR</description>
<type>0</type>
<dependencies/>
</trigger>
</triggers>
<graphs>
<graph>
<name>DFS Queue Monitor</name>
<width>900</width>
<height>200</height>
<yaxismin>0.0000</yaxismin>
<yaxismax>100.0000</yaxismax>
<show_work_period>1</show_work_period>
<show_triggers>1</show_triggers>
<type>0</type>
<show_legend>1</show_legend>
<show_3d>0</show_3d>
<percent_left>0.0000</percent_left>
<percent_right>0.0000</percent_right>
<ymin_type_1>0</ymin_type_1>
<ymax_type_1>0</ymax_type_1>
<ymin_item_1>0</ymin_item_1>
<ymax_item_1>0</ymax_item_1>
<graph_items>
<graph_item>
<sortorder>0</sortorder>
<drawtype>0</drawtype>
<color>C80000</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template_DFSR-QUEUE</host>
<key>dfs_queue["{$SEND}","{$RECIVE}","{$RFNAME}","{$RGNAME}"]</key>
</item>
</graph_item>
<graph_item>
<sortorder>1</sortorder>
<drawtype>0</drawtype>
<color>00C800</color>
<yaxisside>0</yaxisside>
<calc_fnc>2</calc_fnc>
<type>0</type>
<item>
<host>Template_DFSR-QUEUE</host>
<key>dfs_queue["{$RECIVE}","{$SEND}","{$RFNAME}","{$RGNAME}"]</key>
</item>
</graph_item>
</graph_items>
</graph>
</graphs>
</zabbix_export>
Importe esse template do zabbix e associe aos servidores que deseja monitorar.
Crie as seguintes macros:
Ola amigo,
Tentei fazer o importe porém deu erro na versão 2.2.0. Fiz os itens na mão e tudo ok, porém essa macro final não seria no template criado ou você coloca em casa host que cria?
Abs
Olá amigo, tudo bem?
Correto as macros estão no template porem voce precisa mapear os valores em cada host.
Vou postar uma explicação mais detalhada dos valores.
Obrigado e volte sempre!
Ola,
Amigo, tem algo errado no script em bat!
Ele so me traz a informação:
[ERROR] Replication group not found Err: -2147217406 (0x80041002)
Operation Failed
Porém se eu executo o comando manualmente tudo funciona na boa!
As keys no meu template eu montei da seguinte forma:
DFS Queue {$RECIVE} x {$SEND}
dfs_queue[“{$RECIVE}”,”{$SEND}”,”{$RFNAME}”,”{$RGNAME}”]
DFS Queue {$SEND} x {$RECIVE}
dfs_queue[“{$SEND}”,”{$RECIVE}”,”{$RFNAME}”,”{$RGNAME}”]
Outra duvida é, que tipo de type você utilizou? Log ou Text?
Desculpe, porém como a sua versão do Zabbix pe diferente da minha eu tive que fazer um template e os itens do zero, porém o seu me deu uma boa ajuda!
Abs