From d7e2e1a512ab588ed080e0f2b69d17c728432e36 Mon Sep 17 00:00:00 2001 From: hubobel Date: Mon, 12 Jan 2026 16:30:16 +0100 Subject: [PATCH] AllinOne --- .env | 9 ++ .../Shelly Temperaturen-1768062818067.json | 0 {grafana => Pool/grafana}/docker-compos.yml | 0 {influx => Pool/influx}/docker-compose.yml | 0 {mqtt => Pool/mqtt}/Links | 0 {mqtt => Pool/mqtt}/README.md | 0 {mqtt => Pool/mqtt}/config/mosquitto.conf | 0 {mqtt => Pool/mqtt}/docker-compose.yml | 0 {telegraf => Pool/telegraf}/.env | 0 .../telegraf}/docker-compose.yml | 0 {telegraf => Pool/telegraf}/telegraf.conf | 0 README.md | 18 +++- docker-compose.yml | 77 ++++++++++++++++ telegraf.conf | 87 +++++++++++++++++++ 14 files changed, 190 insertions(+), 1 deletion(-) create mode 100644 .env rename Shelly Temperaturen-1768062818067.json => Pool/Shelly Temperaturen-1768062818067.json (100%) rename {grafana => Pool/grafana}/docker-compos.yml (100%) rename {influx => Pool/influx}/docker-compose.yml (100%) rename {mqtt => Pool/mqtt}/Links (100%) rename {mqtt => Pool/mqtt}/README.md (100%) rename {mqtt => Pool/mqtt}/config/mosquitto.conf (100%) rename {mqtt => Pool/mqtt}/docker-compose.yml (100%) rename {telegraf => Pool/telegraf}/.env (100%) rename {telegraf => Pool/telegraf}/docker-compose.yml (100%) rename {telegraf => Pool/telegraf}/telegraf.conf (100%) create mode 100644 docker-compose.yml create mode 100644 telegraf.conf diff --git a/.env b/.env new file mode 100644 index 0000000..628af78 --- /dev/null +++ b/.env @@ -0,0 +1,9 @@ +# InfluxDB +INFLUXDB_URL=http://influxdb:8086 +INFLUXDB_ORG=Bischoffsheim +INFLUXDB_BUCKET=Temperaturen +INFLUXDB_TOKEN=1wml0Wzrno-VPHxw0N4CSJh42aTAE-zCCAnAj8BLY_YxsmexXO6_8o7i1HDdAPzDUndCCsejWKq9GJXeYFDhpQ== + +# MQTT +MQTT_USER=dein_user +MQTT_PASS=dein_passwort diff --git a/Shelly Temperaturen-1768062818067.json b/Pool/Shelly Temperaturen-1768062818067.json similarity index 100% rename from Shelly Temperaturen-1768062818067.json rename to Pool/Shelly Temperaturen-1768062818067.json diff --git a/grafana/docker-compos.yml b/Pool/grafana/docker-compos.yml similarity index 100% rename from grafana/docker-compos.yml rename to Pool/grafana/docker-compos.yml diff --git a/influx/docker-compose.yml b/Pool/influx/docker-compose.yml similarity index 100% rename from influx/docker-compose.yml rename to Pool/influx/docker-compose.yml diff --git a/mqtt/Links b/Pool/mqtt/Links similarity index 100% rename from mqtt/Links rename to Pool/mqtt/Links diff --git a/mqtt/README.md b/Pool/mqtt/README.md similarity index 100% rename from mqtt/README.md rename to Pool/mqtt/README.md diff --git a/mqtt/config/mosquitto.conf b/Pool/mqtt/config/mosquitto.conf similarity index 100% rename from mqtt/config/mosquitto.conf rename to Pool/mqtt/config/mosquitto.conf diff --git a/mqtt/docker-compose.yml b/Pool/mqtt/docker-compose.yml similarity index 100% rename from mqtt/docker-compose.yml rename to Pool/mqtt/docker-compose.yml diff --git a/telegraf/.env b/Pool/telegraf/.env similarity index 100% rename from telegraf/.env rename to Pool/telegraf/.env diff --git a/telegraf/docker-compose.yml b/Pool/telegraf/docker-compose.yml similarity index 100% rename from telegraf/docker-compose.yml rename to Pool/telegraf/docker-compose.yml diff --git a/telegraf/telegraf.conf b/Pool/telegraf/telegraf.conf similarity index 100% rename from telegraf/telegraf.conf rename to Pool/telegraf/telegraf.conf diff --git a/README.md b/README.md index c16dc85..eff086f 100644 --- a/README.md +++ b/README.md @@ -23,4 +23,20 @@ Stack

