improve stability
This commit is contained in:
		| @ -4,6 +4,7 @@ Export metrics of a VEGAPULS Air connected via TTN as a prometheus service. | |||||||
|  |  | ||||||
| ## Install ## | ## Install ## | ||||||
|  |  | ||||||
|  | - `zypper install python311-paho-mqtt` | ||||||
| - `mkdir /opt/ttn-vegapulsair-exporter/` | - `mkdir /opt/ttn-vegapulsair-exporter/` | ||||||
| - `cd /opt/ttn-vegapulsair-exporter/` | - `cd /opt/ttn-vegapulsair-exporter/` | ||||||
| - import `ttn-vegapulsair-exporter.py` and `config.py` | - import `ttn-vegapulsair-exporter.py` and `config.py` | ||||||
|  | |||||||
| @ -12,7 +12,6 @@ import json | |||||||
| import sys | import sys | ||||||
| import config | import config | ||||||
|  |  | ||||||
|  |  | ||||||
| scrape_healthy = True | scrape_healthy = True | ||||||
| startTime = datetime.now() | startTime = datetime.now() | ||||||
| lastMqttReception = datetime.now() | lastMqttReception = datetime.now() | ||||||
| @ -132,8 +131,11 @@ def update_metrics(payload, metadata): | |||||||
|     scrape_healthy = True |     scrape_healthy = True | ||||||
|     mutex.release() |     mutex.release() | ||||||
|  |  | ||||||
| def on_connect(mqttc, obj, flags, rc): | def on_connect(client, userdata, flags, reason_code, properties): | ||||||
|     print("\nConnected to MQTT: rc = " + str(rc)) |     if reason_code == 0: | ||||||
|  |         print("\nConnected to MQTT: reason_code = " + str(reason_code)) | ||||||
|  |     if reason_code > 0: | ||||||
|  |         print("\nNot connected to MQTT: reason_code = " + str(reason_code)) | ||||||
|  |  | ||||||
| def on_message(mqttc, obj, msg): | def on_message(mqttc, obj, msg): | ||||||
|     #print("\nMessage: " + msg.topic + " " + str(msg.qos)) |     #print("\nMessage: " + msg.topic + " " + str(msg.qos)) | ||||||
| @ -150,20 +152,24 @@ def on_message(mqttc, obj, msg): | |||||||
|         mutex.release() |         mutex.release() | ||||||
|         print("Unable to parse uplink") |         print("Unable to parse uplink") | ||||||
|  |  | ||||||
| def on_subscribe(mqttc, obj, mid, granted_qos): | def on_subscribe(client, userdata, mid, reason_codes, properties): | ||||||
|     print("\nSubscribed to MQTT: " + str(mid) + " " + str(granted_qos)) |     print("\nSubscribed to MQTT: " + str(mid)) | ||||||
|  |  | ||||||
| def poll_mqtt(mqttc): | def poll_mqtt(mqttc): | ||||||
|     while True: |     mqttc.loop_forever() | ||||||
|         mqttc.loop(10)  # seconds timeout |  | ||||||
|  | def on_disconnect(client, userdata, flags, reason_code, properties): | ||||||
|  |     print("disconnect occoured") | ||||||
|  |     client.reconnect() | ||||||
|  |  | ||||||
| def main(): | def main(): | ||||||
|     print("starting ...") |     print("starting ...") | ||||||
|  |  | ||||||
|     mqttc = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1) |     mqttc = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2) | ||||||
|     mqttc.on_connect = on_connect |     mqttc.on_connect = on_connect | ||||||
|     mqttc.on_subscribe = on_subscribe |     mqttc.on_subscribe = on_subscribe | ||||||
|     mqttc.on_message = on_message |     mqttc.on_message = on_message | ||||||
|  |     mqttc.on_disconnect = on_disconnect | ||||||
|     mqttc.username_pw_set(config.ttn_user, config.ttn_key) |     mqttc.username_pw_set(config.ttn_user, config.ttn_key) | ||||||
|     mqttc.tls_set() |     mqttc.tls_set() | ||||||
|     mqttc.connect(config.ttn_region.lower() + ".cloud.thethings.network", 8883, 60) |     mqttc.connect(config.ttn_region.lower() + ".cloud.thethings.network", 8883, 60) | ||||||
|  | |||||||
| @ -4,8 +4,9 @@ After=syslog.target | |||||||
| After=network.target | After=network.target | ||||||
|  |  | ||||||
| [Service] | [Service] | ||||||
|  | Restart=on-failure | ||||||
| RestartSec=2s | RestartSec=2s | ||||||
| Type=oneshot | Type=simple | ||||||
| User=prometheus | User=prometheus | ||||||
| Group=prometheus | Group=prometheus | ||||||
| WorkingDirectory=/opt/ttn-vegapulsair-exporter/ | WorkingDirectory=/opt/ttn-vegapulsair-exporter/ | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user