¿Qué es Sentry?
Sentry es un monitor de servicios el cual nos permite monitorizar prácticamente todo lo que hace nuestro servidor, muy útil si pretendemos saber si cumplimos nuestro SLA, o simplemente para verificar que nuestros servicios funcionan como es debido.
En primer lugar tenemos que crear un usuario de UNIX llamado sentry, para que el programa pueda trabajar con el, para ello sera necesario disponer de un usuario root
adduser sentry
adduser sentry sudo
Y en el caso de que no tengamos un usuario root habilitado sería necesario escribir la siguiente linea antes de las anteriores
sudo passwd root
Una vez hecho esto, salimos del usuario root y nos logeamos como sentry
exit
su - sentry
Actualizamos el índice de paquetes y todo lo que se pueda actualizar, seguidamente eliminamos todos aquellos paquetes que no son necesarios en nuestro sistema
sudo apt-get update && sudo apt-get dist-upgrade && sudo apt-get autoremove
Reiniciamos la maquina, es necesario para aplicar algunas de las actualizaciones
sudo reboot
Instalamos las librerías de Phyton
sudo apt-get install build-essential python-dev
Descargamos la distribución
curl -O http://python-distribute.org/distribute_setup.py
Y ahora la instalamos
sudo python distribute_setup.py
Eliminamos los archivos de instalación
rm distribute*
Usamos la distribución para instalar pip
sudo easy_install pip
Instalamos virtualen y virtualenvwrapper
sudo pip install virtualenv virtualenvwrapper
Para habilitar el virtualenvwrapper hay que añadir la siguiente linea en el archivo .bashrc
echo "" >> .bashrc
echo "source /usr/local/bin/virtualenvwrapper.sh" >> .bashrc
Salimos y volvemos a entrar para reiniciar nuestra consola
exit
su - sentry
Creamos el entorno virtual
mkvirtualenv sentry_env
Instalamos sentry
pip install sentry
Creamos el archivo de configuración, lo podremos encontrar en la ruta ~/.sentry/sentry.conf.py
sentry init
Instalamos la base de datos Postgresql, necesaria para el funcionamiento de Sentry
sudo apt-get install postgresql postgresql-contrib libpq-dev
Instalamos el paquete de administración de Postgresql
sudo -u postgres psql
CREATE EXTENSION "adminpack";
\q
Cambiamos la contraseña del usuario postgres y creamos la base de datos
sudo passwd postgres
sudo su - postgres
psql -d template1 -c "ALTER USER postgres WITH PASSWORD 'changeme';"
createdb your_sentry_db_name
createuser your_sentry_user --pwprompt
psql -d template1 -U postgres
GRANT ALL PRIVILEGES ON DATABASE your_sentry_db_name to your_sentry_user;
\q
exit
Actualizamos el archivo de configuración para poder usar postgres, en este caso usamos el editor nano, aunque puedes usar el que prefieras
nano .sentry/sentry.conf.py
Algo así es como debe de quedar el archivo sentry.conf.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'tu_base_de_datos',
'USER': 'el_nombre_de_tu_usuario',
'PASSWORD': 'tu_contraseña',
'HOST': 'localhost',
}
}
También se puede configurar para que nos notifique por correo electrónico cualquier suceso.
Puesto que es necesario vamos a instalar psycopg2
workon sentry_env
pip install psycopg2
Configuramos la base de datos
sentry upgrade
Y con todo esto, ya podemos probar que nuestro servicio funciona
sentry start
Pasamos a instalar nginx
sudo apt-get install nginx
Eliminamos el enlace simbólico por defecto
sudo rm /etc/nginx/sites-enabled/default
Creamos una nueva configuración en blanco, y un enlace simbólico a ella
sudo touch /etc/nginx/sites-available/sentry
cd /etc/nginx/sites-enabled
sudo ln -s ../sites-available/sentry
Editamos el archivo de configuración de nginx
sudo nano /etc/nginx/sites-available/sentry
Este es el aspecto que debe mostrar el archivo una vez editado
server {
# listen on port 80
listen 80;
# for requests to these domains
server_name pvalor.es www.pvalor.es;
# keep logs in these files
access_log /var/log/nginx/sentry.access.log;
error_log /var/log/nginx/sentry.error.log;
# You need this to allow users to upload large files
# See http://wiki.nginx.org/HttpCoreModule#client_max_body_size
# I'm not sure where it goes, so I put it in twice. It works.
client_max_body_size 0;
location / {
proxy_pass http://localhost:9000;
proxy_redirect off;
proxy_read_timeout 5m;
# make sure these HTTP headers are set properly
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Reiniciamos nginx y arrancamos sentry
sudo service nginx restart
sentry start &
Ahora vamos a instalar y configurar el supervisor, el cual hará que nuestro servicio sea mas fiable y caiga menos.
sudo apt-get install supervisor
sudo nano /etc/supervisor/conf.d/sentry.conf
Esta son las lineas que debemos añadir al archivo sentry.conf
[program:sentry-web]
directory=/home/sentry/
command=/home/sentry/.virtualenvs/sentry_env/bin/sentry start http
autostart=true
autorestart=true
redirect_stderr=true
Reiniciamos el supervisor, y con esto ya lo tendríamos todo hecho
sudo killall supervisord
sudo supervisord
Cuando queramos actualizar Sentry con esto lo tenemos hecho
workon sentry_env
pip install sentry --upgrade
sentry upgrade
sudo supervisorctl restart sentry-web
Y con esto ya lo tenemos instalado y corriendo, tan solo nos faltaría instalar el cliente en la maquina a controlar.
Espero que os haya sido útil lo que habéis encontrado aquí, saludos y que os vaya bonito.