Облачная платформаAdvanced

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

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

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

Caution

AOM 1.0 будет отключён, поэтому не рекомендуется использовать ICAgent для сбора логов контейнеров и отправки их в AOM 1.0. Вместо этого используйте дополнение Cloud Native Log Collection. Для получения подробностей смотрите Сбор логов контейнеров с помощью дополнения Cloud Native Log Collection. Рекомендуется отключить Отправить stdout логи в AOM 1.0 в Мониторинг вкладка (Мониторинг).

Ограничения

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

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

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

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

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

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

    Параметр

    Описание

    Тип тома

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

    hostPath

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

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

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

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

    Extended Хост Path

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

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

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

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

    Путь коллекции

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

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

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

    ВНИМАНИЕ:

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

    Лог Дамп

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

    • Включить: AOM сканирует файлы журнала каждую минуту. Когда файл журнала превышает 50 MB, он немедленно дампится. Новый файл .zip создаётся в каталоге, где находится файл журнала. Для файла журнала AOM хранит только последние 20 файлов .zip. Когда количество файлов .zip превышает 20, более ранние файлы .zip будут удалены.
    • Отключить: AOM не дампит файлы журнала.
    NOTE:
    • 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

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

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

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

  • Нет: Нет настроенного расширенного пути.
  • PodUID: ID pod.
  • PodName: имя pod.
  • 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 будут собраны из текущего пути.
  • Ввод ** указывает, что все лог‑файлы в форматах .log, .trace и .out будут рекурсивно собраны из указанного пути и всех подкаталогов глубиной до пяти уровней.
  • Ввод * указывает на нечеткое совпадение.

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

CAUTION:

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

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

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

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

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