Module Lua influxdb
Le module influxdb permet d'écrire des points de métriques dans une base de données InfluxDB via l'API HTTP.
Import
Pour importer le module :
Configuration YAML
Le module influxdb nécessite une configuration spécifique pour fonctionner. Cette configuration est définie dans le fichier de configuration de l'agent.
iot:
modules:
influxdb:
- name: influxdb1 # nom unique de l'instance
url: http://localhost:8086 # URL du serveur InfluxDB
token: my-secret-token # jeton d'authentification
org: my-org # organisation InfluxDB
bucket: metrics # bucket où écrire les données
Détails de la configuration
name(string, requis) : Nom unique de l'instance du module.url(string, requis) : URL complète (incluant protocole et port) de l'API InfluxDB.token(string, requis) : Jeton d'accès API InfluxDB.org(string, requis) : Nom de l'organisation InfluxDB.bucket(string, requis) : Nom du bucket (base de données) cible.
API Lua
Liste des fonctions
| Fonction | Signature Lua | Rôle | Retour (succès) | Retour (échec) |
|---|---|---|---|---|
write |
bool, err = influxdb.write(measurement, fields, tags[, timestamp_ms]) |
Écrit un point dans InfluxDB. | true, nil |
nil, "msg" |
| Champs | influxdb.name, influxdb.type |
Métadonnées du module. | – | – |
influxdb.write(measurement, fields_tbl, tags_tbl[, timestamp_ms])
Écrit un point unique dans InfluxDB.
- Paramètres :
measurement(string) : Nom de la mesure.fields(table) : Dictionnaire{ champ = valeur }contenant les champs de données. Les valeurs peuvent être de typenumber,stringouboolean.tags(table) : Dictionnaire{ tag = valeur }contenant les tags (métadonnées). Les valeurs doivent être de typestring.-
timestamp_ms(integer, optionnel) : Timestamp en millisecondes depuis l'Époque Unix. Si omis, l'heure actuelle est utilisée. -
Retour :
- En cas de succès :
true,nil. - En cas d'erreur :
nil, message d'erreur.
local influxdb = require("influxdb1")
-- Écriture d'un point avec timestamp actuel
local ok, err = influxdb.write(
"cpu_usage",
{ usage = 42.5, idle = 57.5 },
{ host = "edge1", region = "eu" }
)
if not ok then
print("Échec de l'écriture : " .. err)
end
-- Écriture avec timestamp spécifique
local ok2, err2 = influxdb.write(
"temperature",
{ value = 23.5 },
{ sensor = "temp01", location = "salle-serveur" },
1690000000000 -- timestamp en millisecondes
)
Exemple complet
local influxdb = require("influxdb1")
-- Collecte de métriques système
local function sendMetrics()
-- CPU
local ok, err = influxdb.write(
"system_cpu",
{ usage_percent = 45.2, load_1m = 1.5 },
{ host = "agent-01", env = "production" }
)
if not ok then
print("Erreur CPU : " .. err)
return
end
-- Mémoire
influxdb.write(
"system_memory",
{ used_mb = 2048, free_mb = 6144, cached_mb = 1024 },
{ host = "agent-01", env = "production" }
)
-- Température capteur
influxdb.write(
"sensor_temperature",
{ celsius = 23.5, humidity = 45.0 },
{ sensor_id = "DHT22-01", room = "datacenter" }
)
print("Métriques envoyées avec succès.")
end
sendMetrics()
Champs Lua associés
influxdb.name: Retourne le nom de l'instance du module.influxdb.type: Retourne le type du module ("influxdb").