Site is under maintenance mode. Please wait few min!
Saltar al contenido

Cómo configurar el Servidor Web Apache en un Ubuntu o VPS de Debian

marzo 4, 2020

 

Introducción

Sensu es una herramienta de monitorización escrita en Ruby que utiliza RabbitMQ como un intermediario de mensajes y Redis para almacenar datos. Se adapta bien para el seguimiento de los entornos de nube.

Sensu conecta la salida de secuencias de comandos “cheque” con guiones “handler” para crear un robusto sistema de vigilancia y alerta. Verificar los scripts pueden funcionar con muchos nodos, y el informe sobre si se cumple una determinada condición, tal como el que se ejecuta Apache. guiones manejador puede tomar una acción como el envío de un correo electrónico de alerta.

Tanto los guiones “cheque” y los guiones “handler” se ejecutan en el servidor maestro Sensu, que es responsable de orquestar ejecuciones de verificación entre los servidores del cliente Sensu y procesamiento de resultados de la comprobación. Si un cheque desencadena un evento, se pasa al controlador, que tendrá una acción especificada.

Un ejemplo de esto es un cheque que supervisa el estado de un servidor web Apache. La comprobación se llevará a cabo en los clientes Sensu. Si la verificación de los informes de un servidor como abajo, el servidor Sensu pasará el evento al controlador, que puede desencadenar una acción como el envío de un correo electrónico o recoger mediciones de tiempo de inactividad.

En este tutorial vamos a instalar y configurar un servidor maestro y uno Sensu Sensu cliente-servidor.

Requisitos previos

Con el fin de establecer Sensu, necesitará:

  • nodo Un maestro de la gotita con Ubuntu 14.04. Este es el nodo que va a utilizar para ver todos los datos de vigilancia.
  • al menos un nodo adicional que desea supervisar, con Ubuntu 14.04.

Crear un usuario sudo en cada gota. En primer lugar, crear el usuario con el comando adduser, reemplazando el nombre de usuario con el nombre que desea utilizar.

adduser username

Esto creará el usuario y el directorio apropiado en el hogar y en grupo. Se le pedirá que establezca una contraseña para el nuevo usuario y confirme la contraseña. También se le pedirá que introduzca la información del usuario. Confirmar la información del usuario para crear el usuario.

A continuación, conceder privilegios del usuario con el comando sudo visudo.

visudo

Esto abrirá el archivo / etc / sudoers. En la sección de especificación de privilegios del usuario añadir otra línea para el usuario creado para que se vea como esto (con su nombre de usuario elegido en lugar del nombre de usuario):

# User privilege specification
root ALL=(ALL:ALL) ALL
username ALL=(ALL:ALL) ALL

Guarde el archivo y cambie al nuevo usuario.

su - username

actualización de los paquetes del sistema y actualizarlos.

sudo apt-get update && sudo apt-get -y upgrade

paso – Instalación en el Maestro

En primer lugar, vamos a configurar el servidor maestro Sensu. Esto requiere RabbitMQ, Redis, sí Sensu, y el tablero de instrumentos Uchiwa, junto con algo de software de soporte.

Añadir la fuente RabbitMQ a la lista de fuentes APT.

echo "deb http://www.rabbitmq.com/debian/ testing main" | sudo tee -a /etc/apt/sources.list.d/rabbitmq.list

Descargar y añadir la clave de firma de RabbitMQ.

curl -L -o ~/rabbitmq-signing-key-public.asc http://www.rabbitmq.com/rabbitmq-signing-key-public.asc

sudo apt-key add ~/rabbitmq-signing-key-public.asc

Instalar RabbitMQ y Erlang. Servicio

sudo apt-get update && sudo apt-get install -y rabbitmq-server erlang-nox

El RabbitMQ debe iniciarse automáticamente. Si no es así, empezar con el siguiente comando.

sudo service rabbitmq-server start

