一、概述 Zabbix 是一个企业级的分布式开源监控方案。Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制,允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据,Zabbix提供了出色的报告和数据可视化功能。 Zabbix是一个高度集成的网络监控解决方案,一个简单的安装包中提供多样性的功能。 Zabbix监控原理: Agentd安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送至Zabbix Server端,Zabbix Server收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。当Zabbix监控某个具体的项目,该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install等)。 二、结构 Zabbix由几个主要的软件组件构成,这些组件的功能如下。 Server Zabbix server 是监控代理程序报告系统可用性、系统完成整性和统计信息的核心组件 Zabbix Server负责接收agent发送的报告信息的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。 数据库存储 Database Storage:所有配置信息和Zabbix收集到的数据都被存储在数据库中。 Web界面 Web Interface:Zabbix的GUI接口,通常与Server运行在同一台主机上; 为了从任何地方和任何平台都轻松的访问Zabbix,Zabbix提供了基于Web的界面。该界面是Zabbix Server的一部分,通常(但不一定)跟Zabbix Server运行在同一台物理机器上。 如果使用SQLite,Zabbix Web界面必须要跟Zabbix Server运行在同一台物理机器上。 Proxy代理服务器 Zabbix proxy 可以替Zabbix Server收集性能和可用性数据。Proxy代理服务器是Zabbix软件可选择部署的一部分;当然,Proxy代理服务器可以帮助单台Zabbix Server分担负载压力。 Agent监控代理 Zabbix agent监控代理部署在监控目标上,能够主动监控本地资源和应用程序,并将收集到的数据报告给Zabbix Server。

五个程序的功能如下: zabbix server:zabbix服务端守护进程,其中zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy的数据最终都提交给zabbix server; zabbix agentd:客户端守护进程,负责收集客户端数据,例如:收集cpu负载、内存、硬盘使用情况等; zabbix proxy:zabbix分布式代理守护进程,通过大于500台主机,需要进行分布式监控架构部署; zabbix get:zabbix数据接收工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令; zabbix sender:zabbix数据发送工具,用户发送数据给server或proxy端,通常用户耗时比较长的检查。

Zabbix监控系统包括很多监控概念 主机(host):                     被监控的网络设备,可以写IP或者DNS; 主机组(host group):        主机组用于管理主机,可以批量设置权限; 监控项(item):                 具体监控项,items值由独立的keys进行识别; 触发器(trigger):             为某个items设置触发器,达到触发器会执行action动作; 事件(event):                  例如达到某个触发器,称之为一个事件; 动作(action):                 对于特定事件事先定义的处理方法,默认可以发送信息及发送命令; 报警升级(escalation):     发送警报或执行远程命令的自定义方案,如隔5分钟发送一次警报,共发送5次等。 媒介(media):                 发送通知的方式,可以支持Mail、SMS、Scripts等; 通知(notification):         通过设置的媒介向用户发送的有关某事件的信息; 远程命令                达到触发器,可以在被监控端执行命令; 模板(template):              可以快速监控被监控端,模块包含:item、trigger、graph、screen、application; web场景(web scennario)用于检测web站点可用性,监控HTTP关键词; web前端(frontend):       Zabbix的web接口; 图形(graph)                    监控图像; 屏幕(screens)                  屏幕显示; 幻灯(slide show)             幻灯显示

四、架构体系 Zabbix体系架构图

Proxy工作原理

一、服务端配置 1.更新yum仓库,Zabbix的安装 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm 2、yum 安装最新版本 mariadb yum -y install mariadb mariadb-server ls /etc/yum.repos.d yum clean all yum makecache yum repolist 3、安装 yum -y install zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql 4、修改一下配置文件——1、 vim /etc/my.cnf.d/server.cnf [mysqld] skip_name_resolve = ON #跳过主机名解析 innodb_file_per_table = ON # innodb_buffer_pool_size = 256M #缓存池大小 max_connections = 2000 #最大连接数 log-bin = master-log #开启二进制日志 重启我们的数据库服务:systemctl restart mariadb mysql_secure_installtion #初始化mariadb(可选) 5、创建数据库并授权账号 mysql MariaDB [(none)]> create database zabbix character set=utf8;
MariaDB [(none)]> grant all on zabbix.* to zbxuser@'192.168.11.%' identified by 'keer'; MariaDB [(none)]> flush privileges; systemctl restart mariadb 6、导入表 rpm -ql zabbix-server-mysql cp /usr/share/doc/zabbix-server-mysql-4.0.5/create.sql.gz ./ gzip -d create.sql.gz ls && head create.sql mysql -uroot -p0 zabbix < create.sql 导入以后,进去数据库查看一下: mysql -uroot -p0 MariaDB [(none)]> show databases; MariaDB [(none)]> use zabbix; Database changed MariaDB [zabbix]> show tables;

7、配置 server 端 cd /etc/zabbix/ && ls cp zabbix_server.conf{,.bak} vim zabbix_server.conf ListenPort=10051 #默认监听端口 SourceIP=192.168.11.11 #发采样数据请求的IP DBHost=192.168.11.11 #数据库对外的主机 DBName=zabbix #数据库名称 DBUser=zbxuser #数据库用户 DBPassword=keer #数据库密码 DBPort=3306 #数据库启动端口 systemctl restart zabbix-server.service ss -nutl |grep 10051

8、配置 web GUI vim /etc/php.ini date.timezone = Asia/Shanghai php配置文件中设置时区 systemctl restart httpd.service ss -nutl 使用浏览器访问192.168.11.11/zabbix

二、配置 agent 端 当我们把监控端配置启动以后,我们需要来设置一下我们的监控端,我们在被监控的主机安装好agent,设置好 他的server,并把他添加到server端,就能将其纳入我们的监控系统中去了。 1.安装 zabbix wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo [root@node1 ~]# wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm [root@node1 ~]# rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm [root@node1 ~]# yum -y install zabbix-agent zabbix-sender 2.修改配置文件 对配置文件做一个备份,然后去修改配置文件: [root@node1 ~]# cd /etc/zabbix/ [root@node1 zabbix]# ls zabbix_agentd.conf zabbix_agentd.d [root@node1 zabbix]# cp zabbix_agentd.conf{,.bak} [root@node1 zabbix]# vim zabbix_agentd.conf Server=192.168.11.11 #指明服务器是谁的 ListenPort=10050 #自己监听的端口 ListenIP=0.0.0.0 #自己监听的地址,0.0.0.0表示本机所有地址 StartAgents=3 #优化时使用的 ServerActive=192.168.11.11 #主动监控时的服务器 Hostname=node12 #自己能被server端识别的名称 systemctl restart zabbix-server.service ss -nutl |grep 10051