部署 Zabbix 监控平台

一、 Zabbix简介

Zabbix 由 Alexei Vladishev 创建,目前由其成立的公司—— Zabbix SIA 积极的持续开发更新维护, 并为用户提供技术支持服务。
Zabbix 是一个企业级分布式开源监控解决方案。

Zabbix 特性

数据采样:通过snmp、ssh、telnet、agent、ipmi、jmx等通道采集被监控主机的数据。可以自定义检测机制和自定义时间间隔
实时绘图:展示,读取数据绘图,支持graph,map,screen,幻灯片(slide show)
告警:(升级告警,规定时间内内解决不了的事情往上传)
数据存储:数据库有mysql,pgsql,时间序列数据库等等

Zabbix监控功能

主机的性能监控、网络设备性能监控、数据库性能监控、多种告警方式、详细的报表图表绘制
监控主机zabbix有专用的agent,可以监控Linux,Windows,FreeBSD等 。
监控网络设备zabbix通过SNMP,ssh(不多用)
可监控对象

设备:服务器,路由器,交换机
软件:OS,网络,应用程序
主机性能指标监控
故障监控: down机,服务不可用,主机不可达

二、Zabbix 概述

架构
Zabbix 由几个主要的功能组件组成,其功能介绍如下所示。

Server

Zabbix server 是 Zabbix软件的核心组件,agent 向其报告可用性、系统完整性信息和统计信息。server也是存储所有配置信息、统计信息和操作信息的核心存储库。

数据库

所有配置信息以及 Zabbix 采集到的数据都被存储在数据库中。

Web 界面

为了从任何地方和任何平台轻松访问 Zabbix ,我们提供了基于 web 的界面。该界面是 Zabbix server 的一部分,通常(但不一定)和 Zabbix server 运行在同一台物理机器上。

Proxy

Zabbix proxy 可以代替 Zabbix server采集性能和可用性数据。Zabbix proxy在Zabbix的部署是可选部分;但是proxy的部署可以很好的分担单个Zabbix server的负载。

Agent

Zabbix agent 部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给 Zabbix server。

数据流

另外,回过头来整体的了解下 Zabbix 内部的数据流对Zabbix的使用也很重要。首先,为了创建一个采集数据的监控项,您就必须先创建主机。其次,在任务的另外一端,必须要有监控项才能创建触发器(trigger),必须要有触发器来创建动作(action)。因此,如果您想要收到类似“X个server上CPU负载过高”这样的告警,您必须首先为 Server X 创建一个主机条目,其次创建一个用于监控其 CPU的监控项,最后创建一个触发器,用来触发 CPU负载过高这个动作,并将其发送到您的邮箱里。虽然这些步骤看起来很繁琐,但是使用模板的话,实际操作非常简单。也正是由于这种设计,使得 Zabbix 的配置变得更加灵活易用。

Zabbix server

Zabbix软件实现监控的核心程序,主要功能是与Zabbix proxies和Agents进行交互、触发器计算、发送告警通知;并将数据集中保存等

Zabbix agent

一个部署在监控对象上的,能够主动监控本地资源和应用的程序 Zabbix agent部署在监控的目标上,主动监测本地的资源和应用(硬件驱动,内存,处理器统计等)。 Zabbix agent收集本地的操作信息并将数据报告给Zabbix server用于进一步处理。一旦出现异常 (比如硬盘空间已满或者有崩溃的服务进程), Zabbix server会主动警告管理员指定机器上的异常。. Zabbix agents 的极端高效缘于它可以利用本地系统调用来完成统计数据的收集。

zabbix监控系统运行大概流程:
在这里插入图片描述

zabbix配置文件

zabbix配置文件有两种:
服务器端配置文件(/usr/local/etc/zabbix_server.conf)
客户端配置文件(/usr/local/etc/zabbix_agentd.conf)
Zabbix代理配置文件(/usr/local/etc/zabbix_proxy.conf)

服务器端配置文件zabbix_server.conf常用配置参数:
在这里插入图片描述
客户端配置文件zabbix_agentd.conf常用配置参数:
在这里插入图片描述

