Облачная платформаВсе платформы

Использование ICAgent для сбора логов контейнеров

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

CCE позволяет использовать ICAgent для сбора логов контейнеров рабочих нагрузок. Когда создаётся узел, ICAgent (DaemonSet с именем icagent в kube-system пространства имён кластера) устанавливается по умолчанию. Вы можете использовать ICAgent для сбора логов и отправки их в места хранения, описанные в следующей таблице.

Местоположение хранилища логов

Содержание для сбора

Метод конфигурации

AOM (Этот режим не рекомендуется, так как он более не развивается.)

- Логи stdout контейнера

- Логи файлов контейнера

LTS

- Логи stdout контейнера

- Логи файлов контейнера

- Логи узла

- События Kubernetes

Создайте политику сбора в LTS.

Ограничения

ICAgent собирает только текстовые файлы логов в форматах .log, .trace и .out.

Использование консоли

  1. Когда создаётся рабочая нагрузка, выберите Logging в Информация о контейнере.
  2. Нажмите для добавления политики логов.

    Ниже используется Nginx в качестве примера. Политики логов зависят от рабочих нагрузок.

  3. Установите Тип тома в hostPath или emptyDir.

    Таблица 1 Параметры настройки политики логов

    Параметр

    Описание

    Тип тома

    • hostPath: Путь на хосте монтируется в указанный путь контейнера (точка монтирования). После монтирования вы можете просматривать логи контейнера, сохранённые там.
    • emptyDir: Временный путь узла монтируется в указанный путь (точка монтирования). После монтирования любые логи во временном пути, не переданные в AOM сборщиком, будут потеряны при удалении pod.

    hostPath

    Введите путь на хосте, например, /var/paas/sys/log/nginx.

    Точка монтирования

    Путь контейнера (например, /tmp) в который будут монтироваться ресурсы хранилища.

    ПРИМЕЧАНИЕ:
    • Не монтируйте том в системный каталог, например / или /var/run, иначе возникнет исключение. Монтируйте том в пустой каталог. Если каталог не пуст, убедитесь, что в нём нет файлов, влияющих на запуск контейнера. Если такие файлы есть, они будут заменены, что приведёт к сбою запуска контейнера или созданию рабочей нагрузки.
    • Если контейнер монтируется в каталог с высоким риском, используйте учётную запись с минимальными правами для запуска контейнера. В противном случае файлы с высоким риском на хосте могут быть повреждены.
    • AOM собирает только первые 20 логов, изменённых недавно. По умолчанию собираются логи из 2 уровней поддиректорий.
    • AOM собирает только текстовые файлы логов в форматах .log, .trace и .out в точках монтирования.
    • Подробности о том, как установить разрешения для точек монтирования в контейнере, см.Настройка контекста безопасности для Pod или Контейнера.

    Extended Host Path

    Этот параметр обязателен только если Тип тома установлен в hostPath.

    Расширенные пути хоста содержат идентификаторы pod или имена контейнеров для различения разных контейнеров, в которые монтируется путь хоста.

    В оригинальный каталог тома/подкаталог добавляется каталог 3‑го уровня. Вы можете легко получить файлы, выведенные одним Pod.

    • Нет: Расширенный путь не настроен.
    • PodUID: Идентификатор pod.
    • PodName: имя pod.
    • PodUID/ContainerName: Идентификатор pod или имя контейнера.
    • PodName/ContainerName: имя pod или контейнера.

    Путь сбора

    Путь сбора ограничивает область сбора до указанных логов.

    • Если путь сбора не указан, файлы логов в форматах .log, .trace и .out будут собраны из текущего пути.
    • Ввод ** указывает, что все файлы логов в форматах .log, .trace и .out будут рекурсивно собраны из указанного пути и всех поддиректорий глубиной пять уровней.
    • Ввод * указывает на нечеткое соответствие.

    Пример: Путь сбора /tmp/**/test*.log указывает, что все .log файлы с префиксом test будут собраны из /tmp и поддиректорий глубиной пять уровней.

    ВНИМАНИЕ:

    Убедитесь, что версия ICAgent 5.12.22 или новее.

    Log Dump

    Log dump — это ротация файлов логов на локальном хосте.

    • Включить: AOM сканирует файлы логов каждую минуту. Когда файл лога превышает 50 МБ, он немедленно выгружается. Новый .zip файл создаётся в каталоге, где находится файл лога. Для файла лога AOM хранит только последние 20 .zip файлов. Когда количество .zip файлов превышает 20, более ранние .zip файлы удаляются.
    • : AOM не выгружает файлы логов.
    Отключить
    • AOM вращает файлы логов с помощью copytruncate. Перед включением выгрузки логов убедитесь, что файлы логов записываются в режиме добавления. Иначе могут возникнуть пробелы в файлах.
    • В настоящее время основные компоненты логов, такие как Log4j и Logback, поддерживают ротацию файлов логов. Если вы уже настроили ротацию файлов логов, пропустите конфигурацию. В противном случае могут возникнуть конфликты.
    • Рекомендуется настроить ротацию файлов логов для ваших сервисов, чтобы гибко контролировать размер и количество архивированных файлов.

  4. Нажмите OK.

Пример YAML

Вы можете установить путь хранения логов контейнера, определив файл YAML.

