Как переслать логи в Grafana Loki с помощью Promtail
Grafana Loki — это инструмент, который дает вам панель для индексации журналов вашей системы и их визуализации на панели управления. Grafana Loki не индексирует содержимое журналов, а только индексирует метки журналов. Это снижает затраты на обработку и хранение журналов.
Promtail, как и Prometheus, является сборщиком журналов для Loki, который отправляет метки журналов в Grafana Loki для индексации.
В этом посте мы рассмотрим следующее:
- Установка Grafana
- Как установить Loki
- Как установить Promtail
- Как настроить Loki Data Source and Explore
Шаг 1 — Установите инструмент мониторинга Grafana
В этом разделе мы рассмотрим установку Grafana на Ubuntu. Воспользуйтесь приведенными ниже ссылками, которые расскажут, как установить Grafana в разных системах:
Обновите свою систему Ubuntu и перезагрузитесь:
sudo apt-get update
sudo apt-get upgrade
sudo reboot
Добавьте ключ Grafana GPG, затем установите репозиторий Grafana APT:
## Add gpg key
sudo apt-get install -y gnupg2 curl
curl https://packages.grafana.com/gpg.key | sudo apt-key add -
## Add Grafana APT repository
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
Установить Grafana
sudo apt-get update
sudo apt-get -y install grafana
Запустить Grafana-service
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
Grafana теперь установлена и может быть доступна через IP-адрес сервера и порт 3000. (http://server_IP:3000)
Вам необходимо разрешить порт 3000 через брандмауэр.
Для Ubuntu:
sudo ufw allow proto tcp from any to any port 3000
Затем вы можете получить доступ к веб-панели Grafana,
Шаг 2 — Установите систему агрегирования журналов Grafana Loki Log
Теперь приступим к установке Loki, выполнив следующие действия:
- Перейдите на страницу выпуска Loki и выберите последнюю версию Loki.
- Перейдите в Assets и загрузите двоичный zip-файл Loki на свой сервер. На момент выпуска этой статьи последняя версия 2.0.0.
curl -s https://api.github.com/repos/grafana/loki/releases/latest | grep browser_download_url | cut -d '"' -f 4 | grep loki-linux-amd64.zip | wget -i -
Установить unzip
# Ubuntu / Debian
$ sudo apt install unzip
# CentOS / Fedora / RHEL
$ sudo yum -y install unzip
3. Разархивируйте двоичный файл в /usr/local/bin
unzip loki-linux-amd64.zip
sudo mv loki-linux-amd64 /usr/local/bin/loki
Подтвердите установленную версию:
$ loki --version
loki, version 2.0.0 (branch: HEAD, revision: 6978ee5d)
build user: root@2645337e4e98
build date: 2020-10-26T15:54:56Z
go version: go1.14.2
platform: linux/amd64
4. Создайте файл YAML для Loki под /usr/local/bin
Создайте необходимые каталоги данных:
sudo mkdir -p /data/loki
Создайте новый файл конфигурации.
sudo vim /etc/loki-local-config.yaml
Добавьте в файл следующую конфигурацию:
auth_enabled: false
server:
http_listen_port: 3100
ingester:
lifecycler:
address: 127.0.0.1
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 5m
chunk_retain_period: 30s
max_transfer_retries: 0
schema_config:
configs:
- from: 2018-04-15
store: boltdb
object_store: filesystem
schema: v11
index:
prefix: index_
period: 168h
storage_config:
boltdb:
directory: /data/loki/index
filesystem:
directory: /data/loki/chunks
limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
chunk_store_config:
max_look_back_period: 0s
table_manager:
retention_deletes_enabled: false
retention_period: 0s
5.
Создайте сервис Loki:
Создайте следующий файл, /etc/systemd/system
чтобы демонизировать службу Loki:
sudo tee /etc/systemd/system/loki.service<<EOF
[Unit]
Description=Loki service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/loki -config.file /etc/loki-local-config.yaml
[Install]
WantedBy=multi-user.target
EOF
6. Перезагрузите системный демон, затем запустите службу Loki:
sudo systemctl daemon-reload
sudo systemctl start loki.service
Вы можете проверить, успешно ли запустилась служба:
$ sudo systemctl status loki
● loki.service - Loki service
Loaded: loaded (/etc/systemd/system/loki.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2020-12-21 11:49:49 UTC; 2min 37s ago
Main PID: 15223 (loki)
Tasks: 7 (limit: 1137)
Memory: 13.6M
CGroup: /system.slice/loki.service
└─15223 /usr/local/bin/loki -config.file /etc/loki-local-config.yaml
Dec 21 11:49:49 ubuntu loki[15223]: level=info ts=2020-12-21T11:49:49.330959628Z caller=table_manager.go:476 msg="creating table" table=index_2658
Dec 21 11:49:49 ubuntu loki[15223]: level=info ts=2020-12-21T11:49:49.331092225Z caller=table_manager.go:476 msg="creating table" table=index_2549
Dec 21 11:49:49 ubuntu loki[15223]: level=info ts=2020-12-21T11:49:49.331220486Z caller=table_manager.go:476 msg="creating table" table=index_2562
Dec 21 11:49:49 ubuntu loki[15223]: level=info ts=2020-12-21T11:49:49.331347316Z caller=table_manager.go:476 msg="creating table" table=index_2615
Dec 21 11:49:49 ubuntu loki[15223]: level=info ts=2020-12-21T11:49:49.331471475Z caller=table_manager.go:476 msg="creating table" table=index_2643
Dec 21 11:49:49 ubuntu loki[15223]: level=info ts=2020-12-21T11:49:49.327278535Z caller=module_service.go:58 msg=initialising module=ring
Dec 21 11:49:49 ubuntu loki[15223]: level=info ts=2020-12-21T11:49:49.331950866Z caller=module_service.go:58 msg=initialising module=distributor
Dec 21 11:49:49 ubuntu loki[15223]: level=info ts=2020-12-21T11:49:49.332140208Z caller=module_service.go:58 msg=initialising module=ingester-querier
Dec 21 11:49:49 ubuntu loki[15223]: level=info ts=2020-12-21T11:49:49.332342162Z caller=loki.go:227 msg="Loki started"
Dec 21 11:51:49 ubuntu loki[15223]: level=info ts=2020-12-21T11:51:49.311922692Z caller=table_manager.go:324 msg="synching tables" expected_tables=141
Теперь вы можете получить доступ к метрикам Loki через http://server-IP:3100/metrics
Шаг 3 — Установите агент Promtail
Promtail — это агент, который отправляет содержимое локальных журналов в частный экземпляр Loki или Grafana Cloud.
- Загрузите бинарный zip-архив Promtail со страницы выпуска
curl -s https://api.github.com/repos/grafana/loki/releases/latest | grep browser_download_url | cut -d '"' -f 4 | grep promtail-linux-amd64.zip | wget -i -
Как только файл будет загружен, распакуйте его в /usr/local/bin
unzip promtail-linux-amd64.zip
sudo mv promtail-linux-amd64 /usr/local/bin/promtail
Проверить версию:
$ promtail --version
promtail, version 2.0.0 (branch: HEAD, revision: 6978ee5d)
build user: root@2645337e4e98
build date: 2020-10-26T15:54:56Z
go version: go1.14.2
platform: linux/amd64
2. Создайте файл конфигурации YAML для Promtail в /usr/local/bin
каталоге:
sudo vim /etc/promtail-local-config.yaml
3. Добавьте в файл следующее содержимое:
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /data/loki/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
4. Создайте сервис для Promtail:
sudo tee /etc/systemd/system/promtail.service<<EOF
[Unit]
Description=Promtail service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/promtail -config.file /etc/promtail-local-config.yaml
[Install]
WantedBy=multi-user.target
EOF
5. Перезагрузите и запустите сервис Promtail.
sudo systemctl daemon-reload
sudo systemctl start promtail.service
Подтвердите, что служба находится в рабочем состоянии:
$ systemctl status promtail.service
● promtail.service - Promtail service
Loaded: loaded (/etc/systemd/system/promtail.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2020-12-21 11:57:41 UTC; 3s ago
Main PID: 15381 (promtail)
Tasks: 6 (limit: 1137)
Memory: 8.8M
CGroup: /system.slice/promtail.service
└─15381 /usr/local/bin/promtail -config.file /etc/promtail-local-config.yaml
Dec 21 11:57:41 ubuntu systemd[1]: Started Promtail service.
Dec 21 11:57:41 ubuntu promtail[15381]: level=info ts=2020-12-21T11:57:41.911186079Z caller=server.go:225 http=[::]:9080 grpc=[::]:35499 msg="server listening on>
Dec 21 11:57:41 ubuntu promtail[15381]: level=info ts=2020-12-21T11:57:41.911859429Z caller=main.go:108 msg="Starting Promtail" version="(version=2.0.0, branch=H>
На данный момент мы установили Grafana, Loki и Promtail.
Следующим шагом является настройка Grafana Dashboard и визуализация журналов с помощью Loki.
Шаг 4 — Настройте источник данных Loki
Войдите в веб-интерфейс Grafana и выберите « Исследовать » . Вам будет предложено создать источник данных.
Щелкните Добавить источник данных, затем выберите Loki из доступных вариантов:
4. Введите следующие значения для Loki:
Name: Loki
URL: http://127.0.0.1:3100
См. Снимок экрана ниже.
Щелкните Сохранить и проверить . Вы должны увидеть уведомление об успешном добавлении источника данных.
Шаг 5 — Визуализируйте журналы на Grafana с Loki
Теперь мы можем визуализировать журналы с помощью Loki.
Нажмите » Исследовать», затем выберите Локи в источнике данных.
Теперь вы можете легко визуализировать журналы, выбрав параметры « Метки журнала» .
Заключение
Мы успешно установили Grafana Loki с Promtail и смогли визуализировать журналы на панели управления Grafana.
Grafana Loki может использовать гораздо больше инструментов пересылки журналов, кроме Promtail, например, FluentBit. Вы также можете использовать Grafana Loki для мониторинга своего кластера Kubernetes. Наслаждаться!