Как переслать логи в Grafana Loki с помощью Promtail

Как переслать логи в 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, выполнив следующие действия:

  1. Перейдите на страницу выпуска Loki и выберите последнюю версию Loki.
  2. Перейдите в 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.

  1. Загрузите бинарный 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. Наслаждаться!