задний фон
В настоящее время мониторинг k8s можно разделить на: мониторинг ресурсов, мониторинг производительности, безопасность и работоспособность и т. д. Однако в K8s для представления состояния объекта ресурса и перехода состояний ресурсов некоторых столбцов требуется мониторинг событий. , Alibaba имеет события K8s с открытым исходным кодом.Проект мониторинга kube-eventer, который делит события на два типа, одно из которых является предупреждением, что означает, что переход состояния, который генерирует это событие, генерируется между неожиданными состояниями, а другой — нормальное событие, которое означает ожидаемое состояние, которое согласуется с текущим состоянием.
Вы можете собирать события ресурсных объектов, таких как POD / Node / Kublet, а также события пользовательских ресурсов объектов и отправляют их в хорошо настроенный приемник для обработки агрегирования. Диаграмма архитектуры показана ниже.
Две установки и развертывания
Используя проект Alibaba по мониторингу событий k8s с открытым исходным кодом, вы можете собирать журналы событий k8s для настройки уровней сигналов тревоги.
2.1 Конфигурация робота DingTalk
В настоящее время для новых пользовательских роботов требуется настройка безопасности, настройка тегов, а затем определение в Label of Sink.
вебхук для ведения записей
https://oapi.dingtalk.com/robot/send?access_token=e1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx8fe
2.2 Развертывание ресурсов
apiVersion: apps/v1beta2
kind: Deployment
metadata:
labels:
name: kube-eventer
name: kube-eventer
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
app: kube-eventer
template:
metadata:
labels:
app: kube-eventer
spec:
dnsPolicy: ClusterFirstWithHostNet
serviceAccount: kube-eventer
containers:
- image: registry.aliyuncs.com/acs/kube-eventer-amd64:v1.1.0-63e7f98-aliyun
name: kube-eventer
command:
- "/kube-eventer"
- "--source=kubernetes:https://kubernetes.default"
## .e.g,dingtalk sink demo
- --sink=dingtalk:https://oapi.dingtalk.com/robot/send?access_token=exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx28fe&label=anchnet-kubesphere&level=Warning&msg_type=markdown
env:
# If TZ is assigned, set the TZ value as the time zone
- name: TZ
value: America/New_York
volumeMounts:
- name: localtime
mountPath: /etc/localtime
readOnly: true
- name: zoneinfo
mountPath: /usr/share/zoneinfo
readOnly: true
resources:
requests:
cpu: 100m
memory: 100Mi
limits:
cpu: 500m
memory: 250Mi
volumes:
- name: localtime
hostPath:
path: /etc/localtime
- name: zoneinfo
hostPath:
path: /usr/share/zoneinfo
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: kube-eventer
rules:
- apiGroups:
- ""
resources:
- events
verbs:
- get
- list
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
annotations:
name: kube-eventer
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kube-eventer
subjects:
- kind: ServiceAccount
name: kube-eventer
namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: kube-eventer
namespace: kube-system
Три сигнализация
3.1 Проверка доступа к DingTalk
--sink=dingtalk:https://oapi.dingtalk.com/robot/send?access_token=exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx28fe&label=anchnet-kubesphere&level=Warning&msg_type=markdown
3.2 Enterprise Wechat Access Test
--sink=wechat:?corp_id=wwxxxxxxxxxx1a&corp_secret=gxxxxxxxxxxxxxxxxxxxxxxxxxxx4U&agent_id=10xxxxxx7&to_user=&level=Warning&label=K8S-Alert-Prod&msg_type=markdown