-mqtt \ No newline at end of file +mqtt + +>git clone https://git.hintergasse.de/hubobel/MTIG-Stack.git + +>cd MTIG-Stack + +>mkdir -p \ +> influxdb/{data,config} \ +> grafana/{data,config} \ +> mosquitto/{config,data,log} \ +> telegraf + +>chown -R 472:472 grafana + +>docker compose up -d --force-recreate + +>docker ps diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..b309c32 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,77 @@ +version: "3.9" + +services: + influxdb: + image: influxdb:latest + container_name: influxdb + restart: unless-stopped + ports: + - "8086:8086" + volumes: + - ./influxdb/data:/var/lib/influxdb2 + - ./influxdb/config:/etc/influxdb2 + healthcheck: + test: ["CMD", "curl", "-fsS", "http://localhost:8086/health"] + interval: 5s + timeout: 3s + retries: 20 + + grafana: + image: grafana/grafana:latest + container_name: grafana + restart: unless-stopped + user: "0" + ports: + - "3000:3000" + volumes: + - ./grafana/data:/var/lib/grafana + - ./grafana/config:/etc/grafana + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"] + interval: 5s + timeout: 3s + retries: 20 + depends_on: + influxdb: + condition: service_healthy + + mqtt5: + image: eclipse-mosquitto:latest + container_name: mqtt5 + restart: unless-stopped + ports: + - "1883:1883" + - "9001:9001" + volumes: + - ./mosquitto/config:/mosquitto/config + - ./mosquitto/data:/mosquitto/data + - ./mosquitto/log:/mosquitto/log + healthcheck: + test: ["CMD-SHELL", "mosquitto_pub -h localhost -p 1883 -t healthcheck/ping -n >/dev/null 2>&1 || exit 1"] + interval: 10s + timeout: 5s + retries: 12 + + telegraf: + image: telegraf:latest + container_name: telegraf + restart: unless-stopped + env_file: + - .env + volumes: + - ./telegraf/telegraf.conf:/etc/telegraf/telegraf.conf:ro + depends_on: + mqtt5: + condition: service_healthy + influxdb: + condition: service_healthy + healthcheck: + test: ["CMD-SHELL", "pidof telegraf >/dev/null 2>&1 || exit 1"] + interval: 10s + timeout: 3s + retries: 12 + +networks: + default: + name: mqtt5-network + external: true diff --git a/telegraf.conf b/telegraf.conf new file mode 100644 index 0000000..11b899c --- /dev/null +++ b/telegraf.conf @@ -0,0 +1,87 @@ +# ------------------------------------------------------------------- +# Telegraf Agent +# ------------------------------------------------------------------- +[agent] + interval = "10s" + round_interval = true + + metric_batch_size = 1000 + metric_buffer_limit = 10000 + + collection_jitter = "0s" + flush_interval = "10s" + flush_jitter = "0s" + + precision = "" + hostname = "" + omit_hostname = false + + +# ------------------------------------------------------------------- +# OUTPUT: InfluxDB v2 +# ------------------------------------------------------------------- +[[outputs.influxdb_v2]] + urls = ["${INFLUXDB_URL}"] + token = "${INFLUXDB_TOKEN}" + organization = "${INFLUXDB_ORG}" + bucket = "${INFLUXDB_BUCKET}" + + +# ------------------------------------------------------------------- +# INPUT 1: MQTT JSON (Temperaturen) +# Topics: daten/status/+ +# ------------------------------------------------------------------- +[[inputs.mqtt_consumer]] + servers = ["tcp://mqtt5:1883"] + topics = ["daten/status/+"] + + qos = 1 + persistent_session = true + client_id = "telegraf_mqtt_temperature" + + username = "${MQTT_USER}" + password = "${MQTT_PASS}" + + topic_tag = "topic" + data_format = "json_v2" + + [[inputs.mqtt_consumer.json_v2]] + measurement_name = "temperature" + + [[inputs.mqtt_consumer.json_v2.tag]] + path = "id" + rename = "sensor_id" + type = "int" + + [[inputs.mqtt_consumer.json_v2.field]] + path = "tC" + rename = "tC" + type = "float" + + [[inputs.mqtt_consumer.json_v2.field]] + path = "tF" + rename = "tF" + type = "float" + + +# ------------------------------------------------------------------- +# INPUT 2: MQTT Plain Values (Power) +# Topics: daten/status/power/+ +# Payload: z. B. 396.963 +# ------------------------------------------------------------------- +[[inputs.mqtt_consumer]] + servers = ["tcp://mqtt5:1883"] + topics = ["daten/status/power/+"] + + qos = 1 + persistent_session = true + client_id = "telegraf_mqtt_power" + + username = "${MQTT_USER}" + password = "${MQTT_PASS}" + + data_format = "value" + data_type = "float" + name_override = "power" + + topic_tag = "topic"