Syntax highlighting of e0d846b ~( devops/logs)
= Logs = <<TableOfContents()>> == Loki == {{{#!highlight yaml # 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 }}} {{{#!highlight yaml # 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 ]] {{{#!highlight bash # 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'' {{{#!highlight bash # --- 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]] {{{#!highlight bash # 18.04 wget -qO - https://packages.fluentbit.io/fluentbit.key | sudo apt-key add - }}} {{{#!highlight bash # /etc/apt/sources.list deb https://packages.fluentbit.io/ubuntu/bionic bionic main }}} {{{#!highlight bash 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''' {{{#!highlight bash 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 }}} {{{#!highlight bash # используем 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 } }}} Тестовый запуск {{{#!highlight bash sudo logrotate -d /etc/logrotate.d/gosplan-api }}} Запуск ротации {{{#!highlight bash sudo logrotate -v -f /etc/logrotate.d/gosplan-api }}} Далее ротация будет запускаться автоматически в соответствии с файлом конфигурации.