Sensu utiliza SSL para la comunicación segura entre sus componentes y RabbitMQ. Aunque es posible utilizar Sensu sin SSL, que es sumamente desalentador. Para generar certificados, generador de descarga del certificado de Sensu en el directorio / tmp y generar los certificados SSL.

cd mp && wget http://sensuapp.org/docs/0.13ools/ssl_certs.tar && tar -xvf ssl_certs.tar

cd ssl_certs && ./ssl_certs.sh generate

Crear un directorio RabbitMQ SSL y la copia más de los certificados.

sudo mkdir -p /etc/rabbitmq/ssl && sudo cp mp/ssl_certs/sensu_ca/cacert.pem mp/ssl_certs/server/cert.pem mp/ssl_certs/server/key.pem /etc/rabbitmq/ssl

crear y editar el archivo de /etc/rabbitmq/rabbitmq.config.

sudo vi /etc/rabbitmq/rabbitmq.config

Añadir las siguientes líneas al archivo. Esto configura el oyente RabbitMQ SSL para escuchar en el puerto 5671 y utilizar la autoridad del certificado generado y certificado de servidor. También verificará la conexión y fallar si no hay ningún certificado.

[
{rabbit, [
{ssl_listeners, [5671]},
{ssl_options, [{cacertfile,"/etc/rabbitmq/ssl/cacert.pem"},
{certfile,"/etc/rabbitmq/ssl/cert.pem"},
{keyfile,"/etc/rabbitmq/ssl/key.pem"},
{verify,verify_peer},
{fail_if_no_peer_cert,true}]}
]}
].

Reiniciar RabbitMQ.

sudo service rabbitmq-server restart

crear un servidor virtual RabbitMQ y un usuario para Sensu. Cambiar la contraseña (pase). Usted necesitará esta contraseña más adelante al configurar el servidor y los clientes Sensu a ser monitoreados.

sudo rabbitmqctl add_vhost /sensu
sudo rabbitmqctl add_user sensu pass
sudo rabbitmqctl set_permissions -p /sensu sensu ".*" ".*" ".*"

instalar Redis. Servicio

sudo apt-get -y install redis-server

El Redis debe iniciarse automáticamente. Si no es así, empezar con el siguiente comando. (Tenga en cuenta que si Redis ya se está ejecutando, recibirá el error: “A partir Redis-servidor: fallado.”)

sudo service redis-server start

Añadir las fuentes y las claves para instalar Sensu.

wget -q http://repos.sensuapp.org/apt/pubkey.gpg -O- | sudo apt-key add -

echo "deb http://repos.sensuapp.org/apt sensu main" | sudo tee -a /etc/apt/sources.list.d/sensu.list

Instalar Sensu y Uchiwa (Uchiwa es la guía de seguimiento).

sudo apt-get update && sudo apt-get install -y sensu uchiwa

Sensu necesita la información de conexión segura a RabbitMQ. Hacer un directorio SSL para Sensu y copiar los certs generados.

sudo mkdir -p /etc/sensu/ssl && sudo cp mp/ssl_certs/client/cert.pem mp/ssl_certs/client/key.pem /etc/sensu/ssl

Ahora todos los componentes para la supervisión Sensu están instalados.

Paso dos – Configuración en el Master

Ahora tenemos que configurar Sensu. Vamos a crear los archivos de configuración individuales en la carpeta /etc/sensu/conf.d para facilitar la legibilidad y la gestión. A menos que haya configurado los servicios y componentes mencionados en los archivos de configuración en máquinas separadas, puede dejar la mayoría de los valores de la muestra se indican a continuación sin cambios. Alternativamente, /etc/sensu/config.json.example <^> es otro archivo de configuración de ejemplo que puede copiar y usar para configurar Sensu.

crear y editar el archivo de rabbitmq.json.

sudo vi /etc/sensu/conf.d/rabbitmq.json

Añadir las siguientes líneas, que permitirán Redis conectarse de forma segura a la instancia RabbitMQ utilizando su certificado SSL. El usuario y pase debe ser los que ha establecido para la máquina virtual RabbitMQ.

{
"rabbitmq": {
"ssl": {
"cert_chain_file": "/etc/sensu/ssl/cert.pem",
"private_key_file": "/etc/sensu/ssl/key.pem"
},
"host": "localhost",
"port": 5671,
"vhost": "/sensu",
"user": "sensu",
"password": "pass"
}
}

crear y editar el archivo de redis.json.

sudo vi /etc/sensu/conf.d/redis.json

Añadir las siguientes líneas, que incluyen la información de conexión para Sensu para acceder a la instancia Redis.

{
"redis": {
"host": "localhost",
"port": 6379
}
}

crear y editar el archivo de api.json.

sudo vi /etc/sensu/conf.d/api.json

Añadir las siguientes líneas, que incluyen la información de conexión para Sensu para acceder a la API de servicio.

{
"api": {
"host": "localhost",
"port": 4567
}
}

crear y editar el archivo de uchiwa.json.

sudo vi /etc/sensu/conf.d/uchiwa.json

Añadir las siguientes líneas. Estos incluyen la información de conexión para el salpicadero Uchiwa para acceder a la API Sensu. Opcionalmente puede crear un nombre de usuario y contraseña en el bloque uchiwa para la autenticación salpicadero. Si desea que el tablero sea accesible al público, simplemente dejarlo como está.

{
"sensu": [
{
"name": "Sensu",
"host": "localhost",
"ssl": false,
"port": 4567,
"path": "",
"timeout": 5000
}
],
"uchiwa": {
"port": 3000,
"stats": 10,
"refresh": 10000
}
}

En este ejemplo, vamos a tener el monitor de servidor maestro Sensu a sí mismo como un cliente. Por lo tanto, crear y editar el archivo client.json.

sudo vi /etc/sensu/conf.d/client.json

Añadir las siguientes líneas y editar el valor de nombre para el cliente Sensu. Este es el nombre del servidor que se pueden ver en el tablero de instrumentos Uchiwa. El nombre no puede contener espacios o caracteres especiales.

Puede dejar el valor de la dirección como localhost ya que estamos monitoreando este servidor. Vamos a crear un archivo similar de nuevo más tarde para cada máquina cliente a ser monitoreada.

{
"client": {
"name": "server",
"address": "localhost",
"subscriptions": [ "ALL" ]
}
}

habilitar los servicios Sensu para iniciarse automáticamente.

sudo update-rc.d sensu-server defaults
sudo update-rc.d sensu-client defaults
sudo update-rc.d sensu-api defaults
sudo update-rc.d uchiwa defaults

de inicio de los servicios Sensu.

sudo service sensu-server start
sudo service sensu-client start
sudo service sensu-api start
sudo service uchiwa start

En este punto, se puede acceder a Sensu en http: // ip-address: 3000.

Paso tres – instalación en el cliente

Usted tendrá que instalar Sensu en cada máquina cliente a ser monitorizados.

Aunque todavía en el servidor maestro Sensu , copie los certificados SSL a la carpeta / tmp utilizando SCP del servidor de cliente. Reemplazar usuario e IP a continuación con el usuario sudo y la dirección IP del servidor de cliente.

scp mp/ssl_certs/client/cert.pem mp/ssl_certs/client/key.pem user@ip:mp

En el cliente a ser monitoreado, agregue la clave Sensu y la fuente.

wget -q http://repos.sensuapp.org/apt/pubkey.gpg -O- | sudo apt-key add -
echo "deb http://repos.sensuapp.org/apt sensu main" | sudo tee -a /etc/apt/sources.list.d/sensu.list

Instalar Sensu.

sudo apt-get update && sudo apt-get -y install sensu

Es necesario proporcionar al cliente la información de conexión a RabbitMQ. Hacer un directorio SSL para Sensu y copiar los certificados en el directorio / tmp carpeta que fueron copiados desde el servidor maestro Sensu.

