Создание и применение легкой платформы для управления бревнами 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
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода