Saltar al contenido principal

Ubuntu

precaución

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.

/etc/netplan/50-cloud-init.yaml
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

aviso

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.

info

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
/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