江东小霸王刘玄德

导航

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

 

查询资料说可能是由于邮件被识别为垃圾邮件,后面在收件人列表中加上自己就可以正常发送了

 

 

posted on 2020-08-09 21:42  江东小霸王刘玄德  阅读(887)  评论(0编辑  收藏  举报