Создание и применение легкой платформы для управления бревнами Grafana Loki
Создание и применение легкой платформы для управления бревнами Grafana Loki

Предисловие

В эпоху микросервисов и облачных технологий, поскольку приложения развертываются повсюду, вместо традиционной фильтрации журналов на каждом сервере приложений мы можем использовать платформу управления журналами для сбора всех журналов в единую платформу для эксплуатации, обслуживания и исследований и разработок. персонал для быстрого устранения неисправностей для повышения эффективности.

Такие платформы журналов предоставляются поставщиками облачных услуг, такими как Tencent Cloud Log Service CLS, Alibaba Cloud Log Service SLS, Baidu Cloud Log Service BLS, TiaNY Cloud Log Service CT-LTS, Google Cloud Cloud Logging и т. д.

Если вы крупная или средняя компания, то вы, должно быть, проделали все это при эксплуатации и обслуживании, и вам не нужно учитывать какие-либо проблемы с затратами. Однако в таких рискованных отраслях, как финансы, облачные продукты практически не вызывают доверия. , потому что журналы могут иметь конфиденциальные и другие идентификаторы, и вам нужно использовать их. Тогда вам придется создать их самостоятельно.

Текущие зрелые решения в основном:Logstash + Elasticsearch + Kibana (LEK), но у LEK более высокие требования к ресурсам. Без 8H8G его можно использовать по одной карте, поэтому мы можем перейти на более легкое решение. Promtail + Loki + Grafana (PLG),Эта статья о решении правительстваPLG.,Можно подключить к различным облачным хранилищам.,Такие как Minio, S3, COS, OSS и т. д.

представлять

Grafana Loki

чиновник:https://grafana.com/oss/loki/

Адрес с открытым исходным кодом:https://github.com/grafana/loki

Loki — это система агрегирования журналов, предназначенная для хранения и запроса журналов всех приложений и инфраструктуры.

Grafana

чиновник:https://grafana.com/grafana/

Адрес с открытым исходным кодом:https://github.com/grafana/grafana

Панель мониторинга для запроса, визуализации, оповещения и анализа ваших данных независимо от того, где они хранятся. С Grafana вы можете создавать, исследовать и делиться всеми своими данными с помощью красивых и гибких информационных панелей.

Promtail

Promtail — это прокси, который отправляет содержимое локальных логов в частный Grafana Loki. Обычно он развертывается на каждом компьютере, на котором запущено приложение, требующее мониторинга.

Начать развертывание

Рекомендуемая конфигурация — 2H4G, более плавная.

ссылкачиновникразвертыватьруководство:https://grafana.com/docs/loki/latest/get-started/quick-start/

Официальная схема архитектуры быстрого развертывания docker-compose включает следующие компоненты: Последняя используемая версия — 3.1.x.

Создание и применение легкой платформы для управления бревнами Grafana Loki
Создание и применение легкой платформы для управления бревнами Grafana Loki

flog : Создать строки журнала. flogявляется общимбревно Отформатированныйбревногенератор。 Grafana Alloy :от flog очистить строки журнала и протолкнуть их через шлюз в Loki。 шлюз(nginx),Принимать запросы и отвечать на запросы URL Перенаправьте их в соответствующий контейнер. Компонент чтения Локи:бегать Интерфейсы запросов и генераторы запросов。 Компонент письма Локи:бегать Дистрибьюторы и получатели。 Бэкэнд-компоненты Loki:бегать Index Gateway、Compactor、Ruler、Bloom Компактор (экспериментальный) и Bloom Шлюз (экспериментальный). Minio :Loki Используйте его для хранения индексов и блоков. Grafana :поставлять Loki Визуализация строк журнала, записанных в формате .

Вышеописанное официально использует разделение чтения и записи и серверную часть хранилища minio. Для запуска я настроил его для теста развертывания с одним узлом. Если вы хотите получить предварительный опыт, вы можете использовать мои следующие. docker-compose.yaml Быстрое развертывание.

Язык кода:javascript
копировать
version: "3"

networks:
  loki:

services:
# хранилище предметов минио
  minio:
    image: minio/minio
    entrypoint:
      - sh
      - -euc
      - |
        mkdir -p /data/loki-data && \
        mkdir -p /data/loki-ruler && \
        minio server --console-address ':9001' /data
    environment:
      - MINIO_ROOT_USER=lcry
      - MINIO_ROOT_PASSWORD=www.51it.wang
      - MINIO_PROMETHEUS_AUTH_TYPE=public
      - MINIO_UPDATE=off
    ports:
      - 19000:9000
      - 19001:9001
    volumes:
      - ./minio-data:/data
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:9000/minio/health/live" ]
      interval: 15s
      timeout: 20s
      retries: 5
    networks:
      - loki
# графана панель
  grafana:
    image: grafana:latest
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=www.51it.wang
    entrypoint:
      - sh
      - -euc
      - |
        mkdir -p /etc/grafana/provisioning/datasources
        cat <<EOF > /etc/grafana/provisioning/datasources/ds.yaml
        apiVersion: 1
        datasources:
          - name: Loki
            type: loki
            access: proxy
            url: http://backend:3100
            jsonData:
              httpHeaderName1: "X-Scope-OrgID"
            secureJsonData:
              httpHeaderValue1: "tenant-lcry"
        EOF
        /run.sh
    ports:
      - "3000:3000"
    healthcheck:
      test: [ "CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:3000/api/health || exit 1" ]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - loki

