Comience con la monitorización Sensu

Sensu es una solución de monitoreo de aplicaciones e infraestructura de código abierto que monitorea el estado de los servidores, los servicios y las aplicaciones y envía alertas y notificaciones con integración de terceros. Escrito en Ruby, Sensu puede usar ambos Conejo SQM o redis para administrar los mensajes. Utilice Redis para almacenar datos.

Si desea monitorear su infraestructura en la nube de manera fácil y eficiente, Sensu es una buena opción. Se puede integrar con muchas de las pilas de DevOps modernas que su organización ya puede estar usando, por ejemplo lento, HipChat, o IRCy también puede enviar alertas en dispositivos móviles / buscapersonas con Paginación.

por Sensu arquitectura modular significa que cada componente se puede instalar en el mismo servidor o en máquinas completamente separadas.

Índice

Arquitectura

El principal mecanismo de comunicación de Sensu es el Transporte. Cada componente de Sensu debe conectarse al Transporte para poder intercambiar mensajes. El transporte puede usar RabbitMQ (recomendado en producción) o Redis.

Sensu Server procesa los datos del evento e interviene. Registrar clientes y resultados de control de procesos y monitorear eventos usando filtros, mutadores y manejadores. El servidor publica definiciones de control para los clientes y la API de Sensu proporciona una API RESTful que brinda acceso a los datos de monitoreo y la funcionalidad principal.

Sensu cliente realiza comprobaciones programadas por Sensu Server o definiciones de comprobación locales. Sensu utiliza un almacén de datos (Redis) para almacenar todos los datos persistentes. En el final, Uchiwa es la interfaz web para comunicarse con Sensu API.

Sensu instalación

requisitos previos

Lado del servidor

Sensu requiere la instalación de Redis. Para instalar Redis, habilite el repositorio EPEL:

$ sudo yum install epel-release -y

Luego instale Redis:

$ sudo yum install redis -y

Modificar /etc/redis.conf para deshabilitar el modo protegido, escuche en cada interfaz y establezca una contraseña:

$ sudo sed -i 's/^protected-mode yes/protected-mode no/g' /etc/redis.conf
$ sudo sed -i 's/^bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis.conf
$ sudo sed -i 's/^# requirepass foobared/requirepass password123/g' /etc/redis.conf

Habilite e inicie el servicio Redis:

$ sudo systemctl enable redis
$ sudo systemctl start redis

Redis ahora está instalado y listo para ser utilizado por Sensu.

Ahora vamos a instalar Sensu.

Primero, configure el repositorio de Sensu e instale los paquetes:

$ sudo tee /etc/yum.repos.d/sensu.repo << EOF
[sensu]
name=sensu
baseurl=https://sensu.global.ssl.fastly.net/yum/$releasever/$basearch/
gpgcheck=0
enabled=1
EOF

$ sudo yum install sensu uchiwa -y

Vamos a crear los archivos de configuración mínimos para Sensu:

$ sudo tee /etc/sensu/conf.d/api.json << EOF
{
  "api": {
        "host": "127.0.0.1",
        "port": 4567
  }
}
EOF

Luego, configure sensu-api para escuchar en localhost, con el puerto 4567:

$ sudo tee /etc/sensu/conf.d/redis.json << EOF
{
  "redis": {
        "host": "<IP of server>",
        "port": 6379,
        "password": "password123"
  }
}
EOF

$ sudo tee /etc/sensu/conf.d/transport.json << EOF
{
  "transport": {
        "name": "redis"
  }
}
EOF

En estos dos archivos, configuramos Sensu para usar Redis como mecanismo de transporte y la dirección en la que escuchará Redis. Los clientes deben conectarse directamente al mecanismo de transporte. Estos dos archivos serán necesarios en cada máquina cliente.

$ sudo tee /etc/sensu/uchiwa.json << EOF
{
   "sensu": [
        {
        "name": "sensu",
        "host": "127.0.0.1",
        "port": 4567
        }
   ],
   "uchiwa": {
        "host": "0.0.0.0",
        "port": 3000
   }
}
EOF

En este archivo, configuramos Uchiwa para escuchar en cada interfaz (0.0.0.0) en el puerto 3000. También configuramos Uchiwa para su uso sensu-api (ya configurado).

Por razones de seguridad, cambie el propietario de los archivos de configuración que acaba de crear:

