Cómo instalar Prometheus en Ubuntu 18.04

Prometheus es un sistema de alerta y monitoreo de código abierto muy poderoso adecuado para entornos dinámicos como en Cloud espacio. Es un proyecto independiente mantenido por la comunidad con muchas empresas y organizaciones que contribuyen a su código fuente. La mayoría de los componentes de Prometheus están escritos en Go, lo que los hace fáciles de construir e implementar como binarios estáticos. Rara vez debería necesitar compilar la aplicación a partir del código.

Prometheus es capaz de registrar cualquier serie de tiempo puramente numérica, tanto para monitoreos centrados en máquinas como sistemas Linux, así como para el monitoreo de arquitecturas orientadas a servicios altamente dinámicas. Herramientas de visualización como Grafana admite la consulta de Prometheus con la fuente de datos de Grafana para Prometheus incluida desde Grafana 2.5.0.

En esta guía, cubriremos cómo instalar Prometheus en el servidor Ubuntu 18.04.

Componentes de Prometheus

El ecosistema de Prometheus comprende varios componentes que en conjunto funcionan para proporcionar un sistema completo de monitoreo y alerta. La mayoría de los componentes son opcionales y solo necesita instalarlos a pedido. Los componentes principales son:

  • Servidor Prometheus: recopila y almacena datos de series temporales de aplicaciones y sistemas cliente.
  • Exportadores: se utilizan para exportar métricas existentes de sistemas de terceros como métricas de Prometheus.
  • Un alertmanager utilizado para manejar alertas
  • El bibliotecas cliente para instrumentar el código de la aplicación

Características de Prometheus

Las principales características de Prometheus son:

  • un multidimensional modelo de datos con datos de series de tiempo identificados por nombre de métrica y pares clave / valor
  • Tiene un muy lenguaje de consulta flexible para aprovechar su modelo multidimensional
  • Los nodos de servidor único son autónomos y no dependen del almacenamiento distribuido.
  • La colección de series temporales de Prometheus utiliza un modelo de extracción sobre el protocolo HTTP
  • Tiene descubrimiento de servicio automático de destinos y los archivos de configuración se pueden usar para el mismo.
  • empujando series de tiempo es compatible a través de una puerta de enlace intermedia
  • Prometheus tiene soporte para múltiples modos de creación de gráficos y paneles

Instalación de Prometheus en Ubuntu 18.04

Dado que Prometheus está escrito en Go, sus paquetes se distribuyen como binarios. En el momento de escribir este artículo, la última versión de Prometheus es v2.2.1. Puede consultar las versiones del Página de descarga oficial. Los paquetes proporcionados son para los sistemas operativos macOS, Linux y Windows, así que asegúrese de descargar el paquete correcto.

$ sudo su -
$ export RELEASE="2.2.1"
$ wget https://github.com/prometheus/prometheus/releases/download/v${RELEASE}/prometheus-${RELEASE}.linux-amd64.tar.gz

Después de descargar el archivo, extráigalo usando tar.

$ tar xvf prometheus-${RELEASE}.linux-amd64.tar.gz
prometheus-2.2.1.linux-amd64/
prometheus-2.2.1.linux-amd64/consoles/
prometheus-2.2.1.linux-amd64/consoles/index.html.example
prometheus-2.2.1.linux-amd64/consoles/node-cpu.html
prometheus-2.2.1.linux-amd64/consoles/node-disk.html
prometheus-2.2.1.linux-amd64/consoles/node-overview.html
prometheus-2.2.1.linux-amd64/consoles/node.html
prometheus-2.2.1.linux-amd64/consoles/prometheus-overview.html
prometheus-2.2.1.linux-amd64/consoles/prometheus.html
prometheus-2.2.1.linux-amd64/console_libraries/
prometheus-2.2.1.linux-amd64/console_libraries/menu.lib
prometheus-2.2.1.linux-amd64/console_libraries/prom.lib
prometheus-2.2.1.linux-amd64/prometheus.yml
prometheus-2.2.1.linux-amd64/LICENSE
prometheus-2.2.1.linux-amd64/NOTICE
prometheus-2.2.1.linux-amd64/prometheus
prometheus-2.2.1.linux-amd64/promtool

Cambie al directorio recién creado desde las extracciones de archivos.

# cd prometheus-${RELEASE}.linux-amd64/

Crear grupo de sistemas Prometheus

Prometheus necesita su propio usuario y grupo para ejecutarse como.

# groupadd --system prometheus
# grep prometheus /etc/group
prometheus:x:999:

Crear usuario del sistema Prometheus

Ahora que tenemos el grupo Prometheus, creemos un usuario y le asignamos el grupo creado.

