В эпоху микросервисов и облачных технологий, поскольку приложения развертываются повсюду, вместо традиционной фильтрации журналов на каждом сервере приложений мы можем использовать платформу управления журналами для сбора всех журналов в единую платформу для эксплуатации, обслуживания и исследований и разработок. персонал для быстрого устранения неисправностей для повышения эффективности.
Такие платформы журналов предоставляются поставщиками облачных услуг, такими как 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 и т. д.
чиновник:https://grafana.com/oss/loki/
Адрес с открытым исходным кодом:https://github.com/grafana/loki
Loki — это система агрегирования журналов, предназначенная для хранения и запроса журналов всех приложений и инфраструктуры.
чиновник:https://grafana.com/grafana/
Адрес с открытым исходным кодом:https://github.com/grafana/grafana
Панель мониторинга для запроса, визуализации, оповещения и анализа ваших данных независимо от того, где они хранятся. С Grafana вы можете создавать, исследовать и делиться всеми своими данными с помощью красивых и гибких информационных панелей.
Promtail — это прокси, который отправляет содержимое локальных логов в частный Grafana Loki. Обычно он развертывается на каждом компьютере, на котором запущено приложение, требующее мониторинга.
Рекомендуемая конфигурация — 2H4G, более плавная.
ссылкачиновникразвертыватьруководство:https://grafana.com/docs/loki/latest/get-started/quick-start/
Официальная схема архитектуры быстрого развертывания docker-compose включает следующие компоненты: Последняя используемая версия — 3.1.x.
flog : Создать строки журнала. flogявляется общимбревно Отформатированныйбревногенератор。 Grafana Alloy :от flog очистить строки журнала и протолкнуть их через шлюз в Loki。 шлюз(nginx),Принимать запросы и отвечать на запросы URL Перенаправьте их в соответствующий контейнер. Компонент чтения Локи:бегать Интерфейсы запросов и генераторы запросов。 Компонент письма Локи:бегать Дистрибьюторы и получатели。 Бэкэнд-компоненты Loki:бегать Index Gateway、Compactor、Ruler、Bloom Компактор (экспериментальный) и Bloom Шлюз (экспериментальный). Minio :Loki Используйте его для хранения индексов и блоков. Grafana :поставлять Loki Визуализация строк журнала, записанных в формате .
Вышеописанное официально использует разделение чтения и записи и серверную часть хранилища minio. Для запуска я настроил его для теста развертывания с одним узлом. Если вы хотите получить предварительный опыт, вы можете использовать мои следующие. docker-compose.yaml
Быстрое развертывание.
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
Конфигурационный файл:
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
Конфигурационный файл:
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 был добавлен в файл конфигурации по умолчанию. Нажмите непосредственно, чтобы проверить, доступен ли он:
Просмотрите журналы напрямую и найдите тестовые журналы, добавленные вами вручную. Настройка завершена без каких-либо проблем.
Если вам нужно собирать логи с других машин, то вам нужно только установить компонент сбора protmail. Версия докера была продемонстрирована выше.
первым прибытьlokiВерсия выпуска здесь, чтобы загрузить установочный пакет, соответствующий операционной системе.:https://github.com/grafana/loki/releases
Новый Конфигурациядокументpromtail-config.yaml
:
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
:
#!/bin/bash
nohup ./promtail-linux-amd64 -config.file=./promtail-config.yaml > ./server.log 2>&1 &
echo "$!" > pid
stop.sh
:
#!/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
Объем памяти, занимаемый всем контейнером.
Общий размер составляет менее 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"