Комплексное руководство: добавление измерений в InfluxDB

InfluxDB — это мощная база данных временных рядов, предназначенная для обработки больших объемов данных с отметками времени. Одной из фундаментальных операций в InfluxDB является добавление измерений, что позволяет хранить и запрашивать точки данных. В этой статье мы рассмотрим различные методы добавления измерений в InfluxDB с примерами кода.

Метод 1: использование интерфейса командной строки (CLI) InfluxDB
CLI InfluxDB обеспечивает удобный способ взаимодействия с базой данных. Чтобы добавить измерение с помощью CLI, используйте следующую команду:

$ influx write -b <bucket> <measurement>,<tag_key>=<tag_value> <field_key>=<field_value> <timestamp>

Пример:

$ influx write -b my_bucket my_measurement,tag_key=tag_value field_key=field_value 1644345000000000000

Метод 2: использование HTTP API InfluxDB
API InfluxDB позволяет программно взаимодействовать с базой данных. Чтобы добавить измерение с помощью API, отправьте запрос HTTP POST к конечной точке /api/v2/write.

Пример использования cURL:

$ curl -i -XPOST "http://localhost:8086/api/v2/write?org=my_org&bucket=my_bucket" \
  --header "Authorization: Token <auth_token>" \
  --data-raw 'my_measurement,tag_key=tag_value field_key=field_value 1644345000000000000'

Метод 3: использование клиентской библиотеки InfluxDB
InfluxDB предоставляет клиентские библиотеки для различных языков программирования. Эти библиотеки предлагают абстракции более высокого уровня и упрощают процесс взаимодействия с базой данных.

Пример использования Python и библиотеки influxdb-client:

from influxdb_client import InfluxDBClient
client = InfluxDBClient(url="http://localhost:8086", token="<auth_token>", org="<org>")
write_api = client.write_api()
data = "my_measurement,tag_key=tag_value field_key=field_value 1644345000000000000"
write_api.write(bucket="<bucket>", record=data)

Метод 4: использование Telegraf
Telegraf — это агент с открытым исходным кодом, написанный на Go, который может собирать, обрабатывать и отправлять данные в InfluxDB. Он поддерживает различные плагины ввода, что позволяет легко добавлять измерения из разных источников.

Пример конфигурации Telegraf:

[[inputs.cpu]]
  percpu = true
  totalcpu = true
  collect_cpu_time = false
  report_active = false
[[outputs.influxdb_v2]]
  urls = ["http://localhost:8086"]
  token = "<auth_token>"
  organization = "<org>"
  bucket = "my_bucket"

Метод 5: использование линейного протокола InfluxDB
InfluxDB поддерживает линейный протокол — текстовый формат для записи данных. Вы можете вручную создавать строки протокола линии и отправлять их в базу данных.

Пример использования Node.js:

const axios = require('axios');
const url = 'http://localhost:8086/api/v2/write?org=my_org&bucket=my_bucket'
const data = 'my_measurement,tag_key=tag_value field_key=field_value 1644345000000000000';
axios.post(url, data, {
  headers: {
    'Authorization': 'Token <auth_token>',
    'Content-Type': 'text/plain'
  }
});

В этой статье мы рассмотрели несколько методов добавления измерений в InfluxDB. Предпочитаете ли вы использовать CLI, HTTP API, клиентские библиотеки, Telegraf или линейный протокол, у вас есть ряд вариантов, отвечающих вашим потребностям. Поэкспериментируйте с этими методами и выберите тот, который лучше всего подходит для вашего случая использования.