Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
software:fluent-bit-loki-grafana:fluent-bit:docker-swarm-2 [2025/11/26 04:52] mirocowsoftware:fluent-bit-loki-grafana:fluent-bit:docker-swarm-2 [2025/12/06 03:35] (текущий) mirocow
Строка 1: Строка 1:
-====== Обработка многострочных логов ======+====== Обработка логов Docker ======
  
 === fluent-bit.conf === === fluent-bit.conf ===
Строка 22: Строка 22:
     Path              /var/lib/docker/containers/*/*.log     Path              /var/lib/docker/containers/*/*.log
     Parser            docker     Parser            docker
-    Multiline         On 
-    Multiline_Parser  docker_multiline 
     Refresh_Interval  10     Refresh_Interval  10
-    Tag               docker.*+    Ignore_Older      1h 
 +    Docker_Mode       On 
 +    Tag               docker.<file_name>
     Tag_Regex         (?<file_name>[a-f0-9]*)-json.log     Tag_Regex         (?<file_name>[a-f0-9]*)-json.log
     Mem_Buf_Limit     50MB     Mem_Buf_Limit     50MB
Строка 32: Строка 32:
     DB.sync           normal     DB.sync           normal
     Storage.Type      filesystem     Storage.Type      filesystem
-    Read_from_Head    true+    Read_from_Head    false
  
-Метаданные Docker Swarm+Только для отладки 
 +# [INPUT] 
 +#     Name              tail 
 +#     Path              /var/lib/docker/containers/*/*.log 
 +#     Parser            docker 
 +#     Refresh_Interval  10 
 +#     Docker_Mode       On 
 +#     Tag               docker.<file_name> 
 +#     Tag_Regex         (?<file_name>[a-f0-9]*)-json.log 
 +#     Mem_Buf_Limit     50MB 
 +#     Skip_Long_Lines   On 
 +#     DB                /var/log/flb-storage/flb_db.db 
 +#     DB.sync           normal 
 +#     Storage.Type      filesystem 
 +#     Read_from_Head    true 
 + 
 +# Фильтруем пустые логи
 [FILTER] [FILTER]
-    name                lua+    name                grep
     match               docker.*     match               docker.*
-    script              /fluent-bit/bin/docker-metadata.lua +    Exclude             log ^$ 
-    call                enrich_with_docker_metadata+    Exclude             log ^\s*$ 
 +    Exclude             log ^==>.+<==$
  
-Основной JSON парсинг+Извлекаем сырой лог
 [FILTER] [FILTER]
-    name                parser+    name                modify
     match               docker.*     match               docker.*
-    key_name            log +    copy                log raw_log 
-    parser              json_auto +    copy                exception.backtrace exception_backtrace 
-    reserve_data        true +    copy                exception.class exception_class 
-    preserve_key        true+    copy                exception.message exception_message
  
 +# Очищаем docker.* - оставляем ТОЛЬКО нужные поля
 [FILTER] [FILTER]
-    name                modify+    name                record_modifier
     match               docker.*     match               docker.*
-    Rename              log message 
-    Copy                message raw_message 
  
-Дополнительная многострочная обработка+    whitelist_key       date 
 +    whitelist_key       log 
 +    whitelist_key       raw_log 
 +    whitelist_key       exception_backtrace 
 +    whitelist_key       exception_class 
 +    whitelist_key       exception_message 
 + 
 +    whitelist_key       method 
 +    whitelist_key       path 
 +    whitelist_key       action 
 +    whitelist_key       status 
 +    whitelist_key       remote_ip 
 +    whitelist_key       controller 
 +    whitelist_key       line_id 
 + 
 +# 
 +# FILTERS 
 +
 [FILTER] [FILTER]
-    name                multiline+    name                parser
     match               docker.*     match               docker.*
-    multiline.key_content message +    key_name            raw_log 
-    multiline.parser    stacktrace_multiline, java_exception_multiline, ruby_exception_multiline, python_exception_multiline+    parser              nginx_access 
 +    reserve_data        true
  
-# Копируем метаданные Docker Swarm (исправленная версия) 
 [FILTER] [FILTER]
