Web服务使用持续集成自动部署时,经常因为一些配置的修改或其他依赖问题造成服务启动不成功,影响使用。为了解决这个问题,今天我们就通过Zabbix监控Web服务是否正常,并推送到Slack,随时掌握服务器的情况。
Zabbix安装
Zabbix的安装有许多方式,这里使用docker的方式进行安装,其他方式可参见Zabbix官网。
首先使用下面命令创建一个mysql容器:
docker run --name mysql-server -t \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_password" \
-e MYSQL_ROOT_PASSWORD="root_password" \
-d mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_bin
然后创建Java gate容器:
docker run --name zabbix-java-gateway -t \
-d zabbix/zabbix-java-gateway:latest
创建mysql zabbix容器:
docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_password" \
-e MYSQL_ROOT_PASSWORD="root_password" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--link mysql-server:mysql \
--link zabbix-java-gateway:zabbix-java-gateway \
-p 10050:10050 \
-d zabbix/zabbix-server-mysql:latest
最后启动Zabbix web容器:
docker run --name zabbix-web-nginx-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_password" \
-e MYSQL_ROOT_PASSWORD="root_password" \
--link mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-p 80:80 \
-d zabbix/zabbix-web-nginx-mysql:latest
Zabbix配置
在被监控端安装Zabbix Agent
Zabbix安装好了,我们需要把我们需要监控的主机添进系统。使用Agent interfaces
方式需要在被监控主机安装Zabbix Agent:
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum -y install zabbix-agent
安装完成后,编辑配置文件/etc/zabbix/zabbix_agentd.conf
,Server字段改为Server=0.0.0.0/0
方便外部访问。
启动服务:
systemctl start zabbix-agent
systemctl enable zabbix-agent
添加服务器
添加服务器,输入被监控服务器地址与端口号,可以在模板里选择对应的系统模板,这样Zabbix自动会针对模板配置许多规则。
配置Web监控
我们开始添加Web监控,主要配置名称与时间。
在Setps
页面里添加需要监控的URL地址,返回码为:200。
配置触发器
添加触发器,以便检测之前添加的监控是否正常,我们需要设置名称、级别等信息,最主要的是表达式配置,last
方式传的值是index
,我们需要判断最近三次返回码都不是200:
{gq server:web.test.rspcode[tuner api (gq/gz),gz].last(0)}<>200 and
{gq server:web.test.rspcode[tuner api (gq/gz),gz].last(1)}<>200 and
{gq server:web.test.rspcode[tuner api (gq/gz),gz].last(2)}<>200
对接Slack
下载slack推送脚本
我们打算使用Shell脚本推送消息,把slack.sh下载回本地,放入zabbix 脚本目录 /usr/local/share/zabbix/alertscripts
。
添加Media types
添加一个新的Media types:
配置用户Media
选择需要收到推送的用户,添加一个新的Media,可以配置频道、时间、级别等。