Monitoring MS-SQL Cluster

Met Zabbix is het vrij eenvoudig om Windows Services to monitoren en daar m.b.v. een Action een Alert via Email uit te laten komen bij een verstoring van deze service(s). Zo ook voor Nodes in een MS-SQL Cluster omgeving. Echter, op het moment dat één van de cluster-nodes passief is, zullen de resources zoals SQL-Services en disks niet actief zijn en dus altijd een trigger doen afgaan in Zabbix. Voor een cluster moeten we dat dus anders aanpakken…

Via de website van Zabbix kunnen we een SQL-Template downloaden en deze Importeren in Zabbix via ‘Configuration -> Templates‘ en dan rechtsboven ‘Import‘.

De volgende stap is om de SQL-Cluster als Host toe te voegen aan Zabbix, ‘Configuration -> Hosts‘ en dan rechtsboven ‘Create host‘.

zcls01

In ons geval is de cluster CL-SQL01 die we in een nieuwe group plaatsen genaamd ‘SQL Cluster’. Voor de Agent Interface gebruiken we de DNS naam van de cluster maar dat mag ook het IP adres zijn. Save om de host op te slaan.

In het tabblad Templates linken we de ge-importeerde template m.b.v. ‘Add‘… Save

zcls02

Via tabblad Inventory kunnen kenmerken aan de host toegevoegd worden. Save.

zcls03

Windows Zabbix Agent

De volgende stap bestaat uit het installeren van de Zabbix Agent op elke node van de cluster. De Zabbix Agent kan via de website van Zabbix gedownload worden. Wij hebben de servers SQL01 en SQL02 als nodes in onze cluster dus daarop installeren we de Zabbix Agent. In een (grote) productie-omgeving met veel Windows Servers kan dit beter met behulp van een Group Policy gedaan worden.

Voor wat betreft het monitoren van Windows OS (met de Zabbix server ‘Template OS Windows’) hebben deze servers een standaard installatie van de Zabbix Agent en daarmee is er reeds een service hiervoor aanwezig. Om de specifieke SQL-Cluster zaken te kunnen monitoren, gaan we een tweede Zabbix service installeren:

De volgende bestanden hebben we nodig voor de cluster monitoring:

  • zabbix_agentd.conf
  • zabbix_agentd.exe

Deze plaatsen we in een folder genaamd C:\zabbix\cluster

We gaan nu eerst het bestand zabbix_agentd.conf aanpassen met de volgende regels:

LogFile=c:\zabbix\cluster\zabbix_agentd.log
Server=192.168.178.138
ListenIP=192.168.178.140
ServerActive=192.168.178.138
Hostname=CL-SQL01.digitalinfo.local

waarbij Server en ServerActive het IP adres is van de Zabbix server en ListenIP het ip adres van de SQL-Cluster. Hostname is de naam van de host die we in Zabbix toegevoegd hebben in de eerdere stappen. Save het bestand!

Met een ‘Command Prompt (Admin)’ geven we het volgende commando:

sc create "ZABBIX Agent (ClusterGroup1)" binpath= "C:\Zabbix\cluster\zabbix_agentd.exe --config c:\zabbix\cluster\zabbix_agentd.conf" DisplayName= "ZABBIX Agent (ClusterGroup1)"

Start de Services Manager en controleer dat er twee Zabbix Agents geïnstalleerd zijn. Zet de nieuwe Cluster Zabbix Agent op handmatig starten (Manual).

zcls04

MS Failover Cluster Manager

We gaan via de Failover Cluster Manager de ‘SQL-Server-Role‘ aanpassen om de Zabbix Agent service te starten. Hiermee wordt de Zabbix Agent service alleen gestart op de node die actief is voor de SQL-Server en we zodanig de items kunnen monitoren die binnen MS-SQL actief zijn.

Via de reeds bestaande role ‘SQL Server‘ rechtsklik op de role en ‘Add Resource‘ kiezen we voor ‘Generic Service‘ en selecteer dan de ‘ZABBIX Agent (ClusterGroup 1)‘ als service.

zcls06

Deze komt dan onder Resources zichtbaar bij Roles. Rechtsklik voor de Eigenschappen en controleer of bij ‘Dependencies’ de ‘SQL IP Address’ resource staat. Zoniet, voeg deze dan toe. Met rechtsklik kan de Zabbix Agent Online gezet worden.

zcls07

Na enige tijd zal Zabbix server gegevens van de Zabbix Agent hebben ontvangen en via Monitoring -> Latest Data kunnen dit controleren:

zcls08

Door de Template worden tevens Graphs, Items en Triggers op de host aangemaakt. De Graphs kunnen we vervolgens in een Screen plaatsen.

zcls09