En este manual veremos como monitorizar los recursos consumidos por Jail en FreeBSD mediante Prometheus, si no hemos realizado la instalación base de Prometheus primero seguiremos la guía básica de instalación de Prometheus y Grafana.
Para poder hacer el seguimiento de los recursos consumidos por Jail debemos habilitar el soporte para
RACCT
:
kern.racct.enable=1
Reiniciamos para aplicar los cambios:
Comprobamos que esté habilitado:
kern.racct.enable: 1
Comprobamos que podamos consultar los datos por Jail de forma manual, primero obtenemos el JID de una de las Jail:
JID IP Address Hostname Path
Atlas 192.168.69.19 Atlas /usr/local/bastille/jails/Atlas/root
BaudBeauty 192.168.69.16 BaudBeauty /usr/local/bastille/jails/BaudBeauty/root
HellStorm 192.168.69.17 HellStorm /usr/local/bastille/jails/HellStorm/root
MetaCortex 192.168.69.20 MetaCortex /usr/local/bastille/jails/MetaCortex/root
Paradox 192.168.69.18 Paradox /usr/local/bastille/jails/Paradox/root
RECLog 192.168.69.21 RECLog /usr/local/bastille/jails/RECLog/root
Consultamos los recursos consumidos por la Jail ioc-Infinity:
cputime=1
datasize=740K
stacksize=0
coredumpsize=0
memoryuse=48M
memorylocked=0
maxproc=6
openfiles=1104
vmemoryuse=131M
pseudoterminals=0
swapuse=13M
nthr=7
msgqqueued=0
msgqsize=0
nmsgq=0
nsem=0
nsemop=0
nshm=0
shmsize=0
wallclock=705
pcpu=0
readbps=0
writebps=0
readiops=0
writeiops=0
Instalamos el exporter:
pkg install jail_exporter
El exporter puede correr de dos formas distintas:
- Como servicio RC
- Utilizando el TextCollector de node_exporter
Servicio RC
Para habilitar la autenticación del exporter debemos generar un fichero htpass, para ello utilizaremos el propio exporter:
Hash: $2b$12$WU7g/xOAvULdOfeiJWcpwOQp9kBaKirWig1vH4IofR9F29Eat/qh.
basic_auth_users:
jail_exporter_user: '$2b$12$WU7g/xOAvULdOfeiJWcpwOQp9kBaKirWig1vH4IofR9F29Eat/qh.'
Habilitamos el servicio y lo configuramos según nuestras necesidades:
sysrc jail_exporter_listen_address=192.168.69.2:9452
sysrc jail_exporter_args=–web.auth-config=/usr/local/jail_exporter/auth.yml
Arrancamos manualmente el exporter para asegurarnos de que no dá ningún problema:
Podemos ver el socket abierto en el puerto 9452:
root jail_expor 56107 6 tcp4 192.168.69.2:9452 *:* LISTEN
Arrancamos el exporter mediante el script RC:
TextCollector
Si optamos por utilizar el TextCollector de node_exporter primero debemos instalarlo:
Crontabeamos la ejecución de jail_exporter:
*/1 * * * * root jail_exporter --output.file-path /var/tmp/node_exporter/jail_exporter.prom
node_exporter expone por defecto todas las métricas de los ficheros del directorio: /var/tmp/node_exporter/*.prom, de este modo conseguiremos el mismo resultado que com el servicio pero hemos tenido que instalar un software adicional.
Si hemos optado por RC debemos añadir un scrape a la configuración de Prometheus, si hemos utilizado el TextCollector podemos omitir esta parte:
...
scrape_configs:
...
- job_name: 'prometheus_jail_exporter'
scrape_interval: 30s
static_configs:
- targets: ['mightymax:9452']
basic_auth:
username: jail_exporter_user
password: PASSWORD
...
Reiniciamos el servicio:
Para poder visualizar las métricas debemos importar la
dashboard de Grafana: