Централизованный мониторинг логов с помощью Loki, Promtail и Grafana
Это перевод оригинальной статьи Centralized Log Monitoring with Loki, Promtail & Grafana.
Подписывайтесь на телеграм-канал usr_bin, где я публикую много полезного по Linux, в том числе ссылки на статьи в этом блоге.
Примечание переводчика: расширенная поддержка Promtail завершилась в феврале 2026 года. У Grafana есть способы миграции с Promtail на новый агент Alloy.
В этой статье рассмотрена агрегация и визуализация логов с помощью Loki. Будет показано как настроить Loki вместе с Promtail и как создать дашборды.
- Как установить и настроить Loki на сервере с Linux
- Как настраивать Promtail для сбора системных логов и логов journal
- Как интегрировать Loki с Grafana
- Как визуализировать логи в режиме реального времени прямо в браузере.
- Запустите экземпляр EC2 с типом экземпляра t3.medium и размером диска 16 ГБ, работающий под управлением ОС Ubuntu. Откройте следующие порты: 9090, 3000 и 3100 — для Prometheus, Grafana и Loki соответственно. После запуска подключитесь к экземпляру EC2 по SSH.
2. Начнём с обновления системы, а затем установим на неё Grafana.
# Update package list and install dependencies sudo apt update sudo apt install -y software-properties-common wget # Add Grafana APT repository wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main" sudo apt update # Install Grafana sudo apt install -y grafana # Enable and start Grafana service sudo systemctl enable grafana-server sudo systemctl start grafana-server # Check Grafana status sudo systemctl status grafana-server
Данный набор команд выполняет следующие действия:
Загружается ключ GPG для проверки целостности и подлинности пакетов Grafana, добавляется репозиторий Grafana в источники пакетов системы, устанавливается сервер Grafana OSS, настраивается автоматический запуск при загрузке системы и запускается служба Grafana.
Затем скопируйте публичный IP-адрес вашего экземпляра EC2 и откройте его в браузере, указав порт 3000(например, http://<your-public-ip>:3000), чтобы проверить доступность Grafana. После загрузки страницы входа в Grafana войдите в систему, используя учетные данные по умолчанию:
Имя пользователя: admin, Пароль: admin
# Download Loki binary (latest version replace tags if needed)
LOKI_VERSION="2.8.2"
wget https://github.com/grafana/loki/releases/download/v${LOKI_VERSION}/loki-linux-amd64.zip
sudo apt-get install unzip
unzip loki-linux-amd64.zip
sudo mv loki-linux-amd64 /usr/local/bin/loki
sudo chmod +x /usr/local/bin/loki
sudo mkdir -p /etc/loki
wget https://raw.githubusercontent.com/grafana/loki/v${LOKI_VERSION}/cmd/loki/loki-local-config.yaml -O /etc/loki/local-config.yaml
# Create Loki service file
sudo tee /etc/systemd/system/loki.service > /dev/null <<EOF
[Unit]
Description=Loki Service
After=network.target
[Service]
ExecStart=/usr/local/bin/loki -config.file=/etc/loki/local-config.yaml
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# Reload systemd and start Loki
sudo systemctl daemon-reload
sudo systemctl enable loki
sudo systemctl start loki
# Check Loki status
sudo systemctl status lokiВ этом разделе мы загружаем бинарный файл Loki версии 2.8.2 из официального репозитория Grafana на GitHub и перемещаем его в каталог /usr/local/bin для глобального доступа. После назначения прав на выполнение мы создаём каталог конфигурации /etc/loki и получаем стандартный файл loki-local-config.yaml. Затем мы определяем сервис systemd для Loki, создавая файл юнита службы, который гарантирует запуск Loki с правильной конфигурацией и автоматический перезапуск в случае сбоя. Наконец, мы перезагружаем демон systemd, чтобы он распознал новую службу, включаем её запуск при загрузке и запускаем службу Loki. Вы можете убедиться, что она запущена, с помощью команды sudo systemctl status loki.
4. Теперь перейдём к Promtail.
# Download Promtail binary
PROMTAIL_VERSION="2.8.2"
wget https://github.com/grafana/loki/releases/download/v${PROMTAIL_VERSION}/promtail-linux-amd64.zip
unzip promtail-linux-amd64.zip
sudo mv promtail-linux-amd64 /usr/local/bin/promtail
sudo chmod +x /usr/local/bin/promtail
# Create Promtail config directory
sudo mkdir -p /etc/promtail
# Create Promtail config file to collect system logs, read journal and /var/log/syslog
sudo tee /etc/promtail/promtail-config.yaml > /dev/null <<EOF
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /var/lib/promtail/positions.yaml
clients:
- url: http://localhost:3100/loki/api/v1/push
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/**/*.log
- job_name: journal
journal:
max_age: 12h
path: /var/log/journal
labels:
job: systemd-journal
relabel_configs:
- source_labels: ['__journal__systemd_unit']
target_label: 'unit'
EOF
# Create directory for promtail positions file
sudo mkdir -p /var/lib/promtail
sudo chown -R syslog:adm /var/lib/promtail
# Create Promtail systemd service file
sudo tee /etc/systemd/system/promtail.service > /dev/null <<EOF
[Unit]
Description=Promtail Service
After=network.target
[Service]
User=syslog
Group=adm
ExecStart=/usr/local/bin/promtail -config.file=/etc/promtail/promtail-config.yaml
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# Reload systemd, enable and start promtail
sudo systemctl daemon-reload
sudo systemctl enable promtail
sudo systemctl start promtail
# Check Promtail status
sudo systemctl status promtailНа этом этапе мы загружаем и устанавливаем Promtail (v2.8.2), агент для отправки логов в Loki, перемещая бинарный файл в /usr/local/bin и делая его исполняемым. Затем мы создаём конфигурационный файл promtail-config.yaml, который собирает логи из /var/log/**/*.log и системного журнала. Promtail настраивается для отправки логов в локальный экземпляр Loki, работающий на порту 3100. Также создаётся каталог для хранения информации о позициях чтения логов, и устанавливаются права собственности syslog:adm для доступа. Далее мы создаём файл службы systemd, который гарантирует, что Promtail работает под соответствующим пользователем/группой и автоматически перезапускается при сбое. Наконец, служба включается для запуска при загрузке, запускается немедленно, и проверяется ее статус, чтобы убедиться, что она работает должным образом.
В конфигурационном файле Promtail, расположенном по адресу /etc/promtail/promtail-config.yaml в разделе clients, необходимо заменить localhost на публичный IP-адрес вашего экземпляра EC2, на котором запущен Loki. Это гарантирует, что Promtail сможет корректно отправлять логи в Loki по сети. Например:
clients: - url: http://localhost:3100/loki/api/v1/push
5. Теперь, когда все сервисы запущены и работают, перейдем к настройке Loki на в Grafana. Сначала войдите в Grafana, используя учетные данные по умолчанию (admin/ admin) и установите новый пароль, когда появится соответствующий запрос. После того, как вы окажетесь на главной странице Grafana, выполните следующие действия:
- Нажмите кнопку «Add data source».
- В строке поиска введите “Loki” и выберите его из списка.
- В поле URL укажите публичный IP EC2 с портом 3100, например:
http://<EC2_PUBLIC_IP>:3100- Нажмите Save & test.
Если все настроено правильно и служба Loki запущена, вы увидите зеленую галочку, указывающую на то, что Grafana успешно подключилась к Loki.
6. Теперь, когда Loki добавлен в качестве источника данных, вернитесь в Grafana и выполните следующие действия для визуализации логов:
- В качестве Data source выберите Loki.
- В поле Label выберите
jobи укажите значениеvarlogs. - Добавьте фильтр по метке
filenameи выберите любой файл логов, который хотите просмотреть.
3. Нажмите «Run query», чтобы получить логи.
4. В правой части экрана измените Visualization type на Logs.
Если все настроено корректно, вы увидите живой поток логов, поступающих в Grafana через Loki.
7. Наконец, в правой части экрана вы найдете следующие варианты:
- Сохранить дашборд (Save the dashboard) под подходящим именем, например, "System Logs from Promtail".
- Настроить панель(Customize the panel) — обновить заголовки, интервалы обновления, макет или продублировать панели для мониторинга нескольких логов.
- При желании можно включить автоматическое обновление(auto-refresh) (например, каждые 5 или 10 секунд), чтобы просматривать логи в режиме реального времени.
Это завершает процесс настройки Loki, Promtail и Grafana для централизованного просмотра системных логов.
Заключение
Итак, это полное практическое руководство по началу работы с Loki и Promtail, а также по тому, как оживить логи с помощью панелей мониторинга Grafana.
На этом все! Спасибо за внимание! Если статья была интересна, подпишитесь на телеграм-канал usr_bin, где будет еще больше полезной информации.