本案例要求部署一台Zabbix监控服务器,一台被监控主机,为进一步执行具体的监控任务做准备:
----安装LNMP环境---->源码安装Zabbix—>安装监控端主机,修改基本配置---->初始化Zabbix监控Web页面------->修改PHP配置文件,满足Zabbix需求---->安装被监控端主机,修改基本配置
1)安装LNMP环境
]# yum -y install gcc pcre-devel openssl-devel php php-mysql mariadb mariadb-devel mariadb-server php-fpm-5.4.16-42.el7.x86_64.rpm //注意,php-fpm这个软件包在lnmp_soft/目录下
]# tar -xf nginx-1.12.2.tar.gz
]# cd nginx-1.12.2
]# ./configure --with-http_ssl_module
]# make && make install
2)修改Nginx配置文件
]# 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;
}
]# systemctl start mariadb
]# systemctl start php-fpm
]# ln -s /usr/local/nginx/sbin/nginx /sbin/nginx
]# nginx
3)客户端测试LNMP环境
]# cat /usr/local/nginx/html/test.php
<?php
$i=33;
echo $i;
?>
]# curl http://192.168.2.5/test.php
二、部署监控服务器Zabbix Server
]# yum -y install net-snmp-devel curl-devel libevent-devel-2.0.21-4.el7.x86_64.rpm
|| || ||
依赖包,监控交换机和路由器 监控公共数据 libevent监控的内核驱动
//注意libevent-devel这个软件包在lnmp_soft目录下有提供
]# tar -xf zabbix-3.4.4.tar.gz
]# cd zabbix-3.4.4/
]# ./configure --enable-server --enable-proxy --enable-agent
--with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl
// --enable-server安装部署zabbix服务器端软件
// --enable-agent安装部署zabbix被监控端软件,监控自身
// --enable-proxy允许部署代理监控服务器,需要监控庞大的数据设备时设置下发的代理服务器,有代理服务器分布监控,将汇总的数据在发给zabbix总服务器
// --with-mysql配置mysql_config路径,mysql_config是一个mysql程序,将mysql的相关库数据、配置文件、主程序位置等所有参数数据传递给zabbix
// --with-net-snmp 调用net-snmp-devel软件监控设备
// --with-libcurl安装相关curl库文件,这样zabbix就可以通过curl连接http等服务,测试被监控主机服务的状态
[root@zabbixserver zabbix-3.4.4]# make && make install
]# zabbix_
zabbix_agentd//被监控端 zabbix_proxy//代理 zabbix_server//监控服务器
zabbix_get//发送数据请求 zabbix_sender//被检控端发送数据给服务器
zabbix_server_status//查看监控服务器状态
]# which zabbix_server //查看程序位置
/usr/local/sbin/zabbix_server
三、初始化Zabbix-----创建数据库,恢复Zabbix备份数据
]# mysql
mysql> create database zabbix character set utf8; //创建数据库,支持中文字符集
mysql> grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix'; //创建可以访问数据库的账户与密码
[root@zabbixserver ~]# cd lnmp_soft/zabbix-3.4.4/database/mysql/
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
//刚刚创建是空数据库,zabbix源码包目录下,有提前准备好的数据
//使用mysql导入这些数据即可(注意导入顺序)
//schema.sql Zabbix自己的备份文件,
//images.sql
//data.sql
]# ls /zabbix-3.4.4/database/ //这个目录下存放了各种数据库的备份文件,根据需要恢复备份数据
ibm_db2/ Makefile.am mysql/ postgresql/
Makefile Makefile.in oracle/ sqlite3/
四、初始化Zabbix-----上线Zabbix的Web页面
]# cd lnmp_soft/zabbix-3.4.4/frontends/php/ //
]# cp -r * /usr/local/nginx/html/
]# chown -R nginx.nginx /usr/local/nginx/html/*
-----修改Zabbix_server配置文件,设置数据库相关参数,启动Zabbix_server服务
]# vim /usr/local/etc/zabbix_server.conf
DBHost=localhost //数据库主机,默认该行被注释
DBName=zabbix //设置数据库名称
DBUser=zabbix //设置数据库账户
DBPassword=zabbix //设置数据库密码,默认该行被注释
LogFile=/tmp/zabbix_server.log //设置日志,仅查看即可
[root@zabbixserver ~]# useradd -s /sbin/nologin zabbix
//不创建用户无法启动服务
[root@zabbixserver ~]# zabbix_server //启动服务
[root@zabbixserver ~]# ss -ntulp |grep zabbix_server //确认连接状态,端口10051
tcp LISTEN 0 128 *:10051 *:* users:(("zabbix_server",pid=23275,fd=4),("zabbix_server",pid=23274,fd=4)
提示:如果是因为配置文件不对,导致服务无法启动时,不要重复执行zabbix_server,
一定要先使用killall zabbix_server关闭服务后,再重新启动一次。
--------修改Zabbix_agent配置文件,启动Zabbix_agent服务
]# 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 //是否允许自定义监控项目
[root@zabbixserver ~]# zabbix_agentd //启动监控agent
[root@zabbixserver ~]# ss -ntulp |grep zabbix_agentd //查看端口信息为10050
tcp LISTEN 0 128 *:10050 *:* users:(("zabbix_agentd",pid=23505,fd=4),("zabbix_agentd",pid=23504,fd=4)
提示:如果是因为配置文件不对,导致服务无法启动时,不要重复执行zabbix_agentd,
一定要先使用killall zabbix_agentd关闭服务后,再重新启动一次。
–修改php配置文件,启动php-fpm服务(以下若不改配置Zabbix时回报错并提示修改)
]# yum -y install php-gd //提供zabbix画图功能,将数据化成图形
php-xml php-bcmath-5.4.16-42.el7.x86_64.rpm //用于计算
php-mbstring-5.4.16-42.el7.x86_64.rpm //用于支持中文汉字功能
]# 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
--------浏览器访问Zabbix_server服务器的Web页面
]# firefox http://192.168.2.5/index.php
//第一次访问,初始化PHP页面会检查计算机环境是否满足要求,如果不满足会给出修改建议
//默认会提示PHP的配置不满足环境要求,需要修改PHP配置文件
//注意:这里有一个PHP LDAP是warning,LDAP意思是存放所有账号的一个服务,有没有无所谓,因为zabbix默认把帐号存放在mysql里.除此之外,所有的都应该是OK的,唯一要更改的就是端口号(mysql)和密码(之前配置文件中修改的)
//在登陆页面,使用用户(admin)和密码(zabbix)登陆,登陆后设置语言环境为中文。
**报错提示: 提示:Unable to create the configuration file.
解决方法:配置文件有误,可能因为Selinus没有改,或者配置文件没有权限修改
提示:timezone 解决方法:时区配置写错 提示:Zabix Server not running
解决方法:SELinux没有修改
五、部署被监控主机Zabbix Agent
]# useradd -s /sbin/nologin zabbix
]# yum -y install gcc pcre-devel
]# tar -xf zabbix-3.4.4.tar.gz
]# cd zabbix-3.4.4/
]# ./configure --enable-agent
[root@zabbixclient_web1 zabbix-3.4.4]# make && make install
-----修改agent配置文件,启动Agent
]# 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服务
**********拷贝启动脚本(非必须操作,可选做),有启动脚本可以方便管理服务,启动与关闭服务。启动脚本位于zabbix源码目录下。
]#cd misc/init.d/fedora/core
]#cp zabbix_agentd /etc/init.d/
]#/etc/init.d/zabbix_agentd start
]#/etc/init.d/zabbix_agentd stop
]#/etc/init.d/zabbix_agentd status
]#/etc/init.d/zabbix_agentd restart
六、配置及使用Zabbix监控系统
实现以下目标: 监控CPU 监控内存 监控进程 监控网络流量 监控硬盘
主机是Zabbix监控的基础,Zabbix所有监控都是基于Host主机。
使用火狐浏览器登录http://192.168.2.5,通过Configuration(配置)–>Hosts(主机)–>Create Host(创建主机)添加被监控Linux主机
添加被监控主机时,需要根据提示输入被监控Linux主机的主机名称(最好与电脑的主机名一致,但也允许不一致)、主机组、IP地址等参数,端口是不用动的,因为启动agent,就会有10050端口启用添加信息之后,不要点击添加,点击主机旁边的模板
为被监控主机添加监控模板Zabbix通过监控模板来对监控对象实施具体的监控功能,根据模板来定义需要监控哪些数据,对于Linux服务器的监控,Zabbix已经内置了相关的模板(Template OS Linux),选择模板并链接到主机即可
查看监控数据—登录Zabbix Web控制台,点击Monitoring(监控中)—> Latest data(最新数据),正过滤器中填写过滤条件,根据监控组和监控主机选择需要查看哪些监控数据。
找到需要监控的数据后,可以点击后面的Graph查看监控图形即可。
七、自定义Zabbix监控项目
步骤:创建自定义key–>创建监控项目–>创建监控图形–>将监控模板关联到主机创建自定义key
1)自定义的key文件一般存储在/usr/local/etc/zabbix_agentd.conf.d/目录,这里还需要修改zabbix_agentd.conf文件,允许自定义监控key,来读取该目录下的所有文件 。
web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
Include=/usr/local/etc/zabbix_agentd.conf.d/ //加载配置文件目录
web1 ~]# cd /usr/local/etc/zabbix_agentd.conf.d/
web1 zabbix_agentd.conf.d]# vim count.line.passwd //文件名随意
UserParameter=count.line.passwd,wc -l /etc/passwd | awk ' {print $1} '
//自定义key语法格式: UserParameter=key名称,命令或者脚本绝对路径,格式固定
-----测试自定义key是否正常工作
]# killall zabbix_agentd //先杀死进程
[root@zabbixclient_web1 ~]# zabbix_agentd //重启agent服务
[root@zabbixclient_web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd
注意:如zabbix_get命令执行错误,提示Check access restrictions in Zabbix agent configuration,则需要检查agent配置文件是否正确
2)创建监控项目--------------------登录Zabbix Web监控控制台,通过Configuration(配置)–>Template(模板)–>Create template(创建模板),填写模板名称,新建模板群组。
创建完成模板后,默认模板中没有任何应用、项目、触发器、图形等资源。这里需要点击模板后面的Application(应用集)链接打开创建应用的页面,点击Application(应用集)后,会刷新出下图所示页面,在该页面中点击Create application(创建应用集)按钮。设置应用名称
创建监控项目item,与创建应用一样,在模板中还需要创建监控项目,并在刷新出的新页面中选择Create items(创建监控项)创建项目
接下来,还需要给项目设置名称及对应的自定义key
3)创建监控图形
为了后期可以通过图形的方式展示监控数据,还需要在模板中创建图形,设置方法与前面的步骤一致,在监控模板后面点击Graph(图形)即可创建图形,设置监控图形基于什么监控数据。
4)将监控模板关联到主机,监控模板制作完成后,就可以将模板链接到主机实现监控功能了。首先找到被监控主机Configuration(配置)–>Hosts(主机)
点击需要的被监控主机链接,打开监控主机设置页面,在Template(模板)页面中选择需要链接到该主机的模板,在此选择刚刚创建的模板count_line.passwd添加即可
总结:
源码安装zabbix,server,agentd,proxy
get send
配置文件Zabbix_server.conf:DBHost、DBName、DBUser、DBPasswd
Zabbix_agentd.conf:server=、serveractive=、hostname、unsafeparameter=1、
Include=/usr/local/etc/zabbix_agetd
起服zabbix_server、zabbix_agentd
cp -r frontend/php/* ---->LNMP
页面配置
添加主机
给主机添加监控模版
查看数据、图形
可以自定义监控:
Vim count.line.pass
Userparameter=key1,命令
Zabbix_get -s ip -k key1
网页操作:创建监控模版、创建应用集、创建监控项、创建图形、将监控模版和主机绑定
八、Zabbix进阶操作
实现Zabbix报警功能–>Zabbix自动发现–>Zabbix主动监控–>拓扑图与聚合图形—>自定义监控案例:创建triggers—>设置Media Types(配置邮箱)—>配置Actio
创建触发器,强烈建议使用英文的语言环境,通过Configuration–> Templates,找到我们之前创建的count.line.passwd模板,点击模板后面的triggers
设置触发器名称,如图所示,点击add添加表达式,填写表达式:监控项为账户数量,最近300秒账户数量大于26(根据系统账户数量实际填写)
选择触发器报警级,Add创建该触发器
注意:实际生产环境不同级别会发送消息给不要同的人,注意问题的级别和发送的人员设置
创建Media,通过Administration(管理)–>Media Type–>选择Email,也可增加模块设置别的发送类型,微信等
设置邮件服务器信息,设置邮件服务器及邮件账户信息;为用户添加Media在Administration–>Users(用户)中找到选择admin账户,点击Admin账户后,在弹出的界面中选择Media菜单–>点击Add报警媒介,如果是外部邮件需要开启安全认证和用户密码的填写
点击Add(添加)后,在Meida Type中填写报警类型,收件人,时间等信息,时间格式为图中的时间表示周一到周七,0点到24点
创建Action动作,定义当触发器被触发时的时候,执行什么行为。通过Configuration–>Actions–>Create
action
配置Action动作的触发条件,填写Action动作的名称,配置什么触发器被触发时会执行本Action(账户数量大于26),并Remove 掉A项未配置的条目
配置Action动作的具体行为(发送信息或执行远程命令),无限次数发送邮件,60秒1次,发送给Admin用户
-------------->
测试效果,在被监控主机创建账户(让账户数量大于26),然后登录监控端Web页面,在仪表盘中查看问题报警(需要等待一段时间)
并在服务器上查看报警邮件
Zabbix自动发现:创建自动发现规则—>创建Action—>添加新的agentd机器测试
创建自动发现规则,通过Configuration–>Discovery–>Create discovery rule,填写自动发现的IP范围(逗号隔开可以写多个),多久做一次自动发现(默认为1小时,仅实验修改为1m),配置检查的方式:Ping、HTTP、FTP、Agent的自定义key等检查
通过Configuration–> Actions Event source–>Discovery–>Create action创建动作并配置动作,添加动作名称,添加触发动作的条件
点击操作(触发动作后要执行的操作指令),操作细节:添加主机到组,添加模板链接
以上创建完成后,可以创建一台新的主机,验证zabbix是否可以自动发现该主机。
Zabbix主动监控(默认zabbix采用的是被动监控,主动和被动都是对被监控端主机而言的!)
被动监控:Server向Agent发起连接,发送监控key,Agent接受请求,响应监控数据。
主动监控:Agent向Server发起连接,Agent请求需要检测的监控项目列表,Server响应Agent发送一个items列表,Agent确认收到监控列表,TCP连接完成,会话关闭,Agent开始周期性地收集数据。
区别:Server不用每次需要数据都连接Agent,Agent会自己收集数据并处理数据,Server仅需要保存数据即可。
当监控主机达到一定量级后,Zabbix服务器会越来越慢,此时,可以考虑使用主动监控,释放服务器的压力。
另外,Zabbix也支持分布式监控,也是可以考虑的方案。
修改agentd配置文件,需要修改以下内容:
#Server=127.0.0.1,192.168.2.5 //注释该行,允许谁监控本机
StartAgents=0 //被动监控时启动多个进程,设置为0,则禁止被动监控,不启动端口
ServerActive=192.168.2.5 //允许哪些主机监控本机(主动模式),一定要取消127.0.0.1
Hostname=zabbixclient_web2 //告诉监控服务器,是谁发的数据信息一定要和zabbix服务器配置的监控主机名称一致(后面设置)
RefreshActiveChecks=120 //默认120秒检测一次
UnsafeUserParameters=1 //允许自定义key
Include=/usr/local/etc/zabbix_agentd.conf.d/ //去掉注释
]# killall zabbix_agentd //关闭服务
]# zabbix_agentd //启动服务,不会有端口出现使用命令:ps aux | grep zabbix可以看到进程
2)创建主动监控的监控模板
通过Configuration(配置)–>Templates(模板)–>选择Template OS Linux–>全克隆,克隆该模板,新建一个新的模板。
新模板名称为:Template OS Linux ServerActive
将模板中的所有监控项目全部修改为主动监控模式,通过Configuration–>Templates–>选择新克隆的模板,点击后面的Items–>点击全选,选择所有监控项目,点击批量更新,将类型修改为:Zabbix Agent
批量修改监控项的监控模式后,并非所有监控项目都支持主动模式,批量修改后,会发现有几个没有修改主动模式成功,说明,这些监控项目不支持主动模式,关闭即可。可以点击类型排序,方便操作,点击状态即可关闭。
在Zabbix监控服务器,添加被监控的主机(主动模式),设置主机名称:zabbixclient_web2(必须与被监控端的配置文件Hostname一致),将主机添加到Linux servers组,IP地址修改为0.0.0.0,端口设置为0