-    name                modify+    name                parser
     match               docker.*     match               docker.*
-     +    key_name            raw_log 
-    # Базовые метаданные Docker +    parser              gitlab_json 
-    copy                hostname hostname +    reserve_data        true
-    copy                container_started started +
-    copy                container_name container_name +
-    copy                container_id container_id +
-    copy                state state +
-    copy                stream stream +
-    copy                log _raw +
-     +
-    # Docker Swarm метки +
-    copy                label_com_docker_swarm_service_name service_name +
-    copy                label_com_docker_swarm_task_name task_name +
-    copy                label_com_docker_swarm_task_id task_id +
-    copy                label_com_docker_swarm_node_id node_id +
-    copy                label_com_docker_stack_namespace stack_name +
-     +
-    # Кастомные лейблы логирования +
-    copy                label_logging_enabled logging_enabled +
-    copy                label_logging_jobname logging_jobname +
-     +
-    # Дополнительные поля +
-    copy                image_name image_name +
-    copy                image_id image_id+
  
-# Устанавливаем значения по умолчанию 
 [FILTER] [FILTER]
-    name                modify+    name                parser
     match               docker.*     match               docker.*
-    Set                 logging_jobname ${service_name} if ${logging_jobname} == "" +    key_name            raw_log 
-    Set                 environment production +    parser              gitlab_registry 
-    Set                 node_name ${HOSTNAME}+    reserve_data        true
  
-# Специфичные парсеры для разных сервисов 
 [FILTER] [FILTER]
     name                parser     name                parser
     match               docker.*     match               docker.*
-    key_name            raw_message +    key_name            raw_log 
-    parser              gitlab_json+    parser              sidekiq_json
     reserve_data        true     reserve_data        true
  
Строка 111: Строка 122:
     name                parser     name                parser
     match               docker.*     match               docker.*
-    key_name            raw_message +    key_name            raw_log 
-    parser              gitlab_combined+    parser              mysql_error
     reserve_data        true     reserve_data        true
  
Строка 118: Строка 129:
     name                parser     name                parser
     match               docker.*     match               docker.*
-    key_name            raw_message +    key_name            raw_log 
-    parser              nextcloud_cron+    parser              mysql_slow
     reserve_data        true     reserve_data        true
  
Строка 125: Строка 136:
     name                parser     name                parser
     match               docker.*     match               docker.*
-    key_name            raw_message +    key_name            raw_log 
-    parser              nextcloud_stacktrace+    parser              postgresql
     reserve_data        true     reserve_data        true
  
Строка 132: Строка 143:
     name                parser     name                parser
     match               docker.*     match               docker.*
-    key_name            raw_message +    key_name            raw_log 
-    parser              nginx_access+    parser              postgresql_detailed
     reserve_data        true     reserve_data        true
  
Строка 139: Строка 150:
     name                parser     name                parser
     match               docker.*     match               docker.*
-    key_name            raw_message +    key_name            raw_log 
-    parser              gitlab_registry+    parser              nextcloud_access
     reserve_data        true     reserve_data        true
 +    Preserve_Key        true
  
 [FILTER] [FILTER]
     name                parser     name                parser
     match               docker.*     match               docker.*
-    key_name            raw_message +    key_name            raw_log 
-    parser              sidekiq+    parser              apache_access
     reserve_data        true     reserve_data        true
  
Строка 153: Строка 165:
     name                parser     name                parser
     match               docker.*     match               docker.*
-    key_name            raw_message +    key_name            raw_log 
-    parser              gitaly_json+    parser              php_fpm
     reserve_data        true     reserve_data        true
  
-# Структуризация распарсенных полей+[FILTER] 
 +    name                parser 
 +    match               docker.* 
 +    key_name            raw_log 
 +    parser              grafana_regex 
 +    reserve_data        true 
 + 
 +# Структуризация распарсенных полей В raw_log
 [FILTER] [FILTER]
     name                nest     name                nest
     match               docker.*     match               docker.*
