alert是一个单独的模块,需要我们单独的配置需要声明邮箱地址,配置是以configmap进行配置的
部署告警
cd /op/promethues
vim alert-cfg.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: alertmanager
namespace: monitor-sa
data:
alertmanager.yml: |-
global:
#设置全局配置
resolve_timeout: 1m
#定义告警项发送邮件的超时时间,默认15秒
smtp_smarthost: 'smtp.qq.com:25'
#配置邮箱地址类型
smtp_from: '你的邮箱@qq.com'
smtp_auth_username: '你的邮箱@qq.com'
smtp_auth_password: '你邮箱的序列号'
smtp_require_tls: false
route:
#设置告警的分发策略
group_by: [alertname]
#分组依据。分组的名称
group_wait: 10s
#组告警的等待时间,也就是告警产生后等待10秒,如果同组内有其他的告警。一并发出
group_interval: 10s
#上下两组发送告警的间隔时间
receiver: default-receiver
#定义谁来收告警
receivers:
- name: 'default-receiver'
email_configs:
- to: '你的邮箱@qq.com'
#设置告警邮件的收件人地址
send_resolved: true
vim prometheus-alertmanager-cfg.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: prometheus-server
namespace: monitor-sa
labels:
app: prometheus
spec:
replicas: 1
selector:
matchLabels:
app: prometheus
component: server
template:
metadata:
labels:
app: prometheus
component: server
annotations:
prometheus.io/scrape: 'false'
spec:
serviceAccountName: monitor
initContainers:
- name: init-chmod
image: busybox:latest
command: ['sh','-c','chmod -R 777 /prometheus;chmod -R 777 /etc']
volumeMounts:
- mountPath: /prometheus
name: prometheus-storage-volume
- mountPath: /etc/localtime
name: timezone
containers:
- name: prometheus
image: prom/prometheus:v2.45.0
command:
- prometheus
- --config.file=/etc/prometheus/prometheus.yml
- --storage.tsdb.path=/prometheus
- --storage.tsdb.retention=720h
- --web.enable-lifecycle
ports:
- containerPort: 9090
volumeMounts:
- name: prometheus-config
mountPath: /etc/prometheus/
- mountPath: /prometheus/
name: prometheus-storage-volume
- name: timezone
mountPath: /etc/localtime
- name: k8s-certs
mountPath: /var/run/secrets/kubernetes.io/k8s-certs/etcd/
- name: alertmanager
image: prom/alertmanager:v0.20.0
args:
- "--config.file=/etc/alertmanager/alertmanager.yml"
- "--log.level=debug"
ports:
- containerPort: 9093
protocol: TCP
name: alertmanager
volumeMounts:
- name: alertmanager-config
mountPath: /etc/alertmanager
- name: alertmanager-storage
mountPath: /alertmanager
- name: localtime
mountPath: /etc/localtime
volumes:
- name: prometheus-config
configMap:
name: prometheus-config
defaultMode: 0777
- name: prometheus-storage-volume
hostPath:
path: /data
type: Directory
- name: k8s-certs
secret:
secretName: etcd-certs
- name: timezone
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
- name: alertmanager-config
configMap:
name: alertmanager
- name: alertmanager-storage
hostPath:
path: /data/alertmanager
type: DirectoryOrCreate
- name: localtime
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
kubectl edit configmaps -n kube-system kube-proxy
kubectl get pods -n kube-system | grep kube-proxy |awk '{print $1}' | xargs kubectl delete pods -n kube-system
kubectl get pod -n kube-system
页面访问测试
创建告警的svc
vim alert-svc.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: prometheus
name: alertmanage
namespace: monitor-sa
spec:
ports:
- name: alertmanager
nodePort: 30066
port: 9093
targetPort: 9093
selector:
app: prometheus
type: NodePort
创建一个pod进行压力测试