En diversas ocasiones hemos hablado de la escalabilidad que nos ofrecen las distros de Linux al contar con miles de aplicaciones de código abierto que pueden ser instaladas en ellas y así extender de forma significativa la capacidad de uso y desarrollo de los servicios y roles.
Podemos encontrar aplicaciones para todo tipo de tarea a nivel personal o corporativo y hoy Solvetic analizará en detalle una que llama la atención por su potencial dinamismo a la hora de recopilar múltiples tipos de métricas y ofrecernos informes detallados que serán de gran utilidad a la hora de nuestra gestión y soporte.
Esta aplicación se llama Prometheus y hoy veremos cómo instalarla en Ubuntu 17.04 de forma práctica.
Por defecto, Prometheus sólo exporta métricas sobre sí mismo, por ejemplo el número de solicitudes recibidas, el consumo de memoria, entre otras. Sin embargo, es posible ampliar Prometheus instalando exportadores los cuales son programas opcionales que generan métricas adicionales y detalladas de otros aspectos a analizar.
Estos exportadores están enfocados en infraestructura, bases de datos y servidores web en sistemas de mensajería, APIs y muchas más.
Algunos de los exportadores que nos ofrece Prometheus son:
- Dimensión de datos, ya que Prometheus almacena todos los datos como series temporales usando flujos de valores de tiempo que pertenecen a la misma métrica y el mismo conjunto de dimensiones etiquetadas. Adicional esto, Prometheus puede generar series temporales derivadas temporales como resultado de consultas.
- Consultas dinámicas, En este aspecto Prometheus ofrece un lenguaje de expresión funcional mediante el cual el usuario puede seleccionar y agregar datos de series de tiempo en tiempo real. El resultado de una expresión podrá reflejarse como un gráfico, visto como datos tabulares en el navegador de expresiones de Prometheus o ejecutado por sistemas externos a través de la API HTTP.
- Diversas opciones de visualización, ya que Prometheus incluye Grafana la cual está disponible desde Grafana 2.5.0 (2015-10-28).
- Almacenamiento eficiente, debido a que Prometheus cuenta con un sofisticado subsistema de almacenamiento local. Para índices, hace uso de LevelDB. Para los datos de muestra en bloque, tiene su propia capa de almacenamiento personalizada, la cual organiza los datos de muestra en trozos de tamaño constante (1024 bytes de carga útil). Estos trozos se almacenan en el disco en un archivo por serie de tiempo.
- Operación simple, ya que Prometheus se configura a través de parámetros de línea de comandos y un archivo de configuración. Mientras los indicadores de línea de comandos configuran parámetros inmutables del sistema (tales como ubicaciones de almacenamiento, cantidad de datos para guardar en el disco y en la memoria), el archivo de configuración define todo lo relacionado con los trabajos de raspado y sus instancias, así como los archivos de reglas cargar con la aplicación.
- Alertamiento preciso, al contar con la opción de crear reglas de alerta las cuales nos permiten definir condiciones de alerta basadas en valores de lenguaje de expresión Prometheus y enviar notificaciones sobre alertas de disparo a un servicio externo en un momento dado y así estar al tanto de cualquier cambio.
- Múltiples librerías, gracia a que Prometheus nos ofrece una serie de librerías compatibles tales como Java o Scala, Python, Rubí, Bash, C++, Common Lisp, Elixir, Erlang, Haskell, Lua for Nginx, Lua for Tarantool, .NET / C#, Node.js, PHP y Rust.
- Integración múltiple, ya que tenemos varias bibliotecas y servidores que ayudan a exportar métricas existentes de sistemas de terceros hacia las métricas de Prometheus, algunas de estas son Aerospike exporter, ClickHouse exporter, Consul exporter, CouchDB exporter, ElasticSearch exporter, Memcached exporter, MongoDB exporter, MSSQL server exporter, MySQL server exporter, OpenTSDB Exporter, PgBouncer exporter, PostgreSQL exporter o ProxySQL exporter.
Ahora veremos cómo instalar Prometheus en Ubuntu 17.04.
1. Instalación de Nginx
El primer punto a tener en cuenta es que Nginx debe estar instalado en Ubuntu, si no tenemos ejecutaremos el siguiente comando:
sudo apt install nginx
Allí ingresaremos la letra S para confirmar la descarga e instalación de los paquetes necesarios. Una vez instalado será necesario configurar los ajustes de firewall de Ubuntu para permitir el acceso al servicio Nginx, para ello ejecutaremos la siguiente línea para enumerar las configuraciones de las aplicaciones de ufw:
sudo ufw app list
- Nginx Full: Este perfil abre tanto el puerto 80 (tráfico web normal, sin cifrar) como el puerto 443 (tráfico cifrado TLS / SSL)
- Nginx HTTP: Este perfil abre sólo el puerto 80 (normal, tráfico web no cifrado)
- Nginx HTTPS: Este perfil abre sólo el puerto 443 (tráfico cifrado TLS / SSL)
Para este caso ejecutaremos la siguiente línea:
sudo ufw allow 'Nginx HTTP'
Podemos ver que el estado del firewall es inactivo, en algunos casos, y debe ser necesario que lo activemos, para ello ejecutamos lo siguiente:
sudo ufw enable
Una vez configuremos estos parámetros en el firewall proseguimos con la instalación de Prometheus.