Logs
Loki
# config.yaml # ... schema_config: configs: - from: 2022-10-01 store: boltdb-shipper object_store: filesystem schema: v11 index: prefix: index_ period: 24h # ... table_manager: retention_deletes_enabled: true retention_period: 168h
# docker-compose.yaml loki: image: grafana/loki:2.3.0 command: -config.file=/etc/loki/loki-config.yaml volumes: - ./loki/config.yaml:/etc/loki/loki-config.yaml - loki_data:/loki restart: unless-stopped expose: - 3100 networks: - monitor-net labels: - "traefik.http.routers.loki.entrypoints=loki" - "traefik.http.routers.loki.rule=PathPrefix(`/`)" - "traefik.http.routers.loki.middlewares=auth"
Fluentd
Installation
Before installation - https://docs.fluentd.org/installation/before-install
https://docs.fluentd.org/installation/install-by-deb
# Ubuntu 18 curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-bionic-td-agent3.sh | sh sudo systemctl start td-agent.service sudo systemctl status td-agent.service
Файлы конфигурации сервиса находятся в директории /etc/td-agent
# --- testing # console1 tail -f /var/log/td-agent/td-agent.log # console2 $ curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test # console1 # 2020-06-02 05:39:46.149078100 +0000 debug.test: {"json":"message"}
FluentBit
Installation
Daemon
https://docs.fluentbit.io/manual/ https://docs.fluentbit.io/manual/installation/linux/ubuntu
# 18.04 wget -qO - https://packages.fluentbit.io/fluentbit.key | sudo apt-key add -
# /etc/apt/sources.list deb https://packages.fluentbit.io/ubuntu/bionic bionic main
sudo apt-get update sudo apt-get install td-agent-bit sudo service td-agent-bit start sudo service td-agent-bit status tail -f /var/log/syslog
Файлы конфигурации демона находятся в директории /etc/td-agent-bit
Client
sudo apt-get install cmake flex bison # --- @see # https://fluentbit.io/download/ # https://github.com/fluent/fluent-bit/releases wget https://fluentbit.io/releases/1.4/fluent-bit-1.4.4.tar.gz # --- testing fluent-bit -i tail -p path=/var/log/syslog -o stdout
Configuration
Создаем файл конфигурации: забираем все логи из докера и отправляем в stdout
# fluent.conf
[INPUT]
Name tail
Path /var/lib/docker/containers/*/*.log
Parser docker
[FILTER]
Name nest
Match *
Operation lift
Nested_under attrs
[FILTER]
Name grep
Match *
Regex location ^pro.itmonitoring.dev*
[OUTPUT]
Name stdout
Match *
# parser.conf
[PARSER]
Name docker
Format json
Time_Key time
Time_Format %Y-%m-%dT%H:%M:%S
# используем sudo, т.к. по умолчанию доступа к директории с логами докера нет sudo fluent-bit -c fluent.conf -R parser.conf
Fluent-Bit Forward Fluentd
Конфигурация для встречной работы:
fluentd
<source> @type forward port 24224 bind 0.0.0.0 </source> <match **> @type stdout </match>
fluent-bit
[SERVICE]
...
[INPUT]
Name tail
storage.type filesystem
Path /var/lib/docker/containers/*/*.log
Parser docker
[FILTER]
Name nest
Match *
Operation lift
Nested_under attrs
[FILTER]
Name grep
Match *
Regex location ^pro.itmonitoring.dev*
[OUTPUT]
Name forward
Match *
Host 127.0.0.1
Port 24224
Logrotate
https://debianworld.ru/articles/rotaciya-logov-s-pomoshyu-logrotate-v-debian-ubuntu/
Создаем файл конфигурации для ротации
# sudo vim /etc/logrotate.d/ethereum-ruby-http
/tmp/ethereum_ruby_http.log {
daily
missingok
rotate 7
compress
nodelaycompress
notifempty
su
}Пример конфигурации для Rails-приложения
# /etc/logrotate.d/gosplan-api
/var/www/gosplan-api/current/log/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
copytruncate
}Тестовый запуск
sudo logrotate -d /etc/logrotate.d/gosplan-api
Запуск ротации
sudo logrotate -v -f /etc/logrotate.d/gosplan-api
Далее ротация будет запускаться автоматически в соответствии с файлом конфигурации.
