# AWS RDS # Introducción **Este plugin tiene como finalidad monitorizar intancias RDS y regiones de AWS**, mediante métricas claves referentes al CPU, redes, IOPs y discos que son esenciales para llevar un control y seguimiento de estas máquinas y para garantizar un rendimiento óptimo, solucionar problemas, planificar el escalado, cumplir con los SLAs y mejorar la seguridad. El plugin se conecta al API de AWS y monitoriza zonas e instancias mediante las métricas anteriormente mencionadas, generando un agente para cada zona e instancia via XML que envía al servidor de pandora. # Matriz de compatibilidad
**Sistemas donde se ha probado**Rocky linux, Fedora 34
**Sistemas donde funciona**Cualquier sistema linux
# Prerrequisitos - Conectividad a la API de AWS El plugin es un binario que contiene las dependias empaquetadas por lo que no es necesaria la instalación de ningún tipo de dependencia para su uso. - Permisos
Para hacer las solicitudes a través de la api, la cuenta utilizada para autenticar en la ejecución requiere de unos determinados permisos.
Asignación de permisos Cree una política en JSON como la siguiente: ``` { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "rds:DescribeDBInstances", "cloudwatch:Get*", ], "Resource": "*" } ] } ``` Se debe de asignar la política anterior a un usuario nuevo.
[![image-1687445953019.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/scaled-1680-/image-1687445953019.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/image-1687445953019.png)
# Parámetros y configuración **Parámetros**
--confRuta al archivo de configuración
**Archivo de configuración (--conf)** ``` agents_group_name = < Nombre del grupo de destino para los agentes creados > interval = < Intervalo en segundos para los agentes y para el analisis de métricas > threads = < Número de hilos de ejecución, cada zona/instancia se repartirá equitativamente en el número de hilos > transfer_mode = < Modo de transferencia, tentacle o local > tentacle_ip = < IP de la máquina destino para los agentes creados > tentacle_port = < Puerto de tentacle, por defecto : 41121 > tentacle_opts = < Opciones adicionales de tentacle client > data_dir = < (Solo se activa si el transfer_mode es local) Ruta de destino para los XML de cada agente, por defecto "/var/spool/pandora/data_in/" > advance_monitoring = < Activar con 1 para habilitar la monitorización generalizada (estos módulos solo se crearán en los agentes de las instancias que esten en ejecución) > cpu_summary = < Activar con 1 para habilitar la monitorización del CPU > iops_summary = < Activar con 1 para habilitar la monitorización IOPS > disk_summary = < Activar con 1 para habilitar la monitorización de discos > network_summary = < Activar con 1 para habilitar la monitorización de redes > stats_agent = < Activar con 1 para habilitar un agente global que monitorizará en base a la tarea creada y los parámetros utilizados > stats_agent_name = < Nombre para el agente que se activa con el parámetro "stats_agent". Si no utiliza y "stats_agent" esta habilitado, el agente se llamará "Aws.rds" por defecto > aws_regions = < Lista con las regiones a monitorizar (cuando se marca una región para monitorizar, automaticamente monitoriza todos los buckets que encuentre dentro de esa región) > aws_instances = < Lista con el id de las instancias rds a monitorizar > creds_b64 = < Credenciales en base64 del archivo JSON para autenticar > ``` Ejemplo ``` agents_group_name = "aws" interval = 300 threads = 4 transfer_mode = tentacle tentacle_ip = 172.42.42.101 tentacle_port = 41121 data_dir = /var/spool/pandora/data_in/ advance_monitoring = 1 cpu_summary = 1 iops_summary = 1 disk_summary = 1 network_summary = 1 stats_agent = 1 stats_agent_name = "Rds" aws_instances = ["database-1","database-2"] aws_regions = ["us-east-1","ap-northeast-1","ap-southeast-1"] creds_b64 = ewdhBDJDdvb2tleV9pZGdhjDNDHDhbdjdKKDNDbdBiwKInNlY3JldFSHSHHDGJCJChfDHCNCNHCdjdghDMDBGBkxlSLiIKfQ== ``` # Ejecución manual El formato de la ejecución del plugin es el siguiente: ```shell ./pandora_aws_rds --conf < ruta al fichero de configuración > ``` Por ejemplo: ```shell ./pandora_aws_ec2 --conf /usr/share/pandora_server/util/plugin/aws_rds.conf ``` La ejecución devolverá una salida en formato JSON con información sobre la ejecución, y generará un fichero XML para cada agente monitorizado que enviará al servidor de Pandora FMS por el método de transferencia indicado en la configuración. Por ejemplo: ```JSON {"summary": {"Total agents": 5, "Zones agents": 6, "Instances agents": 18}} ``` # Discovery Este plugin puede integrarse con el *Discovery* de Pandora FMS. Para ello se debe cargar el paquete ".disco" que puede descargar desde la librería de Pandora FMS: [https://pandorafms.com/library/](https://pandorafms.com/library/) [![image-1687944725901.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/scaled-1680-/image-1687944725901.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/image-1687944725901.png) Una vez cargado, se podrán monitorizar entornos de Amazon RDS creando tareas de *Discovery* desde la sección *Management > Discovery > Cloud*. [![image-1687944806299.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/scaled-1680-/image-1687944806299.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/image-1687944806299.png) Para cada tarea se solicitarán los siguientes datos mínimos: - **AWS Credentials**: Credenciales de conexión al API de AWS a usar por la tarea. Se deben registrar previamente en el almacén de credenciales de Pandora FMS. - **Max threads**: Para optimizar el tiempo de ejecución, se podrán configurar múltiples hilos para monitorizar los agentes de la tarea. Hay que tener en cuenta que configurar múltiples hilos puede aumentar el uso de CPU de la tarea. - **Tentacle IP**: IP del servidor de Tentacle al que enviar los datos de los agentes. Normalmente este parámetro no se modificará. - **Tentacle port**: Puerto del servidor de Tentacle al que enviar los datos. Normalmente este parámetro no se modificará. - **Tentacle extra options**: Opciones adicionales para el envio de datos mediante el cliente de Tentacle. Normalmente este parámetro no se modificará. - **Add global stats agent**: Si se activa se generará un agente global con estadísticas de la tarea. - **Stats agent name**: Permitirá indicar el nombre del agente para estadísticas globales de la tarea. Si no se indica un nombre, se usará el nombre por defecto del plugin. [![image-1687787846261.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/scaled-1680-/image-1687787846261.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/image-1687787846261.png) Si las credenciales proporcionadas son correctas y el servidor de Pandora FMS es capaz de conectar con el API de AWS, se podrá ver un árbol con las zonas e instancias de AWS RDS, las cuales se podrán marcar para su monitorización. Si se selecciona una zona se monitorizarán, además de la propia zona, todas las instancias que contenga (tanto en el momento de configurar la tarea como en adelante si se incluyen nuevas instancias). Si se seleccionan instancias específicas se monitorizarán independientemente de que no se hayan seleccionado sus zonas. [![image-1687787872807.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/scaled-1680-/image-1687787872807.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/image-1687787872807.png) A continuación se podrá ajustar la monitorización que se desee obtener para cada agente: - **Scan and general monitoring**: Si se activa se habilitará la tarea para obtener la monitorización adicional para los agentes, descrita en los siguientes campos. - **Cpu performance summary**: Si se activa se incluirán los módulos de rendimiento de CPU a la monitorización. - **IOPs performance summary**: Si se activa se incluirán los módulos de rendimiento de IOPs a la monitorización. - **Disk performance summary**: Si se activa se incluirán los módulos de rendimiento de discos a la monitorización. - **Network performance summary**: Si se activa se incluirán los módulos de rendimiento de red a la monitorización. [![image-1687787892172.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/scaled-1680-/image-1687787892172.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/image-1687787892172.png) Las tareas que se completen exitosamente dispondrán de un sumario de ejecución con la siguiente información: - **Total agents**: Número total de agentes generados por la tarea. - **Zones agents**: Número total de regiones monitorizadas por la tarea. - **Instances agents**: Número total de instancias monitorizadas por la tarea. [![image-1687787919142.png](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/scaled-1680-/image-1687787919142.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2023-06/image-1687787919142.png) Las tareas que no se completen exitosamente dispondrán de un sumario de ejecución registrando los errores producidos. # Agentes y módulos generados por el plugin La ejecución del plugin, creara los siguientes agentes y módulos: - **Agente global**
< Nombre utilizado con el parámetro "stats\_agent\_name" o en su defecto "Aws.rds" >
**Módulos**
AWS RDS Instances count
Total de instancias registradas en Aws
- **Un agente por cada región monitorizada.**
< Nombre de la región >
**Módulos**
summary.aws.rds.DBconnections
Sumario del número de conexiones de cada instancia de esta zona
summary.aws.rds.CPUUtilizationPorcentaje de CPU usado promedio de las instancias de esta zona
summary.aws.rds.CPUCreditBalance
Sumario de la cantidad de créditos de CPU obtenidos de cada instancia de esta zona
summary.aws.rds.CPUCreditUsage
Sumario de la cantidad de créditos de CPU gastados de cada instancia de esta zona
summary.aws.rds.CPUSurplusCreditBalance
Sumario de la cantidad de créditos de excedente de CPU disponibles de cada instancia de esta zona
summary.aws.rds.CPUSurplusCreditsCharged
Sumario de la cantidad de créditos de excedente de CPU utilizados de cada instancia de esta zona
summary.aws.rds.DiskReadBytesSumario de la cantidad de bytes leídos desde el disco de cada instancia de esta zona
summary.aws.rds.DiskReadOps Sumario de el número de operaciones de lectura realizadas en el disco de cada instancia de esta zona
summary.aws.rds.diskWriteBytes Sumario de la cantidad de bytes escritos en el disco de cada instancia de esta zona
summary.aws.rds.DiskWriteOps Sumario del número de operaciones de escritura realizadas en el disco de cada instancia de esta zona
summary.aws.rds.BinLogDiskUsage
Sumario de la cantidad de espacio en disco ocupado por los logs binarios de cada instancia de esta zona
summary.aws.rds.LVMReadIOPS
Sumario de la cantidad de operaciones de lectura realizadas por segundo en un sistema de almacenamiento basado en LVM de cada instancia de esta zona
summary.aws.rds.LVMWriteIOPS
Sumario de la cantidad de operaciones de escritura realizadas por segundo en un sistema de almacenamiento basado en LVM de cada instancia de esta zona
summary.aws.rds.instancesNúmero de instancias monitorizadas en esta zona
summary.aws.rds.NetworkReceiveThroughput Sumario del tráfico de red de entrada de cada instancia de esta zona
summary.aws.rds.NetworkTransmitThroughput Sumario del tráfico de red de salida de de cada instancia de esta zona
- **Un agente por cada instancia monitorizada**
< ID de la instancia >
**Módulos**
StateEstado de la máquina, en formato string
Instance State (bool)Estado de la máquina, 1 si esta corriendo, 0 de no ser este el caso
DatabaseConnectionsEl número de conexiones de red de cliente a la instancia de base de datos.
CPUUtilizationPorcentaje de uso de CPU utilizado
CPUCreditBalance
La cantidad de créditos de CPU obtenidos que una instancia ha acumulado desde que se lanzó o se inició
CPUCreditUsage
La cantidad de créditos de CPU gastados por la instancia para la utilización del CPU
CPUSurplusCreditBalance
La cantidad de créditos de excedente de CPU disponibles para una instancia de Amazon RDS
CPUSurplusCreditsCharged
La cantidad de créditos de excedente de CPU utilizados por una instancia de Amazon RDS
DiskReadBytesCantidad de bytes leídos desde el disco
DiskReadOpsEl número de operaciones de lectura realizadas en el disco
DiskWriteBytesCantidad de bytes escritos en el disco
DiskWriteOpsNúmero de operaciones de escritura realizadas en el disco
BinLogDiskUsage
La cantidad de espacio en disco ocupado por los logs binarios
LVMReadIOPS
La cantidad de operaciones de lectura realizadas por segundo en un sistema de almacenamiento basado en LVM.
LVMWriteIOPS
La cantidad de operaciones de escritura realizadas por segundo en un sistema de almacenamiento basado en LVM.
NetworkReceiveThroughput
El tráfico de red de entrada (recepción) en la instancia de base de datos
NetworkTransmitThroughput
El tráfico de red de salida (transferencia) en la instancia de base de datos