Advanced
Тема интерфейса

Сбор журналов контейнеров с использованием ICAgent

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

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

Caution

AOM 1.0 будет отключён. Не рекомендуется использовать ICAgent для сбора журналов контейнеров и взаимодействия с AOM 1.0. Рекомендуется использовать дополнение Cloud Native Log Collection (Сбор журналов контейнеров с помощью дополнения Cloud Native Log Collection) для сбора журналов контейнеров и взаимодействия с LTS.

Ограничения

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

Использование ICAgent для сбора журналов

  1. Когда создаётся рабочая нагрузка, задайте журналирование для контейнера.
  2. Щёлкните чтобы добавить политику журналирования.

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

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

    Таблица 1 Настройка политик журналирования

    Параметр

    Описание

    Тип тома

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

    hostPath

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

    Путь монтирования

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

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

    Расширенный путь хоста

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

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

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

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

    Путь сбора

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

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

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

    ВНИМАНИЕ:

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

    Лог Дамп

    Лог дамп относится к ротации файлов журналов на локальном хосте.

    • Включено: 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. Эта политика поле настраивается 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 тип томов изменяется на 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

Расширенный путь хоста

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

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

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

policy.logs.rotate

Лог дамп

Лог дамп относится к ротации файлов журналов на локальном хосте.

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

policy.logs.annotations.pathPattern

Путь сбора

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

  • Если путь сбора не указан, файлы журналов в .log, .trace, и .out форматы будут собраны из указанного пути.
  • /Path/**/ указывает, что все файлы журналов в .log, .trace, и .out форматы будут рекурсивно собраны из указанного пути и всех поддиректорий на глубине 5 уровней.
  • * в именах лог‑файлов указывает на нечёткое совпадение.

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

CAUTION:

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

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

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

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

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

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

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