三、部署Zabbix

1:部署监控服务器

因为zabbix是用php语言开发的,所以必须先部署LAMP/LNMP架构,使其能够支持运行php网页

1.1安装 LNMP 环境

Zabbix 监控管理控制台需要通过 Web 页面展示出来,并且还需要使用
MySQL 来存储数据,因此需要先为 Zabbix 准备基础 LNMP 环境。

[root@zabbixserver ~]# yum -y install gcc pcre-devel openssl-devel 
[root@zabbixserver ~]# tar -xf nginx-1.12.2.tar.gz 
[root@zabbixserver ~]# cd nginx-1.12.2 
[root@zabbixserver nginx-1.12.2]# ./configure --with_http_ssl_module 
[root@zabbixserver nginx-1.12.2]# make && make install 
[root@zabbixserver ~]# yum -y install php php-mysql \ 
> mariadb mariadb-devel mariadb-server
[root@zabbixserver ~]# yum -y install php-fpm
1.2 修改 Nginx 配置文件

配置 Nginx 支持 PHP 动态网站,因为有大量 PHP 脚本需要执行,因此还需
要开启 Nginx 的各种 fastcgi 缓存,加速 PHP 脚本的执行速度。

[root@zabbixserver ~]# vim /usr/local/nginx/conf/nginx.conf
http{ 
… … 
fastcgi_buffers 8 
16k; //缓存 php 生成的页面内容,8 个 16k 
fastcgi_buffer_size 32k; //缓存 php 生产的头部信息 
fastcgi_connect_timeout 300; //连接 PHP 的超时时间 
fastcgi_send_timeout 300; //发送请求的超时时间 
fastcgi_read_timeout 300; //读取请求的超时时 间 
location ~ \.php$ { 
	root html; 
	fastcgi_pass 127.0.0.1:9000; 
	fastcgi_index index.php; 
	include fastcgi.conf; 
	} 
 … … 
1.3 启动服务

启动 Nginx、PHP-FPM、MariaDB 服务,关闭 SELinux 与防火墙。

[root@zabbixserver ~]# systemctl start mariadb 
[root@zabbixserver ~]# systemctl start php-fpm 
[root@zabbixserver ~]# ln -s /usr/local/nginx/sbin/nginx  /sbin/nginx 
[root@zabbixserver ~]# nginx 
[root@zabbixserver ~]# firewall-cmd --set-default-zone=trusted 
[root@zabbixserver ~]# setenforce 0 
1.4 客户端测试 LNMP 环境

服务器创建 PHP 测试页面,浏览器访问页面测试网页连通性。

[root@zabbixserver ~]# cat /usr/local/nginx/html/test.php 
 <?php 
 $i=33; 
 echo $i; 
 ?> 
[root@zabbixserver ~]# curl http://192.168.2.5/test.php

2:部署监控服务器 Zabbix Server

下载地址:https://sourceforge.net/projects/zabbix/

2.1 源码安装 Zabbix Server

多数源码包都是需要依赖包的,zabbix 也一样,源码编译前需要先安装相关依赖包。

yum -y install net-snmp-devel libevent-devel curl-devel libxml2-devel
/下载zabbix
[root@localhost ~]# cd /usr/src/
[root@localhost src]# wget https:// nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.3/zabbix-4.0.3.tar.gz
下载过程略....

第二种方法:
下载地址:https://sourceforge.net/projects/zabbix/
将下载来的zabbix-4.4.7.tar.gz上传到服务器上

[root@localhost ~]# cd /usr/src/
[root@localhost src]# tar zxvf zabbix-4.4.7.tar.gz

// 创建zabbix用户和组

[root@localhost ~]# groupadd -r zabbix
[root@localhost ~]# useradd -r -g zabbix -M -s /sbin/nologin zabbix

// 配置zabbix数据库

[root@localhost mysql]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.

mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected, 2 warnings (0.29 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql> quit
Bye

[root@localhost ~]# cd /usr/src/zabbix-4.0.3/database/mysql/
[root@localhost mysql]# ls
data.sql  images.sql  schema.sql
[root@localhost mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@localhost mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@localhost mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
mysql: [Warning] Using a password on the command line interface can be insecure.

// 编译安装zabbix

[root@localhost ~]# cd /usr/src/zabbix-4.0.3
[root@localhost zabbix-4.0.3 ]# ./configure --enable-server \
--enable-agent \
--enable-proxy \
--with-mysql \
--with-net-snmp \
--with-libcurl \
--with-libxml2 \

模块说明:
	--enable-server 	安装部署 zabbix 服务器端软件
	--enable-agent 		安装部署 zabbix 被监控端软件
	--enable-proxy 		安装部署 zabbix 代理相关软件
	--with-mysql 配置 mysql_config 路径
	--with-net-snmp 允许 zabbix 通过 snmp 协议监控其他设备
	--with-libcurl 安装相关 curl 库文件,这样 zabbix 就可以通过 curl 连
	接 http 等服务,测试被监控主机服务的状态


...................
***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http:// www.zabbix.com>                    *
***********************************************************
 
 
[root@localhost zabbix-4.0.3 ]# make install
2.2 zabbix服务端配置
]# vim /usr/local/etc/zabbix_server.conf
DBHost=localhost 						//数据库主机,默认该行被注释
DBName=zabbix     					//设置数据库名称 
DBUser=zabbix 						//设置数据库账户 
DBPassword=zabbix 	              //设置数据库密码,默认该行被注释 
LogFile=/tmp/zabbix_server.log     //设置日志,仅查看以下即可

启动zabbix服务端
~]# zabbix_server //启动服务 
~]# ss -ntulp |grep zabbix_server //确认连接状态,端口 10051

