Post

Jitsi logs y Telegram

Jitsi logs y Telegram

Jitsi logs y Telegram

Este bloque extrae salas Jitsi desde logs Apache y envia el resumen a Telegram.

Uso en la infraestructura

Se usa para tener visibilidad basica del uso de Jitsi sin entrar en analitica pesada.

RolServicioImpacto si falla
Auditoria ligeraJitsiNo queda resumen rapido de salas detectadas
Logs webApacheCambios de formato rompen el parseo
AvisosTelegramNo llegan notificaciones al canal operativo

Es util para comprobaciones diarias o alertas simples, no para metricas historicas completas.

El parseo depende del formato actual del access log. Si cambia Apache, proxy o Jitsi, campos como IP, fecha o URL pueden moverse. Antes de automatizar el envio a Telegram, revisa el fichero generado y evita mandar IPs o nombres de sala sensibles a canales compartidos. Si hay muchas lineas, mejor agrupar un resumen para no saturar el bot.

Script original

1
2
3
#!/bin/bash

grep http-bind?room= /var/log/apache2/jitsi/access.log|awk '{print ($1,$2,$3,$4,$7)}'|awk -F- '{print ($1,$4)}'|awk -F? '{print ($1,$2)}' |awk '{print ($1,$3)}'|grep -v <IP_INTERNA>|sort -u > /var/log/apache2/jitsi/acces_rooms.log

Bot original

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

cd /var/log/nginx/jitsi/
TOKEN="<TOKEN>"
ID="<CHAT_ID>"
ID2="<CHAT_ID>"
ID_SISTEMAS="<CHAT_ID>"
MENSAJE="Esto es un Mensaje de Prueba"
URL="https://api.telegram.org/bot$TOKEN/sendMessage"

IFS=$'\n'
for j in $(cat /var/log/apache2/jitsi/acces_rooms.log)
do
    curl -s -X POST $URL -d chat_id=$ID2 -d text="$j"
done

Version revisada del parseo

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env bash
set -euo pipefail

LOG_APACHE="/var/log/apache2/jitsi/access.log"
SALIDA="/var/log/apache2/jitsi/acces_rooms.log"

awk '/http-bind\?room=/ {print $1, $4, $7}' "$LOG_APACHE" \
  | awk -F- '{print $1, $4}' \
  | awk -F? '{print $1, $2}' \
  | awk '{print $1, $3}' \
  | grep -v '<IP_INTERNA>' \
  | sort -u > "$SALIDA"

Version revisada del envio a Telegram

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env bash
set -euo pipefail

TOKEN="<TOKEN>"
CHAT_ID="<CHAT_ID>"
SALIDA="/var/log/apache2/jitsi/acces_rooms.log"
URL="https://api.telegram.org/bot${TOKEN}/sendMessage"

while IFS= read -r linea; do
  curl -fsS -X POST "$URL" \
    -d chat_id="$CHAT_ID" \
    --data-urlencode text="$linea"
done < "$SALIDA"

Recomendaciones

  • Usar --data-urlencode para textos con espacios o caracteres especiales.
  • No guardar tokens en el script; cargarlos desde /ruta/segura/telegram.env.
  • Añadir control de rate limit si hay muchas salas.
  • Normalizar el nombre de salida access_rooms.log.

Cambios y motivo

CambioMotivo
awk directoreduce cadena de pipes y hace el parseo mas legible
while readevita problemas con for $(cat fichero) y espacios
--data-urlencodeenvia correctamente texto con espacios o caracteres especiales
token en ruta seguraevita dejar el token de Telegram en el script
This post is licensed under CC BY 4.0 by the author.