sudo mkdir -p /etc/sensu/ssl && sudo cp mp/cert.pem mp/key.pem /etc/sensu/ssl

crear y editar el archivo de rabbitmq.json.

sudo vi /etc/sensu/conf.d/rabbitmq.json

Añadir las siguientes líneas. Modificar el valor de host se utiliza la dirección IP del servidor RabbitMQ; es decir, la dirección IP del servidor maestro Sensu. Los valores de usuario y la contraseña deben ser los que ha establecido para la máquina virtual RabbitMQ en el servidor maestro Sensu.

{
"rabbitmq": {
"ssl": {
"cert_chain_file": "/etc/sensu/ssl/cert.pem",
"private_key_file": "/etc/sensu/ssl/key.pem"
},
"host": "1.1.1.1",
"port": 5671,
"vhost": "/sensu",
"user": "sensu",
"password": "pass"
}
}

proporcionar información de configuración para este servidor Sensu mediante la creación y edición del archivo client.json.

sudo vi /etc/sensu/conf.d/client.json

Añadir las siguientes líneas. Debe editar el valor de nombre a lo que usted desea que este servidor se llama en el salpicadero Uchiwa. El nombre no puede contener espacios o caracteres especiales.

Puede dejar el valor ajustado a la dirección localhost, ya que estamos monitoreando este servidor cliente Sensu.

{
"client": {
"name": "client1",
"address": "localhost",
"subscriptions": [ "ALL" ]
}
}

habilitar e iniciar el cliente.

sudo update-rc.d sensu-client defaults

sudo service sensu-client start

Ahora debería ver el cliente en la ficha Clientes en el tablero de instrumentos Sensu.

Cuarto paso – la creación de un Registro

Ahora que se está ejecutando Sensu tenemos que añadir un cheque en ambos servidores. Vamos a crear un script Ruby que va a comprobar si se ejecuta Apache.

Si no tiene instalado Apache, instalar ahora en el servidor principal y el servidor Sensu Sensu cliente.

sudo apt-get install -y apache2

Apache debe estar funcionando de forma predeterminada en ambos servidores.

Antes de instalar la gema sensu-plugin, asegúrese de que tiene todas las bibliotecas necesarias. Instalar las bibliotecas Ruby y la biblioteca acumulación esencial tanto en el servidor principal y el servidor Sensu Sensu cliente.

sudo apt-get install -y ruby ruby-dev build-essential

instalar la gema sensu-plugin en el servidor principal y el servidor Sensu Sensu cliente.

sudo gem install sensu-plugin

Crear un archivo de registro de entrada apache.rb en la carpeta plugins Sensu y modificar los permisos de archivo en el servidor principal y el servidor Sensu Sensu cliente.

sudo touch /etc/sensu/plugins/check-apache.rb && sudo chmod 755 /etc/sensu/plugins/check-apache.rb

Editar el archivo de registro de entrada apache.rb tanto en el servidor principal y el servidor Sensu Sensu cliente.

sudo vi /etc/sensu/plugins/check-apache.rb

Añadir las siguientes líneas de guión, que el proceso de comprobación de Apache.

#!/usr/bin/env ruby

procs = `ps aux`
running = false
procs.each_line do |proc|
running = true if proc.include?('apache2')
end
if running
puts 'OK - Apache daemon is running'
exit 0
else
puts 'WARNING - Apache daemon is NOT running'
exit 1
end

crear y editar el archivo de check_apache.json sólo en el servidor maestro Sensu.

sudo vi /etc/sensu/conf.d/check_apache.json

Añadir las siguientes líneas que se ejecutará la secuencia de comandos para comprobar Apache cada 60 segundos.

{
"checks": {
"apache_check": {
"command": "/etc/sensu/plugins/check-apache.rb",
"interval": 60,
"subscribers": [ "ALL" ]
}
}
}