在这里插入图片描述
提示:如果是因为配置文件不对,导致服务无法启动时,不要重复执行
zabbix_server,
一定要先使用 killall zabbix_server 关闭服务后,再重新启动一次。

2.3修改 Zabbix_agent 配置文件,启动 Zabbix_agent 服务
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_agentd.conf 
	Server=127.0.0.1,192.168.2.5 			//允许哪些主机监控本机 
	ServerActive=127.0.0.1,192.168.2.5 		//允许哪些主机通过主动模式监控本机 
	Hostname=zabbix_server 					//设置本机主机名 
	LogFile=/tmp/zabbix_server.log 			//设置日志文件 
	UnsafeUserParameters=1 					//是否允许自定义 key
	
**启动zabbix_agent**
[root@zabbixserver ~]# zabbix_agentd 	//启动监控 agent 

~]# ss -ntulp |grep zabbix_agentd //查看端口信息为 10050

在这里插入图片描述
提示:如果是因为配置文件不对,导致服务无法启动时,不要重复执行
zabbix_agentd,
一定要先使用 killall zabbix_agentd 关闭服务后,再重新启动一次。

2.4浏览器访问 Zabbix_server 服务器的 Web 页面

】# firefox http://192.168.2.5/index.php
//第一次访问,初始化 PHP 页面会检查计算机环境是否满足要求,如果不满
足会给出修改建议
//默认会提示 PHP 的配置不满足环境要求,需要修改 PHP 配置文件

根据错误提示,修改 PHP 配置文件,满足 Zabbix_server 的 Web 环境要求
php-bcmath 和 php-mbstring 都在 lnmp_soft 目录下有提供软件包。

[root@zabbixserver ~]# yum -y install php-gd php-xml 
[root@zabbixserver ~]# yum install php-bcmath-5.4.16-42.el7.x86_64.rpm 
[root@zabbixserver ~]# yum install php-mbstring-5.4.16-42.el7.x86_64.rpm 
[root@zabbixserver ~]# vim /etc/php.ini 
	date.timezone = Asia/Shanghai 	//设置时区 
 	max_execution_time = 300 		//最大执行时间,秒 
	post_max_size = 32M 			//POST 数据最大容量 
	max_input_time = 300 			//服务器接收数据的时间限制 
 	memory_limit =  128M 			//内存容量限制 
[root@zabbixserver ~]# systemctl restart php-fpm

