Configurar Linode Longview
21.02.2017 Hosting Apache Linode Nginx LongviewUna de las herramientas más útiles que tiene Linode (y una de las razones más importantes por las que me decidí a usarlo en lugar de otras VPS de 5 dólares) es Longview.
Longview es un agente que se instala en nuestro server y nos va a proveer métricas muy útiles para monitoreo y diagnóstico de problemas, a las cuales vamos a acceder directamente desde el panel de Linode.
La instalación es muy simple, solo necesitamos acceder a nuestro server por SSH para instalar el agente y modificar algunos archivos.
Instalar el agente
Lo primero que vamos a tener que hacer es instalar el agente en nuestro server. Por el momento Longview es soportado en las siguientes distros:
- Ubuntu 10.04, 12.04, 14.04 y 16.04
- Debian 6, 7 y 8
- CentOS 5, 6 y 7
- Fedora 17, 18 y 19
La forma más fácil de instalar el agente es yendo a nuestro panel de linode, la pestaña Longview y click en "Add Client"
Esto nos va a abrir una nueva sección donde se nos va a informar que el cliente está esperando data, y se abre un popup con la instrucción para instalarlo automáticamente:
También está la opción de instalarlo manualmente, pero la forma automática funciona muy bien. Y después de todo, tiene sentido confiar en la empresa que nos provee el server para esto.
Entonces, para instalar nos logueamos a nuestro server por SSH y corremos la instrucción que nos provee Linode:
curl -s https://lv.linode.com/LONGVIEW_KEY | sudo bash
El instalador va a encontrar si en nuestro server estamos corriendo Apache, Nginx y MySQL (o MariaDB) y nos ofrecerá hacer un update de las configuraciones de dichos servicios para que el agente muestre datos. Yo le dije que sí a todo, pero finalmente tuve que realizar algunos retoques a mano para que todo quede andando.
Configurar Nginx
Tenemos que habilitar nginx_status para que linode tome los datos, asegurándonos de no dejar la url pública, por lo que lo hacemos solo accesible a nivel local. Para esto creamos un nuevo vhosts, agregando un archivo /etc/nginx/sites-available/longview con el siguiente contenido:
server {
listen 127.0.0.1:80;
server_name 127.0.0.1;
location /nginx_status {
stub_status on;
allow 127.0.0.1;
deny all;
}
}
Una vez hecho esto, lo agregamos a los sitios disponibles agregando el link simbólico en la carpeta sites-enabled:
ln -s /etc/nginx/sites-available/longview /etc/nginx/sites-enabled/longview
Validamos que esté todo ok:
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Y reiniciamos nginx:
service nginx restart
Configurar Apache
En Apache tenemos que configurar el mod status, vamos a /etc/apache2/mods-available/status.conf (es probable que ya exista el archivo, sino lo creamos) y lo dejamos mas o menos así:
<IfModule mod_status.c>
# Allow server status reports generated by mod_status,
# with the URL of http://servername/server-status
<VirtualHost *:8080>
<Location /server-status>
SetHandler server-status
Require local
</Location>
</VirtualHost>
Listen 8080
# Keep track of extended status information for each request
ExtendedStatus On
<IfModule mod_proxy.c>
# Show Proxy LoadBalancer status in mod_status
ProxyStatus On
</IfModule>
</IfModule>
Dos detalles importantes de la config: Como yo tengo configurado Nginx como reverse proxy y Apache escuchando en el puerto 8080, puse esos valores acá. Y el otro detalle importante es el require local, para que solo se pueda acceder localmente a la página de status.
Una vez hecho esto, nos quedan 3 cosas:
Habilitar el mod
a2enmod status
Validar que todo esté OK
$ apache2ctl configtest
Syntax OK
Reiniciar Apache
service apache2 restart
Configurar MySQL
Para que longview pueda tomar datos de mysql necesita un usuario, por lo que nos vamos a loguear a MySQL (como root o un usuario con permisos suficientes para crear usuarios) y creamos el usuario de longview:
CREATE USER 'linode-longview'@'localhost' IDENTIFIED BY 'contraseña_mysql';
flush privileges;
Configurar el agente Longview
El último paso es configurar el agente de longview. Nos vamos a /etc/linode/longview.d y ahi creamos (o editamos, si ya existen) 3 archivos:
Apache.conf:
location http://127.0.0.1:8080/server-status?auto
(Nuevamente, remarco el tema del puerto no standard de mi instalación de apache)
Nginx.conf:
location http://127.0.0.1/nginx_status
MySQL.conf:
username linode-longview
password contraseña_mysql
(donde "contraseña_mysql" es la contraseña que utilizamos al crear el usuario de MySQL).
Y eso es todo, solo nos queda reiniciar longview
service longview restart
Y en cuanto el cliente empieza a recibir data, vamos a ver las métricas de nuestro server:
Espero les resulte útil, es una gran herramienta y muy sencilla de instalar. Pueden chequear las guías oficiales acá: https://www.linode.com/docs/platform/longview/