В этой статье в основном рассказывается, как создать платформу анализа журналов Kubernetes Ingress на основе службы журналов, а также приводятся простые практические эксперименты, которые помогут вам быстро понять связанные функции службы журналов.
Разверните схему журнала Ingress
- АвторизоватьсяКонсоль управления службами контейнеров.
- Сохраните приведенную выше конфигурацию CRD в качестве шаблона оркестровки. Документацию по шаблону макета см.Создание шаблона оркестровки.
- Создайте приложение на основе этого шаблона и выберите значение по умолчанию для вашего кластера.Пространства имен.
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
- АвторизоватьсяКонсоль службы контейнеров.
- Войдите на страницу маршрутизации, нажмите [Обзор входящего трафика], если вы перейдете на страницу обзора входящего трафика, это означает, что схема журнала входящего трафика была успешно создана.
Разверните сценарий журнала входа
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'
- АвторизоватьсяКонсоль службы контейнеров, скопируйте идентификатор кластера из списка кластеров и сохраните его в блокноте.
- Замените {cluster-id} в приведенном выше шаблоне конфигурации вашим фактическим идентификатором кластера.
- Создайте приложение без сохранения состояния, используя приведенный выше шаблон конфигурации.
Просмотр подробного отчета Ingress
- Авторизоватьсяконсоль службы журнала.
- Нажмите на левой панели навигацииУправление проектом, выберите проект журнала, установленный при создании кластера, и щелкните имя, чтобы перейти на страницу проекта журнала (имя проекта, созданного по умолчанию, —k8s-log-{cluster-id}).
- На странице сведений о проекте страница библиотеки журналов отображается по умолчанию. имя этоnginx-ingressВ хранилище журналов (logstore) хранятся все журналы доступа Ingress. Нажмите на левой панели навигациипанель приборовВойдите в список панели мониторинга, чтобы просмотреть все аналитические отчеты Ingress.
установить будильник
- Откройте Ingress Monitoring Center и нажмите [Создать тревогу] в строке меню в правом верхнем углу диаграммы [Показатель успешных запросов].
- Введите имя сигнала тревоги во всплывающем окне сигнала тревоги и выберите интервал запроса и интервал выполнения.
- Условие триггера установлено на:
total < 100
, то есть тревога срабатывает, если она не 100% (фактическая установка может быть меньше) - Нажмите кнопку "Далее]
- Выберите [DingTalk Robot] в [Тип уведомления] и введите адрес WebHook робота DingTalk.o API.Отправьте его прочь.com/robot/send?…(Адрес WebHook см.пользовательский роботget), чтобы завершить настройку будильника.
Подпишитесь на отчеты по времени
Службы журнала В дополнение к уведомлению о тревоге, вы также можете также поддерживать функцию подписки отчета, вы можете использовать эту функцию, чтобы регулярно рендурировать отчет на картинку и отправлять его через почту, скобы и т. Д.
В следующем примере является обзор входа настроить функцию подписки, и отчет отправляется на указанную группу скоперов в минуту:
- ВойтиОбзор входящего трафикаотчет, нажмите в правом верхнем углу отчетаподпискакнопка.
- На всплывающей странице конфигурации выберите CronJob для частоты и введите
0/5 * * * *
(Отправлять отчет каждые 5 минут, фактическая сцена может быть установлена на фиксированное время каждый день), откройтеДобавить водный знакопции. - Выберите тип уведомленияРобот DingTalk, введите адрес WebHook робота DingTalk
https://oapi.dingtalk.com/robot/send?access_token=a2c6d68cdb67dbe6ad38361b91f24bf669a551ccb6c4ceef9d6a0f8ced044676
(Адрес WebHook см.пользовательский роботПолучить), чтобы завершить подписку.
Расширенные возможности
Пользовательский анализ журналов Ingress
- Авторизоватьсяконсоль службы журнала.
- Нажмите на левой панели навигацииУправление проектом, выберите проект журнала, установленный при создании кластера, и щелкните имя, чтобы перейти на страницу проекта журнала (имя проекта, созданного по умолчанию, —k8s-log-{cluster-id}).
- На странице сведений о проекте страница библиотеки журналов отображается по умолчанию. Щелкните имяnginx-ingressСсылка [Запрос] в правой части хранилища журналов (logstore) ведет на страницу запроса.
Служба журналов поддерживает расширенные функции запросов и анализа.Запрос журнала и анализ. Поддержка настраиваемого запроса и анализа на странице запроса, например:
- Запросы запросов с кодом состояния больше 200:
status > 200
- Запросы запросов, хост (доменное имя) которых является inner.njkj.com и задержка ответа которых превышает 30 мс:
host : inner.njkj.com and request_time > 0.03
- Топ-10 сервисов с кодом состояния, отличным от 200:
not status : 200 | SELECT proxy_upstream_name, count(1) as total group by proxy_upstream_name order by total desc limit 10
- Статистика по УФ-распределению каждой провинции:
* | 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
- Статистика по средней задержке доступа хоста (доменного имени) 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], и вы перейдете на соответствующую страницу запроса.
Запрашивать операции развертывания из журналов аудита
- Авторизоватьсяконсоль службы журнала.
- Нажмите на левой панели навигацииУправление проектом, выберите проект журнала, установленный при создании кластера, и щелкните имя, чтобы перейти на страницу проекта журнала (имя проекта, созданного по умолчанию, —k8s-log-{cluster-id}).
- Перейти к левой панели навигациипанель приборовlist и выберите [Подробный список операций с ресурсами Kubernetes] для входа.
- Введите Deployments в поле фильтра [Resource Type] в верхнем левом углу, чтобы запросить ранее развернутые Deployments.
- Вы можете щелкнуть идентификатор события в [Списке создания ресурсов] в левом нижнем углу, чтобы запросить подробную информацию о событии.
Доступ к другим журналам (работа после собрания)
Вы можете использовать службу журналов Logtail для доступа к журналам бизнес-приложений для реализации пользовательских функций запросов, анализа, визуализации и оповещения.Вы можете получить доступ к журналам любым из следующих способов:
1. Создайте конфигурацию коллекции на основе консоли службы журналов:
2. Создайте конфигурацию сбора данных, используя переменные среды:
- Ссылаться наКоллекция журналов конфигурации Kubernetes-CRD.
3. Используйте метод CRD для создания конфигурации коллекции:
Автор этой статьи: Юань И
Эта статья является оригинальным контентом сообщества Yunqi и не может быть воспроизведена без разрешения.