AWS S3

Este documento describe la funcionalidad AWS S3 del discovery de PandoraFMS.

Introducción

Este plugin tiene como finalidad monitorizar buckets de AWS, mediante métricas como el número de objetos y el tamaño de estos, que pueden ayudar a llevar un mejor seguimiento de los costos y el rendimiento de las aplicaciones.

El plugin se conecta al API de AWS y monitoriza buckets mediante las métricas anteriormente mencionadas, generando un agente para cada región  vía 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

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.

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": [
  			   "s3:ListAllMyBuckets",
               "s3:GetBucketLocation"
           ],
           "Resource": "*"
       }
   ]
}

Se debe de asignar la política anterior a un usuario nuevo.

image-1687445953019.png

El usuario que cuente con estos permisos podrá acceder a la monitorización de AWS S3 a través de este plugin.

 

 

Parámetros y configuración

Parámetros

--conf Ruta 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/" >

s3_monitoring      = < Activar con 1 para habilitar monitorización de buckets generalizada >
size_monitoring    = < Activar con 1 para habilitar la monitorización del tamaño de los buckets >
items_monitoring   = < Activar con 1 para habilitar la monitorización del número de objetos de los buckets >

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" 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_buckets        = < Lista con los buckets 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/

s3_monitoring      = 1
size_monitoring    = 1
items_monitoring   = 1

stats_agent        = 1
stats_agent_name   = AwsCloud

aws_regions        = ["us-east-1","us-east-2","us-west-1","us-west-2","ca-central-1","eu-central-1","eu-west-1","eu-west-2","eu-west-3","ap-northeast-1","ap-northeast-2","ap-southeast-1","ap-southeast-2","ap-south-1","sa-east-1"]
aws_buckets        = ["Bucket-1","Bucket-2","Bucket-3","Bucket-4"]

creds_b64          =  ewdhBDJDdvb2tleV9pZGdhjDNDHDhbdjdKKDNDbdBiwKInNlY3JldFSHSHHDGJCJChfDHCNCNHCdjdghDMDBGBkxlSLiIKfQ== 

Ejecución manual

El formato de la ejecución del plugin es el siguiente:

./pandora_aws_s3 --conf < ruta al fichero de configuración >

Por ejemplo:

./pandora_aws_s3 --conf /usr/share/pandora_server/util/plugin/aws_s3.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 de cada región monitorizada que enviará al servidor de Pandora FMS por el método de transferencia indicado en la configuración.

Por ejemplo:

{"summary": {"Total buckets": 32, "Zones with buckets": 7}}

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/

image-1687944718222.png

Una vez cargado, se podrán monitorizar entornos de Amazon S3 creando tareas de Discovery desde la sección Management > Discovery > Cloud.

image-1687944820131.png

Para cada tarea se solicitarán los siguientes datos mínimos:

image-1687440444917.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 y buckets de AWS S3, las cuales se podrán marcar para su monitorización.

Si se selecciona una zona se monitorizarán, además de la propia zona, todos los buckets que contenga (tanto en el momento de configurar la tarea como en adelante si se incluyen nuevos buckets).

Si se seleccionan buckets específicos se monitorizarán independientemente de que no se hayan seleccionado sus zonas.

image-1687250170226.png

Finalmente se podrá ajustar la monitorización que se desee obtener:

image-1687250201341.png

Las tareas que se completen exitosamente dispondrán de un sumario de ejecución con la siguiente información:

image-1687250234469.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:

< Nombre utilizado con el parámetro "stats_agent_name" o en su defecto "Aws" >

Módulos

AWS S3 Buckets count
Total de buckets registrados en Aws

 

Módulos

summary.Aws.ec2.buckets
Total buckets registered in Aws

 

Por cada bucket monitorizado en la región se crearan los siguientes módulos:

bucket.items <Nombre del bucket> Número de objetos en el bucket
bucket.size <Nombre del bucket>
Tamaño del bucket