ClusterLoggingConfig

Scope: Cluster
Version: v1alpha1

Описывает источник логов в log-pipeline.

Каждый ресурс ClusterLoggingConfig описывает правила сбора логов из кластера.

  • spec
    объект

    Обязательный параметр

    • spec.destinationRefs
      массив строк

      Обязательный параметр

      Массив имен ресурса ClusterLogDestination, с которыми будет работать этот источник логов.

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

    • spec.file
      объект

      Описывает правило сбора логов из файлов на узле.

      • spec.file.exclude
        массив строк

        Список шаблонов путей к файлам, которые нужно исключить при сборе логов.

        Поддерживаются wildcards.

        Примеры:

        exclude: "/var/log/nginx/error.log"
        
        exclude: "/var/log/audit.log"
        
      • spec.file.include
        массив строк

        Список шаблонов путей к файлам для сбора логов.

        Поддерживаются wildcards.

        Примеры:

        include: "/var/log/*.log"
        
        include: "/var/log/nginx/*.log"
        
      • spec.file.lineDelimiter
        строка

        Символ новой строки, который использовать при парсинге логов.

        Пример:

        lineDelimiter: "\\r\\n"
        
    • spec.kubernetesPods
      объект

      Описывает правило сбора логов из подов кластера.

      • spec.kubernetesPods.keepDeletedFilesOpenedFor
        строка

        Указывает время, в течение которого удаленные файлы будут оставаться открытыми для чтения. Vector будет сохранять метаданные подов в течение этого времени, чтобы читать логи из удаленных подов. Эта опция полезна в случаях недоступности хранилища логов или сетевого разделения. Vector будет держать файлы логов открытыми до их окончательной отправки в пункт назначения.

        Применение опции может повлиять на потребление ресурсов Vector и также быть причиной нехватки места на диске из-за удаленных файлов с логами. Используйте с осторожностью.

        Формат - строка, содержащая единицу времени в часах и минутах: 30m, 1h, 2h30m, 24h.

        Шаблон: ^([0-9]+h([0-9]+m)?|[0-9]+m)$

      • spec.kubernetesPods.labelSelector
        объект

        Задаёт фильтр по меткам пода.

        Подробнее про выражения можно узнать в документации.

        • spec.kubernetesPods.labelSelector.matchExpressions
          массив объектов

          Список выражений для меток, которые должен иметь под, чтобы подпадать под условие фильтра.

          Пример:

          matchExpressions:
          - key: tier
            operator: In
            values:
            - production
            - staging
          - key: tier
            operator: NotIn
            values:
            - production
          
          • spec.kubernetesPods.labelSelector.matchExpressions.key
            строка

            Имя метки.

          • spec.kubernetesPods.labelSelector.matchExpressions.operator
            строка

            Оператор сравнения.

            Допустимые значения: In, NotIn, Exists, DoesNotExist

          • spec.kubernetesPods.labelSelector.matchExpressions.values
            массив строк

            Значение метки.

            • Элемент массива
              строка

              Шаблон: [a-z0-9]([-a-z0-9]*[a-z0-9])?

              Длина: 1..63

        • spec.kubernetesPods.labelSelector.matchLabels
          объект

          Список меток, которые должен иметь под, чтобы подпадать под условие фильтра.

          Пример:

          matchLabels:
            foo: bar
            baz: who
          
      • spec.kubernetesPods.namespaceSelector
        объект

        Задаёт фильтр по пространствам имен.

        Фильтр может использовать какой-то один способ задания условия из трех доступных (параметры matchNames, excludeNames, labelSelector).

        • spec.kubernetesPods.namespaceSelector.excludeNames
          массив строк

          Список пространств имен, с подов которого нужно исключить сбор логов.

        • spec.kubernetesPods.namespaceSelector.labelSelector
          объект

          Фильтр по меткам пространств имен, с которых нужно собирать логи.

          Подробнее про выражения можно узнать в документации.

          • spec.kubernetesPods.namespaceSelector.labelSelector.matchExpressions
            массив объектов

            Список выражений для меток, которые должно иметь пространство имен, чтобы подпадать под условие фильтра.

            Пример:

            matchExpressions:
            - key: tier
              operator: In
              values:
              - production
              - staging
            
            • spec.kubernetesPods.namespaceSelector.labelSelector.matchExpressions.key
              строка

              Обязательный параметр

              Имя метки.

            • spec.kubernetesPods.namespaceSelector.labelSelector.matchExpressions.operator
              строка

              Обязательный параметр

              Оператор сравнения.

              Допустимые значения: In, NotIn, Exists, DoesNotExist

            • spec.kubernetesPods.namespaceSelector.labelSelector.matchExpressions.values
              массив строк

              Значение метки.

          • spec.kubernetesPods.namespaceSelector.labelSelector.matchLabels
            объект

            Список меток, которые должно иметь пространство имен, чтобы подпадать под условие фильтра.

            Пример:

            matchLabels:
              foo: bar
              baz: who
            
        • spec.kubernetesPods.namespaceSelector.matchNames
          массив строк

          Список пространств имен, с подов которого нужно собирать логи.

    • spec.labelFilter
      массив объектов

      Список правил для фильтрации логов по их меткам метаданных.

      Пример:

      labelFilter:
      - field: container
        operator: In
        values:
        - nginx
      - field: pod_labels.tier
        operator: Regex
        values:
        - prod-.+
        - stage-.+
      
      • spec.labelFilter.field
        строка

        Обязательный параметр

        Имя метки для использования в фильтре.

        Не должно быть пустым.

        Шаблон: .+

      • spec.labelFilter.operator
        строка

        Обязательный параметр

        Оператор, который можно применить для фильтрации:

        • In — ищет сроку или элемент в массиве;
        • NotIn — является инверсией оператора In;
        • Regex — пытается проверить строку в поле с использованием регулярного выражения (только логи, в которых есть поля, подпадающие под регулярное выражение, пройдут в хранилище);
        • NotRegex — является инверсией оператора Regex (в хранилище попадут логи, в которых нет поля или же оно не подпадает под регулярное выражение);
        • Exists — проверяет наличие поля и пропускает логи, только если поле есть;
        • DoesNotExist — проверяет наличие поля и пропускает логи, только если поле отсутствует.

        Допустимые значения: In, NotIn, Regex, NotRegex, Exists, DoesNotExist

      • spec.labelFilter.values
        массив

        Массив значений или регулярных выражений для соответствующих операций. Не работает для операций Exists и DoesNotExist.

        Можно использовать целые числа или строки. Поля с числами с плавающей запятой и поля логического типа будут преобразованы в строки при сравнении.

    • spec.logFilter
      массив объектов

      Список фильтров для логов, которые применяются к полям сообщения в формате JSON.

      Только логи, подпадающие под правила, будут сохранены в хранилище.

      Пример:

      logFilter:
      - field: tier
        operator: Exists
      - field: foo
        operator: NotIn
        values:
        - dev
        - 42
        - 'true'
        - '3.14'
      - field: bar
        operator: Regex
        values:
        - "^abc"
        - "^\\d.+$"
      
      • spec.logFilter.field
        строка

        Обязательный параметр

        Имя поля для фильтрации. Должно быть пустым для логов не в JSON-формате.

      • spec.logFilter.operator
        строка

        Обязательный параметр

        Оператор, который можно применить для фильтрации:

        • In — ищет сроку или элемент в массиве;
        • NotIn — является инверсией оператора In;
        • Regex — пытается проверить строку в поле с использованием регулярного выражения (только логи, в которых есть поля, подпадающие под регулярное выражение, пройдут в хранилище);
        • NotRegex — является инверсией оператора Regex (в хранилище попадут логи, в которых нет поля или же оно не подпадает под регулярное выражение);
        • Exists — проверяет наличие поля и пропускает логи, только если поле есть.
        • DoesNotExist — проверяет наличие поля и пропускает логи, только если поле отсутствует.

        Допустимые значения: In, NotIn, Regex, NotRegex, Exists, DoesNotExist

      • spec.logFilter.values
        массив

        Массив значений или регулярных выражений для соответствующих операций. Не работает для операций Exists и DoesNotExist.

        Можно использовать целые числа или строки. Поля с числами с плавающей запятой и поля логического типа будут преобразованы в строки при сравнении.

    • spec.multilineParser
      объект

      Список паттернов для определения многострочных логов.

      • spec.multilineParser.custom
        объект

        Правила парсинга многострочных логов для парсера Custom.

        • spec.multilineParser.custom.endsWhen
          объект

          Условие, при котором находится последняя строчка многострокового лога.

          • spec.multilineParser.custom.endsWhen.notRegex
            строка

            Регулярное выражение, которое считает мэтчем строки, НЕ попавшие в него.

          • spec.multilineParser.custom.endsWhen.regex
            строка

            Регулярное выражение, которое считает мэтчем строки, попавшие в него.

        • spec.multilineParser.custom.startsWhen
          объект

          Условие, при котором находится первая строчка многострокового лога.

          • spec.multilineParser.custom.startsWhen.notRegex
            строка

            Регулярное выражение, которое считает мэтчем строки, НЕ попавшие в него.

          • spec.multilineParser.custom.startsWhen.regex
            строка

            Регулярное выражение, которое считает мэтчем строки, попавшие в него.

      • spec.multilineParser.type
        строка

        Обязательный параметр

        Типы парсеров:

        • None — не парсить логи;
        • General — парсер, который пытается сливать логи, у которых в начале сообщения стоит пробел или табуляция;
        • Backslash — парсер, который парсит многострочные логи в SHELL-формате с обратным слэшем у строк одного сообщения;
        • LogWithTime — парсер, который ожидает, что любое новое сообщение начинается с временной метки;
        • MultilineJSON — простой парсер JSON-логов, который предполагает, что новое сообщение начинается с символа {;
        • Custom - парсер, который парсит многострочные логи в указанном пользователем в spec.multilineParser.custom формате.

        По умолчанию: "None"

        Допустимые значения: None, General, Backslash, LogWithTime, MultilineJSON, Custom

    • spec.type
      строка

      Обязательный параметр

      Возможные источники логов.

      KubernetesPods собирает логи с подов.

      File позволяет читать локальные файлы, доступные на узле.

      Допустимые значения: KubernetesPods, File