Files
logstream/tools/send-test-logs.sh
T
2026-09-28 12:19:29 +02:00

48 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Envoie des messages syslog de test (RFC 3164 et RFC 5424) en UDP.
# Usage : ./tools/send-test-logs.sh [hôte] [port] [nombre]
set -eu
HOST=${1:-127.0.0.1}
PORT=${2:-514}
COUNT=${3:-100}
hosts=(web-01 web-02 db-01 fw-edge nas-home)
apps=(nginx sshd postgres kernel backup cron)
# « sévérité|message » (3 = err, 4 = warning, 5 = notice, 6 = info, 7 = debug)
samples=(
"6|GET /api/health 200 in 3ms - ok"
"6|Accepted publickey for admin from 192.168.1.20 port 51422"
"6|Backup job finished: ok (12.4 GB, 00:14:32)"
"4|warning: disk usage at 91% on /var"
"4|WARNING slow query (2.3s): SELECT * FROM events WHERE ts > now() - interval '1 day'"
"3|error: connection refused to upstream 10.0.0.12:5432"
"3|Error while rotating logs: permission denied (/var/log/app.log)"
"5|Configuration reloaded, 42 rules loaded"
"7|debug: cache hit ratio 0.93, token refreshed"
"4|Temperature warning: CPU at 84°C"
"6|link eth0 up, 1000Mbps full duplex, status ok"
"3|Out of memory: Killed process 4121 (java)"
)
for ((i = 0; i < COUNT; i++)); do
h=${hosts[RANDOM % ${#hosts[@]}]}
a=${apps[RANDOM % ${#apps[@]}]}
s=${samples[RANDOM % ${#samples[@]}]}
sev=${s%%|*}
msg=${s#*|}
pri=$((16 * 8 + sev)) # facility local0
if ((i % 2)); then
ts=$(LC_ALL=C date '+%b %e %H:%M:%S')
line="<$pri>$ts $h $a[$((RANDOM % 9000 + 1000))]: $msg"
else
ts=$(date -u '+%Y-%m-%dT%H:%M:%SZ')
line="<$pri>1 $ts $h $a $((RANDOM)) - - $msg"
fi
printf '%s' "$line" > "/dev/udp/$HOST/$PORT"
sleep 0.05
done
echo "$COUNT messages envoyés à $HOST:$PORT (udp)"