Как показано ниже, том emptyDir монтируется в /var/log/nginx. Таким образом, ICAgent собирает логи в /var/log/nginx. policy — это пользовательское поле CCE, позволяющее ICAgent идентифицировать и собирать логи.

apiVersion: apps/v1
kind: Deployment
metadata:
name: testlog
namespace: default
spec:
selector:
matchLabels:
app: testlog
template:
replicas: 1
metadata:
labels:
app: testlog
spec:
containers:
- image: 'nginx:alpine'
name: container-0
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 250m
memory: 512Mi
volumeMounts:
- name: vol-log
mountPath: /var/log/nginx
policy:
logs:
rotate: ''
volumes:
- emptyDir: {}
name: vol-log
imagePullSecrets:
- name: default-secret

Ниже показано, как использовать том hostPath. По сравнению с emptyDir, тип volumes изменён на hostPath, и путь на хосте необходимо настроить для этого тома hostPath. В следующем примере /tmp/log на хосте монтируется в /var/log/nginx. Таким образом, ICAgent может собирать логи в /var/log/nginx, а логи по‑прежнему хранятся в /tmp/log.

apiVersion: apps/v1
kind: Deployment
metadata:
name: testlog
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: testlog
template:
metadata:
labels:
app: testlog
spec:
containers:
- image: 'nginx:alpine'
name: container-0
resources:
requests:
cpu: 250m
memory: 512Mi
limits:
cpu: 250m
memory: 512Mi
volumeMounts:
- name: vol-log
mountPath: /var/log/nginx
readOnly: false
extendPathMode: PodUID
policy:
logs:
rotate: Hourly
annotations:
pathPattern: '**'
volumes:
- hostPath:
path: /tmp/log
name: vol-log
imagePullSecrets:
- name: default-secret
Таблица 2 Описание параметра

Параметр

Описание

Замечания

extendPathMode

Extended host path

Расширенные пути хоста содержат идентификаторы pod или имена контейнеров для различения разных контейнеров, в которые монтируется путь хоста.

В оригинальный каталог тома/подкаталог добавляется каталог 3‑го уровня. Вы можете легко получить файлы, выведенные одним Pod.

  • Нет: Расширенный путь не настроен.
  • PodUID: Идентификатор pod.
  • PodName: имя pod.
  • PodUID/ContainerName: Идентификатор pod или имя контейнера.
  • PodName/ContainerName: имя pod или контейнера.

policy.logs.rotate

Log dump

Log dump — это ротация файлов логов на локальном хосте.

  • Включить: AOM сканирует файлы логов каждую минуту. Когда файл лога превышает 50 МБ, он сразу выгружается. Новый .zip файл создаётся в каталоге, где находится файл лога. Для файла лога AOM хранит только последние 20 .zip файлов. Когда количество .zip файлов превышает 20, более ранние .zip файлы удаляются. После завершения выгрузки файл лога в AOM будет очищен.
  • Отключить: AOM не выгружает файлы логов.
ПРИМЕЧАНИЕ:
  • AOM вращает файлы логов с помощью copytruncate. Перед включением выгрузки логов убедитесь, что файлы логов записываются в режиме добавления. Иначе могут возникнуть пробелы в файлах.
  • В настоящее время основные компоненты логов, такие как Log4j и Logback, поддерживают ротацию файлов логов. Если вы уже настроили ротацию файлов логов, пропустите конфигурацию. В противном случае могут возникнуть конфликты.
  • Рекомендуется настроить ротацию файлов логов для ваших сервисов, чтобы гибко контролировать размер и количество архивированных файлов.

policy.logs.annotations.pathPattern

Путь сбора

Путь сбора ограничивает область сбора до указанных логов.

  • Если путь сбора не указан, файлы логов в форматах .log, .trace и .out будут собраны из текущего пути.
  • Ввод ** указывает, что все файлы логов в форматах .log, .trace и .out будут рекурсивно собраны из указанного пути и всех поддиректорий глубиной пять уровней.
  • Ввод * указывает на нечеткое соответствие.

Пример: Путь сбора /tmp/**/test*.log указывает, что все .log файлы с префиксом test будут собраны из /tmp и поддиректорий глубиной пять уровней.

ВНИМАНИЕ:

Убедитесь, что версия ICAgent 5.12.22 или новее.

Просмотр логов

После настройки пути сбора логов и создания рабочей нагрузки ICAgent собирает файлы логов из настроенного пути. Сбор занимает около 1 минуты.

После завершения сбора логов перейдите на страницу деталей рабочей нагрузки и нажмите Logs в правом верхнем углу, чтобы просмотреть логи.

Вы также можете просматривать логи в консоли AOM.

Вы также можете выполнить kubectl logs команду, чтобы просмотреть stdout контейнера.

  • Просмотр логов указанного pod.
    kubectl logs <pod_name> -n <namespace>
  • Просмотр логов указанного pod в режиме реального времени.
    kubectl logs -f <pod_name> -n <namespace>
  • Просмотр логов указанного контейнера в указанном pod.
    kubectl logs <pod_name> -c <container_name> -n <namespace>
  • Просмотр логов указанного контейнера в указанном pod в режиме реального времени.
    kubectl logs -f <pod_name> -c <container_name> -n <namespace>