今日学习目标:
-
可以实现一个web页面的监测html
-
可以实现自动发现远程linux主机mysql
-
可以经过动做在发现主机后自动添加主机并连接模板linux
-
可以建立一个模版并添加相应的元素(监控项,图形,触发器等)web
-
可以将主机或模板的配置实现导出和导入sql
-
可以实现至少一种报警方式(邮件,微信等)数据库
- 可以经过zabbix_proxy来实现监控
web监测
web监测:相似一个监控项,能够对一个url页面进行监测(监测它的状态码,下载速度等)vim
下面来作个例子(监测agent1的httpd的主页)bash
1,
web管理界面--》配置--》主机--》web监测(选agent1的web监测)--》右上角点建立web场景
服务器
2,再点步骤,填上名称与监测的URL(你能够添加多个步骤,我这里只加这一个)微信
3,继续在步骤界面的最下面填上200状态码,而后点添加,出来后再点添加
4,建立完后,去下图中查看验证
若是看到是链接失败,则表示agent1的httpd没有启动若是是404错误,则表示服务启动了,但找不到主页
5, 去agent1上安装httpd,并作一个主页,再重启服务
[root\@agent1 \~]# yum install httpd httpd-devel
-
[root\@agent1 \~]# echo "agent1 主页" \> /var/www/html/index.html
-
[root\@agent1 \~]# systemctl restart httpd
- [root\@agent1 \~]# systemctl enable httpd
6,再去查看验证
练习:
-
为上面的web监测建立一个图形
- 为上面的web监测建立一个触发器,状态码不为200就触发(选监控项的时候要注意看清楚,一个web监测会产
生好几个小的监控项,选状态码的那一个)
自动发现与动做
发现:假设我如今须要添加监控100台主机,这个工做量有点大。因此我能够把这100台连好网络,配置并启动好
zabbix-agent服务。而后在zabbix
server上配置一个自动发现规则,自动发现这100台主机。自动发现是由服务端主动发起,Zabbix
Server开启发现进程,定时扫描网络中符合条件的主机。动做:自动发现了这100台主机,可是还要添加监控主机和连接模板啊。这时能够经过动做来达到此目的。
我们前面早就准备了一台agent2,一直还没使用,这里就尝试自动发现这台agent2。
1,在agent2上安装zabbix-agent包
1 [root\@agent2 \~]# yum install zabbix-agent
2,配置zabbix-agent端的配置文件,启动服务并作成开机自动启动
147 Hostname=agent2.cluster.com --修改为agent2的主机名
[root\@agent2 \~]# systemctl restart zabbix-agent [root\@agent2 \~]# systemctl
enable zabbix-agent [root\@agent2 \~]# systemctl status zabbix-agent
[root\@agent2 \~]# lsof -i:10050
--修改为zabbix监控服务器的IP(被动监控)
97 Server=10.1.1.11
[root\@agent2 \~]# vim /etc/zabbix/zabbix_agentd.conf
思考: 若是100台服务器都要装系统,而后再作上面两步,也挺累的。用什么方法来作更高效?
答:
安装系统可使用pxe(kickstart)或cobbler.安装软件,修改配置可使用cobbler的postscript,再或者使用ansible,saltstack这种软件。
3, web管理界面--》配置--》自动发现
4, 自动发现规则启用后,按下图显示的去验证
5,发现了agent2,但有一个问题,并无把agent添加到监控的主机列表中,以下图所示
6,经过动做,将发现的主机添加到监控主机列表,并加上监控模板。
web管理界面--》配置--》动做--》右上角事件源选自动发现--》有一个叫Auto
discovery. Linux servers的动做,直接启用就好
思考: 若是我发现主机后,还想要添加ftp,ssh相关的监控模板,怎么作?
1
7,
再次验证就OK了(这里等待比较久,你也能够尝试把自动发现规则关闭一下,再次打开)课外拓展:自动注册
自动注册:
与自动发现实现的功能相同,区别在于自动发现是由zabbixserver去发现被监控机器。而自动注册是由被监控机器去找zabbixserver注册。请问: 若是有大量的被监控机器,哪种方式性能更好?
模板
模板(template):
就是包括监控项,应用集,触发器,图形,聚合图形,自动发现规则,web监测等的一组实体。使用模板能够方便应用到主机,更改模板也会将更改应用到全部连接的主机。
参 考 :
https://www.zabbix.com/documentation/3.4/zh/manual/config/templates
web管理界面--》配置--》模板--》建立模板
导入导出
辛辛苦苦配置了一个模板或一个主机,我想给另外一台zabbix服务器使用或者我想保存下来(备份防止误删除),如何
实现?导入导出能够帮你轻松实现,导出的是xml格式文件.
配置--》主机--》选取要导出的主机(前面打勾)--》下面选择导出
配置--》模版--》选取要导出的模版(前面打勾)--》下面选择导出
配置--》主机--》右上角导入
配置--》模板--》右上角导入
练习: 导入导出练习
-
把本机的一个模版删除
- 而后从同桌的zabbix服务器那导出成xml文件,并拷贝过来导入(里面有IP参数的要记得修改相应的IP)
报警
触发器:触发报警
zabbix的报警媒介支持email,jabber,sms(短信),微信,电话语音等。
经过报警平台实现报警
本身配置报警比较复杂,并且邮件容易被拒或当作垃圾邮件。有些专业的报警平台就能够帮你简单实现。
如:onealeart 参考:<http://www.onealert.com/>;咱们这里之前面都定义过的"agent1远程登陆用户数"来测试报警,当agent1远程登陆用户数大于20个就会触发器,
而后报警。(注意:请在测试前先把agent1的登陆用户数调整到20个如下)
简单过程:
1,去http://www.onealert.com/申请一个帐号,在我的中心绑定:手机,微信,邮箱等
2,在应用里加zabbix应用,产生一个key(我这里的key为51c35554-939f-5c4d-604d-53ecdf3d7e2e);设置
报警的策略(设置报警邮箱或微信等)
3,按照它的提示,进行安装
# cd /usr/lib/zabbix/alertscripts
# wget
<http://www.onealert.com/agent/release/oneitsm_zabbix_release-1.2.0.tar.gz>;
#若是上述地址没法下载,请使用官方连接。
# tar xf oneitsm_zabbix_release-1.2.0.tar.gz # cd oneitsm/bin/
# bash install.sh 51c35554-939f-5c4d-604d-53ecdf3d7e2e
start to create config file...
-
Zabbix管理地址: <http://10.1.1.11/zabbix/>;
-
Zabbix管理员帐号: admin
-
Zabbix管理员密码:
-
4,安装完后,zabbix_server的web界面直接就配置好了报警媒介,报警用户,报警动做;你什么都不用再配置了
- 5,测试;你能够故意触发一些警告(触发器达到临界值),就会自动按照报警策略报警
配置完onealert后,咱们能够验证下它安装后到底对zabbix作了啥。简单来讲,它作了三件事:
-
增长了一个报警媒介类型
-
增长了一个用户和一个用户组用于报警
- 增长了一个报警动做
验证: 将agent1远程登陆用户数调整成大于20个,让触发器触发。也会触发报警。
分布式监控
当监控机主机特别多,甚至分散在不一样的地域机房。这个时候zabbix
server压力很大,因此能够经过增长zabbix
proxy来代理收集每一个机房里的主机信息,再统一给zabbix server.参考网址:
<https://www.zabbix.com/documentation/3.4/zh/manual/distributed_monitoring/proxies>;
zabbix proxy的两个主要应用场景总结:
-
分布式监控,为zabbix server分担压力
- zabbix
server监控有防火墙的内网各服务器时,须要防火墙开放各个端口。使用zabbix
proxy在内网统一监控,而后与zabbix
server经过公网链接,此时防火墙只须要开放zabbix server与zabbix
proxy的链接就能够了。
实验环境准备:
我这里把原来的agent2用来模拟zabbixproxy
-
先在web界面把agent2的配置删除(并把先前作的自动发现规则禁用,报警也禁用)
- 把agent2主机名改为zabbixproxy.cluster.com而且三台从新绑定/etc/hosts
zabbixserver.cluster.com agent1.cluster.com
zabbixproxy.cluster.com
10.1.1.11
10.1.1.12
10.1.1.13
# hostnamectl set-hostname --static zabbixproxy.cluster.com
# vim /etc/hosts
- 把agent2上的zabbix-agent服务先停一下
实验过程:
- 在zabbixproxy上安装相关软件包
1 [root\@zabbixproxy \~]# yum install mariadb-server zabbix-proxy-mysql
zabbix-agent
2,启动数据库,受权并导入数据
[root\@zabbixproxy \~]# zcat
/usr/share/doc/zabbix-proxy-mysql-3.4.15/schema.sql.gz
|mysql zabbix_proxy -u zabbix -p123
MariaDB [(none)]\> create database zabbix_proxy default charset utf8;
MariaDB [(none)]\> grant all privileges on zabbix_proxy.* to
'zabbix'\@'localhost' identified by '123';
MariaDB [(none)]\> flush privileges;
8
9
10
[root\@zabbixproxy \~]# mysql
[root\@zabbixproxy \~]# systemctl restart mariadb
[root\@zabbixproxy \~]# systemctl enable mariadb
3, 修改zabbix_proxy上的配置文件,并重启服务
253 DataSenderFrequency=5
--主动模式下zabbix_proxy多久发送一次收集的数据给zabbix_server--打开注释,并写上密码(与前面受权一致)
--主动模式下zabbix_proxy多久从zabbix_server接收一次配置数据
190 DBPassword=123
244 ConfigFrequency=60
--主动模式
--zabbix_server的ip
--这个名字最好和你的主机名还有后面在web界面配置代理
13 ProxyMode=0
24 Server=10.1.1.11
43 Hostname=zabbixproxy.cluster.com
的名字保持一致
156 DBHost=localhost
167 DBName=zabbix_proxy
182 DBUser=zabbix
1 [root\@zabbixproxy \~]# vim /etc/zabbix/zabbix_proxy.conf 2
3
4
1 [root\@zabbixproxy \~]# vim /etc/zabbix/zabbix_agentd.conf 2 64
SourceIP=10.1.1.13
3 97 Server=10.1.1.13
4 138 ServerActive=10.1.1.13
5 149 Hostname=zabbixproxy.cluster.com
-
[root\@zabbixproxy \~]# systemctl restart zabbix-proxy
-
[root\@zabbixproxy \~]# systemctl restart zabbix-agent
-
[root\@zabbixproxy \~]# systemctl enable zabbix-agent
- [root\@zabbixproxy \~]# systemctl enable zabbix-proxy
4, 修改agent1上的服务并重启服务
[root\@agent1 \~]# systemctl restart zabbix-agent
把服务器的ip改为zabbix_proxy的ip,而不是zabbix_server的ip
[root\@agent1 \~]# vim /etc/zabbix/zabbix_agentd.conf 97 Server=10.1.1.13
138 ServerActive=10.1.1.13
149 Hostname=agent1.cluster.com
验证测试:
在agent1上找一个监控项作改变(好比登陆用户数),而后在zabbix_server的图形界面能看到这个改变,说明proxy
成功.
主动监控和被动监控(拓展)
agent被动模式
相对于agent的被动,也就是表示是server或proxy去找agent拿数据(这也是zabbix
server的默认模式)配置方法以下:
[root\@agent1 \~]# systemctl restart zabbix-agent
--IP为zabbix_proxy的ip(若是没有proxy,则直接为zabbix_server的ip)
Server=10.1.1.13
agent端配置被动模式的参数以下
[root\@agent1 \~]# vim /etc/zabbix/zabbix_agentd.conf
agent主动模式
相对于agent的主动,也就是表示是agent主动把数据传给server或proxy
agent主动模式的优势是:
当agent太多的状况下,server或proxy去找这么多agent搜集数据,压力负载过大。用主动模式就能够缓解server或proxy的压力。但用主动模式的问题是:
监控项也要转为主动式才行,并且不少zabbix自带模板里的监控项不支持转为主动式.
agent端配置主动模式的参数以下
-
[root\@agent1 \~]# vim /etc/zabbix/zabbix_agentd.conf
-
Serveractive=10.1.1.13
--IP为zabbix_proxy的ip(若是没有proxy,则直接为zabbix_server的ip) - [root\@agent1 \~]# systemctl restart zabbix-agent
验证测试:
在agent1上把登陆用户数再次调整,而后在zabbix_server的图形界面能看到这个改变,说明主动监控成功.
proxy主动模式
zabbix_proxy主动发数据给zabbix_server(proxy的默认模式)
# vim /etc/zabbix/zabbix_proxy.conf
- ProxyMode=0 --此参数为0表示proxy主动模式
proxy被动模式
zabbix_server找zabbix_proxy为收集数据
# vim /etc/zabbix/zabbix_proxy.conf
- ProxyMode=1 --此参数为1表示proxy主动模式
场景
场景:
公司大概十几台服务器(主要是lnmp环境),如今须要你来设计并使用zabbix监控它们,而且要考虑之后的扩展,
尽可能使用自动的方式实现.传智要作一个宣传网站--》1台--\>
架构(高可用,负载均衡)--》监控(安装监控软件并链接)
--》按需求设置监控模板--》因公司发展,业务增加,服务器增长,咱们得基础扩展监控模板
》公司再发展,有多个机房,咱们要实现分布式监控+自动注册+主动被动模式的优化