-    operation           lift +    operation           nest 
-    nested_under        parsed_data +    wildcard            remote_* 
-    add_prefix          parsed_+    wildcard            method 
 +    wildcard            path 
 +    wildcard            status 
 +    wildcard            body_bytes 
 +    wildcard            user_agent 
 +    wildcard            referrer 
 +    wildcard            logger 
 +    wildcard            endpoint 
 +    wildcard            pluginId 
 +    wildcard            dsName 
 +    wildcard            dsUID 
 +    wildcard            uname 
 +    wildcard            level 
 +    wildcard            msg 
 +    wildcard            statusCode 
 +    wildcard            resourcePath 
 +    wildcard            exception 
 +    nest_under          parsed_data 
 + 
 +
 +# FILTERS 
 +#
  
 +# Метаданные Docker
 +[FILTER]
 +    name                lua
 +    match               docker.*
 +    script              /fluent-bit/bin/docker-metadata.lua
 +    call                enrich_with_docker_metadata
 +
 +# Копируем метаданные
 [FILTER] [FILTER]
     name                modify     name                modify
     match               docker.*     match               docker.*
-    Remove              parsed_data+    copy                docker.hostname hostname 
 +    copy                docker.container_started started 
 +    copy                docker.container_name container_name 
 +    copy                docker.container_name service_name 
 +    copy                docker.container_id container_id 
 +    copy                docker.state state 
 +    copy                docker.stream stream 
 +    copy                docker.line_id line_id 
 + 
 +    copy                log _raw 
 +    copy                parsed_data _parsed 
 +    # copy                exception_class _class 
 +    # copy                exception_message _message 
 +    # copy                exception_backtrace _backtrace 
 + 
 +    copy                docker.label_project project 
 +    copy                docker.label_service service 
 +    copy                docker.label_logging logging 
 +    copy                docker.label_logging_jobname logging_jobname
  
 +# Структурируем через nest
 [FILTER] [FILTER]
     name                nest     name                nest
     match               docker.*     match               docker.*
     operation           nest     operation           nest
-    wildcard            parsed_+    wildcard            _
-    nest_under          parsed+    nest_under          log 
 +    remove_prefix       _
  
-Копируем важные распарсенные поля+Добавляем host metadata
 [FILTER] [FILTER]
     name                modify     name                modify
     match               docker.*     match               docker.*
-    Copy               parsed_level level +    set                 node_id ${NODE_ID} 
-    Copy               parsed_message log_message +    set                 node_name ${NODE_NAME} 
-    Copy               parsed_method method +    set                 host_name ${NODE_NAME}
-    Copy               parsed_status status +
-    Copy               parsed_path path +
-    Copy               parsed_remote_addr remote_ip +
-    Copy               parsed_correlation_id correlation_id +
-    Copy               parsed_severity severity +
-    Copy               parsed_exception exception +
-    Copy               parsed_stacktrace stacktrace+
  
-# Перетагиваем логи с включенным логированием+# Перетагиваем только логи с enabled logging
 [FILTER] [FILTER]
     name                rewrite_tag     name                rewrite_tag
     match               docker.*     match               docker.*
-    Rule                logging_enabled ^enabled$ logs.${logging_jobname} true +    rule                $logging ^enabled$ data.$container_id true
-    Emitter_Name        re_emitted+
  
-# Очищаем данные для Loki 
 [FILTER] [FILTER]
     name                record_modifier     name                record_modifier
