Zabbix
是款开源的网络监控软件(Network Monitoring Solution:
https://www.zabbix.com/),一般用于简单测试的网络环境很少有部署网络监控的需要,主要因为测试一般不会触及网络瓶颈,另外实现分布式系统的部署确实很费功夫,很多时候我们都习惯于搜索中文资料来加快部署效率,但对于这种专业性较强的软件系统所能找到的中文资料不是语焉不详就是逻辑混乱,类似笔记的那种资料实在缺乏实用性,因此建议直接参阅官方文档(https://www.zabbix.com/documentation/3.4/manual),由此可以少走很多弯路。
Zabbix Architecture
Zabbix
是典型的C/S
网络架构,为了避免Agent
过多导致Server
负载过高的情况Zabbix
设计使用proxy
用来承担部分Agent
数据采集工作,Server
和Proxy
分别使用不同的数据库系统用于数据的存储,此外Zabbix
采用web GUI
的方式提供对Server
的控制,并且提供了Agent
、SNMP
、JMX
和IPMI
四种接口协议实现Server
与Agent
之间的通信,一般对于主机的监控采用Zabbix
自定义的Agent
方式,对网络设备比如交换机等采用SNMP
协议采集数据,在Zabbix
的架构中Proxy
是可选的,在简单的网络中往往省略Proxy
节点。
Zabbix Deploying
Operation System
Zabbix
服务端一般使用Unix/Linux
系统,本文使用Ubuntu 16.04 LTS
,之所以使用该版本Ubuntu
是因为当前网络服务器中只部署了该系统,Red Hat
类系统也是Zabbix
官方主推支持的服务平台。客户端方面Zabbix
提供了Unix
、Linux
、Windows
等主流系统平台支持。因为Ubuntu
是款较为成熟的Linux
发行版,因此各软件的部署均使用apt
工具从相应的repo
中获取安装。
chkconfig
命令已经逐渐在主流Linux
中被systemctl
替换。
service --status-all, service <service_name> restart/stop/start/status
systemctl list-unit-files, systemctl list-units, systemctl enable/disable/status/start/restart/stop <service_name>.service
1. apache2+php
apt-get install apache2
apt-get install php
apt-get install libapache2-mod-php5
apt-get install php5-mysql
由此Apache
的PHP
插件和PHP
的MySQL
库均已安装完毕,更改PHP
配置文件/etc/php/7.0/apache2/php.ini
以适应zabbix-frontend-php
的配置需求。
date.timezone = Asia/Shanghai
max_input_time =600
max_execution_time = 600
post_max_size = 32M
最后使用service apache2 restart
重启apache
生效配置,在默认web
根目录/var/www/html
下新建index.php
调用phpinfo
函数可以查看当前PHP
配置。
<?php
phpinfo();
?>
Apache2
的配置文件为/etc/apache2/apache2.conf
和/etc/apache2/sites-available/000-default.conf
,默认配置一般无需修改,仅在安装完zabbix-frontend-php
后调整web
根目录到
/usr/share/zabbix/
用来执行GUI
页面即可。
2. mysql
apt-get install mysql-server
安装过程中默认弹出提示窗口设置root
密码,完毕后使用mysql -h localhost -u root -p
连接数据库,默认配置无需更改,仅需在安装完zabbix-server-mysql
后导入Server
配套SQL
文件即可。
3. zabbix-release
默认系统Repo
中并不包含最新版本的Zabbix
包,因此参考手册installation from package
(https://www.zabbix.com/documentation/3.4/manual/installation/install_from_packages)添加Zabbix Repo
用于接下来Zabbix
各组件的安装。其实可以选择Source
编译安装,不过过程略微繁琐并且需要具备troubleshooting
的能力。
wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb
dpkg -i zabbix-release_3.4-1+xenial_all.deb
apt-get update
4. zabbix-server-mysql
apt-get install zabbix-server-mysql
Zabbix Server
默认未启动因为其需要对应数据库信息的配置以及数据库数据,首先编辑配置文件/etc/zabbix/zabbix_server.conf
配置数据库连接信息。
DBHost=localhost
DBName=zabbix
DBUser=root
DBPassword=<password>
然后gunzip
数据库文件/usr/share/doc/zabbix-server-mysql/create.sql.gz
得到create.sql
,随后开始创建数据库。
shell> mysql -u root -p
mysql> create database zabbix character set utf8 collate utf8_bin;
shell> mysql -u root -p zabbix < create.sql
注意如果创建数据库时未设置UTF8
会导致导入SQL
文件失败。导入完成后可以使用service zabbix-server start
启动Server
进程,使用service zabbix-server status
查看服务状态,通过systemctl enable zabbix-server
使服务开机自启动。
4.1. zabbix_sender
apt-get install zabbix-sender
zabbix_sender
命令可以用来模拟Agent
发送消息给Server
,通常用来检测Server
端口监听状态,因为默认情况下Server
监听10051
端口,因此除了zabbix_sender
也可以使用telnet localhost 10051
检测端口监听状态。
zabbix_sender -s "example" -z localhost -p 10051 -k "ttlsa.trapper" -o 1 -vv
5. zabbix-frontend-php
apt-get install zabbix-frontend-php
默认PHP
程序安装到/usr/share/zabbix/
路径下,因此更改Apache2
配置文件/etc/apache2/sites-available/000-default.conf
。
DocumentRoot /usr/share/zabbix/
service apache2 restart
重启使配置生效,在浏览器中访问localhost
进入Zabbix Web
设置界面配置数据库连接信息和Server
端口信息。
如果权限正确PHP
程序会自动将配置生成为/usr/share/zabbix/conf/zabbix.conf.php
文件,如果写入失败会提示Download
自行放置该文件至/usr/share/zabbix/conf/
目录下,随后使用默认Admin/zabbix
登录页面。
6.1. zabbix-agent
apt-get install zabbix-agent
Zabbix Agent
会采集主机信息传递给Zabbix Server
,传递的方式有两种:主动模式(Active
)和被动模式(Passive
),顾名思义被动模式即Server
会定期拉取(Get
)Agent
端采集到的数据,主动模式即Agent
定期推送(Send
)采集到的数据到Server
端,这两种模式均针对于Agent
端而言,且可以互存并不冲突,配置信息在/etc/zabbix/zabbix_agentd.conf
文件中。
##### Passive checks related
Server=192.168.1.105
ListenPort=10050
ListenIP=0.0.0.0
##### Active checks related
ServerActive=192.168.1.105
Hostname=Agent_Local
通过service zabbix-agent restart
重启Agent
进程生效配置。
6.1.1. zabbix_get
apt-get install zabbix-get
zabbix_get
命令用来模拟Server
拉取Agent
端数据,通常用来检测Agent
端口监听状态,因为默认情况下Agent
监听10050
端口,因此除了zabbix_get
也可以使用telnet localhost 10050
检测端口监听状态。
zabbix_get -s 192.168.1.105 -p 10050 -k "system.cpu.load[all,avg15]"
6.2. zabbix-windows
访问https://www.zabbix.com/download下载最新版本的Windows pre-compiled agents
并解压。
修改conf
文件夹里的zabbix_agentd.conf
文件并放置到C
盘根目录下便于Agent
进程读取配置。以管理员模式运行CMD
并根据Windows
系统类型选择进入bin/win32
或bin/win64
以使用zabbix_agentd.exe
命令,首先查看命令help
。
C:\Users\zabbix_agents_3.4.0.win\bin\win64>zabbix_agentd.exe -h
Options:
-c --config config-file Path to the configuration file (default: "C:\zabbix_agentd.conf")
-f --foreground Run Zabbix agent in foreground
-p --print Print known items and exit
Functions:
-i --install Install Zabbix agent as service
-d --uninstall Uninstall Zabbix agent from service
-s --start Start Zabbix agent service
-x --stop Stop Zabbix agent service
-h --help Display this help message
-V --version Display version number
因为卸载比较方便因此直接将Zabbix
安装为Windows
服务运行。
zabbix_agentd.exe -i
zabbix_agentd.exe -s
netstat -ano | findstr 10050
6.3. Cisco-SNMP
SNMP
协议广泛用于交换机等网络设备,是种类似于HTTP
的request-response
协议,使用MIB
统一定义用于对应各种网络指标的OID
实现数据的采集,现在已经更新到v3
版本,和前两个版本相比v3
版本增加了认证功能加强安全性,但在对安全性要求不高的网络环境中大多使用v2
版本。
配置交换机VLAN IP
之后启动交换机SNMP Server
即部署完成。
snmp-server community public RO | snmp-server community private RW
show snmp
6.3.1. SNMP
apt-get install snmp
该软件包里的snmpwalk
命令可以用来发送snmp request
,通常用来测试SNMP Server
的状态。
snmpwalk -v 2c -c public 192.168.2.1 1.3.6.1.2.1.2.2.1.10
Zabbix Software Package
ii zabbix-agent 1:3.4.4-2+xenial amd64 Zabbix network monitoring solution - agent
ii zabbix-frontend-php 1:3.4.4-2+xenial all Zabbix network monitoring solution - PHP front-end
ii zabbix-get 1:3.4.4-2+xenial amd64 Zabbix network monitoring solution - get
ii zabbix-release 3.4-1+xenial all Zabbix official repository configuration
ii zabbix-sender 1:3.4.4-2+xenial amd64 Zabbix network monitoring solution - sender
ii zabbix-server-mysql 1:3.4.4-2+xenial amd64 Zabbix network monitoring solution - server (MySQL)
Zabbix Monitoring
Zabbix
创建主机监控大体分为两步:
a. 在Configuration - Hosts
中创建新的主机,依据所连接的设备使用Agent
或者SNMP
接口。
如果连接交换机等SNMP
设备除了在上述界面配置设备IP
外还需要在Macros
选项栏里配置实际定义的Community_Name
。
b. 为新建主机选择Templates
,模板中会定义常用的Items
和Graphs
,并且还有强大的Discovery Rules
能够自动补全所能检测到的Items
、Graphs
,因此新添模板后发觉图表较少只需耐心等待Zabbix
会自动添加我们常用的指标图表,一般discovery
规则定义的interval
都是1h
,如果想要加快发现进度可以修改interval
参数。
添加模板完毕后Zabbix
会连接Agent
,如果是Zabbix Agent
端ZBX
图标稍后会被点亮,如果是SNMP
端SNMP
图标稍后会被点亮,连接失败的话鼠标放置图标上方会有错误提示,连接成功则无提示。
Template:
Linux: Template OS Linux, Template App Zabbix Server
Windows: Template OS Windows
Cisco: Template Net Cisco IOS versions 12.0_3_T-12.2_3.5 SNMPv2