首页 > 其他分享 >docker部署zabbix6.0及企业微信发送告警

docker部署zabbix6.0及企业微信发送告警

时间:2022-10-31 21:57:35浏览次数:97  
标签:微信 zabbix6.0 server zabbix mysql docker mariadb 告警

1 前言

1.1 实验背景

因zabbix 6.0新增许多新特性,为熟悉界面特意在本地部署一套简易版(未启用HA功能)。原本想要在烧制了centos7.9系统树莓派上部署,一查之下armv7果然冷门,mariadb无论是直接安装或者docker都不支持,还是x86好使,索性将mariadb、zabbix server、zabbix froneted都部署在了本地虚拟机中,相比安装部署方便很多。

1.2 实验环境

宿主机:1核2G本地虚拟机,centos 7.6,docker 1.13.1
mariadb:10.8.5(zabbix 6.0必须使用10.0.5以上版本mariadb)
zabbix server:6.0

1.3 准备工作

防火墙放开tcp 3306(mariadb)、tcp 10051(zabbix server)、tcp 8080(nginx)

2 安装 mariadb

2.1 下载mariadb

参考https://mariadb.org/download/?t=repo-config
创建/etc/yum.repos.d/MariaDB.repo

[mariadb]
name = MariaDB
baseurl = https://mirrors.aliyun.com/mariadb/yum/10.8/centos7-amd64
gpgkey=https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
yum install MariaDB-server MariaDB-client
systemctl start mariadb
systemctl enable mariadb
mariadb-secure-installation 设置root密码
mysql -uroot -p"mariadb-root-user-password"
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user 'zabbix'@'%' identified by 'mariadb-zabbix-user-password';
mysql> grant all privileges on zabbix.* to 'zabbix'@'%';
mysql> quit;

2.2 导入数据库

下载源代码后

cd database/mysql
mysql -uzabbix -p"mariadb-zabbix-user-password" zabbix < schema.sql
mysql -uzabbix -p"mariadb-zabbix-user-password" zabbix < images.sql
mysql -uzabbix -p"mariadb-zabbix-user-password" zabbix < data.sql

3 安装zabbix server

3.1 获取镜像

docker pull zabbix/zabbix-server-mysql:6.0-alpine-latest

3.2 启动容器

docker run --name zabbix-server-mysql-1 -e DB_SERVER_HOST="172.17.0.1" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="mariadb-zabbix-user-password" -p 10051:10051 -d zabbix/zabbix-server-mysql:6.0-alpine-latest

其中172.17.0.1为docker0网桥地址

3.3 测试

netstate -nlpt查看10051端口是否listening

docker exec -it zabbix-server-mysql-1 /bin/sh

进入容器后可以手工使用mysql -uzabbix -p测试能否正常连接数据库

docker logs zabbix-server-mysql-1

查看日志,正常情况下不会有明显报错

4 安装zabbix frontend

4.1 获取镜像

docker pull zabbix/zabbix-web-nginx-mysql:6.0-alpine-latest

4.2 启动容器

docker run --name zabbix-web-nginx-mysql-1 --link zabbix-server-mysql-1:zabbix-server -e DB_SERVER_HOST="172.17.0.1" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="mariadb-zabbix-user-password" -e ZBX_SERVER_HOST="172.17.0.1" -e PHP_TZ="Asia/Shanghai" -p 8080:8080 -d zabbix/zabbix-web-nginx-mysql:6.0-alpine-latest

4.3 测试

netstate -nlpt查看8080端口是否listening
此时可以通过web访问zabbix web了,默认账号密码是Admin/zabbix

5 企业微信发送告警

zabbix 5.0开始支持使用webhook类型告警,与企业微信等媒介十分契合,因为代码写在web界面上,修改和迁移都比传统的调用脚本方便,不过需要一点点javascript开发工作。

5.1 媒介类型

5.1.1 类型

选用webhook

5.1.2 参数

