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

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

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Nextcloud — отличное решение для хранения файлов, но управление пользователями вручную становится головной болью при масштабировании. Keycloak позволяет централизовать аутентификацию, обеспечивая безопасность, поддержку MFA (двухфакторной аутентификации) и удобный вход через…

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Пакеты в Ubuntu по умолчанию настроены на работу с серверами, имеющими довольно много оперативной памяти. Нам нужно жёстко ограничить потребление памяти для работы на Mikro VPS. Запускать будем мой блог…

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

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

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

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Интеграция Nextcloud с Keycloak через OpenID Connect: пошаговое руководство по настройке SSO

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Установка и оптимизация WordPress на Ubuntu 24.04 (LEMP + Redis) на VPS с ограниченным объёмом RAM

Интеграция Gitea и Keycloak: пошаговое руководство

Интеграция Gitea и Keycloak: пошаговое руководство

Настройка VS Code AI Chat для работы со сторонним OpenAI провайдером.

Настройка VS Code AI Chat для работы со сторонним OpenAI провайдером.

ProxyChains специфическая работа с прокси-серверами в UNIX/Linux-системах

ProxyChains специфическая работа с прокси-серверами в UNIX/Linux-системах

Полное руководство по установке и настройке мониторинга с Grafana и Prometheus: от установки до первого дашборда

Полное руководство по установке и настройке мониторинга с Grafana и Prometheus: от установки до первого дашборда