自动化监控之zabbix

1、SNMP(Simle Network Manage)协议:简单网络管理协议
  SNMP的工作模式:
    1>NMS监控端主动向agent被监控端发送请求采集数据
    2>agent被监控端主动向NMS监控端报告数据
    3>NMS监控端发现agent被监控端出现异常时,主动修改配置
  SNMP的组件:
    MIB:management information base(管理信息库)
    SMI:MIB的表示符号
    SNMP协议本身
  Linux:net-snmp程序包

  NMS可发起操作:
    Get,GetNext(获取多个参数),Set,Trap
    agent:Response
    UDP协议:
      NMS:161
      agent:162

2、监控系统的出现
  1>为何需要监控系统
  在一个生产部署环境中会存在各种各样的设备,例如,硬件设备、软件设备,其系统的构成也是非常复杂的,例如,CPU利用率、磁盘I/O情况、网络情况、性能指标等数据,需要对齐进行数据采集,数据存储,进而进行数据可视化展示,甚至是设定阈值,当采集到的数据超出阈值时,报警预示。

  2>监控系统的实现
  一个监控系统的组成大体可以分为两部分:数据采集部分(客户端)和数据存储分析告警展示部分(服务器端)。这两部分构成了监控系统的基本模型。
  对于一般的监控环境,被监控的节点不多,产生的数据较少,采用 C/S(Client/Server,客户端/服务器端)架构:

  

 

 

   对于大规模的监控环境,被监控的节点多,且监控类型多,监控产生的数据和网络连接开销会非常巨大,而且由于跨地域等多种因素,需要分布式的解决方案,常见的方式为 C/P/S(Client/Proxy/Server,客户端/代理端/服务器端)架构,采用中间代理将大大提高监控服务器端的处理速度,从而能支撑构建大型分布式监控的环境。
  

 

  3>实现方式:
    专用agent代理
    ssh
    SNMP:通行的监控协议
    IPMI接口:智慧平台管理接口

3、常见的监控系统性能采集指标:

  主机监控:CPU、内存、磁盘的剩余空间/利用率和I/O、SWAP使用率、系统UP时间、进程数、负载等
  网络监控:Ping的往返时间及包成功率、网卡流量,包括流入/流出量和错误的数据包数
  文件监控:监控文件大小、Hash 值,匹配查询、字符串存在与否
  URL监控:监测指定URL访问过程中的返回码、下载时间及文件大小,支持内容匹配
  应用程序:端口和内存使用率、CPU使用率、服务状态、请求数、并发连接数、消息队列的字节数、Client事务处理数、Service 状态等
  数据库:监测数据库中指定的表空间、数据库的游标数、Session 数、事务数、死锁数、缓冲池命中率、库Cache命中率、当前连接数、进程的内存利用率等性能参数
  日志:错误日志匹配、特定字符串匹配
  硬件:温度、风扇转速、电压等

 

4、监控系统需求:

  1>时间要求
  监控系统需要根据实际应用的需求,实时/非实时地采集和展示数据。另外,包括历史趋势数据展示和分析,以及容量报表、可用性报告的生成。

  2>告警需求
  支持对告警内容的分析自动处理,防止误报、漏报,告警升级等

 

5、开源监控软件
  1>Cacti(仙人掌)
  是一套基于 PHP、MySQL、SNMP 和 RRDtool 开发的网络流量监测图形分析工具。它通过 snmp get 来获取数据,使用 RRDtool(环形数据库工具)绘图,但使用者无须了解 RRDtool 复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、主机设备以及任何一张图,还可以与 LDAP 结合进行用户认证,同时也能自定义模板,在历史数据的展示监控方面,其功能相当不错。Cacti 通过添加模板,使不同设备的监控添加具有可复用性,并且具备可自定义绘图的功能,具有强大的运算能力(数据的叠加功能)。
  不足:报警功能薄弱(第三方插件)

  2>Nagios
  Nagios 是一个企业级的监控系统,可监控服务的运行状态和网络信息等,并能监视所指定的本地或远程主机参数以及服务,同时提供异常告警通知功能等。Nagios 可运行在 Linux 和 UNIX 平台上,同时提供一个可选的基于浏览器的 Web 界面,以方便系统管理人员查看网络状态、各种系统问题,以及日志等。Nagios 的功能侧重于监控服务的可用性,能及时根据触发条件告警。

  3> Ganglia
  Ganglia 是一个跨平台的、可扩展的、高性能的分布式监控系统,如集群和网格。它基于分层设计,使用广泛的技术,用 RRDtool 存储数据,具有可视化界面,适合于对集群系统的自动化监控。其精心设计的数据结构和算法使得监控端到被监控端的连接开销非常低。目前已经有成千上万的集群正在使用这个监控系统,可以轻松地处理 2000 个节点的集群环境。

  4>Zabbix
  Zabbix 是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的 Agent(代理),也可以支持 SNMP、IPMI、JMX、Telnet、SSH 等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。其灵活的扩展性和丰富的功能是其他监控系统所不能比的。相对来说,它的总体功能做得非常优秀。

