services: Add mqtt-graphite

This commit is contained in:
polyfloyd 2023-09-10 21:21:20 +02:00
parent 0e75ce25c5
commit 3716997783
5 changed files with 69 additions and 0 deletions

View file

@ -42,3 +42,9 @@
name: mastodon-spacestate
state: restarted
daemon_reload: true
- name: restart mqtt-graphite
systemd:
name: mqtt-graphite
state: restarted
daemon_reload: true

View file

@ -13,3 +13,6 @@
- tags: services_mastodon_spacestate
import_tasks: mastodon_spacestate.yaml
- tags: services_mqtt_graphite
import_tasks: mqtt_graphite.yaml

View file

@ -0,0 +1,25 @@
- name: Install mqtt-graphite
template:
src: mqtt-graphite.sh
dest: /var/lib/mqtt-graphite.sh
owner: root
group: root
mode: 0755
notify: restart mqtt-graphite
- name: Install mqtt-graphite service
template:
src: mqtt-graphite.service
dest: /etc/systemd/system/mqtt-graphite.service
owner: root
group: root
mode: 0644
notify: restart mqtt-graphite
- name: Start mqtt-graphite
systemd:
name: mqtt-graphite
state: started
enabled: yes
daemon_reload: true

View file

@ -0,0 +1,15 @@
# Managed by Ansible
[Unit]
Description=MQTT to Graphite bridge
After=network.target
[Service]
Type=simple
ExecStart=/bin/bash /var/lib/mqtt-graphite.sh
Restart=on-failure
RestartSec=10s
DynamicUser=true
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,20 @@
#!/bin/bash
GRAPHITE_HOST="100.64.0.11"
GRAPHITE_PORT="2003"
set -eu
set -o pipefail
mqtt-simple -h {{ mqtt_internal_host }} -t "#" |
while read line; do
topic=$(echo "$line" | cut -d' ' -f1 | sed 's/\//./g' | tr '[:upper:]' '[:lower:]')
value=$(echo "$line" | cut -s -d' ' -f2- | sed 's/closed/0/g;s/open/1/g')
# Only relay numeric values.
if [[ $value =~ ^-?[0-9]+\.?[0-9]*$ ]]; then
echo "$topic $value $(date +%s)" | nc -q0 "$GRAPHITE_HOST" "$GRAPHITE_PORT"
echo "$topic $value $(date +%s)"
fi
done