# серверная служба Локи
  backend:
    image: grafana/loki:3.1.1
    depends_on:
      - minio
    volumes:
      - ./loki-config.yaml:/etc/loki/config.yaml
    ports:
      - "3100:3100"
      - "7946"
      - "9095"
    command: "-config.file=/etc/loki/config.yaml -target=all"
    healthcheck:
      test: [ "CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:3100/ready || exit 1" ]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - loki

# коллекция
  promtail:
    image:promtail:3.1.1
    depends_on:
      - backend
    volumes:
      - ./log:/var/log
      - ./promtail-config.yaml:/etc/promtail/config.yaml
    command: -config.file=/etc/promtail/config.yaml
    networks:
      - loki

loki-config.yaml Конфигурационный файл:

Язык кода:javascript
копировать
auth_enabled: false
server:
  http_listen_address: 0.0.0.0
  http_listen_port: 3100

memberlist:
  join_members: ["backend"]
  dead_node_reclaim_time: 30s
  gossip_to_dead_nodes_time: 15s
  left_ingesters_timeout: 30s
  bind_addr: ['0.0.0.0']
  bind_port: 7946
  gossip_interval: 2s

schema_config:
  configs:
    - from: 2021-08-01
      store: tsdb
      object_store: s3
      schema: v13
      index:
        prefix: index_
        period: 24h
common:
  path_prefix: /loki
  replication_factor: 1
  compactor_address: http://backend:3100
  storage:
    s3:
      endpoint: minio:9000
      insecure: true
      bucketnames: loki-data
      access_key_id: lcry
      secret_access_key: www.51it.wang
      s3forcepathstyle: true
  ring:
    kvstore:
      store: memberlist
ruler:
  storage:
    s3:
      bucketnames: loki-ruler

compactor:
  working_directory: /tmp/compactor

promtail-config.yaml Конфигурационный файл:

Язык кода:javascript
копировать
server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://backend:3100/loki/api/v1/push

scrape_configs:
  - job_name: system
    static_configs:
      - targets:
          - localhost
        labels:
          job: varlogs
          __path__: /var/log/*log

Затем выполните команду:docker-compose up -d бегать

Затем посетите пользовательский интерфейс Grafana: http://адрес сервера:3000/, учетная запись: admin, пароль: www.51it.wang.

Источник данных loki был добавлен в файл конфигурации по умолчанию. Нажмите непосредственно, чтобы проверить, доступен ли он:

Создание и применение легкой платформы для управления бревнами Grafana Loki
Создание и применение легкой платформы для управления бревнами Grafana Loki

Просмотрите журналы напрямую и найдите тестовые журналы, добавленные вами вручную. Настройка завершена без каких-либо проблем.

Создание и применение легкой платформы для управления бревнами Grafana Loki
Создание и применение легкой платформы для управления бревнами Grafana Loki

Физическое развертывание protmail

Если вам нужно собирать логи с других машин, то вам нужно только установить компонент сбора protmail. Версия докера была продемонстрирована выше.

первым прибытьlokiВерсия выпуска здесь, чтобы загрузить установочный пакет, соответствующий операционной системе.:https://github.com/grafana/loki/releases

Новый Конфигурациядокументpromtail-config.yaml

Язык кода:javascript
копировать
server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://IP-сервера: 3100/loki/api/v1/push

scrape_configs:
  - job_name: service-log
    static_configs:
      - targets:
          - xxx.xxx.xxx.xxx
        labels:
          job: varlogs
          __path__: /var/log/*log

Написание сценариев запуска и остановки: Ubuntu в качестве примера

start.sh

Язык кода:javascript
копировать
#!/bin/bash
nohup ./promtail-linux-amd64 -config.file=./promtail-config.yaml > ./server.log 2>&1 &
echo "$!" > pid

stop.sh

Язык кода:javascript
копировать
#!/bin/bash
kill -9 `cat pid`
echo «Закрыть успешно!»

Начало выполнения ./start.sh

Посмотреть журнал tail -300f server.log , об ошибках не сообщается, наблюдайте за Grafana Если журнал пользовательского интерфейса уже виден, значит, все прошло успешно.

БолееprotmailКонфигурация Может Справочная ссылка:https://grafana.com/docs/loki/latest/send-data/promtail/

Занятие ресурсов

Наконец, давайте посмотрим на легкиеPromtail + Loki + Grafana + Minio Объем памяти, занимаемый всем контейнером.

Создание и применение легкой платформы для управления бревнами Grafana Loki
Создание и применение легкой платформы для управления бревнами Grafana Loki

Общий размер составляет менее 300 МБ, что довольно удобно. Это идеально, если вам просто нужно собрать несколько журналов обслуживания, с которыми вы экспериментируете.

Подвести итог

В этой статье сравниваются различные бревно-платформы.,Наконец построен в реальном боюPromtail + Loki + Grafana + Minio,Настоящие можно использовать для производства.,Однако вам следует обратить внимание на HA-развертывание производственной среды и обратиться к официальным документам для оптимизации.,Например, предельный размер частоты запросов скорости разных арендаторов.,Как долго хранить бревно,Максимальный загружаемый размер бревно и т.п. Конфигурация,Надеюсь, эта статья будет полезна всем.

Справочная ссылка

Promtail+Loki+Grafana создает облегченную платформу управления журналами Request Validation and Rate-Limit Errors Система мониторинга журналов loki Подробное объяснение файлов конфигурации Установка и настройка мониторинга журналов Loki, promtail, Grafana, Prometheus Что конкретно ограничивает Limits_Config? Пересылать журналы на Loki grafana Локи вопросы и ответы оптимизация конфигурации таймаута запроса loki Promtail официальный документ агента Легкая система сбора журналов Grafana Loki Навыки новичка failed to get token ranges for ingester err="zone not set"

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose