SAP HANA Database
Plugin para monitorizar una base de datos de sap hana , mediante consultas personalizadas
- Introducción
- Matriz de compatibilidad
- Pre requisitos
- Parámetros
- Ejecución manual
- Configuración en PandoraFMS
- Módulos generados por el plugin
Introducción
Ver. 28-06-2022
Plugin para monitorizar una base de datos de SAP Hana , mediante consultas personalizadas.
Matriz de compatibilidad
Sistemas donde se ha probado |
CentOS 7 |
Sistemas donde debería funcionar |
Cualquier sistema linux |
Versión de SAP donde se ha probado |
2.00.059 |
Sistemas donde debería funcionar |
Cualquier versión |
Pre requisitos
- Tener el Data Server de Pandora FMS habilitado
- Tener el Plugin Server de Pandora FMS habilitado
Parámetros
Parámetro | Descripción |
--ip | IP o host de la base de datos(obligatorio) |
--user | Nombre del user de SAP Hana(obligatorio) |
--password | Password de SAP Hana (obligatorio) |
--port | Puerto de la base de datos. Para las bases de datos tenant HANA, utilice el número de puerto 3**NN**13 (donde NN es el número de instancia SAP, por ejemplo, 30013). Para las bases de datos del sistema HANA en un sistema multitenant, el número de puerto es 3**NN**13. Para las bases de datos del sistema HANA en single-tenant, el número de puerto es 3**NN**15. |
--tentacle_port | Puerto de tentacle.Por defecto 41121 (opcional) |
--tentacle_address | Ip del servidor tentacle al que mandar los datos (opcional) |
--agent_name | Para ponerle un nombre al agente que contendrá los módulos de las custom querys, por defecto : "Sap_Hana" (opcional). |
--prefix_module | Para ponerle un prefijo a los módulos por si se quieren diferenciar de otras ejecuciones.(opcional) |
--conf | Path del archivo conf con las querys (obligatorio) |
-g,--group | Grupo de destino de Pandora FMS (opcional) |
--data_dir | Directorio de datos de Pandora FMS. Por defecto es /var/spool/pandora/data_in/ (opcional) |
--as_agent_plugin | Es opcional, si quieres que el plugin sea de agente y te meta los módulos en el agente de pandora, ejecuta esto con un 1 (opcional) |
Pandora_hana.conf
En este archivo se introducirán las consultas SQL personalizadas que se ejecutaran en la base de datos SAP Hana que crearán módulos en PandoraFMS.
El formato para añadir las querys es el siguiente:
nombre_modulo:query:tipo:descripción
* La descripción no es obligatoria, si no se introduce se quedará vacía.
Ejemplo:
Backups_Size:SELECT SUM(allocated_page_size) FROM M_CONVERTER_STATISTICS;:generic_data:Estimated backup size
Timestamp:SELECT CURRENT_TIMESTAMP FROM DUMMY;:generic_data_string:Current timestamp
Hana_version:SELECT VERSION FROM M_DATABASE;:generic_data_string:version
Data_disk_information:SELECT HOST,PORT,FILE_NAME,STATE,SIZE,MAX_SIZE FROM M_DATA_VOLUMES:generic_data_string:Retrieve Hana disk info
Hana_service_statics:SELECT SERVICE_NAME, DATABASE_NAME, REQUESTS_PER_SEC, RESPONSE_TIME FROM SYS_DATABASES.M_SERVICE_STATISTICS:generic_data_string:Retrieve Hana Requests per second
Hana_cpu_time:SELECT HOST,PORT,SERVICE_NAME, SUM(CPU_TIME_SELF),SUM(CPU_TIME_CUMULATIVE) FROM M_SERVICE_THREADS GROUP BY HOST,PORT,SERVICE_NAME:generic_data_string:Retrieve Hana cpu usage
Hana_rs_fragmentation:SELECT HOST, PORT, TO_DECIMAL(SUM(FREE_SIZE) * 100 / SUM(ALLOCATED_SIZE),10,2), TO_DECIMAL( SUM(FREE_SIZE)/(1024*1024), 10, 2), TO_DECIMAL( SUM(ALLOCATED_SIZE)/(1024*1024), 10, 2) FROM M_RS_MEMORY WHERE CATEGORY = 'TABLE' OR CATEGORY = 'CATALOG' GROUP BY HOST, PORT:generic_data_string:Retrieve Hana row store fragmentation
Hana_license:SELECT VALID, PERMANENT, PRODUCT_LIMIT, PRODUCT_USAGE FROM M_LICENSE;:generic_data_string:Retrieve license usage
Hana_IO_Stats:SELECT HOST,PORT,TYPE, TO_DECIMAL((TOTAL_READ_SIZE * 1.048576 / (TOTAL_READ_TIME+1)),10,2), TO_DECIMAL((TOTAL_WRITE_SIZE * 1.048576 / (TOTAL_WRITE_TIME+1)),10,2) FROM M_VOLUME_IO_TOTAL_STATISTICS:generic_data_string:Retrieve IO bandwidth
Hana_get_stated_connections:SELECT COUNT(*) FROM PUBLIC.M_CONNECTIONS WHERE CONNECTION_STATUS ='RUNNING':generic_data:retrieve connection status
Hana_Memory:SELECT HOST, round ( 100 * INSTANCE_TOTAL_MEMORY_USED_SIZE / INSTANCE_TOTAL_MEMORY_ALLOCATED_SIZE, 2), round (INSTANCE_TOTAL_MEMORY_ALLOCATED_SIZE / 1024/1024/1024, 2), round (INSTANCE_TOTAL_MEMORY_USED_SIZE / 1024/1024/1024, 2) from M_HOST_RESOURCE_UTILIZATION:generic_data_string:retrieve memory usages
Hana_Transactions:SELECT count(*) FROM M_BLOCKED_TRANSACTIONS;:generic_data:retrieve SAP transaction status
Check_norunning_backups:select * from SYS.M_BACKUP_CATALOG where STATE_NAME = 'running':generic_data_string:Check to make sure there are no running backups still
Backup_id_running_backup:select BACKUP_ID from SYS.M_BACKUP_CATALOG where entry_type_name = 'complete data backup' and state_name = 'running' order by sys_start_time desc:generic_data_string:Query to find BACKUP_ID of running data backup
Ejecución manual
Con una ejecución con "as_agent_plugin" en 1 podremos ver el xml por terminal.
./pandora_hana --ip <host o ip> --port <puerto base de datos> --user <usuario de la base de datos> --password <contraseña de la base de datos> --conf <ruta del archivo conf> --as_agent_plugin 1
Sin el parámetro "as_agent_plugin" se nos mostrará un 1 que indicará la correcta ejecución del plugin:
./pandora_hana --ip <host o ip> --port <puerto base de datos> --user <usuario de la base de datos> --password <contraseña de la base de datos> --conf <ruta del archivo conf> --data_dir <ruta donde se guardaran los .data>
Configuración en PandoraFMS
Instalación manual
Iremos a servidores > plugins:
Pinchamos en añadir:
Le ponemos en nombre y la descripción que se prefiera:
Metemos como comando la ejecución con la ruta del plugin:
/path_pandora_hana
Recuerda que la ruta recomendada para el uso de los plugins de servidor es: /usr/share/pandora_server/util/plugin/
Y en parámetros del plugin introduciremos estos seguidos de la macro "_field<N>_", los obligatorios para que el plugin funcione son --ip,--port,--user,--password y --conf.
Aunque no es obligatorio, es muy recomendable el uso del parámetro --agent_name , ya que nos permite personalizar el nombre del agente que contendrá los módulos creados para cada consulta personalizada. También es recomendable usar el parámetro --prefix_module ya que este nos permitirá asignar un prefijo a los módulos, lo que puede ser util para reconocerlos más rápido y diferenciarlos si creamos varias ejecuciones para bases de datos diferentes.
--IP
--PORT
--USER
--PASSWORD
--CONF
--AGENT_NAME
Una vez hecho esto, daremos a "crear".
Una vez hecho esto, solo queda llamarlo por lo que iremos a la vista de algún agente y crearemos un módulo de complementos:
Le daremos un nombre y en el apartado "plugin" pondremos el que acabamos de configurar.
Una vez hecho esto, damos a crear.
Si el modulo se muestra con 1, quiere decir que se esta ejecutando correctamente
Módulos generados por el plugin
El plugin creará un agente con el nombre que le hayamos puesto con el parámetro "--agent_name" si no se usa este parámetro se quedara con "Sap Hana" por defecto:
En este agente se crearán un módulo por cada consulta personalizada especificada en pandora_hana.conf, con el nombre que le hayamos asignado a cada modulo en cada una de las consultas personalizadas.
Por ejemplo el siguiente conf:
Backups_Size:SELECT SUM(allocated_page_size) FROM M_CONVERTER_STATISTICS;:generic_data:Estimated backup size
Timestamp:SELECT CURRENT_TIMESTAMP FROM DUMMY;:generic_data_string:Current timestamp
Hana_version:SELECT VERSION FROM M_DATABASE;:generic_data_string:version
Data_disk_information:SELECT HOST,PORT,FILE_NAME,STATE,SIZE,MAX_SIZE FROM M_DATA_VOLUMES:generic_data_string:Retrieve Hana disk info
Hana_service_statics:SELECT SERVICE_NAME, DATABASE_NAME, REQUESTS_PER_SEC, RESPONSE_TIME FROM SYS_DATABASES.M_SERVICE_STATISTICS:generic_data_string:Retrieve Hana Requests per second
Hana_cpu_time:SELECT HOST,PORT,SERVICE_NAME, SUM(CPU_TIME_SELF),SUM(CPU_TIME_CUMULATIVE) FROM M_SERVICE_THREADS GROUP BY HOST,PORT,SERVICE_NAME:generic_data_string:Retrieve Hana cpu usage
Hana_rs_fragmentation:SELECT HOST, PORT, TO_DECIMAL(SUM(FREE_SIZE) * 100 / SUM(ALLOCATED_SIZE),10,2), TO_DECIMAL( SUM(FREE_SIZE)/(1024*1024), 10, 2), TO_DECIMAL( SUM(ALLOCATED_SIZE)/(1024*1024), 10, 2) FROM M_RS_MEMORY WHERE CATEGORY = 'TABLE' OR CATEGORY = 'CATALOG' GROUP BY HOST, PORT:generic_data_string:Retrieve Hana row store fragmentation
Hana_license:SELECT VALID, PERMANENT, PRODUCT_LIMIT, PRODUCT_USAGE FROM M_LICENSE;:generic_data_string:Retrieve license usage
Hana_IO_Stats:SELECT HOST,PORT,TYPE, TO_DECIMAL((TOTAL_READ_SIZE * 1.048576 / (TOTAL_READ_TIME+1)),10,2), TO_DECIMAL((TOTAL_WRITE_SIZE * 1.048576 / (TOTAL_WRITE_TIME+1)),10,2) FROM M_VOLUME_IO_TOTAL_STATISTICS:generic_data_string:Retrieve IO bandwidth
Hana_get_stated_connections:SELECT COUNT(*) FROM PUBLIC.M_CONNECTIONS WHERE CONNECTION_STATUS ='RUNNING':generic_data:retrieve connection status
Hana_Memory:SELECT HOST, round ( 100 * INSTANCE_TOTAL_MEMORY_USED_SIZE / INSTANCE_TOTAL_MEMORY_ALLOCATED_SIZE, 2), round (INSTANCE_TOTAL_MEMORY_ALLOCATED_SIZE / 1024/1024/1024, 2), round (INSTANCE_TOTAL_MEMORY_USED_SIZE / 1024/1024/1024, 2) from M_HOST_RESOURCE_UTILIZATION:generic_data_string:retrieve memory usages
Hana_Transactions:SELECT count(*) FROM M_BLOCKED_TRANSACTIONS;:generic_data:retrieve SAP transaction status
Check_norunning_backups:select * from SYS.M_BACKUP_CATALOG where STATE_NAME = 'running':generic_data_string:Check to make sure there are no running backups still
Backup_id_running_backup:select BACKUP_ID from SYS.M_BACKUP_CATALOG where entry_type_name = 'complete data backup' and state_name = 'running' order by sys_start_time desc:generic_data_string:Query to find BACKUP_ID of running data backup.
Creará los siguientes módulos:
Backups_Size | Estimated backup size |
Timestamp | Current timestamp |
Hana_version | version Sap hana |
Data_disk_information | Retrieve Hana disk info |
Hana_service_statics | Retrieve Hana Requests per second |
Hana_cpu_time | Retrieve Hana cpu usage |
Hana_rs_fragmentation | Retrieve Hana row store fragmentation |
Hana_license | Retrieve license usage |
Hana_IO_Stats | Retrieve IO bandwidth |
Hana_get_stated_connections | retrieve connection status |
Hana_Memory | retrieve memory usages |
Hana_Transactions | retrieve SAP transaction status |
Check_norunning_backups | Check to make sure there are no running backups still |
Backup_id_running_backup | Query to find BACKUP_ID of running data backup |