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 el espacio en la nube. 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, como para monitorear 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 juntos funcionan para proporcionar un sistema completo de monitoreo y alerta. La mayoría de los componentes son opcionales y solo necesita instalarlos bajo demanda. 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
- los 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 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 estas líneas, 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. Nosotros 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 debajo / etc / prometheus / directorio.
# cp -r consoles/ console_libraries/ /etc/prometheus/
Crear archivo de unidad systemd:
Ubuntu 18.04 usa el sistema systemd init de forma predeterminada, necesitamos crear un archivo de unidad de servicio para administrar el servicio de Prometheus. Pondremos el archivo debajo / etc / systemd / system directorio. 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 / etc / prometheus / directorio.
# 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 http: // ip: 9090
Lea también:
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.