ASIR2 DOC 2025/26

Assignmets docs for asir2

View on GitHub

Grafana Metrics Stack

La actividad consiste en obtener y visualizar la métrica de nuestra red simulada en incus para ello deberemos crear y configurar varias instancias de ubuntu 24.04 cada una con su función que se describe brevemente a continuación:

 incus$ incus network create asirnetwork \
     ipv4.address = 10.10.82.1/24 \
     ipv4.nat = true \ 
     ipv4.dhcp.ranges = 10.10.82.100-10.10.82.200 \
     ipv4.dhcp.routes = 0.0.0.0/0,10.10.82.1 \
     ipv6.address = none
     
 incus$ incus network show asirnetwork     
incus$ incus launch images:ubuntu/24.04 grafana --network asirnetwork      
incus$ incus list -n4st

Instalación de paquetes y repositorios necesarios

incus$ incus exec <instance> -- bash -c 'apt-get update && apt-get -y install  aptitude wget bash-completion gpg nano xsel vim' 
incus$ incus exec <instance> -- bash -c 'wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor > /etc/apt/keyrings/grafana.gpg'
incus$ incus exec <instance> -- bash -c 'echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | tee /etc/apt/sources.list.d/grafana.list'

Grafana

Instalar y configurar grafana

incus$ incus exec grafana -- bash -c ' apt-get update && apt-get -y install grafana'
incus$ incus shell grafana
grafana$ systemctl enable grafana-server.service
grafana$ systemctl start grafana-server.service
grafana$ ss -atunp
http://<ip-grafana>:3000

Alloy

Alloy permite la recolección y procesamiento de los datos de telemetría de diferentes fuentes

incus$ incus exec alloy -- bash -c ' apt-get update && apt-get -y install alloy'
incus$ incus shell alloy

alloy$ systemctl enable alloy.service
alloy$ systemctl start alloy.service
alloy$ ss -atunp
/etc/default/alloy
/etc/alloy/config.alloy
/etc/default/alloy
...
CUSTOM_ARGS = "--server.http.listen-addr=0.0.0.0:12345"
...
/etc/alloy/config.alloy

livedebugging {
  enabled = true
}

Podemos consultar el correcto funcionamiento de Alloy a través de su API

curl alloy-ip:12345/-/ready
curl alloy-ip:12345/-/healthy

Tareas

Loki

Loki almacena de forma eficiente los logs que pueden ser explorados mediante un lenguaje de consulta (LogQL)

incus$ incus exec loki -- bash -c ' apt-get update && apt-get -y install loki'
incus$ incus shell loki

Warning

La configuración por defecto de loki no permite iniciar el servicio de forma correcta. Es necesario desactivar la opción enable_multi_varian_queries: true del fichero de configuración /etc/loki/config.yml

alloy$ systemctl enable loki.service
alloy$ systemctl start loki.service
alloy$ ss -atunp

Podemos comprobar el correcto funcionamiento de loki consultando la API

curl loki-ip:3100/ready
curl loki-ip:3100/services

Mimir

Mimir es una base de datos compatible con prometheus que permite configurar alertas.

incus$ incus exec mimir -- bash -c ' apt-get update && apt-get -y install mimir'
incus$ incus shell mimir

Configuración Tras la instalación, debemos modificar la configuración de mimir, puedes descargar una configuració operativa para nuestros propósitos con el siguiene comando:

wget -O /etc/mimir/config.yml https://raw.githubusercontent.com/ASIR2-SGD/asir2-sgd.github.io/refs/heads/main/resources/files/mimir_config.yml

Reiniciar el servicio tras la configuración y comprobar que está activo al arranque

mimir$ systemctql restart mimir
mimir$ systemctl status mimir

Comprueba que el servicio está escuchando

mimir ss -atunp

Comprueba el estado de mimir consultando la [API](Podemos comprobar el correcto funcionamiento de loki consultando la API

curl mimir-ip:8080/ready
curl mimir-ip:8080/api/v1/user_stats
curl mimir-ip:8080/api/v1/status/flags
curl mimir-ip:8080/config

Note

Para configurar mimir como datasource en grafana deberás indicar la siguietne ruta en el campo Connection_http://mimir-ip:port/prometheus

grafana-mimir-dashboard

Métricas de incus

Incus facilita enormemente la tarea de obtener valores de métrica de sus instancias que podemos obtener con el comando bash incus query /1.0/metrics. Debemos exponerlas para que sean accesibles medianta la API, deberemos llevar a cabo algunos cambios en la configuración global

incus$ incus config set core.https_address ":8443"
incus$ incus config set core.metrics_address ":8444"
incus$ incus config set core.metrics_authentication false

De esta forma exponemos incus en la red , accede a bash https://incus-ip:8443 y sigue los pasos para crear una conexión TLS necesaria.

Incus también puede enviar los logs a loki llevando a cabo los siguientes cambios en la configuraición global.

incus$ incus config set logging.loki01.target.type  loki
incus$ incus config set logging.loki01.target.address  http://<loki-ip>:3100
incus$ incus config set logging.loki01.lifecycle.types  instance
incus$ incus config set logging.loki01.types lifecycle,network-acl,logging

Comprueba y corrige la configuraición global de incus en caso de que sea necesario mediante los comandos.

incus$ incus config show
incus$ incus config edit

Actividad. Métricas apache/mysql

Se propone en la siguiente actividad que el alumno sea capaz de configurar los componentes vistos para visualizar la información e métrica de un servidor web apache. Pasos

I