¿Cómo instalar y configurar Prometheus en Linux? (Ubuntu y CentOS)
Publicado: 2019-08-26¿Qué es Prometeo?
Prometheus es un sistema de monitoreo de clase mundial que viene con una base de datos de series temporales por defecto. Es un sistema de código abierto construido originalmente en el año 2012.
Las 500 empresas más importantes del mundo han estado utilizando Prometheus para recopilar métricas para su infraestructura y aplicación. Prometheus admite modelos de datos multidimensionales con datos de series temporales que se identifican principalmente como métricas.
No hay ningún requisito especial de almacenamiento de datos, ya que Prometheus utiliza Time Series DB
(TSDB) como parte de su propia instalación.
En este tutorial instalaremos Prometheus en Linux Ubuntu y CentOS con pasos súper simples.
Empecemos:
Paso-1 Verificar la versión del sistema operativo Linux
Comando: cat /etc/os-release
1 2 3 4 5 6 7 8 9 10 11 12 13 |
root @ localhost : ~ # cat /etc/os-release NAME = "Ubuntu" VERSION = "19.04 (Disco Dingo)" ID = ubuntu ID_LIKE = debian PRETTY_NAME = "Ubuntu 19.04" VERSION_ID = "19.04" HOME_URL = "https://www.ubuntu.com/" SUPPORT_URL = "https://help.ubuntu.com/" BUG_REPORT_URL = "https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL = "https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME = disco UBUNTU_CODENAME = disco |
Los pasos a continuación se aplican al Ubuntu Linux OS
.
Paso 2 Crear la carpeta de datos y configuración de Prometheus
Comandos :
1 2 3 |
root @ localhost : ~ # sudo mkdir /crunchify/prometheus/conf root @ localhost : ~ # sudo mkdir /crunchify/prometheus/data |
Verifiquemos ambas carpetas:
1 2 3 4 5 6 7 8 9 |
root @ localhost : / crunchify / prometheus # pwd / crunchify / prometheus root @ localhost : / crunchify / prometheus # ls -ltra total 16 drwxr - xr - x 2 root root 4096 Aug 25 23 : 37 conf drwxr - xr - x 3 root root 4096 Aug 25 23 : 37 . . drwxr - xr - x 2 root root 4096 Aug 25 23 : 37 data drwxr - xr - x 4 root root 4096 Aug 25 23 : 37 . |
Paso 3 Cambiar la propiedad de la carpeta de datos
Esto es necesario para evitar problemas de permisos en los pasos posteriores.
1 |
root @ localhost : / crunchify / prometheus # sudo chown 65534:65534 /crunchify/prometheus/data/ |
Paso 4 Crear archivo prometheus.yml
Vaya a la carpeta /crunchify/prometheus/conf
y cree el archivo prometheus.yml
.
1 2 3 |
root @ localhost : / # cd /crunchify/prometheus/conf root @ localhost : / crunchify / prometheus / conf # vi prometheus.yml |
contenido del archivo prometheus.yml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# my global config global : scrape_interval : 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval : 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting : alertmanagers : - static_configs : - targets : # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files : # - "first_rules.yml" # - "second_rules.yml" # 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 time series scraped from this config. - job_name : 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs : - targets : [ '65.19.71.11:9090' ] |
Note:
En el archivo anterior, reemplace la IP con la IP de su host/VM.
Aquí hay una Directory structure
para este tutorial:
Paso 5 Asegúrese de haber instalado Docker en su máquina virtual.
¿Cómo verificar si Docker está instalado o no?
1 2 3 |
root @ localhost : ~ # docker Command 'docker' not found |
Eso significa que Docker no está instalado en su host/VM. Siga completamente el tutorial de instalación de Docker para instalar Docker en su host/VM.
Paso 6 Instalar Docker Compose
Pre-requisite
es instalar Docker primero antes de ejecutar los pasos a continuación. (Paso-5)
Ejecute los siguientes tres comandos:
1 2 3 4 5 6 7 8 9 |
root @ localhost : ~ # sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 617 0 617 0 0 2448 0 -- : -- : -- -- : -- : -- -- : -- : -- 2448 100 15.4M 100 15.4M 0 0 11.2M 0 0 : 00 : 01 0 : 00 : 01 -- : -- : -- 15.7M root @ localhost : ~ # sudo chmod +x /usr/local/bin/docker-compose root @ localhost : ~ # sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose |
Paso 7 Verificar la versión de Docker Compose
1 2 3 |
root @ localhost : ~ # docker-compose --version docker - compose version 1.24.1 , build 4667896b |
Felicidades: docker compose se instaló correctamente en su máquina virtual.
Paso 8 Crear archivo docker-compose.yml
Vaya a la carpeta /crunchify/prometheus.
1 2 3 |
root @ localhost : / crunchify # cd /crunchify/prometheus/ root @ localhost : / crunchify / prometheus # vi docker-compose.yml |
Contenido del archivo docker-compose.yml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
version : "3" services : prometheus : image : prom / prometheus : latest container_name : prometheus volumes : - / crunchify / prometheus / conf : / etc / prometheus - / crunchify / prometheus / data : / prometheus command : - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' ports : - "9090:9090" |
Paso 9 Instale Prometheus Start/Stop como parte del control del sistema.
Cree el archivo vi /etc/systemd/system/prometheus.service
contenido del archivo prometheus.service:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[ Unit ] Description = Prometheus monitoring docker container After = docker . service BindsTo = docker . service [ Service ] Restart = always WorkingDirectory =/ crunchify / prometheus / # Ubuntu ExecStart =/ usr / bin / docker - compose up ExecStop =/ usr / bin / docker - compose down # CentOS #ExecStart=/usr/bin/docker-compose up #ExecStop=/usr/bin/docker-compose down [ Install ] WantedBy = multi - user . target |

