一、snmp(简单网络管理协议simple network management protocol)
SNMP协议的版本::
最通用的监控系统;只要配置了snmp的监控端,就能监控所有设备;
- v1 老版本,没有认证功能,通信过程没有加密;很多网络设备仅支持v1版本;
- v2c 社区版本,有身份识别机制,基于预密钥系统,加密方式不成熟;
- v3 包括了安全认证,通信过程加密;
SNMP的组件:
- MIB:management information base管理信息库;描述许多指标,用倒置的树状结构描述,,每一个被监控对象都有一个全局唯一标识;
- SMI:MIB表示符号
- SNMP协议: 基于UDP工作:但借助ip报文实现数据传输;
SNMP的工作模式:
- NMS向agent采集数据
- agent向NMS报告数据
- NMS请求agent修改配置
- 唯一标识称为:OID ,监控对象ID;
为了能够识别每一个监控项,远程主机上的监控是各种数据指标;这些指标都有一个单一的数字描述符与之对应;这种映射关系可理解成是一个MIB库;在整互联网上需要使用OID标识的设备或事物非常多,互联网只是其中之一;最顶层的为根节点,可分为一级节点,最著名的一级节点为ISO,ISO下面有个org二级节点,org下面有个dob三级节点,在dob下面有个internet四级节点,snmp就是在internet四级节点下的其中之一的节点;每个节点都有一个唯一的数字标识,这个数字标识称为oid就叫做某一个监控设备;设备有oid,设备指标也有oid;
可继续分叉的叫树节点,不能分叉的叫叶子节点,也通常是监控指标;
对某一个设备之上,它一共支持哪些个监控项,并且监控项只授权给谁使用,会有一个简单的定义;例如主机上有n多监控指标,但在snmp当中只开放了一个树分支被监控,其它分支就不能被监控;既可以授权整颗树,也可授权其中的子树。甚至可以只授权其中一个叶子节点;
nmp支持管理端发送写操作,在被管理端执行;不能保存数据和图形显示;
- IPMI:intel公司生产的专用接口;
- 被监控设备通用支持snmp监控,有些可安装agent监控,如果是类unix系统也可使用ssh接口进行监控,有些硬件还支持智慧平台管理接口IPMI(在主版上的跟网卡接口相似,现代专用服务器都有这样的接口,不同公司生产的可能不太一样);snmp没有周期性特性,早期只能创建一个周期性任务计划周期性执行;
snmp的监控端就是一个命令行,在linux上使用snmp协议,安装一个net-snmp程序包即可
[root@zabbix ~]# yum -y install net-snmp
[root@zabbix ~]# yum -y install net-snmp-utils
[root@zabbix ~ ]# rpm -ql net-snmp-utils
如果要本机成为snmp被监控对象,要启动snmp服务;
[root@localhost snmp]# systemctl start snmpd.service
[root@localhost snmp]# ss -unl #161端口被监控表明启动成功
UNCONN 0 0 *:161 *:*
在监控端安装net-snmp-utils程序包后生成许多工具,来管理查看监控:
/usr/bin/snmpget 一次获取一个数据
/usr/bin/snmpgetnext 获取下一个数据
/usr/bin/snmpwalk 获取所有数据,轮询读取数据
/usr/bin/snmpset
/usr/bin/snmptable
/usr/bin/snmptest
/usr/bin/snmptrap 捕获
/usr/bin/snmpdelta
/usr/bin/snmpdf
/usr/bin/snmpbulkget 批量获取
/usr/bin/snmpbulkwalk 批量获取所有数据
语法格式:
snmpget [OPTIONS] AGENT OID [OID]...
-c COMMUNITY 配置文件中为public;
-v 1|2c|3:指明使用的snmp协议版本;
AGENT:指明要获取哪个主机地址上的数据;
示例:
[root@zabbix ~]# snmpwalk -v 2c -c public 192.168.43.12 .1.3.6.1.2.1 #获取这个分支上的所有数据
SNMPv2-MIB::sysDescr.0 = STRING: Linux localhost.localdomain 3.10.0-862.11.6.el7.x86_64 #1 SMP Tue Aug 14 21:49:04 UTC 2018 x86_64
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP- MIB::netSnmpAgentOIDs.10
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (32770) 0:05:27.70
SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmp.local.conf)
SNMPv2-MIB::sysName.0 = STRING: localhost.localdomain
SNMPv2-MIB::sysLocation.0 = STRING: Unknown (edit /etc/snmp/snmpd.conf)
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (8) 0:00:00.08
SNMPv2-MIB::sysORID.1 = OID: SNMP-MPD- MIB::snmpMPDCompliance
SNMPv2-MIB::sysORID.2 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
SNMPv2-MIB::sysORID.3 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
SNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIB
SNMPv2-MIB::sysORID.6 = OID: IP-MIB::ip
SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB
SNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM- MIB::vacmBasicGroup
SNMPv2-MIB::sysORID.9 = OID: SNMP-NOTIFICATION- MIB::snmpNotifyFullCompliance
SNMPv2-MIB::sysORID.10 = OID: NOTIFICATION-LOG-MIB::notificationLogMIB
SNMPv2-MIB::sysORDescr.1 = STRING: The MIB for Message Processing and Dispatching.
SNMPv2-MIB::sysORDescr.2 = STRING: The management information definitions for the SNMP User-based Security Model.
SNMPv2-MIB::sysORDescr.3 = STRING: The SNMP Management Architecture MIB.
SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing TCP implementations
SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations
SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing UDP implementations
SNMPv2-MIB::sysORDescr.8 = STRING: View-based Access Control Model for SNMP.
SNMPv2-MIB::sysORDescr.9 = STRING: The MIB modules for managing SNMP Notification, plus filtering.
SNMPv2-MIB::sysORDescr.10 = STRING: The MIB module for logging SNMP Notifications.
SNMPv2-MIB::sysORUpTime.1 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.2 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.3 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.4 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.5 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.6 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.7 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.8 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.9 = Timeticks: (7) 0:00:00.07
SNMPv2-MIB::sysORUpTime.10 = Timeticks: (8) 0:00:00.08
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (1731711) 4:48:37.11
HOST-RESOURCES-MIB::hrSystemUptime.0 = No more variables left in this MIB View (It is past the end of the MIB tree)
[root@zabbix ~]# snmpget -v 2c -c public 192.168.43.12 sysDescr.0 #获取一个采集的数据
SNMPv2-MIB::sysDescr.0 = STRING: Linux localhost.localdomain 3.10.0-862.11.6.el7.x86_64 #1 SMP Tue Aug 14 21:49:04 UTC 2018 x86_64
[root@zabbix ~]# snmpwalk -v 2c -c public 192.168.43.12 .1.3.6.1.2.1.25.1
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (1761644) 4:53:36.44
HOST-RESOURCES-MIB::hrSystemUptime.0 = No more variables left in this MIB View (It is past the end of the MIB tree)
二、分布式监控:
著名的开源监控工具:zabbix, zennos, opennms, cacti, nagios(icinga), ganglia
- cacti提供简单web监控配置接口;利用snmp协议,用snmpget自动定义cron任务,到被监控主机上采样数据,cacti存储在自己的rrd(轮询)数据库中,但没有报警功能;
- nagios系统能够实现对所关注的业务,能够制定合理区间,如果不在合理区间要做从软状态到硬状态变换;例如发现80端口不提供服务,采样一次为web服务down状态,连续采样3次都是down状态时,才认为从OK到problem状态发生改变;但是nagios不记录采样的数据,只记录几个窗口中的数据;例如,只记录过去到现在的8次数据;保存在内存中,一旦发现状态变化,就能实现告警操作,而nagios的告警功能非常强大;
- ganglia:较早的工具,但现在强大的数据聚合功能;
- zabbix,就实现了上述的功能;既能实现采样、存储、告警、展示等功能;
监控系统可以使用的数据库类型
- 关系型数据库存储;
- 也可使用rrd:轮询数据库存储;
- 时间序列数据库;
- NoSQL
三、ZABBIX
zabbix支持多种监控功能:
- 支持Zabbix Agent
- SNMP Agent
- IPMI Agent
- 无代理监控
- web服务监控
- 数据库监控
- zabbix内部监控
- 计算以后进行监控展示
- 客户自定义命令监控
zabbix的特性:
- 数据采样:支持snmp,ssh,telnet,agent,ipmi,jmx;
- 支持自定义检测机制:通过UserParameter实现;
- 支持自定义指定时间间隔;历史数据保存多久,趋势数据保存多久;
- 支持实时绘图:展示,通过内置绘图模板,读取数据库数据完成绘图;
- graph 绘图;
- map 绘制网络拓扑图;
- screen 定义一个屏幕展示各种图;
- slide show 支持使用幻灯片机制显示;
- 告警:
- 支持告警升级;
- 定义脚本script
- notification发通知,发邮件通知
- 数据存储:
- 数据库:自动超期数据清理
mysql
pgsql
- 数据库:自动超期数据清理
- 支持使用模板:完成快速监控和配置;
- 网络自动发现:zabbix可自动扫描网段,发现即可添加被监控主机;
- 分布式监控:
- server <--> proxy代理 <--> agent/ssh/ipmi
- 所有配置都在server端进行,自动推送;
- API接口:支持研发扩展;
zabbix的程序架构:
- zabbix database:负责专用于存储所有配置信息以及由Zabbix收集的数据;
- zabbix server:负责接收agnet发送的报告信息的核心组件,所有配置、统计数据及操作数据均由其组织进行;
zabbix server在zabbix服务器端运行一个进程就叫zabbix server;这个进程有n种子进程,对于每一种不同的监控接口,都有专用的子进程完成此类监控收集数据的实现;例如web页面监控,通过ICMP/IPMI/SNMP等协议监控设备,通过agent监控操作系统及对JMX(j2ee)监控;因此,每一类监控,都应该启动一个或几个子进程进行监控,启动多少个子进程,取决于监控指标的个数;
zabbix server就是靠这些协议不断收集数据,并存储在zabbix database数据库中; - zabbix web GUI:查看,所有的配置也在GUI接口上完成,通常与Zabbix server运行在同一台主机上;
- zabbix proxy的可选组件,常用于分布监控环境中,代理server收集部分被监控端的监控数据并统一发往server端;
- agent是部署在被监控主机上,负责收集本地数据并发往server端或proxy端;
zabbix支持分布式监控:
所有数据存储在数据库中,例如zabbix server只监控5万个指标,另外2万个指标交给代理服务器进行监控,代理监控服务器先把收集的数据放在本地数据库,每隔一段时间,连接zabbix server后,把数据统计汇总后一次性发出;这样减轻了连接的压力;
在大规模监控中,Zabbix server、Zabbix database、Zabbix web GUI有可能是分别的主机提供,彼此间通过socket进行通信;
server1运行Zabbix sever,server2运行Zabbix web gui和apache、php(mysql或pgsql),server3运行mysql或pgsql数据库;
通过server2的web页面进行配置和展示,Zabbix server把采集的数据存储在数据库中;
Zabbix server所有运行通过Zabbix_server.conf配置文件加载,运行中的所有日志信息,记录在Zabbix_server.log文件中;
Zabbix agent每个agent端运行一个zabbix_agentd守护进程,zabbix_agentd通过负责在本地监控各种应用,例如数据库、硬件设备、应用程序等等,把收集的数据通过zabbix协议发送给zabbix server,然后进行存储;
对于agent通过zabbix_agentd.conf配置文件加载自己的配置,每个zabbix agent产生的日志信息记录在zabbix_agentd.log文件中;
zabbix proxy也需要配置文件zabbix_proxy.conf,日志文件zabbix_proxy.log;
配置好zabbix_agentd,在zabbix server端通过使用zabbix_get命令手动获取zabbix agent端数据测试,被动监控;zabbix agent端通过使用zabbix_sender命令,手动向zabbix server发送数据测试,主动监控;
zabbix监控java应用时,通过java gateway组件与java应用程序通信;
zabbix常用术语:
- 主机(host):要监控的网络设备;可有ip后dns名称指定;
- 主机组(host group):主机的逻辑容器;可以包含主机和模板,但同一组内的主机模板不能互相连接,主机组通常给用户或用户组指派权限时使用;
- 监控项(item):监控的数据指标,zabbix每一个item用一个key标识,可有用于标明的监控项,一个监控项就是一个采集指标,所以定义监控项就是定义一个key;key指明了用什么命令采集数据;这个key就是定义的采集指标或指标采集时所用到的命令的简写标识;
- 触发器(trigger):一个表达式,用于评估某监控对象的某特定item内所接收到的数据是否在合理范围内,即阈值;接收到的数据量大于阈值时,触发器状态将从OK转变为Problem,当数据量再次回归到合理范围内时,其状态将从Problem转换回Ok;
- 事件(event):即发生的一个值得关注的事情,例如触发器的状态转变,新的agent或重新上线的agnet的自动注册等;
- 动作(action):指对于特定事件事先定义的处理方法,通过包含操作(如发通知)和条件(何时执行操作);
- 报警升级(escalation):发生报警或执行远程命令的自定义方案,如每隔5分钟发生一次警报,共发送5次等;
- 媒介(media):发送通知的手动或通道,如email,Jabber或SMS等;
- 通知(notification):通过选定的媒介向用户发送的有关某事件的信息;
- 远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下自动执行;
- 模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、application以及low-level discovery rule;模板可以直接链接至单个主机;
- 应用(application):一组item相关联的集合;
- web场景(web scennario):用于检测web站点可用性的一个或多个HTTP请求;
- 前端(frontend):zabbix的web接口;
zabbix工作模式:
zabbix server端由zabbix poller进程从各被监控端拉取数据,例如每5分钟poller进程向zabbix agent端、snmp端或基于internal机制,向被监控项发起数据采集请求;任何poller的执行都基于items监控项进行的;定义了监控项就意味着基于某个命令来完成数据采集;
item会采集出时间序列数据,对每个数据判断是否在有效区间内,大多数item都需要定义触发器trigger,超过阈值进行触发一个报警事件;
触发器一旦触发一个事件,action能订阅事件,来触发某一动作;所以在trigger之上,还要定义触发事件执行的动作以便完成报警通知或执行远程脚本;
某一个监控项都是被监控主机上的某一指标;
可把主机定义一个组,在套用模板时方便批量监控部署操作;
maintenance是维护模式,不让触发器报警;
四、zabbix的安装部署:
以3.0版本的zabbix-server演示安装:
-
准备数据库
[root@localhost src]# yum -y install mariadb-server #安装mairadb数据库 [root@localhost src]# vim /etc/my.cnf.d/server.cnf #修改配置文件 [server] skip_name_resolve=ON innodb_file_per_table=ON [root@localhost src]# systemctl start mariadb.service #启动mariadb [root@localhost src]# systemctl enable mariadb.service #设置开机自启 [root@localhost src]# mysql MariaDB [(none)]> GRANT ALL ON zabbix.* TO 'zbxuser'@'192.168.%.%' IDENTIFIE Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> CREATE DATABASE zabbix CHARSET 'utf8'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> exit Bye [root@localhost src]# mysql_secure_installation #加固数据库,设置密码 [root@localhost src]# mysql -uzbxuser -h192.168.43.11 -p #使用授权的用户登陆测试 Enter password:
-
安装zabbix-server
#安装依赖包 [root@localhost ~]# yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb mariadb-devel -y [root@localhost ~]# cd /usr/local/src [root@localhost src]# tar xf zabbix-3.0.21.tar.gz [root@localhost src]# cd zabbix-3.0.21 [root@localhost zabbix-3.0.21]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --enable-java [root@localhost zabbix-3.0.21]# make install #安装完成之后导入数据库脚本,以生成数据库环境 [root@localhost ~]# mysql -uzbxuser -h192.168.43.11 -pzbxpasswd zabbix </usr/local/src/zabdatabase/mysql/schema.sql [root@localhost ~]# mysql -uzbxuser -h192.168.43.11 -pzbxpasswd zabbix </usr/local/src/zabdatabase/mysql/images.sql [root@localhost ~]# mysql -uzbxuser -h192.168.43.11 -pzbxpasswd zabbix </usr/local/src/zabdatabase/mysql/data.sql #复制启动脚本,并修改 [root@localhost ~]# cp /usr/local/src/zabbix-3.0.21/misc/init.d/fedora/core/* /etc/init.d/ [root@localhost init.d]# vim zabbix_server BASEDIR=/usr/local/ #此行修改为:BASEDIR=/usr/local/zabbix # 编辑zabbix_server.con配置文件 [root@localhost ~]# mkdir /var/log/zabbix [root@localhost ~]# chown zabbix.zabbix /var/log/zabbix [root@localhost ~]# vim /usr/local/zabbix/etc/zabbix_server.conf LogFile=/var/log/zabbix/zabbix_server.log DBHost=192.168.43.11 #此项一定要改,使用默认localhost无法连接到数据库 DBUser=zbxuser DBPassword=zbxpasswd Timeout=300 #启动zabbix-server [root@localhost ~]# /etc/init.d/zabbix_server start [root@localhost ~]# ss -tnl LISTEN 0 128 *:10051 *:* #监听到10051端口,zabbix启动成功
-
安装配置WEB-GUI
#首先安装httpd服务 [root@localhost ~]# yum -y install httpd [root@localhost ~]# mkdir /var/www/html/zabbix [root@localhost ~]# mkdir /var/www/html/zabbix [root@localhost ~]# chown zabbix.zabbix /var/www/html/zabbix -R [root@localhost conf.d]# systemctl start httpd
使用浏览器访问:http://ZABBIX_IP/zabbix
Next Step:
[root@localhost ~]# vim /etc/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone =Asia/Shanghai
#安装web-gui的依赖包
[root@localhost ~]# yum -y install php-mysql php-gd php-xml php-ldap php-bcmath
[root@localhost ~]# systemctl restart httpd.service
刷新网页:
继续Next Step
如果忘记zabbix的登录密码,可在mysql数据库中直接更改密码:
[root@zabbix ~]# mysql
> use zabbix;
> show tables;
> update users set passwd=md5('mageedu') WHERE userid=1;
> SELECT userid,name,passwd FROM users;
> exit
@到此zabbix-server部署完。
zabbix汉化:
-
修改php中字体配置
[root@localhost ~]# vim /var/www/html/zabbix/include/locales.inc.php 'zh_CN' => ['name' => _('Chinese (zh_CN)'), 'display' => false], #将此出false改为true
-
在web-gui中修改配置
-
更换字体
[root@localhost ~]# /var/www/html/zabbix/fonts #将简体字*.ttf文件复制到此 [root@localhost ~]# /var/www/html/zabbix/fonts/include/defines.inc.php define('ZBX_GRAPH_FONT_NAME', 'simkai'); // font file name
刷新页面后显示正常:
监控tomcat
- 安装部署tomcat
#安装tomcat依赖的jdk程序
[root@localhost src]# yum -y install jdk-7u79-linux-x64.rpm
[root@localhost src]# ln -sv /usr/java/jdk1.7.0_79/ /usr/local/jdk
#安装tomcat
[root@localhost src]# tar zxf apache-tomcat-7.0.78.tar.gz
[root@localhost src]# ln -sv /usr/local/src/apache-tomcat-7.0.78 /usr/local/tomcat
#添加环境变量
[root@localhost src]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export TOMCAT_HOME=/usr/local/tomcat
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$TOMCAT_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
[root@localhost src]# source /etc/profile
#修改配置文件添加如下内容
[root@localhost ~]# vim /usr/local/tomcat/bin/catalina.sh
在# ----- Execute The Requested Command -----------------段下添加:
CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote #启用远程java监控
-Djava.rmi.server.hostname=192.168.43.11 #tomcat主机
-Dcom.sun.management.jmxremote.port=12345 #默认启动的JMX端口号
-Dcom.sun.management.jmxremote.ssl=false #不适用ssl认证
-Dcom.sun.management.jmxremote.authenticate=false" #不适用用户名密码
[root@localhost ~]# /usr/local/tomcat/bin/catalina.sh start #启动tomcat
[root@localhost ~]# ss -tnl
LISTEN 0 100 :::8080 :::*
LISTEN 0 50 :::12345 :::*
使用浏览器访问tomcat测试
在windows验证tomcat:(window上安装jdk,打开默认路径:C:\Program Files\Java\jdk1.8.0_191\lib\JConsole.jar)
- 安装zabbix-agent和zabbix-java两个服务
[root@localhost ~]# cd /usr/local/src
[root@localhost src]# ls
apache-tomcat-7.0.78 zabbix-agent-3.0.9-1.el7.x86_64.rpm
apache-tomcat-7.0.78.tar.gz zabbix-java-gateway-3.0.9-1.el7.x86_64.rpm
jdk-7u79-linux-x64.rpm
[root@localhost src]# yum -y install zabbix-agent-3.0.9-1.el7.x86_64.rpm zabbix-java-gateway-3.0.9-1.el7.x86_64.rpm #用yum的方式安装agent和java-gateway
[root@localhost src]# vim /etc/zabbix/zabbix_agentd.conf #修改agent配置内容如下
EnableRemoteCommands=1
LogRemoteCommands=1
Server=192.168.43.11
ListenPort=10050
ListenIP=0.0.0.0
StartAgents=30
Hostname=192.168.43.12
Timeout=30
[root@localhost src]# vim /etc/zabbix/zabbix_java_gateway.conf #修改agent配置内容如下
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=20
TIMEOUT=30
[root@localhost src]# systemctl start zabbix-agent.service zabbix-java-gateway.service #启动agent和java-gateway
-
在zabbix-server端修改配置,添加javagatewayip等参数
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_server.conf JavaGateway=192.168.10.102 #指定java gateway的地址 JavaGatewayPort=10052 #指定java gateway的服务器监听端口,如果是默认端口可以不写 StartJavaPollers=20 #启动多少个进程去轮训 java gateway,要和java gateway的配置一致 Timeout=30
授权zabbix用户sudo权限
[root@localhost src]# visudo
zabbix ALL=(ALL) NOPASSWD:ALL
Defaults requiretty #用井号注释此行
-
在WEB GUI中添加主机并关联模板
安装zabbix proxy
- 主动模式与被动模式工作原理(对于zabbix agent来说的工作模式 )
- 被动模式就是由zabbix server向zabbix agent发出指令获取数据,即zabbix agent被动的去获取数据并返回给zabbix server,zabbix server周期性的向 agent 索取数据,这总模式的最大问题就是会加大zabbix server的工作量,在数 百台服务器的环境下zabbix server不能及时获取到最新数据,但这也是默认的工 作方式。
- 主动模式是有zabbix agent主动采集数据并返回给zabbix server,不再需要 zabbix serve进行干预,因此主动模式在一定程度上可减轻zabbix server的压力 。
- 安装主动模式的zabbix
zabbix 是一个分布式的监控系统,支持通过代理服务器zabbix proxy收集zabbix agent的数据,然后把收集保存在本地数据库并发送给zabbix server进行统一存储和 展示。
准备数据库:(在server端连接数据库)
[root@zabbix-server ~]# mysql -uroot -pinspur -h127.0.0.1
MariaDB [(none)]> CREATE DATABASE zabbix_proxy CHARSET 'utf8';
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL ON zabbix_proxy.* TO 'proxy'@'192.168.%.%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.01 sec
MariaDB [(none)]> FLUSH PRIVILEGES;
在proxy端连接数据测试:
[root@localhost src]# mysql -uproxy -p123456 -h192.168.43.3
安装proxy:
[root@zabbix src]# yum -y install zabbix-proxy-mysql-3.0.9-1.el7.x86_64.rpm zabbix-agent-3.0.9-1.el7.x86_64.rpm
导入数据库:
[root@localhost zabbix-3.0.21]# mysql -uproxy -p123456 -h192.168.43.11zabbix_proxy < /usr/local/src/zabbix-3.0.21/database/mysql/schema.sql
修改proxy配置文件
[root@zabbix src]# vim /etc/zabbix/zabbix_proxy.conf
ProxyMode=0 #0为主动,1为被动
Server=192.168.43.11 #zabbix server端的地址或主机名
Hostname=Zabbix_proxy #代理服务器名称,需要与zabbix server田间代理时的proxy name是一致的
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0 #指明代理端日志文件大小;
PidFile=/var/run/zabbix/zabbix_proxy.pid
DBHost=192.168.43.11 #数据库服务器地址
DBName=zabbix_proxy #数据库的名称
DBUser=zbxproxy
DBPassword=zbxproxy
ProxyLocalBuffer=3 #代理端本地缓存;
ProxyOfflineBuffer=24 #代理端离线缓冲;
HeartbeatFrequency=60 #心跳间隔检测时间,默认为60秒,范围1-3600,被动模式不使用
ConfigFrequency=5 #间隔多久从zabbix server获取监控信息
DataSenderFrequency=5 #数据发送时间间隔,默认为1秒,范围1-3600秒,被动模式不使用
StartPollers=10 #启动的线程数,与客户端的数据保持一致
JavaGateway=192.168.43.12 #java gateway服务器的地址
JavaGatewayPort=10052
StartJavaPollers=20 #监控java启动的线程,必须启用要不监控不到java
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=30
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
agent的配置和上文中配置一样就不在列举;
启动proxy和 agent
[root@zabbix src]# systemctl start zabbix-proxy.service
[root@zabbix src]# systemctl start zabbix-agent.service
[root@zabbix src]# ss -tnl
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 *:10051 *:*
在web中添加proxy主机本身并监控
-
在web中配置代理程序:
-
zabbix-web gui中添加主机并监控
- 修改192.168.43.12-web上agent的配置文件使server指向proxy主机即可
[root@localhost src]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.43.13
ServerActive=192.168.43.13 #开启主动模式,此项也要启用
[root@localhost src]# systemctl restart zabbix-agent.service
web中监控正常: