Начало работы с Kubernetes Ingress Log Analysis

Kubernetes

В этой статье в основном рассказывается, как создать платформу анализа журналов Kubernetes Ingress на основе службы журналов, а также приводятся простые практические эксперименты, которые помогут вам быстро понять связанные функции службы журналов.

Разверните схему журнала Ingress

  1. АвторизоватьсяКонсоль управления службами контейнеров.
  2. Сохраните приведенную выше конфигурацию CRD в качестве шаблона оркестровки. Документацию по шаблону макета см.Создание шаблона оркестровки.
  3. Создайте приложение на основе этого шаблона и выберите значение по умолчанию для вашего кластера.Пространства имен.
apiVersion: log.alibabacloud.com/v1alpha1
kind: AliyunLogConfig
metadata:
  # your config name, must be unique in you k8s cluster
  name: k8s-nginx-ingress
spec:
  # logstore name to upload log
  logstore: nginx-ingress
  # product code, only for k8s nginx ingress
  productCode: k8s-nginx-ingress
  # logtail config detail
  logtailConfig:
    inputType: plugin
    # logtail config name, should be same with [metadata.name]
    configName: k8s-nginx-ingress
    inputDetail:
      plugin:
        inputs:
        - type: service_docker_stdout
          detail:
            IncludeLabel:
              io.kubernetes.container.name: nginx-ingress-controller
            Stderr: false
            Stdout: true
        processors:
        - type: processor_regex
          detail:
            KeepSource: false
            Keys:
            - client_ip
            - x_forward_for
            - remote_user
            - time
            - method
            - url
            - version
            - status
            - body_bytes_sent
            - http_referer
            - http_user_agent
            - request_length
            - request_time
            - proxy_upstream_name
            - upstream_addr
            - upstream_response_length
            - upstream_response_time
            - upstream_status
            - req_id
            - host
            NoKeyError: true
            NoMatchError: true
            Regex: ^(\S+)\s-\s\[([^]]+)]\s-\s(\S+)\s\[(\S+)\s\S+\s"(\w+)\s(\S+)\s([^"]+)"\s(\d+)\s(\d+)\s"([^"]*)"\s"([^"]*)"\s(\S+)\s(\S+)+\s\[([^]]*)]\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s(\S+)\s*(\S*).*
            SourceKey: content




Проверьте схему журнала Ingress

  1. АвторизоватьсяКонсоль службы контейнеров.
  2. Войдите на страницу маршрутизации, нажмите [Обзор входящего трафика], если вы перейдете на страницу обзора входящего трафика, это означает, что схема журнала входящего трафика была успешно создана.




Разверните сценарий журнала входа

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mock-ingress
  namespace: default
  labels:
    app: mock-ingress
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mock-ingress
  template:
    metadata:
      labels:
        app: mock-ingress
    spec:
      containers:
      - name: mock-ingress
        image: registry.cn-shanghai.aliyuncs.com/log-service/mock-ingress:latest
        command: ["/data/replay_log"]
        args:
          - '-ecs=true'
          - '-project=k8s-log-{cluster-id}'
          - '-endpoint=cn-shanghai.log.aliyuncs.com'
          - '-source=/data/data.txt'
          - '-dist=/data/distribute.csv'
  1. АвторизоватьсяКонсоль службы контейнеров, скопируйте идентификатор кластера из списка кластеров и сохраните его в блокноте.
  2. Замените {cluster-id} в приведенном выше шаблоне конфигурации вашим фактическим идентификатором кластера.
  3. Создайте приложение без сохранения состояния, используя приведенный выше шаблон конфигурации.


Просмотр подробного отчета Ingress

  1. Авторизоватьсяконсоль службы журнала.
  2. Нажмите на левой панели навигацииУправление проектом, выберите проект журнала, установленный при создании кластера, и щелкните имя, чтобы перейти на страницу проекта журнала (имя проекта, созданного по умолчанию, —k8s-log-{cluster-id}).
  3. На странице сведений о проекте страница библиотеки журналов отображается по умолчанию. имя этоnginx-ingressВ хранилище журналов (logstore) хранятся все журналы доступа Ingress. Нажмите на левой панели навигациипанель приборовВойдите в список панели мониторинга, чтобы просмотреть все аналитические отчеты Ingress.

установить будильник


  1. Откройте Ingress Monitoring Center и нажмите [Создать тревогу] в строке меню в правом верхнем углу диаграммы [Показатель успешных запросов].
  2. Введите имя сигнала тревоги во всплывающем окне сигнала тревоги и выберите интервал запроса и интервал выполнения.
  3. Условие триггера установлено на:total < 100, то есть тревога срабатывает, если она не 100% (фактическая установка может быть меньше)
  4. Нажмите кнопку "Далее]
  5. Выберите [DingTalk Robot] в [Тип уведомления] и введите адрес WebHook робота DingTalk.o API.Отправьте его прочь.com/robot/send?…(Адрес WebHook см.пользовательский роботget), чтобы завершить настройку будильника.

Подпишитесь на отчеты по времени

Службы журнала В дополнение к уведомлению о тревоге, вы также можете также поддерживать функцию подписки отчета, вы можете использовать эту функцию, чтобы регулярно рендурировать отчет на картинку и отправлять его через почту, скобы и т. Д.
В следующем примере является обзор входа настроить функцию подписки, и отчет отправляется на указанную группу скоперов в минуту:

  1. ВойтиОбзор входящего трафикаотчет, нажмите в правом верхнем углу отчетаподпискакнопка.
  2. На всплывающей странице конфигурации выберите CronJob для частоты и введите0/5 * * * *(Отправлять отчет каждые 5 минут, фактическая сцена может быть установлена ​​​​на фиксированное время каждый день), откройтеДобавить водный знакопции.
  3. Выберите тип уведомленияРобот DingTalk, введите адрес WebHook робота DingTalkhttps://oapi.dingtalk.com/robot/send?access_token=a2c6d68cdb67dbe6ad38361b91f24bf669a551ccb6c4ceef9d6a0f8ced044676(Адрес WebHook см.пользовательский роботПолучить), чтобы завершить подписку.

Расширенные возможности

Пользовательский анализ журналов Ingress

  1. Авторизоватьсяконсоль службы журнала.
  2. Нажмите на левой панели навигацииУправление проектом, выберите проект журнала, установленный при создании кластера, и щелкните имя, чтобы перейти на страницу проекта журнала (имя проекта, созданного по умолчанию, —k8s-log-{cluster-id}).
  3. На странице сведений о проекте страница библиотеки журналов отображается по умолчанию. Щелкните имяnginx-ingressСсылка [Запрос] в правой части хранилища журналов (logstore) ведет на страницу запроса.

Служба журналов поддерживает расширенные функции запросов и анализа.Запрос журнала и анализ. Поддержка настраиваемого запроса и анализа на странице запроса, например:

  1. Запросы запросов с кодом состояния больше 200:status > 200
  2. Запросы запросов, хост (доменное имя) которых является inner.njkj.com и задержка ответа которых превышает 30 мс:host : inner.njkj.com and request_time > 0.03
  3. Топ-10 сервисов с кодом состояния, отличным от 200:not status : 200 | SELECT proxy_upstream_name, count(1) as total group by proxy_upstream_name order by total desc limit 10
  4. Статистика по УФ-распределению каждой провинции:* | select ip_to_province(x_forward_for) as province, approx_distinct(x_forward_for) as total group by province order by total desc limit 1000
  5. Статистика по средней задержке доступа хоста (доменного имени) inner.njkj.com за последние 1 день и сравнение со вчерашним и тем же днем ​​прошлой недели:host : inner.njkj.com | select d[1] as "Today", d[2] as "Yesterday", d[1] - d[2] / d[2] as "Yesterday Delta", d[3] as "Last Week", d[1] - d[3] / d[3] as "Last Week Delta" from( select compare(val, 86400, 604800 ) as d from(select avg(request_time) as val from log ) )

Отчеты о входе реализованы на основе функции анализа службы журнала.Вы можете найти SQL, реализованный соответствующей функцией, в отчете о входе по умолчанию, предоставляемом системой: Нажмите пункт меню в правом верхнем углу соответствующего графика, выберите [ View Analysis Details], и вы перейдете на соответствующую страницу запроса.





Запрашивать операции развертывания из журналов аудита

  1. Авторизоватьсяконсоль службы журнала.
  2. Нажмите на левой панели навигацииУправление проектом, выберите проект журнала, установленный при создании кластера, и щелкните имя, чтобы перейти на страницу проекта журнала (имя проекта, созданного по умолчанию, —k8s-log-{cluster-id}).
  3. Перейти к левой панели навигациипанель приборовlist и выберите [Подробный список операций с ресурсами Kubernetes] для входа.
  4. Введите Deployments в поле фильтра [Resource Type] в верхнем левом углу, чтобы запросить ранее развернутые Deployments.
  5. Вы можете щелкнуть идентификатор события в [Списке создания ресурсов] в левом нижнем углу, чтобы запросить подробную информацию о событии.






Доступ к другим журналам (работа после собрания)

Вы можете использовать службу журналов Logtail для доступа к журналам бизнес-приложений для реализации пользовательских функций запросов, анализа, визуализации и оповещения.Вы можете получить доступ к журналам любым из следующих способов:

1. Создайте конфигурацию коллекции на основе консоли службы журналов:

2. Создайте конфигурацию сбора данных, используя переменные среды:

3. Используйте метод CRD для создания конфигурации коллекции:


Автор этой статьи: Юань И

Оригинальная ссылка

Эта статья является оригинальным контентом сообщества Yunqi и не может быть воспроизведена без разрешения.