zabbix学习笔记1

一、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  (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学习笔记1_第1张图片
zabbix程序架构.png
  • 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进行通信;


zabbix学习笔记1_第2张图片
zabbix分布式架构.png

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学习笔记1_第3张图片
zabbix-poll.png

zabbix server端由zabbix poller进程从各被监控端拉取数据,例如每5分钟poller进程向zabbix agent端、snmp端或基于internal机制,向被监控项发起数据采集请求;任何poller的执行都基于items监控项进行的;定义了监控项就意味着基于某个命令来完成数据采集;
item会采集出时间序列数据,对每个数据判断是否在有效区间内,大多数item都需要定义触发器trigger,超过阈值进行触发一个报警事件;
触发器一旦触发一个事件,action能订阅事件,来触发某一动作;所以在trigger之上,还要定义触发事件执行的动作以便完成报警通知或执行远程脚本;
某一个监控项都是被监控主机上的某一指标;
可把主机定义一个组,在套用模板时方便批量监控部署操作;
maintenance是维护模式,不让触发器报警;

四、zabbix的安装部署:

以3.0版本的zabbix-server演示安装:
  1. 准备数据库

    [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:
    
  2. 安装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 
  3. 安装配置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

zabbix学习笔记1_第4张图片
zabbix.png

Next Step:


zabbix学习笔记1_第5张图片
zabbix.error.png
zabbix学习笔记1_第6张图片
zabbix.error2.png
[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

刷新网页:

zabbix学习笔记1_第7张图片
zabbix.error.ok.png

继续Next Step


zabbix学习笔记1_第8张图片
zabbix.1.png

zabbix学习笔记1_第9张图片
zabbix2.png

zabbix学习笔记1_第10张图片
zabbix.login.png

如果忘记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汉化:
  1. 修改php中字体配置

    [root@localhost ~]# vim /var/www/html/zabbix/include/locales.inc.php
     'zh_CN' => ['name' => _('Chinese (zh_CN)'),     'display' => false],   #将此出false改为true
    
  2. 在web-gui中修改配置


    zabbix学习笔记1_第11张图片
    user.zh.png
  1. 更换字体

    [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
    

刷新页面后显示正常:


zabbix学习笔记1_第12张图片
zabbix汉化.png

监控tomcat
  1. 安装部署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测试


zabbix学习笔记1_第13张图片
tomcat.png

在windows验证tomcat:(window上安装jdk,打开默认路径:C:\Program Files\Java\jdk1.8.0_191\lib\JConsole.jar)

zabbix学习笔记1_第14张图片
java1.png
zabbix学习笔记1_第15张图片
java2.png
  1. 安装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
  1. 在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
    
  2. 授权zabbix用户sudo权限

[root@localhost src]# visudo
zabbix  ALL=(ALL)       NOPASSWD:ALL
Defaults requiretty   #用井号注释此行
  1. 在WEB GUI中添加主机并关联模板


    zabbix学习笔记1_第16张图片
    192.168.43.12-1.png
zabbix学习笔记1_第17张图片
192.168.43.12-web.png
zabbix学习笔记1_第18张图片
182.168.43.12-模板.png
192.168.43.12.png
安装zabbix proxy
  1. 主动模式与被动模式工作原理(对于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的压力 。
  1. 安装主动模式的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主机本身并监控


proxy1.png
  1. 在web中配置代理程序:


    zabbix学习笔记1_第19张图片
    proxy.png
  1. zabbix-web gui中添加主机并监控


    zabbix学习笔记1_第20张图片
    proxy3.png
zabbix学习笔记1_第21张图片
proxy4.png
zabbix学习笔记1_第22张图片
proxy5.png
  1. 修改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中监控正常:


proxy6.png

你可能感兴趣的:(zabbix学习笔记1)