部署 Zabbix 监控平台
目录
- 部署 Zabbix 监控平台
- 一、 Zabbix简介
- Zabbix 特性
- Zabbix监控功能
- 二、Zabbix 概述
- Server
- 数据库
- Web 界面
- Proxy
- Agent
- 数据流
- Zabbix server
- Zabbix agent
- zabbix配置文件
- 三、部署Zabbix
- 1:部署监控服务器
- 1.1安装 LNMP 环境
- 1.2 修改 Nginx 配置文件
- 1.3 启动服务
- 1.4 客户端测试 LNMP 环境
- 2:部署监控服务器 Zabbix Server
- 2.1 源码安装 Zabbix Server
- 2.2 zabbix服务端配置
- 2.3修改 Zabbix_agent 配置文件,启动 Zabbix_agent 服务
- 2.4浏览器访问 Zabbix_server 服务器的 Web 页面
- 3:部署被监控主机 Zabbix Agent
- 3.1源码安装 Zabbix agent 软件
- 3.2 修改 agent 配置文件,启动 Agent
- 3.3 拷贝启动脚本(非必须操作,可选做),有启动脚本可以方便管理服务,启动与关闭服务
- 4:配置及使用 Zabbix 监控系统
- 方案
- 4.1:添加监控主机
- 4.2:为被监控主机添加监控模板
- 4.3:查看监控数据
- 5:自定义 Zabbix 监控项目
- 方案
- 5.1 被监控主机创建自定义 key
- 5.2 创建监控模板
- 5.2.1添加监控模板
- 5.2.2 创建应用
- 5.2.3 创建监控项目 item(监控项)
- 5.2.4 创建图形
- 5.2.5 将模板链接到被监控主机
- 5.2.6 查看监控数据图形
一、 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 所示。