Paso 10 Inicie el servicio Prometheus
1 2 3 4 5 6 |
root @ localhost : / crunchify / prometheus / config # sudo systemctl daemon-reload root @ localhost : / crunchify / prometheus / config # sudo systemctl enable prometheus Created symlink / etc / systemd / system / multi - user . target . wants / prometheus . service → / etc / systemd / system / prometheus . service . root @ localhost : / crunchify / prometheus / config # sudo systemctl start prometheus |
Servidor Prometheus iniciado en Linux:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
root @ localhost : / crunchify / prometheus # sudo systemctl start prometheus Creating network "prometheus_default" with the default driver Pulling prometheus ( prom / prometheus : latest ) . . . latest : Pulling from prom / prometheus 8e674ad76dce : Pull complete e77d2419d1c2 : Pull complete d7c0a2a2ca7e : Pull complete bd46de67c79d : Pull complete 35f6078df7e9 : Pull complete 8b3f04e26151 : Pull complete 9d234d9c8a77 : Pull complete 1a8a2a4f314d : Pull complete 62e28fd716ec : Pull complete Digest : sha256 : cd93b8711bb92eb9c437d74217311519e0a93bc55779aa664325dc83cd13cb32 Status : Downloaded newer image for prom / prometheus : latest Creating prometheus . . . done Attaching to prometheus prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.796Z caller = main . go : 293 msg = "no time or size retention was set so using the default time retention" duration = 15d prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.797Z caller = main . go : 329 msg = "Starting Prometheus" version = "(version=2.12.0, branch=HEAD, revision=43acd0e2e93f9f70c49b2267efa0124f1e759e86)" prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.798Z caller = main . go : 330 build_context = "(go=go1.12.8, user=root@7a9dbdbe0cc7, date=20190818-13:53:16)" prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.798Z caller = main . go : 331 host_details = "(Linux 5.0.0-13-generic #14-Ubuntu SMP Mon Apr 15 14:59:14 UTC 2019 x86_64 d870070a8ec7 (none))" prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.799Z caller = main . go : 332 fd_limits = "(soft=1048576, hard=1048576)" prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.799Z caller = main . go : 333 vm_limits = "(soft=unlimited, hard=unlimited)" prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.803Z caller = main . go : 654 msg = "Starting TSDB ..." prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.813Z caller = head . go : 509 component = tsdb msg = "replaying WAL, this may take awhile" prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.815Z caller = head . go : 557 component = tsdb msg = "WAL segment loaded" segment = 0 maxSegment = 0 prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.818Z caller = main . go : 669 fs_type = EXT4_SUPER_MAGIC prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.819Z caller = main . go : 670 msg = "TSDB started" prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.819Z caller = main . go : 740 msg = "Loading configuration file" filename =/ etc / prometheus / prometheus . yml prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.823Z caller = main . go : 768 msg = "Completed loading of configuration file" filename =/ etc / prometheus / prometheus . yml prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.823Z caller = main . go : 623 msg = "Server is ready to receive web requests." prometheus | level = info ts = 2019 - 08 - 26T02 : 57 : 48.824Z caller = web . go : 448 component = web msg = "Start listening for connections" address = 0.0.0.0 : 9090 |
¡¡Felicidades!! Ha iniciado correctamente Prometheus en su host.
Juguemos con Prometheus Dashboard y UI
¿Cómo verificar si Prometheus está funcionando correctamente o no?
1 |
URL : http : //65.19.71.11:9090/metrics |
¿Cómo verificar el estado UP de Host o VM usando Prometheus?
1 |
URL : http : //65.19.71.11:9090/targets |
¿Cómo comprobar la configuración de Prometheus en el navegador?
Información de tiempo de ejecución de Prometheus
1 |
URL : http : //65.19.71.11:9090/status |
tiempo de actividad | 2019-08-26 03:07:24.244852166 +0000 UTC |
---|---|
Directorio de trabajo | /Prometeo |
Recarga de configuración | Exitoso |
Última recarga de configuración exitosa | 2019-08-26 03:07:24 +0000 UTC |
trozos de cabeza | 533 |
Serie de tiempo principal | 533 |
Corrupciones WAL | 0 |
gorutinas | 36 |
GOMAXPROCS | 1 |
GOGC | |
ERROR | |
Retención de almacenamiento | 15d |
Información de compilación de Prometheus
Versión | 2.12.0 |
---|---|
Revisión | 43acd0e2e93f9f70c49b2267efa0124f1e759e86 |
Rama | CABEZA |
BuildUser | root@7a9dbdbe0cc7 |
La fecha de construcción | 20190818-13:53:16 |
GoVersión | ir1.12.8 |
Indicadores de la línea de comandos de Prometheus:
1 |
URL : http : //65.19.71.11:9090/flags |
alertmanager.notification-queue-capacity | 10000 |
---|---|
alertmanager.tiempo de espera | 10s |
archivo de configuración | /etc/prometeo/prometeo.yml |
log.format | registro |
nivel de registro | información |
consulta.lookback-delta | 5m |
consulta.max-concurrencia | 20 |
consulta.max-muestras | 50000000 |
Tiempo vencido de consulta | 2m |
reglas.alerta.para-período de gracia | 10m |
rules.alert.for-outage-tolerance | 1h |
rules.alert.resend-delay | 1m |
storage.remote.flush-fecha límite | 1m |
storage.remote.read-concurrent-limit | 10 |
storage.remote.read-sample-limit | 50000000 |
almacenamiento.tsdb.permitir-bloques superpuestos | falso |
storage.tsdb.max-block-duración | 36h |
storage.tsdb.min-block-duración | 2 horas |
almacenamiento.tsdb.no-archivo de bloqueo | falso |
almacenamiento.tsdb.ruta | /Prometeo |
almacenamiento.tsdb.retención | 0s |
almacenamiento.tsdb.retención.tamaño | 0B |
almacenamiento.tsdb.retención.tiempo | 0s |
almacenamiento.tsdb.wal-compresión | falso |
storage.tsdb.wal-segment-size | 0B |
web.console.libraries | consola_bibliotecas |
web.console.templates | consolas |
web.cors.origin | .* |
web.enable-admin-api | falso |
web.habilitar ciclo de vida | falso |
web.url-externo | |
web.escuchar-dirección | 0.0.0.0:9090 |
web.max-conexiones | 512 |
web.page-title | Servidor de recopilación y procesamiento de series temporales de Prometheus |
tiempo de espera de lectura web | 5m |
web.ruta-prefijo | / |
Y ya está todo listo. Has successfully installed Prometheus
y verificado todas sus características.