Monitorización del sistema Proxmox

De Wiket
Salta a la navegació Salta a la cerca

Monitorización mediante Prometheus

Vamos a utilizar prometheus para la monitorización de proxmox, esta es una aplicación de software gratuita utilizada para la supervisión y alerta de eventos y nos permite registrar métricas en tiempo real.

Agentes prometheus

Primero vamos a instalar el agente que se encargará de exportar los datos del clúster, prometheus-exporter

Para ello tenemos que instalar el entorno de python3, ya que la herramienta se instala mediante el pip.

captura1pr

Creamos la carpeta con el entorno.

captura2pr

Instalamos el agente mediante /opt/prometheus-pve-exporter/bin/pip install prometheus-pve-exporter

captura3pr

Ya tenemos la herramienta instalada, y podemos ver con el flag --help los parámetros, para que funcione le tenemos que pasar un archivo pve.yml en el que pondremos el usuario y la contraseña del administrador del nodo.

captura4pr

Creamos un directorio y añadimos el pve.yml.

captura5pr

Utilizando la sentencia, pve_exporter /etc/prometheus/pve.yml, ya ponemos en funcionamiento el agente. Este se queda escuchando por el puerto :9221

captura7pr

Para que sea mas eficiente creamos un servicio, en el que se este siempre ejecutando en segundo plano. Este ejecuta la sentencia pve_exporter /etc/prometheus/pve.yml

captura8pr

Reiniciamos el daemon, arrancamos el servicio y vemos que esta activo y funcionando correctamente.

captura9pr

Y ahora activamos el servicio para que se inicie siempre.

prome1

Repetimos el mismo proceso en el otro nodo por si se cae un nodo, tener el otro exportando datos y que no se caiga el servicio.

Una vez tenemos los agentes instalados tenemos que crear la maquina de monitorización, esta la creamos dentro de un nodo para beneficiar-nos del HA y si se cayese de un nodo, se pasase al otro.

Prometheus

Para la maquina de monitorización instalaremos un ubuntu 20.04 Desktop.

La cargamos como iso image de manera local.

prome2

La vamos a instalar en el CEPH-VMS para que tenga una alta disponibilidad.

prome3

Creamos la máquina y le ponemos un nombre, esta coge un ID de máquina por defecto.

prome4

En storage elegimos el CEPH-VMS y le ponemos uno espacio de 124GB

prome5

Ya la tenemos creada ahora iniciamos la maquina.

prome6

Nos salta el instalador de ubuntu típico y hay que instalar el ubuntu como lo haríamos normalmente.

prome7

Le ponemos un usuario y una contraseña para la maquina.

prome8

Vamos a utilizar prometheus como sistema de monitorización ya que es 100% gratuito y muy eficiente. Por ello vamos a la página oficial y descargamos el paquete.

prome9

Creamos una carpeta en /etc que es donde lo tendremos almacenado.

prome10

Descomprimimos el .tar en el que viene y lo movemos todo a /etc/prometheus

prome11

Creamos una copia del archivo de configuración por si nuestra configuración petase y no sepamos como arreglar-lo, solo seria restablecer la configuración y volver a configurar.

prome12

Este es el archivo de configuración de prometheus ya configurado, lo que hemos añadido es un job que lo hemos llamado pve y le estamos indicando las ip de los dos agentes y el puerto desde el cual están enviando metricas que son los dos nodos.

# 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:
           - localhost: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 timeseries scraped from this config.
  - job_name: "prometheus"

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

    static_configs:
      - targets: ["localhost:9090"]
  - job_name: 'pve'
    static_configs:
      - targets:
        - 192.168.41.6:9221  # Proxmox VE node with PVE exporter.
        - 192.168.41.7:9221  # Proxmox VE node with PVE exporter.
    metrics_path: /pve
    params:
      module: [default]

Para comprobar que los agentes llegan al ubuntu, con un nc podemos hacer una prueba al puerto del agente y si nos sale succeded, es que esta abierto y llegamos entonces esta todo correcto.

prome14

Creamos prometheus como servicio para que este siempre arrancado.

cat <<EOF> /etc/systemd/system/prometheus-pve-exporter.service
[Unit]
Description=Prometheus exporter for Proxmox VE
Documentation=https://github.com/znerol/prometheus-pve-exporter

