forked from bitlair/ansible
services: Add mqtt-graphite
This commit is contained in:
parent
0e75ce25c5
commit
3716997783
5 changed files with 69 additions and 0 deletions
|
@ -42,3 +42,9 @@
|
||||||
name: mastodon-spacestate
|
name: mastodon-spacestate
|
||||||
state: restarted
|
state: restarted
|
||||||
daemon_reload: true
|
daemon_reload: true
|
||||||
|
|
||||||
|
- name: restart mqtt-graphite
|
||||||
|
systemd:
|
||||||
|
name: mqtt-graphite
|
||||||
|
state: restarted
|
||||||
|
daemon_reload: true
|
||||||
|
|
|
@ -13,3 +13,6 @@
|
||||||
|
|
||||||
- tags: services_mastodon_spacestate
|
- tags: services_mastodon_spacestate
|
||||||
import_tasks: mastodon_spacestate.yaml
|
import_tasks: mastodon_spacestate.yaml
|
||||||
|
|
||||||
|
- tags: services_mqtt_graphite
|
||||||
|
import_tasks: mqtt_graphite.yaml
|
||||||
|
|
25
roles/services/tasks/mqtt_graphite.yaml
Normal file
25
roles/services/tasks/mqtt_graphite.yaml
Normal 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
|
||||||
|
|
15
roles/services/templates/mqtt-graphite.service
Normal file
15
roles/services/templates/mqtt-graphite.service
Normal 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
|
20
roles/services/templates/mqtt-graphite.sh
Normal file
20
roles/services/templates/mqtt-graphite.sh
Normal 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
|
||||||
|
|
Loading…
Add table
Reference in a new issue