修改完PHP配置文件后,再次使用浏览器访问服务器,则会提示如图-1和图-2所示的提示信息。
在这里插入图片描述
在这里插入图片描述
注意:这里有一个 PHP LDAP 是 warning 状态是没有问题的!
在初始化数据库页面,填写数据库相关参数,如图-3 所示。
在这里插入图片描述
在登陆页面,使用用户(Admin)和密码(zabbix)登陆,登陆后设置语言环境为中文,如图-4 和图-5 所示。

在这里插入图片描述

3:部署被监控主机 Zabbix Agent

3.1源码安装 Zabbix agent 软件

在 2.100 和 2.200 做相同操作(以 zabbixclient_web1 为例)。

[root@zabbixclient_web1 ~]# useradd -s /sbin/nologin zabbix 
[root@zabbixclient_web1 ~]# yum -y install gcc pcre-devel 
[root@zabbixclient_web1 ~]# tar -xf zabbix-3.4.4.tar.gz 
[root@zabbixclient_web1 ~]# cd zabbix-3.4.4/ 
[root@zabbixclient_web1 zabbix-3.4.4]# ./configure --enable-agent 
[root@zabbixclient_web1 zabbix-3.4.4]# make && make install 
3.2 修改 agent 配置文件,启动 Agent
[root@zabbixclient_web1 ~]# vim /usr/local/etc/zabbix_agentd.conf 
Server=127.0.0.1,192.168.2.5 			//谁可以监控本机(被动监控模式)
ServerActive=127.0.0.1,192.168.2.5 		//谁可以监控本机(主动监控模式) 
Hostname=zabbixclient_web1				//被监控端自己的主机名 
EnableRemoteCommands=1 					//监控异常后,是否允许服务器远程过来执行命令,如重启某个服务 
UnsafeUserParameters=1  				//是否允许自定义 key 监控 
[root@zabbixclient_web1 ~]# zabbix_agentd //启动 agent 服务 
3.3 拷贝启动脚本(非必须操作,可选做),有启动脚本可以方便管理服务,启动与关闭服务

启动脚本位于 zabbix 源码目录下。

[root@zabbixclient_web1 zabbix-3.4.4]# cd misc/init.d/fedora/core 
[root@zabbixclient_web1 zabbix-3.4.4]# cp zabbix_agentd /etc/init.d/ 
[root@zabbixclient_web1 zabbix-3.4.4]# /etc/init.d/zabbix_agentd start 
[root@zabbixclient_web1 zabbix-3.4.4]# /etc/init.d/zabbix_agentd stop 
[root@zabbixclient_web1 zabbix-3.4.4]# /etc/init.d/zabbix_agentd status 
[root@zabbixclient_web1 zabbix-3.4.4]# /etc/init.d/zabbix_agentd restart 

4:配置及使用 Zabbix 监控系统

方案

通过 Zabbix 监控平台,添加被监控 zabbixclient_web1 主机
(192.168.2.100)并链接监控模板即可,Zabbix 默认模板就可以监控 CPU、内 存、进程、网络、磁盘等项目。

4.1:添加监控主机

主机是 Zabbix 监控的基础,Zabbix 所有监控都是基于 Host 主机。
使用火狐浏览器登录 http://192.168.2.5,通过 Configuration(配置)- ->Hosts(主机)–>Create Host(创建主机)添加被监控 Linux 主机,如图-7所示。
在这里插入图片描述
添加被监控主机时,需要根据提示输入被监控 Linux 主机的主机名称(最好与电脑的主机名一致,但也允许不一致)、主机组、IP 地址等参数,具体参考图- 8 所示。
在这里插入图片描述

4.2:为被监控主机添加监控模板

Zabbix 通过监控模板来对监控对象实施具体的监控功能,根据模板来定义需要监控哪些数据,对于 Linux 服务器的监控,Zabbix 已经内置了相关的模板 (Template OS Linux),选择模板并链接到主机即可,如图-9 所示
在这里插入图片描述

4.3:查看监控数据

