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

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

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

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

Место хранения журналов

Собираемое содержимое

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

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

- Журналы stdout контейнера

- Журналы файлов контейнера

  • Журналы файлов контейнера: создайте политику сбора в рабочей нагрузке. Подробности см. в Using ICAgent to Collect Container Logs and Report Them to AOM.
  • Журналы stdout контейнера: включите или отключите Send stdout Logs to AOM 1.0 в Monitoring. Рекомендуется отключить его.

LTS

- Журналы stdout контейнера

- Журналы файлов контейнера

- Журналы узла

- События Kubernetes

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

Ограничения

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

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

  1. When creating a workload, choose Logging in Container Information.
  2. Нажмите , чтобы добавить политику журнала.

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

  3. Set Volume Type to hostPath or emptyDir.

    Table 1 Параметры настройки политики журнала

    Параметр

    Описание

    Volume Type

    • hostPath: A host path is mounted to the specified container path (mount path). After it is mounted, you can view the container logs that have been saved there.
    • emptyDir: A temporary path of the node is mounted to the specified path (mount path). After it is mounted, any logs in the temporary path that are not reported to AOM by the collector will be lost if the pod is deleted.

    hostPath

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

    Mount Path

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

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

    Extended Host Path

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

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

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

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

    Collection Path

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

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

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

    ВНИМАНИЕ:

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

    Дамп журнала

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

    • Enable: AOM сканирует файлы журналов каждую минуту. Когда размер файла журнала превышает 50 МБ, он сразу же дампится. Новый файл .zip создаётся в каталоге, где находится файл журнала. Для файла журнала AOM хранит только последние 20 файлов .zip. Когда количество файлов .zip превышает 20, более ранние файлы .zip будут удалены.
    • Disable: AOM не дампит файлы журналов.
    ПРИМЕЧАНИЕ:
    • AOM вращает файлы журналов с помощью copytruncate. Перед включением выгрузки журналов убедитесь, что файлы журналов записываются в режиме append. В противном случае могут возникнуть пробелы в файлах.
    • В настоящее время основные компоненты журналирования, такие как 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
Table 2 Описание параметра

Параметр

Описание

Примечания

extendPathMode

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

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

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

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

policy.logs.rotate

Log dump

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

  • Enable: AOM сканирует файлы журналов каждую минуту. Когда размер файла журнала превышает 50 МБ, он сразу же сбрасывается. В каталоге, где находится файл журнала, создаётся новый файл .zip. Для файла журнала AOM хранит только последние 20 файлов .zip. Когда количество файлов .zip превышает 20, более ранние файлы .zip будут удалены. После завершения сброса файл журнала в AOM будет очищен.
  • Disable: 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>
  • Просмотрите логи указанного container в указанном pod.
    kubectl logs <pod_name> -c <container_name> -n <namespace>
  • Просмотрите логи указанного container в указанном pod в реальном времени.
    kubectl logs -f <pod_name> -c <container_name> -n <namespace>
Использование ICAgent для сбора логов контейнеров — документация Cloud Container Engine руководство пользователя облако Cloud.ru