Ubuntu
Vamos a necesitar un teclado, monitor/TV y un cable micro HDMI a HDMI para hacer la configuración básica.
Sistema operativo
Aparte de Raspbian, otra opción viable es Ubuntu Server LTS.
Raspbian se basa en Debian y es de 32 bits, mientras que Ubuntu Server está basado en 64 bits y tiene versión ARM con ajustes para controlar la bios de las Raspberry.
Copiar el sistema operativo funciona igual, el asistente de Raspberry Pi Imager permite elegir todas las variedades de Ubuntu. Su versión Server nos permite preconfigurar usuario, contraseña, private key y poco más. En general, lo principal que falta es la IP estática.
Configuración básica
IP
Por defecto inicia sesión con DHCP. Podemos optar por conectar en físico para editar los datos o buscar su IP en el servidor DHCP y conectar remotamente.
netplan
es el servicio encargado de definir la red y cloud-init genera una configuración por defecto para su uso por DHCP. Debido a que se usará como base para otros servicios principales, es mejor que su red esté configurada manualmente.
sudo vi /etc/netplan/50-cloud-init.yaml
Este ejemplo le define la IP 192.168.1.5 y se asigna a si mismo aparte de la otra Raspberry (192.168.1.6) como DNS.
network:
version: 2
ethernets:
eth0:
dhcp4: false
dhcp6: false
addresses:
- 192.168.1.5/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [192.168.1.5, 192.168.1.6]
Tras reiniciar, se podrá acceder remotamente con su IP final.
sudo netplan apply
Actualización
Siempre se debe empezar actualizando el sistema.
sudo apt update
sudo apt upgrade
Métrics
Temperatura
Las métricas se publican utilizando el lighttpd
utilizado en Nagios. Tras completar esa parte, se puede hacer esta.
Similar a Promox VE, podemos publicar la temperatura de la CPU y añadirlo a las métricas de un Prometheus.
Siguiendo el mismo ejemplo, se instala el sensor, aunque no requiere lanzar el explorador.
sudo apt-get install lm-sensors -y
sensors
Lo más sencillo es publicarlo en la carpeta por defecto:
sudo wget https://gitlab.com/ReiIzumi/proxmox-temperature-metrics/-/raw/main/raspberry-metrics.php?ref_type=heads -O /var/www/html/metrics.php
El nombre del nodo se debe reemplazar por el correcto, en este caso rasp1:
sudo sed -i 's/\($DEFAULT_NODE_NAME = \)"node_name"/\1"rasp1"/g' /var/www/html/metrics.php
A nivel de Prometheus, se configura con un ScrapeConfig
:
apiVersion: monitoring.coreos.com/v1alpha1
kind: ScrapeConfig
metadata:
name: rasp-temperature
namespace: monitoring-system
labels:
release: kube-prom
spec:
staticConfigs:
- labels:
job: proxmox-temperature
targets:
- rasp1.intranet.domain.cat:444
metricsPath: /metrics.php
scheme: HTTPS
La configuración de Grafana es la misma que para Proxmox VE.
Reutilizar dashboards no siempre es la mejor idea, y aun menos en este caso donde se reutiliza el prefijo pve_
, pero para un uso doméstico nos hace la vida más sencilla.
Prometheus Node Exporter
También siguiendo la estela creada en Proxmox VE, podemos instalar el Prometheus Node Exporter original.
Buscar la última versión según las Github releases.
wget https://github.com/prometheus/node_exporter/releases/download/v1.9.1/node_exporter-1.9.1.linux-arm64.tar.gz
A partir de aquí es crear un usuario y mover el servicio a la carpeta final.
sudo useradd --no-create-home --shell /bin/false node_exporter
tar xvfz node_exporter-*
sudo mv node_exporter-*-arm64 /opt/node_exporter
sudo chown -R node_exporter:node_exporter /opt/node_exporter
Creamos un servicio.
sudo vi /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/opt/node_exporter/node_exporter --collector.systemd
[Install]
WantedBy=multi-user.target
Iniciamos el servicio.
sudo systemctl daemon-reload
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
Tras ello ya estará publicado
curl http://localhost:9100/metrics
En Prometheus se configura el ScrapeConfig
como siempre:
apiVersion: monitoring.coreos.com/v1alpha1
kind: ScrapeConfig
metadata:
name: rasp-node-exporter
namespace: monitoring-system
labels:
release: kube-prom
spec:
staticConfigs:
- labels:
job: rasp-node-exporter
targets:
- rasp1.intranet.domain.cat:9100