Skip to content

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 :

local influxdb = require("influxdb1")

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 type number, string ou boolean.
  • tags (table) : Dictionnaire { tag = valeur } contenant les tags (métadonnées). Les valeurs doivent être de type string.
  • 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").