Skip to main content

Parámetros y opciones de configuración

Parámetros

--creds Base 64 de las credenciales 

Las credenciales antes de pasarlas a base 64 tienen el siguiente formato :

{
  "access_key_id": "KEY",
  "secret_access_key": "PASSWORD"
}
--query_conf Ruta al archivo de configuración de consultas AWS personalizadas

En el fichero de queries, se pueden especificar una o mas consultas de Metrics Insights. Estas siguen la estructura que esta documentada en el siguiente enlace: https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html

La estructura para poder ejecutar una o mas consultas de Metrics insights es la siguiente :

{   
    "time_frame": "<Ventana de tiempo en la que recoger los datos, opciones posibles : 5m, 10m, 15m, 30m, 1h>",
    "region_name": "< region en la que ejecutar la consulta> ",
    "MetricDataQueries": [
        < Operaciones de metrics insights >
    ]
}

Estas consultas deben ir definidas dentro de una lista y separadas por comas, por lo que la estructura, de dos consultas, sería la siguiente:

[
{   
    "time_frame": "<Ventana de tiempo en la que recoger los datos, opciones posibles : 5m, 10m, 15m, 30m, 1h>",
    "region_name": "< region en la que ejecutar la consulta> ",
    "MetricDataQueries": [
        < Operaciones de metrics insights >
    ]
}
,
{   
    "time_frame": "<Ventana de tiempo en la que recoger los datos, opciones posibles : 5m, 10m, 15m, 30m, 1h>",
    "region_name": "< region en la que ejecutar la consulta> ",
    "MetricDataQueries": [
        < Operaciones de metrics insights >
    ]
}
]

Un ejemplo de una configuración de consultas, sería el siguiente :

[
{   
    "time_frame": "5m",
    "region_name": "us-east-1",
    "MetricDataQueries": [
        {
            "Expression": "SELECT AVG(CPUUtilization) FROM SCHEMA("AWS/EC2", InstanceId) WHERE InstanceId = 'i-01e5fbcd406596f84' GROUP BY InstanceId",
            "Id": "q1",
            "Period": 300,
            "Label": "avg_cpu"
        },
        {
            "Id": "q2",
            "Expression": "(100 - q1)",
            "Label": "free space"
        }
    ]
},
{
    "time_frame": "5m",
    "region_name": "us-east-1",
    "MetricDataQueries": [
      {
        "Id": "ebs_write_time",
        "Expression": "SELECT AVG(VolumeTotalWriteTime) FROM SCHEMA("AWS/EBS", VolumeId)",
        "Label": "Average EBS Volume Total Write Time",
        "Period":300,
        "ReturnData": true
      }
    ]
},
{
    "time_frame": "5m",
    "region_name": "us-east-1",
    "MetricDataQueries": [
      {
        "Id": "ec2_cpu",
        "Expression": "SELECT MAX(CPUUtilization) FROM SCHEMA("AWS/EC2", InstanceId) GROUP BY InstanceId ORDER BY MAX() DESC LIMIT 10",
        "Label": "top_10",
        "Period":300,
        "ReturnData": true
      }
    ]
}
]

El campo ID y label de las operaciones que están dentro de cada consulta son importantes para relacionar estas consultas con la configuración de Pandora deseada para el dato obtenido de esta operación. Más abajo en el apartado "configuración de módulos" viene detallado como se pueden relacionar estos campos.


--conf Ruta al archivo de configuración

Archivo de configuración (--conf)

[CONF]
agents_group       = < Grupo para los agentes creados por el plugin >
agent_name         = < Nombre del agente por defecto >
threads            = < Número de hilos utilizados por el plugin >
interval           = < Intervalo en segundos para los agentes  >
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 >
use_proxy          = < Activar para poder utilizar modo proxy >
proxy_url          = < url de la direccion proxy a utilizar >
ssl_check          = < Activar para activar chequeo SSL >

Ejemplo

[CONF]
agents_group       = Applications
agent_name         = AWS 
threads            = 4
interval           = 300
transfer_mode      = tentacle
tentacle_ip        = 127.0.0.1
tentacle_port      = 41121
tentacle_opts      = 
use_proxy          = 0
proxy_url          = 
ssl_check          = 1

Configuración de módulos

La configuración de módulos debe ir definida en el conf anteriormente visto, debajo de las variables.

La estructura para poder configurar módulos para los datos obtenidos de cada operación de cada consulta es la siguiente:

[< ID - Aquí debe ir el ID que se haya definido en la operacion de metrics insights
que se espera recibir el dato >]

name = < Nombre que tendrá el módulo que generará el dato. Se puede usar la macro  __label__ ,
si se usa esta macro, el nombre del módulo será el obtenido por la etiqueta label en 
la operación que contiene el ID definido arriba. Esto es util para consultas que devuelven más
de un dato, por ejemplo una consulta que saque las 10 instancias con mas uso de cpu, si en la
operación defines label como "cpu", la devolucion obtenida sera "cpu <nombre instancia 1>,
cpu cpu <nombre instancia 2> , cpu <nombre instancia 3 > ... y asi sucesivamente y 
estos seran los nombres de los módulos generados >

type = < Tipo del módulo> 

description = < Descripción del módulo >

value = < Valor a recoger del dato obtenido en la operacion, 
opciones posibles : last, average, sum, max, min >

agent = < Agente en el que se incluira el módulo, de no existir se creará, de no definirse, los módulos
se meteran en el agente por defecto >

Ejemplo de configuración de módulos, acorde a las métricas definidas arriba:

[q1]
name = __label__
type = generic_data
description = Monitors CPU utilization
unit =percent
value = average
min_warning = 75
min_critical = 85

[q2]
name = __label__
type = generic_data
description = Monitors CPU free space
unit = percent
value = last
min_warning = 11
max_warning = 20
min_critical = 0
max_critical = 10

[ebs_write_time]
name = __label__
type = generic_data
description = Average EBS Volume Total Write Time
value = last
agent = AWS 2 Cloudwatch

[ec2_cpu]
name = __label__
type = generic_data
description = EC2
value = last