Message {ALERT.MESSAGE}
To {ALERT.SENDTO}

5.1.3 脚本

根据网络资料简化而来

var Wechat = {
    to: null,
    message: null,
 
    sendMessage: function() {
        var params = {
            msgtype: "text",
            text: {
                content:Wechat.message
            }
        },
        data,
        response,
        request = new CurlHttpRequest(),
        url = Wechat.to;
 
        request.AddHeader('Content-Type: application/json');
        data = JSON.stringify(params);
        response = request.Post(url, data);
 
        return JSON.parse(response);
    }
}

try {
    var params = JSON.parse(value);
    Wechat.to = params.To;
    Wechat.message = params.Message;
    Wechat.sendMessage();
    return 'OK';
}
catch (error) {
    throw 'Sending failed: ' + error + '.';
}

5.2 动作

可自行修改

5.2.1 消息模板Problem

告警时间:{EVENT.DATE} {EVENT.TIME} 告警平台:{TRIGGER.HOSTGROUP.NAME} 告警主机:{HOST.NAME} 告警详情:{ITEM.NAME} {ITEM.VALUE} {TRIGGER.NAME}

5.2.2 消息模板Problem recovery

恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME} 告警平台:{TRIGGER.HOSTGROUP.NAME} 告警主机:{HOST.NAME}({HOST.HOST}) 告警详情:{ITEM.NAME} {ITEM.VALUE} {TRIGGER.NAME}

5.3用户

媒介

Send to设置为企业微信机器人的webhook url

标签:微信,zabbix6.0,server,zabbix,mysql,docker,mariadb,告警
From: https://www.cnblogs.com/virtualzzf/p/16845971.html

相关文章

  • Docker安装Redis
    一、Docker拉取redis镜像dockerpullredis:<latest>二、Docker挂载配置文件将redis的配置文件进行挂载,以配置文件方式启动redis容器(挂载:将宿主机的文件和容器内部目录......
  • 1.Redis系列之Docker本地部署
    本文介绍采用docker-compose快速部署redis7,供学习使用1.编写docker-compose.yml文件version:'3'services:redis:network_mode:bridgecontainer_name:......
  • Docker如何使用
    目录​​1、Docker是什么​​​​1.1、Docker优点​​​​1.2、Docker缺点​​​​2、Docker安装部署​​​​2.1、安装​​​​2.2、开启服务​​​​2.3、安装镜像(这里是......
  • 转: docker-compse build 镜像指定版本 tag
    转: https://stackoverflow.com/questions/56082506/docker-compose-build-with-new-tagIhaveadocker-composewhichlookslike:version:'3.2'services:jobsaf......
  • 第五章 应用容器-Docker
      docker架构  下载镜像      镜像运行当前物理文件,产生的实例是容器。镜像操作容器                    ......
  • 微信小程序动态增加组件(以按钮为例)
    这里的微信小程序动态加载是以按钮为例,主页面点击不同的按钮进入不同的子页面中,根据主页面的title来动态加载子页面按钮的数量以及值。效果图:wxml文件(注意wx:key="item"要写......
  • 微信储值卡订单过期存储过程_版本1
     微信储值卡订单过期存储过程_版本1SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGO--=============================================--Author:<Autho......
  • 微信储值卡订单过期存储过程_版本2
     微信储值卡订单过期存储过程_版本2SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGO--=============================================--Author:<Autho......
  • charles抓不到ios微信小程序的包的原因!!
    如果其他配置全部都弄好了,能抓到网页和的app的包但是微信小程序抓不到,主要原因:  第二个问题,可能是没有允许应用:更改配置->允许其他应用->找到charles的路径 ......
  • docker01_配置允许任何IP的客户端连接
    阅读说明操作说明来自《每天5分钟玩转Docker容器技术》,但是具体展示内容和书中不一样,要详细了解的朋友可以翻阅书中2.3节。这里仅作为阅读笔记。 操作步骤1.找......