k8s安装elastalert进行ElasticSearch邮件告警
在使用k8s部署前,建议先使用docker方式部署测试成功后,再使用这种方式部署,详情请见:https://www.cnblogs.com/zhanghuotu/p/13466491.html
一、环境介绍
k8s环境:1.17
ELK环境:7.7.1
elastalert版本:3.0.0-beta.1
二、准备工作
1、创建挂载配置文件的pv和pvc
(1)pv.yaml
apiVersion: v1 kind: PersistentVolume metadata: name: nfs-pv-esalert labels: pv: nfs-pv-esalert spec: capacity: storage: 5Gi accessModes: - ReadWriteMany nfs: server: 192.168.*.* #替换为自己放文件的主机IP path: /home/kubernetes/elk/elastalert/nfsshare
(2)pvc.yaml
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nfs-pvc-esalert spec: accessModes: - ReadWriteMany storageClassName: "" resources: requests: storage: 1Gi selector: matchLabels: pv: nfs-pv-esalert
(3)将挂载的目录加到nfs上,并重启nfs服务
添加nfs目录:修改/etc/exports文件,添加下面这一行:
/home/kubernetes/elk/elastalert/nfsshare *(rw,sync,no_root_squash,no_all_squash,insecure)
重启nfs服务:在主节点上都要执行
systemctl restart nfs
systemctl restart rpcbind
(4)执行创建命令
kubectl apply -f pv.yaml #pv为全局的,不需要指定名称空间
kubectl apply -f pvc.yaml -n elk #挂载目录的名称空间要和Pod名称空间一只
(5)确认pv和pvc状态正常:处于bound状态
2、镜像准备:我这边是本地已经有镜像了,然后将本地镜像推送到了公司的harbor仓库,然后从harbor仓库拉取
3、elastalert部署yaml文件编写
--- apiVersion: apps/v1 kind: Deployment metadata: name: elastalert labels: app: elastalert spec: replicas: 1 selector: matchLabels: app: elastalert template: metadata: labels: app: elastalert spec: containers: - name: elastalert image: 192.168.1.123:123/elk/elastalert:latest #配置自己的镜像地址 volumeMounts: - name: nfsshare mountPath: /opt/elastalert/config.yaml subPath: config/elastalert.yaml - name: nfsshare mountPath: /opt/elastalert-server/config/config.json subPath: config/config.json - name: nfsshare mountPath: /opt/elastalert/rules subPath: rules - name: nfsshare mountPath: /opt/elastalert/rule_templates/email_auth.yaml subPath: config/email_auth.yaml volumes: - name: nfsshare persistentVolumeClaim: claimName: nfs-pvc-esalert
4、配置文件准备:docker安装时挂载的目录拷贝到挂载目录/home/kubernetes/elk/elastalert/nfsshare下,并按照上面Yaml配置的映射放好配置
三、部署elastalert
准备工作做好了,部署只用一条命令就可以啦:
kubectl apply -f elastalert.yaml -n elk
四、其他问题:
在发送邮件时可能会报错:我在使用docker方式部署后都可以发邮件,但部署到k8s后就报这个错
smtplib.SMTPDataError: (554, 'DT:SPM 126 smtp5
查询资料说可能是由于邮件被识别为垃圾邮件,后面在收件人列表中加上自己就可以正常发送了