查看监控数据,登录 Zabbix Web 控制台,点击 Monitoring(监控中)—> Latest data(最新数据),正过滤器中填写过滤条件,根据监控组和监控主机选择需要查看哪些监控数据,如图-10 所示。

找到需要监控的数据后,可以点击后面的 Graph 查看监控图形,如图-11 所 示
在这里插入图片描述

5:自定义 Zabbix 监控项目

方案

需要使用 Zabbix 自定义 key 的方式实现自定义监控,参考如下操作步骤:
1. 创建自定义 key
2. 创建监控项目
3. 创建监控图形
4. 将监控模板关联到主机

5.1 被监控主机创建自定义 key

自定义 key 语法格式为:UserParameter=自定义 key 名称,命令。
自定义的 key 文件一般存储在/usr/local/etc/zabbix_agentd.conf.d/目录,
这里还需要修改 zabbix_agentd.conf 文件,允许自定义监控 key,来读取该目录 下的所有文件 。

[root@zabbixclient_web1 ~]# vim /usr/local/etc/zabbix_agentd.conf 
 	Include=/usr/local/etc/zabbix_agentd.conf.d/ 	//加载配置文件目录 
[root@zabbixclient_web1 ~]# cd  /usr/local/etc/zabbix_agentd.conf.d/ 
[root@zabbixclient_web1 zabbix_agentd.conf.d]# vim  count.line.passwd 
UserParameter=count.line.passwd,wc -l /etc/passwd | awk ' {print $1}' 
 ////自定义 key 语法格式: 
//UserParameter=自定义 key 名称,命令

注意:如zabbix_get命令执行错误,提示Check access restrictions in Zabbix
agent configuration,则需要检查 agent 配置文件是否正确:

[root@zabbixclient_web1 ~]# vim /usr/local/etc/zabbix_agentd.conf 
Server=127.0.0.1,192.168.2.5 
ServerActive=127.0.0.1,192.168.2.5 
5.2 创建监控模板

模板、应用集与监控项目的关系图,参考图-12 所示
在这里插入图片描述

5.2.1添加监控模板

登录 Zabbix Web 监控控制台,通过 Configuration(配置)–>Template(模 板)–>Create template(创建模板),填写模板名称,新建模板群组,如图-13 所示。
在这里插入图片描述
创建模板后,默认模板中没有任何应用、项目、触发器、图形等,如图-14 所 示。

5.2.2 创建应用

创建完成模板后,默认模板中没有任何应用、项目、触发器、图形等资源。
这里需要点击模板后面的 Application(应用集)链接打开创建应用的页面,如图-15 所示。
在这里插入图片描述
点击 Application(应用集)后,会刷新出图-16 所示页面,在该页面中点击 Create application(创建应用集)按钮。
在这里插入图片描述
设置应用名称如图-17 所示。
在这里插入图片描述

5.2.3 创建监控项目 item(监控项)

与创建应用一样,在模板中还需要创建监控项目,如图-18 所示,并在刷新出 的新页面中选择 Create items(创建监控项)创建项目,如图-19 所示。

在这里插入图片描述
接下来,还需要给项目设置名称及对应的自定义 key,如图-20 所示
在这里插入图片描述

5.2.4 创建图形

为了后期可以通过图形的方式展示监控数据,还需要在模板中创建图形,设 置方法与前面的步骤一致,在监控模板后面点击Graph(图形)即可创建图形, 设置监控图形基于什么监控数据,如图-21 所示。
在这里插入图片描述

5.2.5 将模板链接到被监控主机

将完整的监控模板制作完成后,就可以将模板链接到主机实现监控功能了。
首先找到被监控主机 Configuration(配置)–>Hosts(主机),如图-22 所示。
在这里插入图片描述
点击需要的被监控主机链接,打开监控主机设置页面,在 Template(模板) 页面中选择需要链接到该主机的模板,在此选择刚刚创建的模板 count_line.passwd 添加即可,如图-23 所示
在这里插入图片描述

5.2.6 查看监控数据图形

点击 Monitoring(监控中)–>Craphs(图形),根据需要选择条件,查看 监控图形,如图-24 和图-25 所示。
在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