6、Zabbix
  1>简介
  zabbix 是基于 Web 界面,提供分布式系统监控以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
  zabbix 主要由 2 部分构成 zabbix server 和 zabbix agent,可选组建 zabbix proxy 。
  zabbix server 可以通过 SNMP,zabbix agent,ping 端口监视等方法对远程服务器或网络状态完成监视,数据收集等功能。同时支持 Linux 以及 Unix 平台,Windows 平台只能安装客户端。
  2>Zabbix架构

 

 

 

 

 

 

 

 

   3>功能
  ①具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库、性能监控、FTP 等通用协议监控、多种告警方式、详细的报表图表绘制)
  ②支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现)建议手动添加,自动发现网络设备十分耗资源。
  ③支持自动发现(low discovery)key 实现动态监控项的批量监控(需写脚本)
  ④支持分布式,能集中展示、管理分布式的监控点
  ⑤扩展性强,server 提供通用接口(api 功能),可以自己开发完善各类监控(根据相关接口编写程序实现)编写插件容易,可以自定义监控项,报警级别的设置。
  ⑥数据收集
  可用和性能检测
  支持 snmp(包括 trapping and polling),IPMI,JMX,SSH,TELNET
  自定义的检测,自定义收集数据的频率
  服务器/代理和客户端模式
  灵活的触发器,可以定义非常灵活的问题阈值,称为触发器,从后端数据库的参考值,高可定制的报警
  发送通知,可定制的报警升级,收件人,媒体类型
  通知可以使用宏变量有用的变量
  自动操作包括远程命令
  实时的绘图功能,监控项实时的将数据绘制在图形上面,WEB 监控能力
  ZABBIX 可以模拟鼠标点击了一个网站,并检查返回值和响应时间
  Api 功能:应用 api 功能,可以方便的和其他系统结合,包括手机客户端的使用

   4>优点
  (1)开源,无软件成本投入
  (2)Server 对设备性能要求低
  (3)支持设备多,自带多种监控模板
  (4)支持分布式集中管理,有自动发现功能,可以实现自动化监控
  (5)开放式接口,扩展性强,插件编写容易
  (6)当监控的 item 比较多服务器队列比较大时可以采用被动状态,被监控客户端主动从 server 端去下载需要监控的 item 然后取数据上传到 server 端,这种方式对服务器的负载比较小。
  (7)Api 的支持,方便与其他系统结合
  缺点:
  需在被监控主机上安装 agent,所有数据都存在数据库里,产生的数据据很大,瓶颈主要在数据库。

  5>Zabbix监控原理:
    Zabbix 通过 C/S 模式采集数据,通过 B/S 模式在 web 端展示和配置。
    被监控端:主机通过安装 agent 方式采集数据,网络设备通过 SNMP 方式采集数据
    Server 端:通过收集 SNMP 和 agent 发送的数据,写入数据库(MySQL,ORACLE 等),再通过php+apache 在 web 前端展示。
  Zabbix 运行条件:
    Server:Zabbix Server 需运行在 LAMP(Linux+Apache+Mysql+PHP)环境下(或者 LNMP),对硬件要求低
    Agent:目前已有的 agent 基本支持市面常见的 OS,包含 Linux、HPUX、Solaris、Sun、windows
    SNMP:支持各类常见的网络设备

  6>监控类型
    硬件监控:适用于物理机、远程管理卡(iDRAC),IPMI(智能平台管理接口)
    ipmitools:MegaCli(查看 Raid 磁盘)
    系统监控:监控 cpu:lscpu、uptime、top、vmstat、mpstat、htop
    监控内存:free -m
    监控硬盘:**df -h、iotop
    监控网络:**iftop、netstat、ss
    应用服务监控:**nfs、MySQL、nginx、apache、php、rsync

所有监控范畴,都可以整合到 Zabbix 中
硬件监控:Zabbix、IPMI、lnterface
系统监控:Zabbix、Agent、Interface
Java 监控:Zabbix、JMX、lnterface
网络设备监控:Zabbix、SNMP、lnterface
应用服务监控:Zabbix、Agent、UserParameter
MySQL 数据库监控:percona-monitoring-plulgins
URL 监控:Zabbix Web 监控

  7>相关术语
  (1)主机(host):要监控的网络设备,可由 IP 或 DNS 名称指定;
  (2)主机组(host group):主机的逻辑容器,可以包含主机和模板,但同一个组织内的主机和模板不能互相链接;主机组通常在给用户或用户组指派监控权限时使用;
  (3)监控项(item):一个特定监控指标的相关的数据;这些数据来自于被监控对象;item 是 zabbix 进行数据收集的核心,相对某个监控对象,每个 item 都由"key"标识;
  (4)触发器(trigger):一个表达式,用于评估某监控对象的特定 item 内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据再次恢复到合理范围,又转变为"OK";
  (5)事件(event):触发一个值得关注的事情,比如触发器状态转变,新的 agent 或重新上线的 agent 的自动注册等;
  (6)动作(action):指对于特定事件事先定义的处理方法,如发送通知,何时执行操作;
  (7)报警升级(escalation):发送警报或者执行远程命令的自定义方案,如每隔 5 分钟发送一次警报,共发送 5 次等;
  (8)媒介(media):发送通知的手段或者通道,如 Email、Jabber 或者 SMS 等;
  (9)通知(notification):通过选定的媒介向用户发送的有关某事件的信息;
  (10)远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行;
  (11)模板(template):用于快速定义被监控主机的预设条目集合,通常包含了 item、trigger、graph、screen、application 以及 low-level discovery rule;模板可以直接链接至某个主机;
  (12)应用(application):一组 item 的集合;
  (13)web 场景(web scennario):用于检测 web 站点可用性的一个或多个 HTTP 请求;
  (14)前端(frontend):Zabbix 的 web 接口;

  8>进程构成
  默认情况下 zabbix 包含 5 个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外 zabbix_java_gateway 是可选,需要另外安装。
  (1)zabbix_agentd
客户端守护进程,收集客户端数据,例如 cpu 负载、内存、硬盘使用情况等
  (2)zabbix_get
    zabbix 工具,单独使用的命令,通常在 server 或者 proxy 端执行, 用户获取被监控端数据, 通常用于排错。例如在 server 端获取不到客户端的内存数据,我们可以使用 zabbix_get 获取客户端的内容的方式来做故障排查。
  (3)zabbix_sender
    zabbix 工具,用于发送数据给 server 或者 proxy,通常用于耗时比较长的 check,并且与 trapper 配合使用。 生存环境中,个别非常耗时间 check 经常导致 zabbix 超时。于是我们在脚本执行完毕之后,使用 sender 主动提交数据。
  (4)zabbix_server
    zabbix 服 务 端 守 护 进 程,zabbix_agentd 、zabbix_get 、zabbix_sender 、zabbix_proxy 、zabbix_java_gateway 的数据最终都是提交到 server
  备注:当然不是数据都是主动提交给 zabbix_server,大多数情况下都是 server 主动去取数据。
  (5)zabbix_proxy
zabbix 代理守护进程,功能类似 server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到 server 里。一般跨机房、地区的环境需要用到 proxy。
  (6)zabbix_java_gateway
zabbix2.0 之后引入的一个功能。顾名思义: Java 网关,类似 agentd,但是只用于 Java 方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到 server 或者proxy。

 

7、Zabbix配置

  1>前期规划:
  192.168.100.101    zabbix-server
  192.168.100.10      node1
  192.168.100.20      node2