-    match               logs.* +    match               data.* 
-    Whitelist_key       message + 
-    Whitelist_key       raw_message +    whitelist_key       date 
-    Whitelist_key       container_name +    whitelist_key       log 
-    Whitelist_key       container_id +    whitelist_key       exception_class 
-    Whitelist_key       service_name +    whitelist_key       exception_message 
-    Whitelist_key       task_name +    whitelist_key       exception_backtrace 
-    Whitelist_key       stack_name + 
-    Whitelist_key       node_name +    whitelist_key       method 
-    Whitelist_key       environment +    whitelist_key       path 
-    Whitelist_key       logging_jobname +    whitelist_key       action 
-    Whitelist_key       parsed +    whitelist_key       status 
-    Whitelist_key       level +    whitelist_key       remote_ip 
-    Whitelist_key       log_message +    whitelist_key       controller 
-    Whitelist_key       method +    whitelist_key       line_id 
-    Whitelist_key       status + 
-    Whitelist_key       path +    whitelist_key       node_id 
-    Whitelist_key       remote_ip +    whitelist_key       node_name 
-    Whitelist_key       correlation_id +    whitelist_key       host_name 
-    Whitelist_key       severity +    whitelist_key       hostname 
-    Whitelist_key       exception +    whitelist_key       started 
-    Whitelist_key       stacktrace+    whitelist_key       container_name 
 +    whitelist_key       service_name 
 +    whitelist_key       container_id 
 +    whitelist_key       stream 
 +    whitelist_key       project 
 +    whitelist_key       service 
 +    whitelist_key       logging_jobname
  
-# Выход в Loki с нужными лейблами 
 [OUTPUT] [OUTPUT]
     name                loki     name                loki
-    match               logs.*+    match               data.*
     host                loki     host                loki
     port                3100     port                3100
-    labels              job=$logging_jobname, node_name=$node_name, container_name=$container_name, service_name=$service_name, stack_name=$stack_nameenvironment=$environment+    labels              job=$logging_jobname, node_name=$node_name, container_id=$container_id, container_name=$container_name, service_name=$service_name, project=$projectservice=$service, level=$stream 
 +    label_keys          $node_name,$container_id,$container_name,$service_name,$project,$service
     line_format         json     line_format         json
     auto_kubernetes_labels off     auto_kubernetes_labels off
-    drop_single_key     false 
  
-Резервный вывод для отладки +Только для отладки 
-[OUTPUT] +[OUTPUT] 
-    name                stdout +#     name                stdout 
-    match               logs.* +#     match               data.* 
-    format              json+#     format              json
 </code> </code>
  
-=== parsers_multiline.conf ===+=== parsers.conf ===
  
 <code ini> <code ini>
Строка 254: Строка 318:
     Time_Keep   On     Time_Keep   On
  
-Многострочный парсер для Docker логов (объединяет стектрейсы) +Nginx access логи
-[MULTILINE_PARSER] +
-    Name        docker_multiline +
-    Type        regex +
-    Rule        "start_state"  "/(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z).*|({\".*\"})/" "cont_state" +
-    Rule        "cont_state"   "/^[^{].*/" "cont_state" +
-    Rule        "cont_state"   "/(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z).*|({\".*\"})/" "start_state" +
- +
-# Автоматический JSON парсер+
 [PARSER] [PARSER]
