Mantenimiento
Actualizar SigNoz
El central corre en un LXC de Proxmox montado con community-scripts, así que la actualización se hace con las herramientas de community-scripts desde la Proxmox VE Shell (en el host, no dentro del LXC).
Automático — SO de los LXC (cron-update-lxcs)
Deja una tarea cron en el host que actualiza el sistema operativo de todos los LXC los domingos a medianoche:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/cron-update-lxcs.sh)"
- Instala una copia local en
/usr/local/bin/update-lxcs.sh(el cron corre esa copia, no baja nada en cada ejecución). - Para excluir contenedores: editar
/etc/update-lxcs.conf→EXCLUDE=100,101,102(CTIDs). - Logs en
/var/log/update-lxcs-cron.log.
Manual — la app SigNoz (update-apps)
Actualiza las aplicaciones de los LXC creados con community-scripts (detecta el servicio y aplica el update; puede hacer un vzdump antes):
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/update-apps.sh)"
Solo lista contenedores con el tag community-script / proxmox-helper-scripts.
Qué actualiza cada uno
cron-update-lxcs mantiene al día el SO de los contenedores (apt). update-apps actualiza la app SigNoz propiamente dicha. Son complementarios.
No afecta a los agentes
Actualizar el central no toca los otelcol-contrib de los servidores remotos: son binarios distintos y hablan OTLP (protocolo estable). Ver Actualizar los agentes.
Después de actualizar, verificar dentro del LXC (pct enter <CTID> desde el host):
systemctl status zookeeper clickhouse-server signoz signoz-otel-collector
journalctl -u signoz -f --tail=50
Actualizar los agentes
Los agentes son binarios descargados de GitHub Releases. Para actualizar, reinstalar indicando la versión nueva:
# Primero borrar el binario viejo para forzar la descarga
rm /usr/local/bin/otelcol-contrib
# Reinstalar con la versión nueva (mantiene la config existente)
sudo ./install-agent.sh \
--central-ip 10.147.20.5 \
--server-name nombre-del-server \
--otel-version 0.100.0
El script detecta que el binario ya no existe y lo descarga de nuevo. La config en /etc/otelcol-contrib/config.yaml no se pisa.
Corregir binding 0.0.0.0 en agentes ya instalados
Los agentes instalados antes de la versión que fija el binding a localhost pueden tener 0.0.0.0 en la config. Hay un script para corregirlo en masa:
# En hosts directamente
./fix-health-check-binding.sh web-01 db-01 proxy-01
# Con archivo de servidores
./fix-health-check-binding.sh --file servers.txt
# Con usuario y clave SSH específicos
./fix-health-check-binding.sh --file servers.txt --user ubuntu --key ~/.ssh/id_rsa
Formato de servers.txt:
El script reemplaza cualquier 0.0.0.0:PUERTO por localhost:PUERTO (cubre 13133, 8888, 8889 y cualquier otro), reinicia el agente y muestra un resumen al final.
Disco en ClickHouse
Ver cuánto está ocupando cada tabla:
clickhouse-client --query \
"SELECT database, table, formatReadableSize(sum(bytes)) as size \
FROM system.parts GROUP BY database, table ORDER BY sum(bytes) DESC LIMIT 20"
Los datos se retienen 74 días por configuración. Si el disco crece demasiado antes, se puede reducir la retención en la config de ClickHouse.
Troubleshooting
El agente no conecta al central
# Verificar conectividad ZeroTier al puerto OTLP
nc -zv 10.147.20.5 4317
# Ver si ZeroTier está activo
zerotier-cli status
zerotier-cli listnetworks
No aparecen datos en SigNoz
# Ver logs del agente en el servidor remoto
journalctl -u otelcol-contrib -n 50
journalctl -u otelcol-contrib -f
# En el central, ver si llegan datos
journalctl -u signoz-otel-collector -n 50
# Health check del agente (desde el propio servidor)
curl http://localhost:13133/
# Health check del collector central
curl http://IP_ZEROTIER_CENTRAL:13133/
# Health check del backend SigNoz
curl http://IP_ZEROTIER_CENTRAL:8080/api/v1/health
El servicio no levanta tras editar la config
# Ver el error exacto
journalctl -u otelcol-contrib -n 30
# Validar la config antes de reiniciar
otelcol-contrib validate --config /etc/otelcol-contrib/config.yaml
# Reiniciar
systemctl restart otelcol-contrib