三个节点分别进行:
1、关闭防火墙,禁用 SElinux systemctl stop firewalld;systemctl disable firewalld Removed symlink
/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service. sed -i 's/=enforcing/=disabled/' /etc/sysconfig/selinux sed -i 's/=enforcing/=disabled/' /etc/selinux/config setenforce 0
2、安装常用软件:
yum install net-tools bash-completion wget vim ntpdate -y
3、时间同步: ntpdate cn.pool.ntp.org hwclock
-w #以系统时钟为准,校正硬件时钟

  2>zabbix-server端配置

# LNMP环境配置:
[root@zabbix-server ~]# yum install httpd mariadb mariadb-server php php-mysql php-gd -y

# 配置zabbix yum源
[root@zabbix-server ~]# vim /etc/yum.repos.d/zabbix.repo
[root@zabbix-server ~]# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - \$basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/\$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - \$basearch
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/\$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1

# 添加gpgkey,添加之后即可使用:
[root@zabbix-server ~]# curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1719  100  1719    0     0   4313      0 --:--:-- --:--:-- --:--:--  4329
[root@zabbix-server ~]# curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1333  100  1333    0     0   1595      0 --:--:-- --:--:-- --:--:--  1594

# 安装zabbix server:
[root@zabbix-server ~]# yum makecache
[root@zabbix-server ~]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-release -y
[root@zabbix-server ~]#rpm -qa | grep zabbix
zabbix-web-mysql-4.0.18-1.el7.noarch
zabbix-server-mysql-4.0.18-1.el7.x86_64
zabbix-agent-4.0.18-1.el7.x86_64
zabbix-web-4.0.18-1.el7.noarch
zabbix-release-4.0-2.el7.noarch

# 修改php时区:
[root@zabbix-server ~]# sed -i 's@# php_value date.timezone Europe/Riga@php_value date.timezone Asia/Shanghai@g' /etc/httpd/conf.d/zabbix.conf

# 数据库设置:
[root@zabbix-server ~]# systemctl start mariadb #启动数据库
[root@zabbix-server ~]# systemctl enable mariadb #设为开机自启动
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

# 创建zabbix数据库及用户
[root@zabbix-server ~]# mysql -e "create database zabbix character set utf8 collate utf8_bin;"
[root@zabbix-server ~]# mysql -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';"
[root@zabbix-server ~]# mysqladmin flush-privileges

# 导入数据库
[root@zabbix-server ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.18/
[root@zabbix-server zabbix-server-mysql-4.0.18]# zcat create.sql.gz | mysql -uzabbix -p zabbix
Enter password:
[root@zabbix-server zabbix-server-mysql-4.0.18]#cd
[root@zabbix-server ~]# mysql -uzabbix -p -e 'use zabbix;show tables;'
Enter password:
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
| actions                    |
| alerts                     |
......

# 修改zabbix配置文件,路径:/etc/zabbix/zabbix_server.conf
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
# 修改主要参数
DBName=zabbix 数据库名称
DBUser=zabbix 数据库用户
DBPassword=zabbix 数据库密码

# 启动zabbix及apache
[root@zabbix-server ~]# systemctl start zabbix-server.service httpd.service
[root@zabbix-server ~]# systemctl enable zabbix-server.service httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@zabbix-server ~]# netstat -lnupt | egrep '80|10051'
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      7454/zabbix_server  
tcp6       0      0 :::80                   :::*                    LISTEN      7452/httpd          
tcp6       0      0 :::10051                :::*                    LISTEN      7454/zabbix_server

  3>浏览器访问:http://192.168.100.101/zabbix

  

 

  点击 Next Step 进行安装

  

 

  首先要确保没有 no ,如果时区没有改好会提示我们进行修改

  

 

  账号和密码都是我们刚刚在配置文件中设置的,端口默认就是3306

    

 

  此处为我们的 zabbix 起一个名字,一会在右上角会显示

  

 

  最后是展示我们的配置信息,可以查看到哪里有错误

  

 

  最后点击Finish

  

 

 

   登录zabbix,默认用户名:Admin    密码:zabbix

  不确定的,可以在zabbix-server上使用命令:mysql -uzabbix -p -e "select * from zabbix.users\G" 查看

[root@zabbix-server ~]# mysql -uzabbix -p -e "select * from zabbix.users\G"
Enter password: 
*************************** 1. row ***************************
        userid: 1
         alias: Admin
          name: Zabbix
       surname: Administrator
        passwd: 5fce1b3e34b520afeffb37ce08c7cd66

  

 

  提示:登录上去请立即修改密码

  

 

  可以修改密码,语言,修改语言为中文,如果出现乱码,如下进行解决:

    1)找到本地 C:\Windows\Fonts\ simkai.ttf(楷体)上传到服务器 zabbix 网站字体目录:/usr/share/zabbix/fonts/ 下。

    2)修改 zabbix php 配置文件,请执行命令:sed -i 's/graphfont/simkai/g' /usr/share/zabbix/include/defines.inc.php

  3>在 zabbix-server 端,配置 zabbix-agent 端,使其能够监测自己

[root@zabbix-server ~]#grep ^Server /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1           #修改 Server 端的 IP 地址(被动模式 IP 地址)
ServerActive=127.0.0.1     #主动模式,主动向Server端报告
[root@ansible-server ~]#systemctl start zabbix-agent.service    #启动服务
[root@ansible-server ~]#systemctl enable zabbix-agent.service   #设为开机自启动
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@zabbix-server ~]#netstat -lnupt | grep 1005
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      7844/zabbix_agentd  
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      7381/zabbix_server  
tcp6       0      0 :::10050                :::*                    LISTEN      7844/zabbix_agentd  
tcp6       0      0 :::10051                :::*                    LISTEN      7381/zabbix_server  
# 10051 为 server 端口,10050 为agent 端口

  

 

  刷新页面,可以看到,已经没有了如上 “黄色” 警示信息

  

 

  可以在 → 配置 → 主机,查看当前主机状态

  4>监控linux服务器:node1 192.168.100.10

  监控方式很多,比如 snmp、ssh、telent 脚本、agent 等,本例使用 agent 实现监控

# 配置 zabbix yum 源
[root@node1 ~]# vim /etc/yum.repos.d/zabbix.repo [zabbix] name=Zabbix Official Repository - \$basearch baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/\$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591 [zabbix-non-supported] name=Zabbix Official Repository non-supported - \$basearch baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/\$basearch/ enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX gpgcheck=1 [root@node1 ~]# curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591 [root@node1 ~]# curl https://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX -o /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
[root@node1 ~]# yum clean all
[root@node1 ~]# yum makecache