-    Name        json_auto +    Name        nginx_access 
-    Format      json +    Format      regex 
-    Time_Key    time +    Regex       ^(?<remote_ip>[^ ]*) - - \[(?<timestamp>[^\]]*)\] "(?<method>\w+) (?<path>[^ ]*) HTTP/[0-9.]+" (?<status>\d+) (?<body_bytes>\d+) "(?<referrer>[^"]*)" "(?<user_agent>[^"]*)" 
-    Time_Format %Y-%m-%dT%H:%M:%S.%LZ +    Time_Key    timestamp 
-    Time_Keep   On+    Time_Format %d/%b/%Y:%H:%M:%S %z
  
-GitLab JSON логи+Gitlab JSON логи (application logs)
 [PARSER] [PARSER]
     Name        gitlab_json     Name        gitlab_json
     Format      json     Format      json
 +    # Time_Key    time    # Используем время из Docker
     Time_Keep   On     Time_Keep   On
  
-# GitLab комбинированный формат+# GitLab Registry логи
 [PARSER] [PARSER]
-    Name        gitlab_combined+    Name        gitlab_registry
     Format      regex     Format      regex
-    Regex       ^(?<time>\d{4}-\d{2}-\d{2}_\d{2}:\d{2}:\d{2}\.\d+)\s+(?<message>.+)$+    Regex       ^\d{4}-\d{2}-\d{2}_\d{2}:\d{2}:\d{2}\.\d+ time="(?<time>[^"]*)" level=(?<level>\w+) msg="(?<msg>[^"]*)"(?<rest>.*)
     Time_Key    time     Time_Key    time
-    Time_Format %Y-%m-%d_%H:%M:%S.%L+    Time_Format %Y-%m-%dT%H:%M:%S.%LZ
     Time_Keep   On     Time_Keep   On
  
-Nextcloud cron логи+Sidekiq JSON логи
 [PARSER] [PARSER]
-    Name        nextcloud_cron +    Name        sidekiq_json 
-    Format      regex +    Format      json 
-    Regex       ^-+\s*Executing Cron Tasks:\s*(?<timestamp>.+?)\s*-+(?<log_message>.*)$ +    Time_Key    time    # Используем время из Docker
-    Time_Key    timestamp +
-    Time_Format %a %b %d %H:%M:%S %Z %Y+
     Time_Keep   On     Time_Keep   On
  
-# Nextcloud стектрейсы и исключения+# Nextcloud Apache-style логи
 [PARSER] [PARSER]
-    Name        nextcloud_stacktrace+    Name        nextcloud_access
     Format      regex     Format      regex
-    Regex       ^(?<exception>[A-Z][a-zA-Z0-9_\\]+):\s+(?<message>.*)\s+in\s+(?<file>.*):(?<line>\d+)\s*$\s*Stack trace:\s*$(?<stacktrace>.*)+    Regex       ^(?<remote_ip>[]*) (?<user_ident>[]*) (?<user_id>[^ ]*) \[(?<timestamp>[^\]]*)\] "(?<method>\w+(?<path>[^ ]*) HTTP/[0-9.]+" (?<status>\d+) (?<body_bytes>\d+) "(?<referrer>[^"]*)" "(?<user_agent>[^"]*)
 +    Time_Key    timestamp 
 +    Time_Format %d/%b/%Y:%H:%M:%S %z  # ← Apache/Nginx формат!
     Time_Keep   On     Time_Keep   On
  
-Nginx access логи+Apache access логи
 [PARSER] [PARSER]
-    Name        nginx_access+    Name        apache_access
     Format      regex     Format      regex
     Regex       ^(?<remote_ip>[^ ]*) - - \[(?<timestamp>[^\]]*)\] "(?<method>\w+) (?<path>[^ ]*) HTTP/[0-9.]+" (?<status>\d+) (?<body_bytes>\d+) "(?<referrer>[^"]*)" "(?<user_agent>[^"]*)"     Regex       ^(?<remote_ip>[^ ]*) - - \[(?<timestamp>[^\]]*)\] "(?<method>\w+) (?<path>[^ ]*) HTTP/[0-9.]+" (?<status>\d+) (?<body_bytes>\d+) "(?<referrer>[^"]*)" "(?<user_agent>[^"]*)"
     Time_Key    timestamp     Time_Key    timestamp
     Time_Format %d/%b/%Y:%H:%M:%S %z     Time_Format %d/%b/%Y:%H:%M:%S %z
-    Time_Keep   On 
  
-GitLab Registry+MySQL error логи
 [PARSER] [PARSER]
-    Name        gitlab_registry+    Name        mysql_error
     Format      regex     Format      regex
-    Regex       ^time="(?<time>[^"]+)"\s+level=(?<level>\w+)\s+msg="(?<message>[^"]+)"(?<extra>.*)$ +    Regex       ^(?<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+Z) (?<level>\w+) (?<message>.*) 
-    Time_Key    time+    Time_Key    timestamp
     Time_Format %Y-%m-%dT%H:%M:%S.%LZ     Time_Format %Y-%m-%dT%H:%M:%S.%LZ
     Time_Keep   On     Time_Keep   On
  
-Sidekiq+MySQL slow query логи
 [PARSER] [PARSER]
-    Name        sidekiq+    Name        mysql_slow
     Format      regex     Format      regex
-    Regex       ^{\s*"severity"\s*:\s*"(?<severity>\w+)"\s*,\s*"time"\s*:\s*"(?<time>[^"]+)".*?"message"\s*:\s*"(?<message>[^"]*)"(?<extra>.*)$ +    Regex       ^# Time: (?<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d+Z).*# User@Host(?<user>[^\[]*)\[(?<database>[^\]]*)\] @ (?<host>[\w\.]*)\s*\[(?<ip>[\d\.]*)\].*# Query_time: (?<query_time>[\d\.]*Lock_time: (?<lock_time>[\d\.]*) Rows_sent: (?<rows_sent>\d*) Rows_examined(?<rows_examined>\d*).*use (?<used_database>\w*);.*SET timestamp=(?<timestamp_unix>\d*);(?<query>.*) 
-    Time_Key    time+    Time_Key    timestamp
     Time_Format %Y-%m-%dT%H:%M:%S.%LZ     Time_Format %Y-%m-%dT%H:%M:%S.%LZ
     Time_Keep   On     Time_Keep   On
  
-Gitaly JSON логи+PostgreSQL логи
 [PARSER] [PARSER]
-    Name        gitaly_json +    Name        postgresql 
-    Format      json +    Format      regex 
-    Time_Key    time +    Regex       ^(?<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d+ [A-Z]{3}) \[(?<pid>\d+)\] (?<level>\w+):\s*(?<message>.*) 
-    Time_Format %Y-%m-%dT%H:%M:%S.%LZ+    Time_Key    timestamp 
 +    Time_Format %Y-%m-%%H:%M:%S.%L %Z
     Time_Keep   On     Time_Keep   On
  
-Многострочные парсеры для стектрейсов +PostgreSQL extended логи (с деталями запросов) 
-[MULTILINE_PARSER+[PARSER
-    Name        stacktrace_multiline +    Name        postgresql_detailed 
-    Type        regex +    Format      regex 
-    Rule        "start_state"   "/^\w+/"  "cont_state" +    Regex       ^(?<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d+ [A-Z]{3}) \[(?<pid>\d+)\] (?<level>\w+):\s*duration: (?<duration>[\d\.]*) ms\s*(?<message>.*) 
-    Rule        "cont_state"    "/^[\s\t]+/"  "cont_state" +    Time_Key    timestamp 
-    Rule        "cont_state"    "/^\w+/"  "start_state"+    Time_Format %Y-%m-%d %H:%M:%S.%L %Z 
 +    Time_Keep   On
  
-[MULTILINE_PARSER+# PHP-FPM логи 
-    Name        java_exception_multiline +[PARSER
-    Type        regex +    Name        php_fpm 
-    Rule        "start_state"   "/^([A-Z][a-zA-Z]*Exception|Error).*|^\s+at\s+/"  "cont_state" +    Format      regex 
-    Rule        "cont_state"    "/^\s+at\s+|^\s+\.\.\.\s+|^\s*Caused by:/"  "cont_state" +    Regex       ^\[(?<timestamp>[^\]]+)\] (?<level>\w+): (?<message>.*) 
-    Rule        "cont_state"    "/^([A-Z][a-zA-Z]*Exception|Error).*/"  "start_state" +    Time_Key    timestamp 
- +    Time_Format %d-%b-%Y %H:%M:%S 
-[MULTILINE_PARSER] +    Time_Keep   On
-    Name        ruby_exception_multiline +
-    Type        regex +
-    Rule        "start_state"   "/^[A-Z][a-zA-Z]*Error.*|^\s+from\s+/"  "cont_state" +
-    Rule        "cont_state"    "/^\s+from\s+|^\s+.*\.rb:\d+:in\s+/"  "cont_state" +
-    Rule        "cont_state"    "/^[A-Z][a-zA-Z]*Error.*/"  "start_state"+
  
-[MULTILINE_PARSER] +Стандартный syslog
-    Name        python_exception_multiline +
-    Type        regex +
-    Rule        "start_state"   "/^[A-Z][a-zA-Z]*Error.*|^Traceback.*|^\s+File\s+/"  "cont_state" +
-    Rule        "cont_state"    "/^\s+File\s+|^\s+.*\.py:\d+/"  "cont_state" +
-    Rule        "cont_state"    "/^[A-Z][a-zA-Z]*Error.*/"  "start_state" +
- +
-Парсер для PHP исключений (Nextcloud)+
 [PARSER] [PARSER]
-    Name        php_exception+    Name        syslog_rfc3164
     Format      regex     Format      regex
-    Regex       ^PHP\s+(?<level>\w+):\s+(?<message>.*)\s+in\s+(?<file>.*)\s+on\s+line\s+(?<line>\d+)+    Regex       ^\<(?<pri>[0-9]+)\>(?<timestamp>[^ ]* {1,2}[^ ]* [^ ]*) (?<host>[^ ]*) (?<ident>[a-zA-Z0-9_\/\.\-]*)(?:\[(?<pid>[0-9]+)\])?(?:[^\:]*\:)? (?<message>.*)
 +    Time_Key    timestamp 
 +    Time_Format %b %d %H:%M:%S
     Time_Keep   On     Time_Keep   On
  
-Парсер для PDO/Doctrine исключений+Grafana лог формата key=value
 [PARSER] [PARSER]
-    Name        pdo_exception+    Name        grafana_logfmt 
 +    Format      logfmt 
 +    Time_Key    t 
 +    Time_Format %Y-%m-%dT%H:%M:%S.%LZ 
 +    Time_Keep   On 
 + 
 +[PARSER] 
 +    Name        grafana_regex
     Format      regex     Format      regex
-    Regex       ^PDOException:\s+SQLSTATE\[(?<sql_state>\w+)\]:\s+(?<message>.*)\s+in\s+(?<file>.*):(?<line>\d+)+    Regex       logger=(?<logger>[]*) endpoint=(?<endpoint>[^ ]*) pluginId=(?<pluginId>[^ ]*dsName=(?<dsName>[^ ]*) dsUID=(?<dsUID>[^ ]*) uname=(?<uname>[^ ]*) t=(?<t>[^ ]*level=(?<level>[^ ]*) msg="(?<msg>[^"]*)" error=(?<error>[^ ]*) statusCode=(?<statusCode>[^ ]*) resourcePath="(?<resourcePath>[^"]*)" 
 +    Time_Key    t 
 +    Time_Format %Y-%m-%dT%H:%M:%S.%LZ
     Time_Keep   On     Time_Keep   On
 </code> </code>
Строка 393: Строка 450:
 server: server:
   http_listen_port: 3100   http_listen_port: 3100
-  grpc_listen_port: 9096 
  
 common: common:
-  path: /loki+  instance_addr: 127.0.0.1 
 +  path_prefix: /loki
   storage:   storage:
     filesystem:     filesystem:
Строка 403: Строка 460:
   replication_factor: 1   replication_factor: 1
   ring:   ring:
-    instance_addr: 127.0.0.1 
     kvstore:     kvstore:
       store: inmemory       store: inmemory
- 
-query_range: 
-  results_cache: 
-    cache: 
-      embedded_cache: 
-        enabled: true 
-        max_size_mb: 100 
  
 schema_config: schema_config:
   configs:   configs:
     - from: 2020-10-24     - from: 2020-10-24
-      store: boltdb-shipper+      store: tsdb
       object_store: filesystem       object_store: filesystem
-      schema: v11+      schema: v13
       index:       index:
         prefix: index_         prefix: index_
Строка 427: Строка 476:
   alertmanager_url: http://localhost:9093   alertmanager_url: http://localhost:9093
  
-analytics+limits_config
-  reporting_enabledfalse+  retention_period720h 
 +  reject_old_samples: true 
 +  reject_old_samples_max_age: 720h 
 +  allow_structured_metadata: true 
 +  max_query_length: 721h 
 +   
 +ingester: 
 +  lifecycler: 
 +    ring: 
 +      kvstore: 
 +        store: inmemory 
 +      replication_factor:
 +    final_sleep: 0s 
 +  chunk_idle_period: 1h 
 +  max_chunk_age: 1h 
 +  chunk_target_size: 1048576 
 +  chunk_retain_period: 30s 
 + 
 +table_manager: 
 +  retention_deletes_enabled: true 
 +  retention_period: 720h
 </code> </code>