From 7fed0e879be04679c464d108e168185259122654 Mon Sep 17 00:00:00 2001 From: "Andreas B. Mundt" Date: Mon, 13 Nov 2023 15:41:49 +0100 Subject: [PATCH] Implement reporting service. --- roles/lmn_fvs/files/pwroff.timer | 4 +-- roles/lmn_fvs/files/reporter | 51 ++++++++++++++++++++++++++++ roles/lmn_fvs/files/reporter.service | 6 ++++ roles/lmn_fvs/files/reporter.timer | 9 +++++ roles/lmn_fvs/tasks/main.yml | 14 +++++--- 5 files changed, 78 insertions(+), 6 deletions(-) create mode 100644 roles/lmn_fvs/files/reporter create mode 100644 roles/lmn_fvs/files/reporter.service create mode 100644 roles/lmn_fvs/files/reporter.timer diff --git a/roles/lmn_fvs/files/pwroff.timer b/roles/lmn_fvs/files/pwroff.timer index de3fcd0..0d11a63 100644 --- a/roles/lmn_fvs/files/pwroff.timer +++ b/roles/lmn_fvs/files/pwroff.timer @@ -1,9 +1,9 @@ [Unit] -Description=Run pwroff script every 30 min after 90 min uptime +Description=Run pwroff script every 15 min after 90 min uptime [Timer] OnBootSec=90min -OnUnitActiveSec=30min +OnUnitActiveSec=15min [Install] WantedBy=timers.target diff --git a/roles/lmn_fvs/files/reporter b/roles/lmn_fvs/files/reporter new file mode 100644 index 0000000..0a87541 --- /dev/null +++ b/roles/lmn_fvs/files/reporter @@ -0,0 +1,51 @@ +#!/usr/bin/bash +# +# Send stdout of some commands to monitoring server. +# Collect the reports with 'nc -u -k -l 1234' on 'sendto'. +# Use /bin/nc.openbsd, /bin/nc.traditional seems not to work. +# +set -eu + +sendto="collector.steinbeis.schule 1234" + +cmds=( + 'uname -a' + 'uptime' + 'apt list --upgradeable -o Apt::Cmd::Disable-Script-Warning=true' + 'systemctl --failed' + 'w' + 'ls -ld /home/ansible/.ansible/tmp/' + 'ip addr show' +) + +r="$HOSTNAME: ------- $(date) ------- +$(for c in "${cmds[@]}" ; do echo "$c"; $c | sed 's/^/ /' ; done | sed "s/^/$HOSTNAME: /") +## -------------------------------------------------" +echo "$r" | nc -w 1 -u $sendto + + +## below is the corresponding collector part: + +# #!/usr/bin/bash +# # +# # collect messages from reporter and drop it into log files +# # +# +# set -eu +# +# port=1234 +# +# logdir="/var/log/collector" +# [[ -d "$logdir" ]] || mkdir "$logdir" +# +# nc -k -l -u -p "$port" | while read line ; do +# sndr="${line%%:*}" +# msg="${line#*: }" +# if [[ "$sndr" =~ [a-z0-9]+ ]] ; then +# if [[ "$msg" =~ ^-------\ .+\ -------$ ]] ; then +# echo "$msg" > "$logdir/$sndr" +# else +# echo "$msg" >> "$logdir/$sndr" +# fi +# fi +# done diff --git a/roles/lmn_fvs/files/reporter.service b/roles/lmn_fvs/files/reporter.service new file mode 100644 index 0000000..09f6378 --- /dev/null +++ b/roles/lmn_fvs/files/reporter.service @@ -0,0 +1,6 @@ +[Unit] +Description=Run reporting script + +[Service] +Type=simple +ExecStart=/usr/local/sbin/reporter diff --git a/roles/lmn_fvs/files/reporter.timer b/roles/lmn_fvs/files/reporter.timer new file mode 100644 index 0000000..dbfda49 --- /dev/null +++ b/roles/lmn_fvs/files/reporter.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Run reporter script every 15 min + +[Timer] +OnBootSec=5min +OnUnitActiveSec=15min + +[Install] +WantedBy=timers.target diff --git a/roles/lmn_fvs/tasks/main.yml b/roles/lmn_fvs/tasks/main.yml index 901d354..ee841a7 100644 --- a/roles/lmn_fvs/tasks/main.yml +++ b/roles/lmn_fvs/tasks/main.yml @@ -92,7 +92,7 @@ regexp: '^//(\s+"origin=.+-updates";)$' replace: ' \1' -- name: Copy pwroff and bootorder scripts +- name: Copy some scripts copy: src: "{{ item }}" dest: /usr/local/sbin/ @@ -100,20 +100,26 @@ loop: - pwroff - bootorder.sh + - reporter -- name: Provide service and timer for pwroff script +- name: Provide services and timers for some scripts copy: src: "{{ item }}" dest: "/etc/systemd/system/{{ item }}" mode: 0644 - with_items: + loop: - pwroff.service - pwroff.timer + - reporter.service + - reporter.timer - name: Enable pwroff.timer systemd: - name: pwroff.timer + name: "{{ item }}" enabled: true + loop: + - pwroff.timer + - reporter.timer - name: PXE first boot order command: /usr/local/sbin/bootorder.sh