Discovery Azure SQL
Este plugin de Discovery de Azure SQL para Pandora FMS está diseñado para automatizar la monitorización de bases de datos Azure SQL Database dentro de una suscripción de Azure. El plugin descubre servidores SQL y bases de datos, consulta métricas mediante Azure Monitor y genera agentes y módulos en Pandora FMS.
- Introducción
- Prerrequisitos
- Parámetros
- Crear Service Principal
- Requisitos
- Ejecución manual
- Discovery
- Agentes y módulos generados
Introducción
El plugin Azure SQL Discovery permite descubrir servidores y bases de datos de Azure SQL Database, consultar su estado y sus métricas mediante Azure Resource Manager y Azure Monitor, y crear agentes y módulos en Pandora FMS sin establecer una conexión SQL directa. Admite filtros múltiples y puede crear un agente por base de datos o consolidar los módulos en un agente existente. Si se necesitan consultas SQL personalizadas contra el motor de base de datos, se debe utilizar el plugin Discovery de MSSQL, diseñado para conectarse directamente al servidor y ejecutar consultas SQL.
Prerrequisitos
- El plugin se distribuye como un binario compilado dentro del paquete
.disco, por lo que no requiere instalar Python ni librerías adicionales en el servidor donde se ejecute. - Es necesario disponer de una suscripción de Azure con bases de datos Azure SQL Database.
- Es necesario disponer de credenciales de Azure mediante un Service Principal con permisos de lectura sobre la suscripción o sobre el grupo de recursos que se quiera monitorizar.
- El Service Principal debe poder listar servidores SQL, listar bases de datos y consultar métricas de Azure Monitor.
- En la tarea de Discovery se debe seleccionar un grupo de agentes válido. El grupo
Allno es válido para crear agentes o módulos con este plugin.
Parámetros
| Parámetro | Descripción |
|---|---|
--conf, -c |
Ruta del fichero de configuración. |
--credentials |
Credencial de Azure codificada en Base64. |
--tenant-id |
Identificador del tenant de Azure. |
--subscription-id |
Identificador de la suscripción de Azure. |
--client-id |
Identificador de aplicación del Service Principal. |
--client-secret |
Secreto del Service Principal. |
--api-endpoint |
Endpoint de Azure Resource Manager. |
--login-endpoint |
Endpoint de autenticación de Azure. |
--resource-group |
Filtro exacto de grupos de recursos. Admite valores separados por ;. |
--server-name |
Filtro exacto de servidores SQL. Admite valores separados por ;. |
--database-name |
Filtro exacto de bases de datos. Admite valores separados por ;. |
--agent-per-database |
Activa la creación de un agente por base de datos. |
--target-agent |
Agente de destino del modo consolidado. |
--agent-autodisable |
Activa el modo de autodeshabilitado del agente. |
--agent-prefix |
Prefijo opcional para los agentes. |
--module-prefix |
Prefijo opcional para los módulos. |
--interval |
Intervalo de los agentes en segundos. |
--group-id |
Identificador del grupo de agentes. Debe ser mayor que 0. |
--timeout |
Timeout HTTP en segundos. El mínimo aplicado es 30. |
--scan-databases |
Activa el descubrimiento de bases de datos. |
--entities-list |
Ruta del fichero de entidades. |
--enable-entities-interval |
Activa la reconstrucción periódica del fichero de entidades. |
--entities-interval |
Intervalo de reconstrucción del fichero de entidades. |
--skip-master-database |
Omite la base de datos master. |
--performance-metrics-enabled |
Activa los módulos de rendimiento. |
--storage-metrics-enabled |
Activa los módulos de almacenamiento. |
--connection-metrics-enabled |
Activa los módulos de conexiones. |
--tempdb-xtp-metrics-enabled |
Activa los módulos de TempDB y XTP. |
--deadlock-metrics-enabled |
Activa el módulo de deadlocks. |
--debug |
Muestra las excepciones completas. |
Crear Service Principal
Desde Azure CLI se puede crear un Service Principal con rol Reader sobre una suscripción:
az ad sp create-for-rbac \
--name pandora-azure-sql-discovery \
--role Reader \
--scopes /subscriptions/<SUBSCRIPTION_ID>
La salida devolverá valores similares a estos:
{
"appId": "<CLIENT_ID>",
"displayName": "pandora-azure-sql-discovery",
"password": "<CLIENT_SECRET>",
"tenant": "<TENANT_ID>"
}
La correspondencia con los campos del plugin es:
tenant -> Tenant ID
appId -> Client ID
password -> Client secret
subscription -> Subscription ID
Requisitos
Para que el plugin pueda descubrir bases de datos Azure SQL y consultar sus métricas, se recomienda utilizar un Service Principal con permisos de lectura.
El plugin necesita permisos para:
- Listar recursos
Microsoft.Sql/servers. - Listar bases de datos
Microsoft.Sql/servers/databases. - Leer propiedades básicas de las bases de datos, como estado, edición, SKU y tamaño máximo.
- Consultar métricas de Azure Monitor asociadas a cada base de datos.
En la mayoría de entornos el rol Reader sobre la suscripción o sobre el grupo de recursos será suficiente. Si se limita el permiso a un único grupo de recursos, se recomienda configurar también el campo Resource group en la tarea de Discovery.
Ejecución manual
Las credenciales pueden indicarse directamente en el fichero de configuración durante una ejecución manual. Los filtros son opcionales y admiten varios valores exactos separados por ;.
[CONF]
tenant_id=11111111-1111-1111-1111-111111111111
subscription_id=00000000-0000-0000-0000-000000000000
client_id=22222222-2222-2222-2222-222222222222
client_secret=my_client_secret
resource_group=rg-production;rg-development
server_name=sql-production;sql-development
database_name=appdb;billing
agent_per_database=1
agent_autodisable=0
interval=300
group_id=10
timeout=30
entities_list=/tmp/tmp_discovery.azure_sql.entities
enable_entities_interval=0
entities_interval=86400
skip_master_database=1
performance_metrics_enabled=1
storage_metrics_enabled=1
connection_metrics_enabled=1
tempdb_xtp_metrics_enabled=1
deadlock_metrics_enabled=1
./pandora_azure_sql --conf /etc/pandora/azure_sql.conf
El plugin devuelve JSON con los campos summary y monitoring_data.
Discovery
Paso Azure credentials
- Azure credentials: credencial obligatoria del almacén de credenciales de Pandora FMS. El selector muestra entradas de tipo Azure.
-
API endpoint: endpoint opcional. Está vacío por defecto y el plugin usa
https://management.azure.com. -
Login endpoint: endpoint opcional. Está vacío por defecto y el plugin usa
https://login.microsoftonline.com.
Paso SQL discovery
-
Resource group: filtro exacto opcional. Permite varios valores separados por
;y está vacío por defecto. -
SQL server name: filtro exacto opcional. Permite varios valores separados por
;y está vacío por defecto. -
Database name: filtro exacto opcional. Permite varios valores separados por
;y está vacío por defecto. - Create agent per database: crea un agente por cada base de datos. Está activado por defecto.
-
Target agent: agente usado cuando Create agent per database está desactivado. Su valor por defecto es
Azure SQL. - Agent autodisable mode: asigna el modo de autodeshabilitado a los agentes creados. Está desactivado por defecto.
- Agent prefix: prefijo opcional para los agentes. Está vacío por defecto.
- Module prefix: prefijo opcional para los módulos. Está vacío por defecto.
- Enable entities file re-scan interval: activa la reconstrucción periódica del fichero de entidades. Está desactivado por defecto.
-
Re-scan entities file interval: solo aparece al activar el campo anterior. Su valor por defecto es un día,
86400segundos. -
Skip master database: omite la base de datos
master. Está activado por defecto.
Paso Modules
- Performance modules: crea CPU, DTU, lectura física, escritura de log, sesiones y workers. Está activado por defecto.
- Storage modules: crea espacio usado, porcentaje de uso y espacio asignado. Está activado por defecto.
- Connection modules: crea conexiones correctas, fallidas y bloqueadas por firewall. Está activado por defecto.
- Tempdb and XTP modules: crea tamaños de TempDB, porcentaje de log usado y almacenamiento XTP. Está activado por defecto.
- Deadlock modules: crea el módulo de deadlocks. Está activado por defecto.
Agentes y módulos generados
Con Create agent per database activo, cada base de datos genera un agente con el formato [Agent prefix]Azure SQL <servidor>/<base de datos>. En modo consolidado, todos los módulos se envían a Target agent y sus nombres incluyen el servidor y la base de datos. Agent autodisable mode genera los agentes con agent_mode igual a 2; si está desactivado, se utiliza 1.
Los filtros son exactos, no expresiones regulares, y se comparan sin distinguir mayúsculas y minúsculas. Los valores múltiples se separan por ;.
El fichero de entidades conserva recursos descubiertos anteriormente. Una entidad almacenada que deja de aparecer se contabiliza en resources_vanished y genera únicamente Azure SQL Connection con valor 0. Cuando vence el intervalo de re-scan, la caché se reconstruye sin comparar con las entidades anteriores.
Módulos creados siempre
| Módulo | Tipo | Unidad | Descripción |
|---|---|---|---|
Azure SQL Connection |
generic_proc |
Vale 1 para una base descubierta y 0 para una entidad desaparecida. |
|
Database online |
generic_proc |
Vale 1 cuando el estado es Online o Ready; en caso contrario vale 0. |
Performance modules
| Módulo | Tipo | Unidad | Agregación |
|---|---|---|---|
CPU percent |
generic_data |
% |
Average |
DTU consumption percent |
generic_data |
% |
Average |
Physical data read percent |
generic_data |
% |
Average |
Log write percent |
generic_data |
% |
Average |
Sessions percent |
generic_data |
% |
Average |
Workers percent |
generic_data |
% |
Average |
Storage modules
| Módulo | Tipo | Unidad | Agregación |
|---|---|---|---|
Data space used GB |
generic_data |
GB |
Average |
Data space used percent |
generic_data |
% |
Average |
Data space allocated GB |
generic_data |
GB |
Average |
Connection modules
| Módulo | Tipo | Unidad | Agregación |
|---|---|---|---|
Successful connections |
generic_data |
Count |
Total |
Failed connections |
generic_data |
Count |
Total |
Blocked by firewall connections |
generic_data |
Count |
Total |
Tempdb and XTP modules
| Módulo | Tipo | Unidad | Agregación |
|---|---|---|---|
Tempdb data size MB |
generic_data |
MB |
Average |
Tempdb log size MB |
generic_data |
MB |
Average |
Tempdb log used percent |
generic_data |
% |
Average |
XTP storage percent |
generic_data |
% |
Average |
Deadlock modules
| Módulo | Tipo | Unidad | Agregación |
|---|---|---|---|
Deadlocks |
generic_data |
Count |
Total |