# useradd -s /sbin/nologin -r -g prometheus prometheus
# id prometheus
uid=999(prometheus) gid=999(prometheus) groups=999(prometheus)

Cree directorios de datos y configuración para Prometheus

Prometheus necesita un directorio para almacenar sus datos y archivos de configuración. Crearemos / var / lib / prometheus para datos y / etc / prometheus para archivos de configuración.

# mkdir -p /etc/prometheus/{rules,rules.d,files_sd}  /var/lib/prometheus

Copie los archivos binarios de Prometheus a un directorio en su $ PATH

El directorio preferido para colocar binarios de terceros en Linux es / usr / local / bin / ya que está en $ PATH por defecto y no interfiere con los binarios del sistema.

# cp prometheus promtool /usr/local/bin/
# ls /usr/local/bin/
prometheus promtool

Copie las consolas y las bibliotecas de consolas en el directorio de archivos de configuración

Los archivos de consola y las bibliotecas deben colocarse en el directorio / etc / prometheus /.

# cp -r consoles/ console_libraries/ /etc/prometheus/

Crear archivo de unidad systemd:

Ubuntu 18.04 usa el sistema de inicio systemd de forma predeterminada, necesitamos crear un archivo de unidad de servicio para administrar el servicio de Prometheus. Pondremos el archivo en el directorio / etc / systemd / system. El nombre del archivo debe terminar con .Servicio

# cat /etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus systemd service unit
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/local/bin/prometheus 
--config.file=/etc/prometheus/prometheus.yml 
--storage.tsdb.path=/var/lib/prometheus 
--web.console.templates=/etc/prometheus/consoles 
--web.console.libraries=/etc/prometheus/console_libraries 
--web.listen-address=0.0.0.0:9090

SyslogIdentifier=prometheus
Restart=always

[Install]
WantedBy=multi-user.target

Tenga en cuenta que:

  • Vinculamos el servicio a 0.0.0.0:9090. Será accesible desde todas las interfaces de red del servidor. Limítelo especificando la dirección IP para la interfaz que desea usar, 127.0.0.1 solo para acceso local.
  • El archivo de configuración especificado es /etc/prometheus/prometheus.yml. Crearemos un archivo de configuración básico para usar a continuación.

Crear archivo de configuración de Prometheus

Esto se colocará en el directorio / etc / prometheus /.

# cat  /etc/prometheus/prometheus.yml
# Global config
global: 
 scrape_interval: 15s # Set the scrape interval to every 15 seconds.
 evaluation_interval: 15s # Evaluate rules every 15 seconds. 
 scrape_timeout: 15s # scrape_timeout is set to the global default (10s).

# A scrape configuration containing exactly one endpoint to scrape:# Here it's Prometheus itself.
scrape_configs:
 # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
 - job_name: 'prometheus'

# metrics_path defaults to '/metrics'
 # scheme defaults to 'http'.

static_configs:
 - targets: ['localhost:9090']

Para obtener más opciones de configuración, consulte la página oficial. Guía de configuración de Prometheus.

Cambiar los permisos de directorio a usuario y grupo de Prometheus

La propiedad de los archivos y datos de Prometheus debe ser su usuario y grupo.

# chown -R prometheus:prometheus /etc/prometheus/  /var/lib/prometheus/
# chmod -R 775 /etc/prometheus/ /var/lib/prometheus/

Iniciar y habilitar el servicio Prometheus

Inicie y habilite el servicio Prometheus para que se inicie en el arranque.

# systemctl start prometheus
# systemctl enable prometheus
Created symlink from /etc/systemd/system/multi-user.target.wants/prometheus.service to /etc/systemd/system/prometheus.service.

Comprobar estado:

# systemctl status prometheus

Confirme que el puerto 9090 esté escuchando.

# netstat -tunlp | grep 9090
tcp6 0 0 :::9090 :::* LISTEN 2140/prometheus

# telnet 127.0.0.1 9090
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
^]
If you have a firewall like ufw, Open port 9090 to be able to access it from a remote device.

# ufw allow 9090
Rule added
Rule added (v6)

Para permitir una red específica, use:

# ufw allow from 192.168.10.0/24 to any port 9090
Rule added

# ufw status
Status: active

To Action From
-- ------ ----
9090 ALLOW Anywhere 
9090 ALLOW 192.168.10.0/24 
9090 (v6) ALLOW Anywhere (v6)

Para obtener la interfaz web, abra https: // ip: 9090

Lo siguiente que puede querer echar un vistazo es la configuración de varios exportadores para la recopilación y visualización de métricas. El mejor lugar para comenzar es Exportadores de instrumentación página.