Este plugin permite monitorizar entornos de servidor sql extrayendo información mediante: la consola de powershell 2.0, una interfaz abierta para especificar colas sql y sqlps.exe. Para más información visite la siguiente pagina web: http://pandorafms.com/index.php?sec=Library&sec2=repository&lng=es&action=view_PUI&id_PUI=315
7. 5 CLASIFICACIÓN DE MÓDULOS DE AGENTES SOFTWARE GENERADOS
5.1. Verificación de estado en SQL Server
La verificación de estado de los servidores SQL se realiza mediante el plugin
Pandora_Plugin_SQL.ps1 y puede ser aplicada en la tecnología específica de SQL, de forma genérica
(en el caso de instancias locales), o añadiendo diferentes listados de instancias.
Módulos generados:
– SQL Monitoring
– CPU_Busy – InstanceName, CPU_Timetick – InstanceName
– Idle Time – InstanceName, IO_Busy – InstanceName
– Input Packets Read – InstanceName, Input Packets Sent – InstanceName
– Instance Status – InstanceName, DatabaseName Status – InstanceName
– Packet Errors – InstanceName, Total Disk R/W Errors – InstanceName
– Total Disk Reads – InstanceName, Total Disk Writes – InstanceName
– Total Login Attempts – InstanceName
Page 7
8. 5.2. Verificación de Performance Counters
La verificación de contadores de rendimiento se realiza mediante el plugin
Pandora_Plugin_PerfCounter.ps1 y puede ser aplicada en diferentes políticas para diferentes
tecnologías, cada una con diferentes listados de contadores en función de qué queramos
monitorizar de cada una de dichas tecnologías.
A continuación mostramos el listado de contadores a monitorizar en el caso de SQL Server:
– SQL Server Monitoring
– SQLServer:Access MethodsFull Scans/sec
– SQLServer:Access MethodsRange Scans/sec
– SQLServer:Access MethodsProbe Scans/sec
– SQLServer:Access MethodsScan Point Revalidations/sec
– SQLServer:Access MethodsWorkfiles Created/sec
– SQLServer:Access MethodsWorktables Created/sec
– SQLServer:Access MethodsWorktables From Cache Ratio
– SQLServer:Access MethodsForwarded Records/sec
– SQLServer:Access MethodsSkipped Ghosted Records/sec
– SQLServer:Access MethodsIndex Searches/sec
– SQLServer:Access MethodsFreeSpace Scans/sec
– SQLServer:Access MethodsFreeSpace Page Fetches/sec
– SQLServer:Access MethodsPages Allocated/sec
– SQLServer:Access MethodsExtents Allocated/sec
– SQLServer:Access MethodsMixed page allocations/sec
– SQLServer:Access MethodsExtent Deallocations/sec
– SQLServer:Access MethodsPage Deallocations/sec
– SQLServer:Access MethodsPage Splits/sec
– SQLServer:Access MethodsTable Lock Escalations/sec
– SQLServer:Access MethodsDeferred Dropped rowsets
– SQLServer:Access MethodsDropped rowset cleanups/sec
– SQLServer:Access MethodsDropped rowsets skipped/sec
– SQLServer:Access MethodsDeferred dropped AUs
– SQLServer:Access MethodsAU cleanups/sec
– SQLServer:Access MethodsAU cleanup batches/sec
– SQLServer:Access MethodsFailed AU cleanup batches/sec
– SQLServer:Access MethodsUsed tree page cookie
– SQLServer:Access MethodsFailed tree page cookie
– SQLServer:Access MethodsUsed leaf page cookie
– SQLServer:Access MethodsFailed leaf page cookie
– SQLServer:Access MethodsLobSS Provider Create Count
– SQLServer:Access MethodsLobSS Provider Destroy Count
– SQLServer:Access MethodsLobSS Provider Truncation Count
– SQLServer:Access MethodsLobHandle Create Count
– SQLServer:Access MethodsLobHandle Destroy Count
– SQLServer:Access MethodsByreference Lob Create Count
– SQLServer:Access MethodsByreference Lob Use Count
Page 8
14. 7 MONITORIZACIÓN
7.1. Monitorización via Powershell
Partiendo de la base de que ya tenemos instalado y configurado tanto Pandora como el
sistema a monitorizar, vamos a explicar como obtener información sobre el estado del
servidor SQL en general, desde actividad de los diferentes servicios así como contadores a
raiz de Powershell que mediante diferentes cmdlets se encargará de realizar
comprobaciones sobre elementos críticos de nuestros sistemas.
Para este caso instalaremos tanto un agente software de Pandora como los diferentes
plugins de agente Powershell en la máquina en cuestión.
Para hacer que el agente software de Pandora que tenemos instalado en nuestro servidor a
monitorizar ejecute dicho script, debemos editar el archivo de configuración del agente y
hacer la llamada al plugin mediante el token de configuración module_plugin.
Podemos editar el archivo de configuración del agente de Pandora desde la consola de
administración de Pandora FMS o simplemente sobreescribiendo el pandora_agent.conf
dependiendo si esta activado remote_config o no.
Introduciremos lo siguiente al final del archivo de configuración por ejemplo:
# Agent Plugins for SQL Monitoring
module_plugin "<ruta-sqlps>sqlps.exe" -command C:'<ruta-
plugin>Pandora_Plugin_SQL_v1.0.ps1' -select list -list C:'<ruta-
listado>instances.txt' 2> plugin_sql.error
module_plugin "<ruta-powershell>powershell.exe" -command C:'<ruta-
plugin>Pandora_Plugin_PerfCounter_vx.y.ps1' -list C:'<ruta-listado>counters.txt'
2> counter_plugin.error
** El plugin PerfCounter.ps1 no se incluye en el .zip pero si se encuentra disponible en el .zip correspondiente
subido al servidor con el nombre PerfCounter.
Guardamos el archivo y reiniciamos el agente de Pandora.
Hay que tener en cuenta la redirección de errores del plugin a un log de errores, sobre todo debido
al timeout de ejecución de los cmdlets cuando se tiene que procesar gran cantidad de información
en poco tiempo.
En el supuesto de que quisieramos generar un módulo por cada uno de los contadores de la
máquina, el cmdlet tendría que procesar una media de 20000 contadores de una sola vez, y ya que
hasta que no ha procesado todo el listado de contadores no muestra la información, todo el tiempo
desde que procesa la información hasta que la presenta, el cmdlet Powershell saca un mensaje de
error tras otro avisando que el contador de la lista no se ha encontrado.
Page 14
16. Un ejemplo del uso de este comando sería el siguiente:
Get-Service | Select-Object -Property *
Normalmente el resultado del cmdlet GetService sería un listado en formato tabla de todos los
servicios con su descripción y su estado. Sin embargo, al aplicarle este segundo cmdlet,
conseguimos para cada servicio información de todas las propeidades de las que dispone ese
servicio:
Name : service
RequiredServices : {service1, service2}
CanPauseAndContinue : False
CanShutdown : True
CanStop : True
DisplayName : This is a Windows Service
DependentServices : {service3}
MachineName : .
ServiceName : service
ServicesDependedOn : {service1, service2}
ServiceHandle : SafeServiceHandle
Status : Stopped
ServiceType : Win32ShareProcess
Site :
Container :
7.2. Monitorización de instancias SQL
En una arquitectura clúster activo/pasivo con instancias remotas, accesibles desde los nodos SQL
Server, es posible, haciendo uso de la consola de administración Powershell de
SQL Server, realizar chequeos de disponibilidad de dichas instancias desde estos nodos, así como
extraer información sobre el rendimiento y el estado de las bases de datos almacenadas en aquellas
instancias levantadas, desde los nodos activos del clúster.
En el caso de los nodos pasivos, la monitorización se limita a los chequeos de disponibilidad de
instancias, para indicar si dicho nodo permanece pasivo o pasa a estado activo y mientras tanto, no
intentará conectar contra las instancias ni devolverá información alguna sobre su estado.
Adicionalmente, desde el servidor de Pandora se pueden definir chequeos ICMP contra las Ips de
servicio de las instancias remotas para asegurar su conectividad.
Con este propósito se ha desarrollado un plugin Powershell al que, indicando una lista de instancias
a monitorizar buscará en la lista de servicios del nodo, por cada instancia, si el servicio SQL Server
de dicha instancia se encuentra levantado (en el caso del nodo activo) y en tal caso tratará de
establecer conexión con el combo IPnombreinstancia a la hora de recabar información sobre el
Page 16
17. estado de las BBDD alojadas en dicha instancia. Si se especifica, también extraerá el estado de todos
los servicios del nodo relacionados con SQL.
Los parámetros de este plugin son los siguientes:
-select all All local instances and services are checked (not to
be used in clusters)
-select list Instances from the list are checked
-select services All local services are checked
-list Provides a path for a list with instances to check
Usage example: .Pandora_Plugin_SQL_v1.0.ps1 -select all -list instances.txt 2>
plugin_error.log
Para el correcto funcionamiento del plugin cabe destacar que:
– El modo “select all” sólo deberá usarse en servidores SQL cuyas instancias son todas locales.
– En el caso de instancias ubicadas en servidores remotos, no se puede resolver el hostname
de la máquina donde está ubicada la instancia remota del servidor SQL, luego para conectar
con la instancia se hará mediante el combo IPnombreinstancia.
Ejemplo de instancias.txt:
10.93.6.81MSSQLSERVER
10.93.6.85ESTGCDBP008
10.93.6.86ESTGCDBP008
10.93.6.89ESTGCDBP008
En la siguiente imagen podemos apreciar como en el caso del nodo activo, el plugin recoge el
estado de cada una de las instancias definidas en nuestra lista, pero sólo establece conexión y
recaba datos adicionales de aquellas que estén levantadas y dispongamos de credenciales suficientes
para acceder al contenido de sus BBDD:
Page 17