zabbix部署实践

系统运维 waitig 680℃ 百度已收录 0评论

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数据采集工作,ServerProxy分别使用不同的数据库系统用于数据的存储,此外Zabbix采用web GUI的方式提供对Server的控制,并且提供了AgentSNMPJMXIPMI四种接口协议实现ServerAgent之间的通信,一般对于主机的监控采用Zabbix自定义的Agent方式,对网络设备比如交换机等采用SNMP协议采集数据,在Zabbix的架构中Proxy是可选的,在简单的网络中往往省略Proxy节点。

Zabbix Deploying

Operation System

Zabbix服务端一般使用Unix/Linux系统,本文使用Ubuntu 16.04 LTS,之所以使用该版本Ubuntu是因为当前网络服务器中只部署了该系统,Red Hat类系统也是Zabbix官方主推支持的服务平台。客户端方面Zabbix提供了UnixLinuxWindows等主流系统平台支持。因为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

由此ApachePHP插件和PHPMySQL库均已安装完毕,更改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会定期拉取(GetAgent端采集到的数据,主动模式即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/win32bin/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协议广泛用于交换机等网络设备,是种类似于HTTPrequest-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,模板中会定义常用的ItemsGraphs,并且还有强大的Discovery Rules能够自动补全所能检测到的ItemsGraphs,因此新添模板后发觉图表较少只需耐心等待Zabbix会自动添加我们常用的指标图表,一般discovery规则定义的interval都是1h,如果想要加快发现进度可以修改interval参数。

这里写图片描述

添加模板完毕后Zabbix会连接Agent,如果是Zabbix AgentZBX图标稍后会被点亮,如果是SNMPSNMP图标稍后会被点亮,连接失败的话鼠标放置图标上方会有错误提示,连接成功则无提示。

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

这里写图片描述

这里写图片描述


本文由【waitig】发表在等英博客
本文固定链接:zabbix部署实践
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)