[Service]
Restart=always
User=root
ExecStart=/opt/prometheus-pve-exporter/bin/pve_exporter /etc/prometheus/pve.yml

[Install]
WantedBy=multi-user.target
EOF
Y lo arrancamos mediante estos dos comandos 
systemctl daemon-reload
systemctl start prometheus-pve-exporter

Abrimos el navegador y entramos en localhost:9090 nos saldrá la pantalla principal.

prome16

Vamos al apartado de status y podemos ver el job que hemos añadido anteriormente en el archivo de configuración y nos da información del estado si esta UP o DOWN. En el caso de que diese error nos saldría información del error.

prome17

Grafana

Ahora vamos a instalar Grafana que es un software para la visualización de datos métricos, y con este podremos visualizar los datos que tenemos en el prometheus y crear gráficos en tiempo real. Lo hemos utilizado ya que tiene licencia gratuita y tiene muchos usuarios activos, por ende hay foros con errores y soporte.

Vamos a la página oficial y nos descargamos la version gratuita OSS, para windows.

prome18

Lo descargamos mediante wget.

prome19

Creamos el directorio /etc/grafana y lo movemos todo a esa carpeta.

prome20

Tenemos que crear también el servicio.

[Unit]
Description=Grafana instance
Documentation=http://docs.grafana.org
Wants=network-online.target
After=network-online.target
After=postgresql.service mariadb.service mysqld.service

[Service]
EnvironmentFile=/etc/grafana/bin/grafana-server
User=root
Group=root
Type=notify
Restart=on-failure
WorkingDirectory=/usr/share/grafana
RuntimeDirectory=grafana
RuntimeDirectoryMode=0750
ExecStart=/etc/grafana/bin/grafana-server                                                  \
                            --config=${CONF_FILE}                                   \
                            --pidfile=${PID_FILE_DIR}/grafana-server.pid            \
                            --packaging=rpm                                         \
                            cfg:default.paths.logs=${LOG_DIR}                       \
                            cfg:default.paths.data=${DATA_DIR}                      \
                            cfg:default.paths.plugins=${PLUGINS_DIR}                \
                            cfg:default.paths.provisioning=${PROVISIONING_CFG_DIR}  

LimitNOFILE=10000
TimeoutStopSec=20
CapabilityBoundingSet=
DeviceAllow=
LockPersonality=true
MemoryDenyWriteExecute=false
NoNewPrivileges=true
PrivateDevices=true
PrivateTmp=true
ProtectClock=true
ProtectControlGroups=true
ProtectHome=true
ProtectHostname=true
ProtectKernelLogs=true
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectProc=invisible
ProtectSystem=full
RemoveIPC=true
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
RestrictNamespaces=true
RestrictRealtime=true
RestrictSUIDSGID=true
SystemCallArchitectures=native
UMask=0027

[Install]
WantedBy=multi-user.target
Y lo arrancamos mediante estos dos comandos 
systemctl daemon-reload
systemctl start prometheus-pve-exporter

Y vemos que esta arrancado.

prome22

Entramos a localhost:3000 , nos entra a la página de login y ponemos el usuario admin y contraseña admin que vienen por defecto.

prome23

Tenemos que sincronizar-lo con el prometheus por ello vamos a Datasources y le damos a Add data source.

prome24

Elegimos data source Prometheus.

prome25

Le ponemos un nombre y el url del prometheus con el data source localhost:9090

prome26

Le damos a Save & test y nos devuelve feedback si se ha conectado bien o no.

prome27

Una vez tenemos el prometheus conectado con el grafana, tenemos que importar un gráfico de la comunidad que nos guste. Para ello vamos a la pagina oficial de grafana y copiamos el numero de arriba a la derecha. En este caso el 10347.

prome28

Le damos a import, ponemos el numero y nos salen diferentes opciones, le ponemos un nombre, le indicamos donde queremos guardar, y le ponemos que use nuestra database prometheus.

Extra

Y ya tenemos los gráficos, donde podemos ver las maquinas del proxmox con sus % de cpu % de ram, la carga de cpu y ram de los nodos, el espacio de cada disco, y diferentes gráficos bastante útiles.

prome29

prome30

Alertmanager

prome31

prome32

prome33

prome34

prome35

prome36

prome37

prome38

prome39

prome40

prome41

prome42






Volver a IETI Cloud Grupo 2