# 安装 agent
# 注意:zabbix-agent 依赖 zabbix,zabbix-sender 并非必须,只有需要主动向服务端发送通知才使用。
[root@node1 ~]# yum install zabbix-agent -y

# 修改配置文件
[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
# 修改如下配置,如下 ip 为 zabbix server 地址
Server=192.168.100.101 #主动
ServerActive=192.168.100.101 #被动

# 开启 zabbix_agent
[root@node1 ~]# systemctl start zabbix-agent.service
[root@node1 ~]# systemctl enable zabbix-agent.service
[root@node1 ~]# netstat -lnupt | grep 10050
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1580/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      1580/zabbix_agentd  

  在 zabbix web 管理界面进行设置

  

 

  

   

 

 

  "模板"点击添加即可

  

 

 

 

  5>触发简单触发器,查看zabbix监控效果

  

 

 

   

 

 

   触发最简单的一个触发器(/etc/passwd更改),查看告警效果

  

 

 

 

[root@zabbix-server ~]# md5sum /etc/passwd
0fa188ce2532ef80c4a6146ccb50373c  /etc/passwd
[root@zabbix-server ~]# cksum /etc/passwd
2370065313 1165 /etc/passwd
[root@zabbix-server ~]# useradd test    #创建一个测试用户,即间接更改/etc/passwd文件

  web界面查看

  

 

 

  在web页面添加一个主机,数据库就会多一条记录,默认60s采集一次数据库,所以有时候改了,并不能马上生效,可以,重启zabbix-server,加速生效:systemctl restart zabbix-server.service

  6>创建触发器

  

 

 

  

 

 

  

  该触发器监控登录系统数,大于4即进行报警,在node1节点创建环境,web环境查看

[root@node1 ~]# who
root     tty1         2020-03-22 21:26
root     pts/0        2020-03-23 18:21 (192.168.100.1)
root     pts/1        2020-03-23 14:08 (192.168.100.1)
root     pts/2        2020-03-23 18:21 (192.168.100.1)
root     pts/3        2020-03-23 18:21 (192.168.100.1)
root     pts/4        2020-03-23 18:21 (192.168.100.1)
root     pts/5        2020-03-23 18:22 (192.168.100.1)

  

  也可以自动生成触发器

  

 

  

 

   报警的声音也可以自定义

[root@zabbix-server ~]#cd /usr/share/zabbix/audio/
[root@zabbix-server audio]#ll
总用量 88
-rw-r--r--. 1 root root  7454 2月  21 23:12 alarm_average.mp3
-rw-r--r--. 1 root root 29381 2月  21 23:12 alarm_disaster.mp3
-rw-r--r--. 1 root root 12719 2月  21 23:12 alarm_high.mp3
-rw-r--r--. 1 root root  6417 2月  21 23:12 alarm_information.mp3
-rw-r--r--. 1 root root  1616 2月  21 23:12 alarm_ok.mp3
-rw-r--r--. 1 root root 12816 2月  21 23:12 alarm_warning.mp3
-rw-r--r--. 1 root root  1041 2月  21 23:12 no_sound.mp3

  

 

  7>自定义报警

   (1)自定义监控项

[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=login_users,who|wc -l

[root@node1 ~]# systemctl restart zabbix-agent.service


  (2)zabbix-server端测试取值:

[root@zabbix-server ~]#yum install zabbix-get.x86_64 -y
[root@zabbix-server ~]#zabbix_get -s 192.168.100.10 -k login_users
3    #当前node1节点login users数为3

  (3)zabbix-server web端进行配置

  自定义监控项:

  

  给监控项创建触发器:

  

 

 

  自定义发件人:

[root@zabbix-server ~]# yum install sendmail -y    #安装sendmail或postfix (邮件传送代理MTA)
[root@zabbix-server ~]# systemctl start sendmail
[root@zabbix-server ~]# systemctl enable sendmail
[root@zabbix-server ~]# yum install mailx -y       #安装邮件发送工具mailx (邮件用户代理MUA)
[root@zabbix-server ~]#vim /etc/mail.rc 


set  from=zyyyxdz@163.com         #163个人邮箱,用于zabbix服务端转发邮件到指定邮箱
set  smtp=smtp.163.com             #填写163邮箱服务器地址smtp
set  smtp-auth-user=zyyyxdz      #163个人邮箱用户
set  smtp-auth-password=*******    #163个人邮箱授权码,请根据自己的授权码填写
set  smtp-auth=login               #登录

[root@zabbix-server ~]#echo "test" | mail -s 'test linux' 1611748256@qq.com #向自己个人邮箱测试发件


  查看zabbix默认存放脚本路径

[root@zabbix-server ~]#vim /etc/zabbix/zabbix_server.conf 

  进入zabbix默认存放脚本路径,编写sendmail.sh脚本

[root@zabbix-server ~]#cd /usr/lib/zabbix/alertscripts/
[root@zabbix-server alertscripts]#vim sendmail.sh [root@zabbix-server alertscripts]#cat sendmail.sh #!/bin/bash #Author:yangyang #Blog: #Time:2020-03-24 19:40:29 #Name:sendmail.sh #Version:V1.0 #Description:This is a test script. messages=`echo $3 | tr '\r\n' '\n'` subject=`echo $2 | tr '\r\n' '\n'` echo "${messages}" | mail -s "${subject}" $1 >>/tmp/sendmail.log 2>&1
[root@zabbix-server alertscripts]#chown zabbix.zabbix sendmail.sh
[root@zabbix-server alertscripts]#chmod 755 sendmail.sh
[root@zabbix-server alertscripts]#./sendmail.sh 1611748256@qq.com "test linux1" "test" #测试执行

  zabbix web端进行配置:

  管理—–报警媒介类型—–创建媒介类型

  

 

  

 

  上图,用于接收报警邮件的个人邮箱一定要点更新!

  启用报警发送邮件的动作:

  

  

 

 

 

  (4)触发报警进行测试

[root@node1 ~]# who
root     tty1         2020-03-24 16:42
root     pts/0        2020-03-24 20:35 (192.168.100.1)
root     pts/1        2020-03-24 20:29 (192.168.100.1)
root     pts/2        2020-03-24 20:35 (192.168.100.1)
root     pts/3        2020-03-24 20:35 (192.168.100.1)
root     pts/4        2020-03-24 20:35 (192.168.100.1)
root     pts/5        2020-03-24 20:35 (192.168.100.1)

  

 

  

   (5)也可以自定义报警邮件内容模板

  

 

  

 

例(模板):
默认标题: 故障{TRIGGER.STATUS},服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障
! 消息内容: 告警地址:{HOST.IP} 告警主机:{HOST.NAME} 监控项目:{ITEM.NAME} 告警时间:{EVENT.DATE} {EVENT.TIME} 告警等级:{TRIGGER.SEVERITY} 告警信息: {TRIGGER.NAME} 当前状态:{TRIGGER.STATUS} 事件ID:{EVENT.ID}

更多变量来源于,官方文档:
https://www.zabbix.com/documentation/4.0/zh/manual/appendix/macros/supported_by_location

 

  

 

  再次触发查看

  

 

  

 

  8>使用grafana自定义图形

  安装:官网 https://mirror.tuna.tsinghua.edu.cn/grafana/yum/rpm/  复制要下载的版本链接

[root@zabbix-server ~]#wget https://mirror.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-6.5.3-1.x86_64.rpm
[root@zabbix-server ~]#yum localinstall grafana-6.5.3-1.x86_64.rpm -y       #有依赖包,选择localinstall命令
[root@zabbix-server ~]#systemctl start grafana-server.service 
[root@zabbix-server ~]#systemctl enable grafana-server.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server.service.

  grafana的主要内容:插件、数据源、dashboard(展示面板)

安装插件:
[root@zabbix-server ~]#grafana-cli plugins list-remote    #列举所有远程插件
[root@zabbix-server ~]#grafana-cli plugins list-remote | grep zabbix
id: alexanderzobnin-zabbix-app version: 3.11.0
[root@zabbix-server ~]#grafana-cli plugins install alexanderzobnin-zabbix-app    #下载zabbix插件
installing alexanderzobnin-zabbix-app @ 3.11.0
from: https://grafana.com/api/plugins/alexanderzobnin-zabbix-app/versions/3.11.0/download
into: /var/lib/grafana/plugins

✔ Installed alexanderzobnin-zabbix-app successfully 

Restart grafana after installing plugins . <service grafana-server restart>
[root@zabbix-server ~]#ll /var/lib/grafana/plugins/
总用量 4
drwxr-xr-x 8 root root 4096 3月  25 15:59 alexanderzobnin-zabbix-app
[root@zabbix-server ~]#service grafana-server restart    #直接启动
Restarting grafana-server (via systemctl):                 [  确定  ]
[root@zabbix-server ~]#netstat -nutlp | grep 3000 
tcp6       0      0 :::3000                 :::*                    LISTEN      3766/grafana-server 

  浏览器访问:192.168.100.101:3000

  

 

 

 

  登录第一次登录提示更改密码,也可以跳过:

  

 

 

  默认UI界面为黑色,先改为亮模式(本人喜好)

 

  

 

 

  点击插件,启用zabbix插件

  

 

 

  

 

 

 

  添加数据源:

  

 

 

  

 

 

  

  http://localhost/zabbix/api_jsonrpc.php

 

 

 

  

 

 

 

  也可以去官网  https://grafana.com/grafana/dashboards  下载:

  

 

  导入下载的模板

  

 

 

  

 

 

  

 

 

  下载的有些模板需要配套使用

  

 

 

 

  我们可以试着去自定义一个图形:

  

 

 

  

 

 

  

 

 

  

 

 

  

 

 

  

 

 

 

  9>自定义模板:模板可以帮我们快速监控主机
  创建监控项 → 定义模板

例:创建tcp的11种状态监控项
[root@node1 ~]# man netstat    #过滤state,查看tcp的11种状态
ESTABLISHED
SYN_SENT
SYN_RECV
FIN_WAIT1
FIN_WAIT2
TIME_WAIT
CLOSE
CLOSE_WAIT
LAST_ACK
LISTEN
CLOSING
[root@node1 ~]# rpm -ql zabbix-agent | grep "userparameter"
/usr/share/doc/zabbix-agent-4.0.18/userparameter_mysql.conf    #系统提供关于配置监控项的模板文件
[root@node1 ~]# cd /usr/share/doc/zabbix-agent-4.0.18/
[root@node1 zabbix-agent-4.0.18]# ls
AUTHORS  ChangeLog  COPYING  NEWS  README  userparameter_mysql.conf
[root@node1 zabbix-agent-4.0.18]# tail -1 userparameter_mysql.conf 
UserParameter=mysql.version,mysql -V[root@node1 zabbix-agent-4.0.18]# vim a.txt
[root@node1 zabbix-agent-4.0.18]# cat a.txt 
ESTABLISHED
SYN_SENT
SYN_RECV
FIN_WAIT1
FIN_WAIT2
TIME_WAIT
CLOSE
CLOSE_WAIT
LAST_ACK
LISTEN
CLOSING
[root@node1 zabbix-agent-4.0.18]# for n in `cat a.txt`;do echo "UserParameter=$n,netstat -ant | grep -c $n" >> zbx_tcp.conf;done    #使用for循环创建监控项配置文件创建
[root@node1 zabbix-agent-4.0.18]# cat zbx_tcp.conf 
UserParameter=ESTABLISHED,netstat -ant | grep -c ESTABLISHED
UserParameter=SYN_SENT,netstat -ant | grep -c SYN_SENT
UserParameter=SYN_RECV,netstat -ant | grep -c SYN_RECV
UserParameter=FIN_WAIT1,netstat -ant | grep -c FIN_WAIT1
UserParameter=FIN_WAIT2,netstat -ant | grep -c FIN_WAIT2
UserParameter=TIME_WAIT,netstat -ant | grep -c TIME_WAIT
UserParameter=CLOSE,netstat -ant | grep -c CLOSE
UserParameter=CLOSE_WAIT,netstat -ant | grep -c CLOSE_WAIT
UserParameter=LAST_ACK,netstat -ant | grep -c LAST_ACK
UserParameter=LISTEN,netstat -ant | grep -c LISTEN
UserParameter=CLOSING,netstat -ant | grep -c CLOSING
[root@node1 zabbix-agent-4.0.18]# rm -f a.txt 
[root@node1 zabbix-agent-4.0.18]# ls
AUTHORS  ChangeLog  COPYING  NEWS  README  userparameter_mysql.conf  zbx_tcp.conf
[root@node1 zabbix-agent-4.0.18]# mv zbx_tcp.conf /etc/zabbix/zabbix_agentd.d/    #mv移动到/etc/zabbix/zabbix_agentd.d/目录下,zabbix监控项支持include方式
[root@node1 zabbix-agent-4.0.18]# cd /etc/zabbix/zabbix_agentd.d/
[root@node1 zabbix_agentd.d]# ls
zbx_tcp.conf
[root@node1 zabbix_agentd.d]# systemctl restart zabbix-agent.service     #重启服务

zabbix-server端测试取值:
[root@zabbix-server ~]#zabbix_get -s 192.168.100.10 -k LISTEN
7

  zabbix web 界面进行配置

  首先自定义第一个监控项,其余监控项进行克隆创建

  

 

  

  

 

 

  

 

 

  一直克隆,至11个监控项完成

 

  创建模板:

  

 

 

 

  复制关于主机的监控项至模板:

  

 

 

  

 

 

  

 

 

  为模板添加应用集:

  

 

 

  

 

 

 

  给linux-server1主机链接模板:

  

 

 

 

  给zabbix-server链接模板:

  

 

 

  

  重启zabbix-server.service,发现不支持

  

 

 

 

  原因:没有复制配置文件至zabbix-server主机

  解决:复制文件过去

[root@node1 zabbix_agentd.d]# scp zbx_tcp.conf 192.168.100.101:`pwd`
The authenticity of host '192.168.100.101 (192.168.100.101)' can't be established.
ECDSA key fingerprint is SHA256:c7mUFKkvwEMIl1rHUSJ4+/ApfPd526t4okgzKIFYmf4.
ECDSA key fingerprint is MD5:c0:94:bd:19:cb:61:ce:91:27:de:52:50:57:3d:e6:e2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.100.101' (ECDSA) to the list of known hosts.
root@192.168.100.101's password: 
zbx_tcp.conf                                      100%  609   267.9KB/s   00:00 

zabbix-server端重启服务:
[root@zabbix-server ~]#systemctl restart zabbix-server.service
[root@zabbix-server ~]#systemctl restart zabbix-agent.service

  发现还没有解决:

  

 

  再重启服务加速生效,再进行查看,成功。查看最新数据:

  

 

 

  模板也可以导出:配置 → 勾选模板 → 导出(模板一般和模板监控项配置文件对应)

  模板文件获取:

    zabbix.org  →  Community repos (templates/tools)  →  https://github.com/monitoringartist/zabbix-community-repos

 

  10>使用percona监控mysql
  下载插件:

  

 

 

    

 

 

  

 

 

[root@zabbix-server ~]#rz    #上传下载的percona文件,使用lrzsz软件进行上传下载

[root@zabbix-server ~]#ls
anaconda-ks.cfg  grafana-6.5.3-1.x86_64.rpm
bin              percona-zabbix-templates-1.1.8-1.noarch.rpm
[root@zabbix-server ~]#rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm     #安装
警告:percona-zabbix-templates-1.1.8-1.noarch.rpm: 头V4 DSA/SHA1 Signature, 密钥 ID cd2efd2a: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:percona-zabbix-templates-1.1.8-1 ################################# [100%]

Scripts are installed to /var/lib/zabbix/percona/scripts
Templates are installed to /var/lib/zabbix/percona/templates
[root@zabbix-server ~]#cd /var/lib/zabbix/percona/templates/    #进入模板目录
[root@zabbix-server templates]#ls
userparameter_percona_mysql.conf
zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml
[root@zabbix-server templates]#mv userparameter_percona_mysql.conf /etc/zabbix/zabbix_agentd.d/        #拷贝配置文件到/etc/zabbix/zabbix_agentd.d/
[root@zabbix-server templates]#sz zabbix_agent_template_percona_mysql_server_ht_2.0.9-sver1.1.8.xml    #下载xml到本地,使用web界面导入模板

zabbix web界面导入模板:
关于模板不兼容问题解决:
  安装一个低版本的zabbix2.2,导入模板
  升级zabbix2.2到zabbix4.0,导出升级后的模板

兼容文件提取:
链接:https://pan.baidu.com/s/1ZPW9AtG2VDbaEvMxLTVVMQ
提取码:0yl8

mysql监控项详解:https://www.jianshu.com/p/516955dd3099

[root@zabbix-server templates]#systemctl restart zabbix-agent.service     #重启使生效
[root@zabbix-server templates]#cat /etc/zabbix/zabbix_agentd.d/userparameter_percona_mysql.conf
......
UserParameter=MySQL.Open-files,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh ij
UserParameter=MySQL.State-closing-tables,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh lq
UserParameter=MySQL.running-slave,/var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh running-slave
[root@zabbix-server templates]#bash -x /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh
+ ITEM=
+ HOST=localhost
++ dirname /var/lib/zabbix/percona/scripts/get_mysql_stats_wrapper.sh
+ DIR=/var/lib/zabbix/percona/scripts
+ CMD='/usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg'
+ CACHEFILE=/tmp/localhost-mysql_cacti_stats.txt
......
[root@zabbix-server templates]#/usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg
ERROR: Access denied for user 'cactiuser'@'localhost' (using password: YES) #执行命令报错,发现'cactiuser'@'localhost' 用户名密码有问题
[root@zabbix-server templates]#vim /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php #编辑文件更改

 

 

[root@zabbix-server templates]#/usr/bin/php -q /var/lib/zabbix/percona/scripts/ss_get_mysql_stats.php --host localhost --items gg
gg:4
[root@zabbix-server templates]#ll /tmp/localhost-mysql_cacti_stats.txt
-rw-rw-r-- 1 root root 1327 3月  25 20:20 /tmp/localhost-mysql_cacti_stats.txt
[root@zabbix-server templates]#rm -f /tmp/localhost-mysql_cacti_stats.txt
[root@zabbix-server templates]#zabbix_get -s 127.0.0.1 -k MySQL.Open-files #使用zabbix_get测试,文件所有者所属组为zabbix,而不会后因为权限问题报错
21
[root@zabbix-server templates]#ll /tmp/localhost-mysql_cacti_stats.txt
-rw-rw-r-- 1 zabbix zabbix 1327 3月  25 20:20 /tmp/localhost-mysql_cacti_stats.txt

  给zabbix-server主机链接该模板,查看最新数据发现没有数据

  

 

 

  配置  →  主机  →  zabbix-server  →  监控项  →  MYSQL应用集  →  全选监控项:

  

 

  点击批量更新,定义更新时间为30秒,点击更新:

  

 

  同样也要更改配置文件,重新启动服务:

  

 

[root@zabbix-server templates]#systemctl restart zabbix-agent.service 
[root@zabbix-server templates]#systemctl restart zabbix-server.service 

  再次查看发现最新数据已经有了数据。

 

  在监控项中有一个警告信息,先更改配置文件,添加root用户执行,我的mysql root用户没密码,再到zabbix web界面,我们把他停用,因为这个文件是mysql从库需要的,主库不需要。

  

 

  

 

  11>自动化监控
  (1)配置  →  自动发现(比较耗费资源)
  (2)通过自动注册完成自动化监控(推荐)

    配置自动注册的动作

  

 

    

 

  

 

  

 

  

 

  

 

  

 

  

 

 

  配置客户端zabbix-agent的配置文件

[root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf    #更改以下四行就行
Server=192.168.100.101
ServerActive=192.168.100.101
Hostname=192.168.100.10
HostMetadata=web    #定义元数据即标签

  删除之前的主机linux-server1,重启服务,查看自动注册效果

[root@node1 ~]# systemctl restart zabbix-agent.service

  

 

  在更改配置文件,更改HostMetadata=db,删除主机再重启服务查看自动注册效果

 

  注意:报警动作,可以定义什么时候收报警文件;也可以设置每一个监控项 自定义时间间隔

 

  12>zabbix-agent主动模式
  zabbix-agent默认为被动模式,特别消耗资源,所以建议修改为主动模式
  配置  →  模板  →  监控项  →  全选  →  批量更新  →  类型选择主动模式(即可完成)

# vim /etc/zabbix/zabbix_agentd.conf    #查看配置文件,使其指向zabbix-server
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server

 

  13>zabbix版本升级
  优点:
    提高性能
    增加新功能
    解决zabbix版本不兼容的问题

  前期准备:192.168.100.20    zabbix2-2(准别zabbix2.2版本升级至4.0版本),关闭防火墙、禁用selinux

[root@zabbix-2-2 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/2.2/rhel/7/x86_64/zabbix-release-2.2-1.el7.noarch.rpm
[root@zabbix-2-2 ~]# vim /etc/yum.repos.d/zabbix.repo    #更改为清华源

 


[root@zabbix-2-2 ~]# yum install zabbix-server-mysql zabbix-web-mysql -y
[root@zabbix-2-2 ~]# yum install mariadb-server -y
[root@zabbix-2-2 ~]# systemctl start mariadb.service
[root@zabbix-2-2 ~]# systemctl enable mariadb.service
[root@zabbix
-2-2 ~]# mysql_secure_installation #安全初始化
[root@zabbix
-2-2 ~]# mysql #连接mysql
MariaDB [(none)]
> create database zabbix charset utf8;
Query OK,
1 row affected (0.00 sec)
MariaDB [(none)]
> grant all on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK,
0 rows affected (0.00 sec)
MariaDB [(none)]
> quit Bye
[root@zabbix
-2-2 ~]# rpm -ql zabbix-server-mysql
[root@zabbix
-2-2 ~]# cd /usr/share/doc/zabbix-server-mysql-2.2.23/create/
[root@zabbix
-2-2 create]# ls data.sql images.sql schema.sql
[root@zabbix
-2-2 create]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@zabbix
-2-2 create]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbix
-2-2 create]# mysql -uzabbix -pzabbix zabbix < data.sql
[root@zabbix
-2-2 create]# vim /etc/zabbix/zabbix_server.conf
# 修改主要参数
DBName=zabbix 数据库名称
DBUser=zabbix 数据库用户
DBPassword=zabbix 数据库密码 [root@zabbix
-2-2 create]# systemctl start zabbix-server.service
[root@zabbix-2-2 create]# systemctl enable zabbix-server.service
[root@zabbix
-2-2 create]# vim /etc/httpd/conf.d/zabbix.conf
# 修改时区
php_value date.timezone Asia/Shanghai
[root@zabbix
-2-2 create]# systemctl start httpd
[root@zabbix-2-2 create]# systemctl start httpd

升级:
[root@zabbix
-2-2 create]# wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm

  web端查看:

  

 

  

 

  

 

  

 

  

 

  

 

  

 

  

 

  至此,zabbix2.2版本安装完成,接下来进行版本升级

  第一步:清华源复制4.0包的地址

  

 

[root@zabbix-2-2 ~]# wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
[root@zabbix-2-2 ~]# rpm -Uvh zabbix-release-4.0-2.el7.noarch.rpm #rpm -U :升级
[root@zabbix-2-2 ~]# mysqldump -B zabbix >zabbix.sql #建议先对数据库进行备份,防止升级失败
[root@zabbix-2-2 ~]# vim /etc/yum.repos.d/zabbix.repo #更改清华源地址,下载快
[root@zabbix-2-2 ~]# yum install zabbix-server-mysql zabbix-web-mysql -y #重新安装即升级
[root@zabbix-2-2 ~]# systemctl start zabbix-server.service #升级后zabbix-server自动关闭,重新打开,将自己更新配置文件
[root@zabbix-2-2 ~]# systemctl enable zabbix-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
[root@zabbix-2-2 ~]# systemctl restart httpd #重启httpd服务,web页面查看升级效果

  

 

  升级成功!

 

  14>zabbix分布式监控
    zabbix-proxy 可以代替 zabbix-server 检索客户端的数据,然后把数据汇报给 zabbix server,并且在一定程度上分担了 zabbix-server 的压力,zabbix-proxy 可以非常简便的实现了集中式、分布式监控。
    zabbix proxy 使用场景:
      监控远程区域设备
      监控本地网络不稳定区域
      当 zabbix 监控上千设备时,使用它来减轻 server 的压力
      简化 zabbix 的维护
    zabbix-proxy 仅仅需要一条 tcp 连接到 zabbix server,所以防火墙上仅仅需要加上一条规则即可。zabbix-proxy 数据库必须和  server 分开,否则数据会被破坏,毕竟这两个数据库的表大部分都相同。总之记住,数据库分开即可。
    proxy 收集到数据之后,首先将数据缓存在本地,然后在一定得时间之后传递给 zabbix server,这个时间由 proxy 配置文件中参数 ProxyLocalBuffer and ProxyOfflineBuffer 决定。

    zabbix-server通过zabbix-proxy(代理人)监控zabbix-agent
    zabbix-proxy:没有web界面,没有报警进程
    前期准备:
      zabbix-server   192.168.1.8(桥接)
      zabbix-proxy    172.168.1.7(桥接)、192.168.100.101(NAT)
      zabbix-agent    192.168.100.10(NAT)
      关闭防火墙、禁用selinux

三个节点:
yum install ntpdate -y
ntpdate cn.pool.ntp.org
wget https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
rpm -ivh zabbix-release-4.0-2.el7.noarch.rpm
vim /etc/yum.repos.d/zabbix.repo

 


zabbix-server安装:
[root@zabbix-server ~]# yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-release -y
[root@zabbix-server ~]# yum install httpd mariadb mariadb-server php php-mysql php-gd -y
[root@zabbix-server ~]# sed -i 's@# php_value date.timezone Europe/Riga@php_value date.timezone Asia/Shanghai@g' /etc/httpd/conf.d/zabbix.conf
[root@zabbix-server ~]# systemctl start mariadb
[root@zabbix-server ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@zabbix-server ~]# mysql -e "create database zabbix character set utf8 collate utf8_bin;"
[root@zabbix-server ~]# mysql -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';"
[root@zabbix-server ~]# mysqladmin flush-privileges
[root@zabbix-server ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.18/
[root@zabbix-server zabbix-server-mysql-4.0.18]# zcat create.sql.gz | mysql -uzabbix -p zabbix
Enter password: 
[root@zabbix-server zabbix-server-mysql-4.0.18]#cd
[root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
 # 修改主要参数
  DBName=zabbix       数据库名称
  DBUser=zabbix       数据库用户
  DBPassword=zabbix   数据库密码
[root@zabbix-server ~]# systemctl start zabbix-agent
[root@zabbix-server ~]# systemctl enable zabbix-agent
[root@zabbix-server ~]# systemctl start zabbix-server.service httpd.service
[root@zabbix-server ~]# systemctl enable zabbix-server.service httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
web浏览器:192.168.1.8/zabbix  →  进一步配置

zabbix
-proxy安装: [root@zabbix-proxy ~]# yum install mariadb-server zabbix-proxy-mysql zabbix-get -y [root@zabbix-proxy ~]# systemctl start mariadb [root@zabbix-proxy ~]# systemctl enable mariadb Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service. [root@zabbix-proxy ~]# mysql_secure_installation [root@zabbix-proxy ~]# mysql -e "create database zabbix_proxy character set utf8 collate utf8_bin;" [root@zabbix-proxy ~]# mysql -e "grant all privileges on zabbix_proxy.* to zabbix_proxy@localhost identified by 'zabbix_proxy';" [root@zabbix-proxy ~]# mysqladmin flush-privileges [root@zabbix-proxy ~]# vim /etc/zabbix/zabbix_proxy.conf ProxyMode=0 #开启主动模式 Server=192.168.1.8 #zabbix-server端IP ServerPort=10051 #zabbix-server端口 Hostname=Zabbix proxy1 ListenPort=10051 #proxy端监听的端口 DBHost=localhost DBName=zabbix_proxy DBUser=zabbix_proxy DBPassword=zabbix_proxy [root@zabbix-proxy ~]#rpm -ql zabbix-proxy-mysql ...... /usr/share/doc/zabbix-proxy-mysql-4.0.19/schema.sql.gz ...... [root@zabbix-proxy ~]#cd /usr/share/doc/zabbix-proxy-mysql-4.0.19/ [root@zabbix-proxy zabbix-proxy-mysql-4.0.19]#zcat schema.sql.gz | mysql -uzabbix_proxy -p zabbix_proxy Enter password: [root@zabbix-proxy zabbix-proxy-mysql-4.0.19]#cd [root@zabbix-proxy ~]#systemctl start zabbix-proxy [root@zabbix-proxy ~]#systemctl enable zabbix-proxy Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-proxy.service to /usr/lib/systemd/system/zabbix-proxy.service.

zabbix
-agent安装: [root@zabbix-agent ~]# yum install zabbix-agent -y [root@zabbix-agent ~]# vim /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 Server=192.168.1.7 #填写zabbix-proxy的IP StartAgents=5 Hostname=Zabbix agent1 HostMetadataItem=system.uname Include=/etc/zabbix/zabbix_agentd.d/*.conf UnsafeUserParameters=1 [root@zabbix-agent ~]# systemctl start zabbix-agent [root@zabbix-agent ~]# systemctl enable zabbix-agent Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.

  zabbix-server web端进行配置

  

 

   

 

   

 

   

 

 

  15>zibbix性能调优
  1、zabbix是一个写多读少的业务,选用InnoDB引擎(mariadb 5.5)还可以将存储引擎升级成tokudb引擎;
  2、去掉无用的监控项,增加监控项的取值间隔,减少历史数据保存周期;
  3、还可以每个月对数据库的历史数据和趋势图的表进行分表处理(周期性分表),使数据库的压力减轻;
  4、改被动模式为主动模式,增加zabbix-proxy;
  5、针对zabbix-server进程调优,谁忙,就加大它的进程数量
    例:打开自动发现,每10秒采集一次,重启zabbix-server,查看图形-数据采集进程(Zabbix data gathering process busy %)立马上去了
    调优:vim /etc/zabbix/zabbix_server.conf 找到 StartDiscoverers=1改为5,重启zabbix-server使生效,查看图形-数据采集进程立马下来
  6、针对zabbix-server缓存调优,谁的剩余内存少,就加大它的缓存值
vim /etc/zabbix/zabbix_server.conf 找到 CacheSize 故意调小查看缓存不够的问题,图形查看(Zabbix cache usage,% used)


posted @ 2020-05-05 16:45  我听过  阅读(831)  评论(0编辑  收藏  举报