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 или линейный протокол, у вас есть ряд вариантов, отвечающих вашим потребностям. Поэкспериментируйте с этими методами и выберите тот, который лучше всего подходит для вашего случая использования.