$ sudo chown -R sensu:sensu /etc/sensu

Habilite e inicie los servicios de Sensu:

$ sudo systemctl enable sensu-server sensu-api sensu-client
$ sudo systemctl start sensu-server sensu-api sensu-client
$ sudo systemctl enable uchiwa
$ sudo systemctl start uchiwa

Intente acceder al sitio web de Uchiwa: http: //: 3000

Para entornos de producción, se recomienda ejecutar un clúster de RabbitMQ como transporte en lugar de Redis (también se puede usar un clúster de Redis en producción) y ejecutar más de una instancia de Sensu Server y API para equilibrio de carga y alta disponibilidad.

Sensu ya está instalado. Ahora vamos a configurar los clientes.

Del lado del cliente

Para agregar un nuevo cliente, deberá habilitar el repositorio Sensu en las máquinas cliente creando el archivo /etc/yum.repos.d/sensu.repo.

$ sudo tee /etc/yum.repos.d/sensu.repo << EOF
[sensu]
name=sensu
baseurl=https://sensu.global.ssl.fastly.net/yum/$releasever/$basearch/
gpgcheck=0
enabled=1
EOF

Con el repositorio habilitado, instale el paquete Sensu:

$ sudo yum install sensu -y

Para configurar sensu-client, crea lo mismo redis.json Y transport.json creado en la máquina servidor, así como el client.json archivo de configuración:

$ sudo tee /etc/sensu/conf.d/client.json << EOF
{
  "client": {
        "name": "rhel-client",
        "environment": "development",
        "subscriptions": [
        "frontend"
        ]
  }
}
EOF

En el campo de nombre, especifique un nombre para identificar a este cliente (generalmente el nombre de host). El campo de entorno puede ayudarlo a filtrar y la suscripción define qué controles de monitoreo realizará el cliente.

Finalmente, habilite e inicie los servicios y verifique en Uchiwa, ya que el nuevo cliente se registrará automáticamente:

$ sudo systemctl enable sensu-client
$ sudo systemctl start sensu-client

Sensu cheques

Los controles Sensu tienen dos componentes: un complemento y una definición.

Sensu es compatible con el Nagios verifica las especificaciones del complemento, por lo que cualquier control para Nagios puede usarse sin modificaciones. Los cheques son archivos ejecutables y son ejecutados por el cliente Sensu.

Verificar las definiciones le permite a Sensu saber cómo, dónde y cuándo ejecutar el complemento.

Del lado del cliente

Instalamos un complemento de control en el ordenador del cliente. Recuerde, este complemento se ejecutará en los clientes.

Habilitar EPEL e instalar nagios-plugins-http :

$ sudo yum install -y epel-release
$ sudo yum install -y nagios-plugins-http

Ahora exploremos el complemento ejecutándolo manualmente. Intente verificar el estado de un servidor web que se ejecuta en la máquina cliente. Debería fallar porque no tenemos un servidor web ejecutándose:

$ /usr/lib64/nagios/plugins/check_http -I 127.0.0.1
connect to address 127.0.0.1 and port 80: Connection refused
HTTP CRITICAL - Unable to open TCP socket

Fracasó, como se esperaba. Compruebe el código de retorno de la ejecución:

The Nagios check plugin specification defines four return codes for the plugin execution:

Plugin return code

State

0

OK

1

WARNING

2

CRITICAL

3

UNKNOWN

With this information, we can now create the check definition on the server.

Server side

On the server machine, create the file /etc/sensu/conf.d/check_http.json:

{
  "checks": {
    "check_http": {
      "command": "/usr/lib64/nagios/plugins/check_http -I 127.0.0.1",
      "interval": 10,
      "subscribers": [
        "frontend"
      ]
    }
  }
}

En el campo de comando, use el comando que probamos anteriormente. Interval le dirá a Sensu con qué frecuencia, en segundos, se debe realizar esta verificación. En el final, subscribers definirá los clientes donde se realizará la comprobación.

Reinicie sensu-api y sensu-server y confirme que el nuevo control está disponible en Uchiwa.

$ sudo systemctl restart sensu-api sensu-server

¿Que sigue?

Sensu es una herramienta poderosa y este artículo solo cubre una muestra de lo que puede hacer. Ver el documentación para obtener más información, y visite el sitio web de Sensu para obtener más información sobre el comunidad sensual.

Artículos de interés

Subir