redhat7.3-zabbix监控
一.zabbix的基本了解
zabbix 是一个基于WEB界面的提供分布式系统监控以及网络监视功能的企业级的开源解决方案。zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供 灵活的通知机制以让管理员快速定位/解决存在的各种问题。zabbix由2部分构成,zabbix-server与可选组件zabbix-agent。 zabbix-server可以通过SNMP,zabbix-agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能, 它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。管理员需要使用一个Zabbix前端界面,与Zabbix服务器和数据库进行通信。三个关键(界面、服务器和数据库)可以安装在同一台服务器上,但是如果你拥有一个更大更复杂的环境,将它们安装在不同的主机
zabbix-agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。zabbix agent可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD, OS X, Tru64/OSF1, Windows NT4.0, Windows (2000/2003/XP/Vista)等系统之上。
zabbix- server可以单独监视远程服务器的服务状态;同时也可以与zabbix-agent配合,可以轮询zabbix-agent主动接收监视数据 (agent方式),同时还可被动接收zabbix-agent发送的数据(trapping方式)。
实验环境(rhel7.3):
172.25.78.1(server1) | zabbix-server、zabbix-web、zabbix-web-mysql、php(图形界面)、zabbix-agent、zabbix-get |
172.25.78.2(server2) | zabbix-agent、tomcat、jdk(tomcat基于及java)、percona-zabbix-templates(j监控mysql的模版) |
172.25.78.3(server3) | zabbix-java-gateway(java网关) |
二.zabbix-server的部署
1.安装zabbix-server(web页面基于php开发,也需要安装php以及php-mysql)
zabbix-server的相关文件,以及基础数据的位置
2.把zabbix的基本数据导入数据库
创建zabbix数据库,对zabbix用户授权
把zabbix-server的数据导入数据库zabbix
3.配置zabbix-server,配置文件的位置/etc/zabbix/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBPassword=westos
4.配置时区 (/etc/httpd/conf.d/zabbix.conf,因为在zabbix里也会监控一段时间内的主机状况)
5.测试zabbix-server的web页面
(1)开启zabbix-server服务
(2)查看服务的端口
(3)http://172.25.78.1/zabbix ##开始登陆web页面
zabbix的仪表盘,能显示整个监控主机的状况,报警,问题的起因等,很直观
(4)初始化完成后,会生成web页面的数据库以及zabbix-server的基本信息(数据库,用户身份,端口,密码等)
三.zabbix-agent的部署
1.安装zabbix-agent(在需要被监控的主机安装,能收集cpu,内存的使用,swap的使用,以及流量的变化等)
2.配置agent (/etc/zabbix/zabbix_agent.conf)
server=172.25.78.1 ##指定zabbix-server
serveractive=172.25.78.1 ##主动检查
hostname=server2 ##agent所在主机
3.添加主机
(1)手动添加:配置-->主机-->创建主机
填写主机名称,选择主机群组,选择agent代理接口IP,添加模版
主机添加到群组,ZBX图标变绿表示成功监测agent端
(2)自动发现:服务端自动发现局域网中所有的客户端agent(主动模式),方便找到所有的客户端,不会遗漏,一旦agent过多,server压力很大,每隔一段时间server会扫描一次局域网中的所有机器
配置-->自动发现-->创建发现规则
填写要发现的和zabbix-server同一网段的主机,选择键值
配置-->动作-->操作
添加主机,主机群组,模版
(3)自动注册:所有的客户端agent主动去服务端server登记注册被动模式,对服务端的压力最低,配置过程稍微复杂,server的压力过大就采用自动注册
配置-->自动注册-->动作
(4)采用api的方式添加主机(手动添加一旦主机数量增多,速度很慢,甚至不可能完成)
API:(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
提前写好获取API的脚本,基于API删除主机以及添加主机的脚本,只需要每次改变主机号,大大减少了工作量
获取API的脚本
添加主机的脚本
点击到想要添加的模版,在地址栏就有templateid
点击到要添加到的主机群组,地址栏就有groupid
添加主机的hostids的编号,就是删除主机的parans的编号
删除主机的脚本
四.zabbix-server监控agent端的mysql(由于自带的模版功能不多,下载的percona-zabbix-templates)
1.安装mysql
2.安装percona-zabbix-templates,把mysql的key值文件拷贝到/etc/zabbix/zabbix_zgent.d这样才能生效
3.安装php,以及php-mysql
4.在/var/lib/zabbix/percona/scripts/目录下,创建php进入mysql的用户名以及密码
5.在mysql的key值文件中查看mysql.Key-read-requests
(1)删除/tmp下的localhost-mysql_cacti_stats.txt
(2)在zabbix-server端安装zabbix-get,获取key值
(3)localhost-mysql_cacti_stats.txt再次以zabbix用户身份写入/tmp目录,否则zabbix用户就不可写
6.在mysql中授权zabbix用户
7.选择导入模版percona-zabbix模版,创建主机时把模版链接上
五.zabbix-server监控agent端的tomcat
1.安装tonmcat以及jdk
2.在tomcat的/bin目录下编辑tomcat的端口(8888,之前做过nginx冲突)
开启tomcat
3.安装zabbix-java-gateway
zabbix-java-gateway的默认监听端口是10052
通过lsof去查看10052端口的占用情况,监听java
zabbix-server-->zabbix-java-gateway-->tomcat
4.在zabbix-server配置文件中开启java的网关,以及监听端口
5.创建主机,监控tomcat,tomcat是通过JMX接口来监控,在JMX接口写清楚,tomcat所在tomcat的IP以及端口
选择JMX的模版
JMX图标变绿,说明成功监控tomcat
六.zabbix-server监控agent端的nginx
1.安装有status模块的nginx
2.添加status模块
3.在agent的配置文件中打开key值自定义开关
4.在agent的key值目录下,创建nginx的配置文件
通过curl获取nginx的active值
在zabbix-server端监测key值能否获取到
5.添加nginx的监控项
配置-->主机-->创建监控项(编辑要监控的key值)-->图形(选择之前创建的监控项,编辑监控图形的格式)
6.点击监测中-->图形-->选择要查看的群组的主机的key值
7.nginx的status监控的种类
Activeconnections ##对后端发起的活动连接数;
server accepts ##nginx 总共处理了多少个连接;
Handled ##成功创建了多少次握手;
Requests ##总共处理了多少请求。
Reading ##nginx读取客户端的header数;
Writing ##nginx 返回给客户端的header数;
Waiting ##nginx 请求处理完成,正在等待下一请求指令的连接
七.zabbix-proxy-mysql代理zabbix-server
当被监控的主机都在防火墙内,为了数据安全不能让zabbix-server直接连接进来,这时设置代理zabbix-server也就是zabbix-proxy-mysql,由zabbix-proxy-mysql把采集的数据发给zabbix-server
1.安装zabbix-proxy-mysql
2.在zabbix-proxy-mysql配置文件中开启Java接口,指定javagateway的IP,指定本地zabbix_proxy用户的数据库名称,以及密码,指定zabbix-server的IP
3.安装mysql,创建zabbix数据库,授权zabbix_proxy用户
4.把zabbix-proxy的数据导入zabbix数据库
5.把原来agent指向zabbix-server的IP改为指向zabbix-proxy的IP
6.测试(ZBX和JMX成功监测)
八.把报警信息传发到给管理员,实时掌握服务器的状况
1.注册一个110云告警,专业做监控告警的平台,如果把报警发到qq邮箱,或者网易邮箱可以被反垃圾机制阻挡
官网:http://www.onealert.com/,官网里有详细的安装说明
(1)在配置栏:
添加zabbix应用,获得应用key
(2)在个人中心:
设置告警通知策略(会以微信,短信,邮箱,电话通知)
(3)/etc/zabbix/zabbix_server.conf ##查看zabbix-server的脚本目录
(4)安装oneitsm
cd /usr/lib/zabbix/alertscripts
wget http://www.onealert.com/agent/release/oneitsm_zabbix_release-1.2.0.tar.gz ##下载压缩包
tar -zxf oneitsm_zabbix_release-1.2.0.tar.gz
cd oneitsm/bin
./install.sh appkey(添加zabbix,之后获取)
(5)在/bin下会生成配置文件oneitsm.conf
根据提示输入zabbix管理地址、管理员用户名、密码
(6)zabbix-server网页端设置报警触发器
管 理-->报警媒介类型-->创建媒体类型(选择脚本类型添加)-->oneitsm/bin/alert.sh(脚本名 称)-->{ALERT.SENDTO}{ALERT.SUBJECT} {ALERT.MESSAGE}(脚本参数)-->配置-->动作(事件源:选择触发器,创建动作)-->在创建的动作中选择发送消息 到用户的方式(oneitsm)
2.给虚拟机联网
(1)在物理机做一个nat转换,把从172.25.78.0./24网段的出来的数据包伪装成物理机的
(2)在要联网的主机添加网关为物理机的IP,做DNS智能解析
3.手动关闭agent,大概默认是5分钟就会发到之前设定的通知方式
4.当解决问题以后,会发送通知给管理员,如果问题不能解决会在30分钟左右也会发送通知,会显示问题是超时自动关闭
5.这个告警平台很大的方便了管理员对服务器的管理