Установка и настройка InfluxDB (V2 OSS)

Оцените статью

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

И вот с этой технологией мы сегодня и поработаем пока выдалось немного свободного времени.

Установка InfluxDB (для Ubuntu 20.04 и выше)

Установка немного волшебная, но тут уж что нашел и главное работает.

# wget -q https://repos.influxdata.com/influxdata-archive_compat.key
# echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
# echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
# apt-get update
# apt-get install influxdb2

Активируем сервис InfluxDB и пробуем подключиться

Активируем автозапуск и запускаем.

# systemctl enable influxdb
# systemctl start influxdb

Подключаемся к консоли.

# influx v1 shell
InfluxQL Shell dev
Connected to InfluxDB OSS v2.7.11
> 

Пробуем подключиться к удаленному хосту и первым делом проверяем доступность.

$ influx ping --host "http://srv-prod-adman-01.pikur.art:8086"
OK

И собственно подключаемся.

$ influx v1 shell --host "http://srv-prod-adman-01.pikur.art:8086"
InfluxQL Shell dev
Connected to InfluxDB OSS v2.7.11
>

Висеть без авторизации в диком интернете это как вы понимаете странная идея и поэтому нам надо защитить нашу базу данных от несанкционированного доступа.

Немного о безопасности в InfluxDB

Во-первых, мы запустим мастер настройки сервера и создадим пользователя и т.п.

# influx setup
> Welcome to InfluxDB 2.0!
? Please type your primary username influx
? Please type your password **********
? Please type your password again **********
? Please type your primary organization name interlan
? Please type your primary bucket name default
? Please type your retention period in hours, or 0 for infinite 0
? Setup with these parameters?
  Username:          influx
  Organization:      interlan
  Bucket:            default
  Retention Period:  infinite
 Yes
User	Organization	Bucket
influx	interlan	default

Теперь мы можем использовать удобный WEB-интерфейс для управления сервером который будет находиться по адресу http://influx.pikur.art:8086.

WEB-интерфейс к InfluxDB

Для работы из консоли при помощи Influx CLI нам необходимо созать файл конфигурации с созданными логином и паролем.

# influx config create -n local -u http://localhost:8086 -p influx:xxxxPASSWORDxxx -o interlan
Active	Name	URL			Org
	local	http://localhost:8086	interlan

Запрашиваем конфигурацию сервера:

# influx server-config
{
	"assets-path": "",
	"bolt-path": "/var/lib/influxdb/influxd.bolt",
	"e2e-testing": false,
        ..........
	"vault-client-timeout": 0,
	"vault-max-retries": 0,
	"vault-token": ""
}

Пробуем сделать то же самое с удаленного компьютера без авторизации и получаем ошибку авторизации.

$ influx server-config --host "http://srv-prod-adman-01.pikur.art:8086"
Error: failed to retrieve config: 401 Unauthorized: unauthorized access

Аналогично создаем конфигурацию для удаленного подключения.

$ influx config create -n interlan -u http://influx.pikur.art:8086 -p influx:xxxPASSWORDxxxx -o interlan

Проверяем, что все работает.

$ influx server-config --host "http://srv-prod-adman-01.pikur.art:8086"
{
	"assets-path": "",
	"bolt-path": "/var/lib/influxdb/influxd.bolt",
	"e2e-testing": false,
	"engine-path": "/var/lib/influxdb/engine",
	"feature-flags": null,
	"flux-log-enabled": false,
	"hardening-enabled": false,
        .......

Второе, что рекомендуется сделать это настроить TLS-соединение для предотвращения перехвата трафика. Для этого, мы назначим нашему InfluxDB-серверу DNS-имя influx.pikur.art, а wildcard-сертификат у меня уже есть.

В Ubuntu запуск сервиса осуществляется хитрым скриптом /usr/lib/influxdb/scripts/influxd-systemd-start.sh и фактически он достает путь до ключа и сертификата и проверяет установку ключа использования TLS.

Выглядит скрипт вот таким образом:

#!/bin/bash -e

/usr/bin/influxd &
PID=$!
echo $PID > /var/lib/influxdb/influxd.pid

PROTOCOL="http"
BIND_ADDRESS=$(influxd print-config --key-name http-bind-address)
TLS_CERT=$(influxd print-config --key-name tls-cert | tr -d '"')
TLS_KEY=$(influxd print-config --key-name tls-key | tr -d '"')
if [ -n "${TLS_CERT}" ] && [ -n "${TLS_KEY}" ]; then
  echo "TLS cert and key found -- using https"
  PROTOCOL="https"
fi
HOST=${BIND_ADDRESS%:*}
HOST=${HOST:-"localhost"}
PORT=${BIND_ADDRESS##*:}

set +e
attempts=0
url="$PROTOCOL://$HOST:$PORT/ready"
result=$(curl -k -s -o /dev/null $url -w %{http_code})
while [ "${result:0:2}" != "20" ] && [ "${result:0:2}" != "40" ]; do
  attempts=$(($attempts+1))
  echo "InfluxDB API at $url unavailable after $attempts attempts..."
  sleep 1
  result=$(curl -k -s -o /dev/null $url -w %{http_code})
done
echo "InfluxDB started"
set -e

Если посмотреть на описание самого сервиса, то мы можем увидеть, что он запускается от имени системного пользователя influxdb который доступа к нашим сертификатам и ключам Let’s encrypt не имеет и при старте мы получим ошибку доступа.

Следовательно, надо скопировать сертификаты каталог с конфигурацией и дополнить конфигурацию в файле /etc/influxdb/config.toml следующими параметрами.

tls-cert = "/etc/influxdb/fullchain.pem"
tls-key = "/etc/influxdb/privkey.pem"

Проверяем доступ к web-интерфейсу по https и доступ из интерфейса командной строки.

$ influx ping --host "https://srv-prod-adman-01.pikur.art:8086"
OK

Как мы видим, все работает и можем приступать к настройке telegraf для сбора метрик с хоста, но это тема для следующей заметки.

Похожие записи

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

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

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Запихать Mysql в Kubernetes оказалось не очень хорошей идеей и я решил основательно пересмотреть инфраструктуру своего pet-проекта и за основу будет принят кластер из трех серверов. На каждом узле кластера…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читать еще статьи

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Полное руководство по развертыванию GlusterFS в Ubuntu Linux: от подготовки до тестирования производительности

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Подробная инструкция по настройке кластера из трёх серверов MySQL на Ubuntu 24.04

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Полное руководство по настройке NFS-клиента в Ubuntu Linux: от установки до автоматического монтирования

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Как проверить работу камеры в Ubuntu Linux: диагностика USB и встроенных веб-камер

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Полное руководство по установке Docker, Docker Compose, kubectl, Helm и k9s в Linux

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS

Настройка маршрутизации через VipNet: пошаговое руководство для RedOS