当前位置: 首页 > Linux

在Kubernetes中部署Zabbix

时间:2023-04-06 02:30:11 Linux

Zabbix简介[1]Zabbix是由AlexeiVladishev开发的基于Server-Client架构的网络监控管理系统。它可以用来监视各种网络服务、服务器和网络机器的状态。Zabbix使用MySQL、PostgreSQL、SQLite、Oracle或IBMDB2来存储数据。服务器端基于C语言,Web前端基于PHP。Zabbix可以通过多种方式进行监控。无需安装客户端即可使用SimpleCheck,也可基于SMTP或HTTP等多种协议进行生死监控。在UNIX、Windows等客户端安装ZabbixAgent后,可以监控CPU负载、网络使用率、硬盘容量等各种状态。并且即使监控对象中没有安装Agent,Zabbix也可以通过SNMP、TCP、ICMP检测,使用IPMI、SSH、telnet来监控目标。此外,Zabbix还包括XMPP等各种Item警报功能。Zabbix功能与特性[2]安装配置简单可视化web管理界面免费开源支持中文自动发现分布式监控实时绘图环境Kubernetesversion1.15.6Zabbixversion3.4.7(镜像,在官方基础上修改,待会下面详细介绍)Mariadb10.3.5版本ZabbixDockerfile修改zabbix-server-mysql:在官方基础上修改Dockerfile,增加python支持,支持python通知脚本环境;时区变更为上海时区;FROMzabbix/zabbix-server-mysql:alpine-3.4.7RUNcp/etc/apk/repositories/etc/apk/repositories.bak\&&echo"http://mirrors.aliyun.com/alpine/v3.4/main/">/etc/apk/repositories\&&apkadd--updatepythonpython-devpy-pipbuild-base\&&apkadd-Utzdata\&&cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime\&&pipinstallrequestsconfigparser\&&touch/tmp/zabbix_dingding.log\&&chownzabbix:zabbix/tmp/zabbix_dingding.log\&&rm-rf/var/cache/apk/*WORKDIR/var/lib/zabbixEXPOSE10051/TCPVOLUME["/usr/lib/zabbix/alertscripts","/usr/lib/zabbix/externalscripts","/var/lib/zabbix/enc","/var/lib/zabbix/mibs","/var/lib/zabbix/模块"]音量["/var/lib/zabbix/snmptraps","/var/lib/zabbix/ssh_keys","/var/lib/zabbix/ssl/certs","/var/lib/zabbix/ssl/keys","/var/lib/zabbix/ssl/ssl_ca"]ENTRYPOINT["docker-entrypoint.sh"]zabbix-web-nginx-mysql:官方修改Dockerfile,增加中文字体,解决网页浏览中文乱码问题监控;时区变更为上海时区;msyh.ttf字体可以从下面打印的镜像中获取FROMzabbix/zabbix-web-nginx-mysql:alpine-3.4.7COPYmsyh.ttf/usr/share/fonts/ttf-dejavu/DejaVuSans.ttfRUNcp/etc/apk/repositories/etc/apk/repositories.bak\&&echo"http://mirrors.aliyun.com/alpine/v3.4/main/">/etc/apk/repositories\&&apkadd-Utzdata\&&cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime\&&rm-rf/var/cache/apk/*EXPOSE80/TCP443/TCPWORKDIR/usr/share/zabbixVOLUME["/etc/ssl/nginx"]ENTRYPOINT["docker-entrypoint.sh"]ZabbixK8SMariadbPS:NFS提供存储$vimmariadb-pv.yamlapiVersion:v1kind:PersistentVolumemetadata:name:mariadb-pvnamespace:kube-systemspec:capacity:storage:100GiaccessModes:-ReadWriteManypersistentVolumeReclaimPolicy:Retainnfs:path:/nfs-数据/mariadb_db_data服务器:192.16.3.6$vimmariadb-pvc.yamlapiVersion:v1kind:PersistentVolumeClaimmetadata:名称:mariadb-pvc命名空间:kube-systemspec:accessModes:-ReadWriteManyresources:requests:storage:100Gi$vimmariadb-deploy.yamlapiVersion:v1kind:Servicemetadata:name:mariadb-servernamespace:kube-systemlabels:name:mariadb-serverspec:ports:-port:3306targetPort:3306协议:TCP选择器:名称:mariadb-server---apiVersion:extensions/v1beta1kind:Deploymentmetadata:名称:mariadb-server命名空间:kube-system标签:名称:mariadb-serverspec:副本:1revisionHistoryLimit:3策略:rollingUpdate:maxSurge:30%maxUnavailable:30%模板:元数据:标签:名称:mariadb服务器规范:卷:-名称:mariadb-storagepersistentVolumeClaim:claimName:mariadb-pvc主机名:mariadb-server容器:-名称:mariadb-server图像:yangpeng2468/mariadb:10.3.5资源:限制:cpu:400m内存:1024Mi请求:cpu:100m内存:100MiimagePullPolicy:IfNotPresent端口:-containerPort:3306env:-名称:MYSQL_ROOT_PASSWORD值:“密码”volumeMounts:-名称:mariadb-storagemountPath:/var/lib/mysql#DeployMariadb$kubectlapply-fmariadb-pv.yaml$kubectlapply-fmariadb-pvc.yaml$kubectlapply-fmariadb-deploy.yamldeployConfigmap通知钉钉脚本$vimzabbix-dingding-conf-configmap.yamlapiVersion:v1kind:ConfigMapmetadata:name:zabbix-dingding-conf命名空间:kube-systemdata:dingding.conf:|[config]#注意这个文件的权限log=/tmp/zabbix_dingding.logwebhook=https://oapi.dingtalk.com/robot/send?access_token=${钉钉机器人令牌}$vimzabbix-dingding-script-configmap.yamlapiVersion:v1kind:ConfigMapmetadata:name:zabbix-dingding-script命名空间:kube-systemdata:zabbix_dingding.py:|#!/usr/bin/envpython#-*-编码:utf-8-*-导入请求导入json导入sys导入timeimportconfigparserHeaders={'Content-Type':'application/json'}Time=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())配置=configparser.ConfigParser()config.read('/usr/lib/zabbix/externalscripts/dingding.conf')#config.read('/etc/zabbix/dingding.conf')log_file=config.get('config','log')api_url=config.get('config','webhook')deflog(info):#注意权限,否则写不进去日志withopen(log_file,'a+')asinfile:infile.write(info)defmsg(text,user):json_text={"msgtype":"text","text":{"content":text},"at":{"atMobiles":[user],"isAtAll":False}}r=requests.post(api_url,data=json.dumps(json_text),headers=Headers.json()code=r["errcode"]ifcode==0:log(Time+":消息发送成功返回码:"+str(code)+"\n")else:log(Time+":消息发送失败返回码:"+str(code)+"\n")exit(3)if__name__=='__main__':text=sys.argv[3]user=sys.argv[1]msg(text,user)#部分$kubectlapply-fzabbix-dingding-conf-configmap.yamlzabbix-dingding-script-configmap.yaml部分zabbix-server$vimzabbix-server-deploy.yamlapiVersion:v1kind:Servicemetadata:名称:zabbix-server命名空间:kube-system标签:app:zabbix-serverspec:类型:NodePort端口:-端口:10051targetPort:10051nodePort:30017协议:TCP选择器:app:zabbix-server---apiVersion:extensions/v1beta1kind:Deploymentmetadata:name:zabbix-servernamespace:kube-systemlabels:app:zabbix-serverspec:replicas:1revisionHistoryLimit:3strategy:rollingUpdate:maxSurge:30%maxUnavailable:30%template:元数据:标签:应用程序:zabbix-server规范:主机名:zabbix-server卷:-名称:zabbix-dingding-scriptconfigMap:名称:zabbix-dingding-scriptdefaultMode:0775-名称:zabbix-dingding-confconfigMap:名称:zabbix-dingding-confdefaultMode:0664容器:-名称:zabbix-server图像:yangpeng2468/zabbix-server-mysql:3.4.7imagePullPolicy:IfNotPresent资源:限制:cpu:400m内存:1024Mi请求:cpu:100m内存:100Mi端口:-containerPort:10051env:-名称:DB_SERVER_HOST值:“mariadb-server”-名称:MYSQL_USER值:“zabbix”-名称:MYSQL_PASSWORD值:“zabbix”-名称:MYSQL_DATABASE值:“zabbix”-名称:ZBX_CACHESIZE值:“1024M”-名称:TZ值:“亚洲/上海”volumeMounts:-名称:zabbix-dingding-scriptmountPath:/usr/lib/zabbix/alertscripts-name:zabbix-dingding-confmountPath:/usr/lib/zabbix/externalscripts#部分档案$kubectlapply-fzabbix-server-deploy.yaml部分档案zabbix-web$vimzabbix-web-deploy.yamlapiVersion:v1kind:Servicemetadata:name:zabbix-webnamespace:kube-systemlabels:app:zabbix-webspec:ports:-port:80targetPort:80protocol:TCP选择器:app:zabbix-web---apiVersion:extensions/v1beta1kind:Deploymentmetadata:name:zabbix-webnamespace:kube-systemlabels:app:zabbix-webspec:replicas:1revisionHistoryLimit:3strategy:rollingUpdate:maxSurge:30%maxUnavailable:30%模板:元数据:标签:应用程序:zabbix-web规范:主机名:zabbix-web容器:-名称:zabbix-web图像:yangpeng2468/zabbix-web-nginx-mysql:3.4.7imagePullPolicy:IfNotPresent资源:限制:cpu:300m内存:600Mi请求:cpu:100m内存:100Mi端口:-containerPort:80env:-名称:DB_SERVER_HOST值:“mariadb-server”-名称:ZBX_SERVER_HOST值:“zabbix-server”-名称:MYSQL_USER值:“zabbix”-名称:MYSQL_PASSWORD值:“zabbix”-名称:TZ值:“亚洲/上海”-名称:PHP_TZ值:“亚洲/上海”#Deploy$kubectlapply-fzabbix-web-deploy.yamldeployzabbix-agentzabbix-代理这里不详述。如果使用Docker或者k8s部署,可以使用官方镜像zabbix/zabbix-agent:alpine-3.4.7或者直接下载官方安装包部署到宿主机上。这里根据自己的实际需要部署客户端。在ZabbixDashboard上部署成功后,根据自己的实际环境,设置外网访问k8s集群入口,ZabbixDashboard显示如下:参考链接[1]https://zh.wikipedia.org/wiki...[2]https://yq.aliyun.com/article...本文由YP小站发表!