一、概述
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