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

Related Posts

Шпаргалка по работе с envsubst

envsubst — это утилита в Unix-подобных системах, которая позволяет подставлять значения переменных окружения в строки. Базовый синтаксис: где <шаблон> — это строка с переменными окружения, которые нужно подставить, а < файл…

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

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

You Missed

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

Немного экспериментов с Windows Server 2025

Немного экспериментов с Windows Server 2025

Шпаргалка по работе с envsubst

Шпаргалка по работе с envsubst
Немного заметок по Kubernetes

Шпаргалка по работе с Nmap

Шпаргалка по работе с Nmap

Удаление разделов в Windows консоли (утилита diskpart)

Удаление разделов в Windows консоли (утилита diskpart)