Reiniciar el servidor Sensu y API en el servidor maestro Sensu.

sudo service sensu-server restart && sudo service sensu-api restart

reiniciar el cliente en el servidor Sensu Sensu cliente.

sudo service sensu-client restart

Después de unos minutos, debería ver el cheque aparece en la pestaña de “cheques” en el tablero de instrumentos Sensu.

Detener el servicio de Apache a cada servidor para probar que el guión está trabajando.

sudo service apache2 stop

Una alerta debe aparecer en el cuadro de mandos Eventos después de unos minutos. Haga clic en la alerta para ver más información y para tomar medidas tales como el silenciamiento o la resolución de la misma.

En esta imagen, Apache ha sido detenido en el servidor de cliente. Esta es la página de clientes .

de inicio del servicio de Apache para detener las advertencias.

sudo service apache2 start

Paso cinco – configurar un manejador de

Los manipuladores pueden enviar notificaciones por correo electrónico o envío de datos a otras aplicaciones como grafito basados ​​en eventos. Aquí, vamos a crear un controlador que envía un correo electrónico si falla la comprobación de Apache. Tenga en cuenta que sus necesidades de servidor para ser configurados para enviar correo electrónico. Puede utilizar este tutorial Postfix para configurar un servidor de correo simple. (Es posible que desee tener el correo enviado a un usuario en el servidor maestro Sensu para la configuración más sencilla.)

en el servidor maestro Sensu, crear y editar el archivo handler_email.json.

sudo vi /etc/sensu/conf.d/handler_email.json

Añadir las siguientes líneas, reemplazando email@address.com con la dirección de correo electrónico donde desea recibir notificaciones. Dependiendo de la configuración de su servidor de correo, puede ser más fácil de configurar esto a un alias para un usuario en el servidor maestro Sensu. Este controlador se denomina “e-mail” y utilizará la utilidad de correo para enviar un correo electrónico de alerta con el tema “evento sensu” a la dirección de correo electrónico especificada.

{
"handlers": {
"email": {
"type": "pipe",
"command": "mail -s 'sensu event' email@address.com"
}
}
}

Editar la check_apache.json.

sudo vi /etc/sensu/conf.d/check_apache.json

Añadir la nueva línea de controladores con el controlador de correo electrónico en el bloque apache_check.


{
"checks": {
"apache_check": {
"command": "/etc/sensu/plugins/check-apache.rb",
"interval": 60,
"handlers": ["default", "email"],
"subscribers": [ "ALL" ]
}
}
}

Reiniciar sensu stricto-api y-servidor.

sudo service sensu-api restart && sudo service sensu-server restart

Detener el servicio de Apache de nuevo para probar la alerta de correo electrónico. Usted debe conseguir uno cada 60 segundos.

sudo service apache2 stop

Su correo electrónico debe ser algo como lo siguiente:

Return-Path:
...
Subject: sensu event
To:
...
From: sensu@sensu-master (Sensu Monitoring Framework)

{"id":"481c85c4-485d-4f25-b835-cea5aef02c69","client":{"name":"Sensu-Master-Server","address":"localhost","subscriptions":["ALL"],"version":"0.13.1","timestamp":1411681990},"check":{"command":"/etc/sensu/plugins/check-apache.rb","interval":60,"handlers":["default","email"],"subscribers":["ALL"],"name":"apache_check","issued":1411682001,"executed":1411682001,"duration":0.023,"output":"WARNING - Apache daemon is NOT runningn","status":1,"history":["0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","0","1"]},"occurrences":1,"action":"create"}

de inicio del servicio de Apache de nuevo para dejar de recibir alertas de correo electrónico.

sudo service apache2 start

Conclusión

Sensu es una herramienta de monitoreo versátil, con sus plugins y scripts personalizados que puede escribir para él. También puede crear controladores para hacer casi cualquier cosa con los datos. Sigue explorando conseguirlo justo para usted.