一、Zabbix概述
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix由2部分构成,zabbix server与可选组件zabbix agent。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
Zabbix优点:
1 支持分布式监控
2 自带绘图功能,获取到数值型的数据,可自动生成图
3 Web配置方式,操作易用性较好。添加监控项或机器时速度很快。
4 有报警时无论在任何界面会弹出小窗口报警,同时有报警的声音提示,同时可对监控项的快速查看。
5 自带内置函数较为丰富,同时也支持脚本及nagios等脚本的调用。
6 出现问题时,可自动远程执行命令(需对agent设置执行权限)
Zabbix 缺点:
1 批量修改不方便,可用数据库辅助
2 深入后,中文资料相当少,大部分问题需看官方的文档及论坛。
3 缺少数据汇总功能,如无法查看一组服务器平均值,可考虑对其进行二次开发。
4 zabbix较cacti来说,画图功能较差些、流量获取较为复杂
Zabbix具有以下功能:
- 1)具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库、性能监控、FTP 等通用协议监控、多种告警方式、详细的报表图表绘制);
- 2)支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现);
- 3)支持自动发现(low discovery)key 实现动态监控项的批量监控(需写脚本);
- 4)支持分布式,能集中展示、管理分布式的监控点 ;
- 5)扩展性强,server 提供通用接口(api 功能),可以自己开发完善各类监控(根据相关接口编写程序实现)编写插件容易,可以自定义监控项,报警级别的设置;
- 6)服务器/代理和客户端模式; 灵活的触发器;可以定义非常灵活的问题阈值,称为触发器; 高可定制的报警;发送通知,可定制的报警升级,收件人,媒体类型。 CPU 负荷、内存使用、磁盘使用、网络状况、端口监视、日志监视等等;
Zabbix通过c/s模式采集数据,通过b/s模式在web端展示和配置。
被控制端:主机通过安装agent方式采集数据,网络设备通过snmp方式采集数据;
Server端:通过收集snmp和agent发送的数据,写入数据库,再通过php+nginx(或者apache)在web前端显示;
zabbix主要由以下几个重要的组件构成,具体作用如下:
- Zabbix Server:负责接收Agent发送报告信息的核心组件,所有的配置、数据统计、数据操作都由它组织进行;
- Database strongage:负责存储所有的配置信息以及收集的数据;
- Web interface:是zabbix的GUI接口,通常情况下与Zabbix Server运行在同一台主机上;
- Proxy:属于可选组件,常用于分布式监控环境中,代理Server收集部分数据,然后转发到Server,可以减轻Server的压力;
- Agent:部署在被监控的主机(客户端)上,负责收集被监控端主机的数据,如CPU、内存、数据库等数据,然后发送到Server端或Proxy端。
1)Agent需要安装到被监控的主机上,她负责定期收集各项数据并发送到zabbix server 端;
2)zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图;
agent收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控向内检测的数据提交给server/proxy;
被动:server向agent请求获取监控项的数据,agent返回数据;
被动:比较消耗性能。
在被动模式中,zabbix server(或者proxy)询问agent数据,如CPU的负载情况,然后zabbix agent回送结果,zabbix server周期性的向agent 索取数据,这种模式的最大问题就是会加大zabbix server的工作量,也是默认的工作模式。
主动:效率高,但数据可能缺失。
主动模式是由zabbix agent主动采集数据并返回给zabbix server,不再需要zabbix serve进行干预, 因此主动模式在一定程度上可减轻zabbix server的压力。
在实际生产环境中,Zabbix根据网络环境,监控规模等外界因素分为三种架构,如图:
server-client架构是Zabbix的最简单的架构,监控机和被监控机之间不经过任何代理,直接在zabbix server和zabbix agentd之间进行数据交互,适用于网络比较简单,设备比较少的监控环境;
master-node-client架构是Zabbix最复杂的监控架构,适用于跨网络、跨机房、设备较多的大型环境。每个node同时也是一个server端。node下面可以接proxy,也可以直接接client。node有自己的配置文件和数据库。其要做的是将配置信息和监控数据项master同步。当master发生故障或损坏,node可以保证架构的完整性;
proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且其本身并不存放数据,只是将agentd发来的数据暂时存放,而后在提交给server。该架构经常是和master-node-client架构做比较的架构,一般适用于跨机房、跨网络的中型网络架构的监控;
由于部署Zabbix需要使用到LNMP的环境,所以需事先部署。关于其部署详细工程,可以参考搭建LNMP,接下来关于LNMP命令的解释就不再详细解释了!
下载nginx软件包
[root@zabbix ~]# yum -y install pcre-devel openssl-devel zlib-devel
[root@zabbix ~]# tar zxf nginx-1.14.0.tar.gz && cd nginx-1.14.0
[root@zabbix nginx-1.14.0]# ./configure && make && make install
//由于只是使用nginx提供简单的web页面启动即可!
[root@zabbix ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
//创建符号链接,稍后启动
下载PHP软件包
[root@zabbix ~]# yum -y install freetype-devel libpng-devel libjpeg-devel libxml2-devel bzip2-devel libcurl-devel
//安装php所需依赖
[root@zabbix ~]# tar zxf libmcrypt-2.5.7.tar.gz && cd libmcrypt-2.5.7
[root@zabbix libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install
//安装libmcrypt
[root@zabbix ~]# tar zxf php-5.6.27.tar.gz && cd php-5.6.27
[root@zabbix php-5.6.27]# ./configure --prefix=/usr/local/php5.6 \
--with-config-file-path=/etc --with-mysql=/usr/local/mysql \
--with-mysqli=/usr/local/mysql/bin/mysql_config \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-gd --with-iconv --with-libxml-dir=/usr --with-mhash --with-mcrypt=/usr/local/libmcrypt \
--with-config-file-scan-dir=/etc/php.d --with-bz2 --with-zlib \
--with-freetype-dir --with-png-dir --with-jpeg-dir --enable-xml \
--enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization \
--enable-mbregex --enable-fpm --enable-mbstring --enable-ftp \
--enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets \
--with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext \
--enable-session --with-curl && make && make install
//编译安装php
[root@zabbix ~]# cp /root/php-5.6.27/php.ini-production /etc/php.ini
[root@zabbix ~]# cp /root/php-5.6.27/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@zabbix ~]# chmod +x /etc/init.d/php-fpm
[root@zabbix ~]# chkconfig --add php-fpm
[root@zabbix ~]# cd /usr/local/php5.6/etc
[root@zabbix etc]# cp php-fpm.conf.default php-fpm.conf
[root@zabbix etc]# sed -i 's#;pid = run/php-fpm.pid#pid = run/php-fpm.pid#g' php-fpm.conf
[root@zabbix etc]# sed -i 's/listen = 127.0.0.1:9000/listen = 0.0.0.0:9000/g' php-fpm.conf
[root@zabbix etc]# sed -i 's/pm.max_children = 5/pm.max_children = 50/g' php-fpm.conf
[root@zabbix etc]# sed -i 's/pm.start_servers = 2/pm.start_servers = 5/g' php-fpm.conf
[root@zabbix etc]# sed -i 's/pm.min_spare_servers = 1/pm.min_spare_servers = 5/g' php-fpm.conf
[root@zabbix etc]# sed -i 's/pm.max_spare_servers = 3/pm.max_spare_servers = 35/g' php-fpm.conf
[root@zabbix etc]# systemctl start php-fpm
[root@zabbix etc]# ss -lnt | grep 9000
LISTEN 0 128 *:9000 *:*
//保证PHP启动成功
[root@zabbix ~]# vim /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf; //修改这一行即可
}
[root@zabbix ~]# echo -e "<?php\nphpinfo();\n?>" > /usr/local/nginx/html/index.php
[root@zabbix ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@zabbix ~]# nginx
访问测试;
下载mysql数据库软件提供的是一键安装mysql的脚本进行安装的,直接执行脚本即可!
[root@zabbix ~]# ls | grep mysql
mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
mysql.sh
[root@zabbix ~]# sh mysql.sh
//安装完成后,数据库用户root的密码为123
这里就先不测试PHP与mysql的链接性了,对自己搭建的LNMP有信心!
下载Zabbix软件包
[root@zabbix ~]# tar zxf fping-3.12.tar.gz && cd fping-3.12
[root@zabbix fping-3.12]# ./configure && make && make install
//编译安装fping,使Zabbix支持自动发现功能
[root@zabbix fping-3.12]# groupadd zabbix
[root@zabbix fping-3.12]# useradd zabbix -M -g zabbix
[root@zabbix fping-3.12]# chown zabbix:zabbix /usr/local/sbin/fping
//创建zabbix用户使其可以使用fping命令
[root@zabbix ~]# yum -y install net-snmp net-snmp-devel curl-devel OpenIPMI-devel libssh3-devel java-devel
//安装zabbix所需依赖
[root@zabbix ~]# tar zxf zabbix-3.2.1.tar.gz && cd zabbix-3.2.1
[root@zabbix zabbix-3.2.1]# ./configure --prefix=/usr/local/zabbix --enable-server \
--enable-agent --enable-java --with-mysql=/usr/local/mysql/bin/mysql_config \
--with-net-snmp --with-libcurl --with-openipmi && make && make install
//--enable-java:便于日后监控tomcat程序使用;
//--with-openipmi:使其可以监控设备的硬件信息
[root@zabbix ~]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/
[root@zabbix ~]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
//为zabbix常用命令创建符号连接
[root@zabbix ~]# mysql -u root -p123
mysql> create database zabbix character set utf8;
mysql> grant all privileges on zabbix.* to 'zabbix'@'192.168.1.%' identified by '123.com';
//创建zabbix数据库及用户
[root@zabbix ~]# cd /root/zabbix-3.2.1/database/mysql/
[root@zabbix mysql]# mysql -uzabbix -p123.com -h 192.168.1.8 zabbix < schema.sql
[root@zabbix mysql]# mysql -uzabbix -p123.com zabbix -h 192.168.1.8 < images.sql
[root@zabbix mysql]# mysql -uzabbix -p123.com zabbix -h 192.168.1.8 < data.sql
//进入相应的目录导入相应的数据库文件
//切记需按照顺序导入,否则可能会出现意外
[root@zabbix mysql]# cd /usr/local/zabbix/etc
[root@zabbix etc]# egrep -v '^#|^$' zabbix_server.conf
LogFile=/tmp/zabbix_server.log
PidFile=/tmp/zabbix_server.pid
DBHost=192.168.1.8
DBName=zabbix
DBUser=zabbix
DBPassword=123.com
DBPort=3306
Timeout=4
FpingLocation=/usr/sbin/fping //fping(自动发现)文件路径
LogSlowQueries=3000
//以上是修改完成的配置文件
[root@zabbix etc]# find / -name libmysqlclient.so
/usr/local/mysql/lib/libmysqlclient.so
[root@zabbix etc]# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf
//添加libmysqlclinet的接口文件路径
[root@zabbix etc]# ldconfig
//主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。
[root@zabbix etc]# find / -name mysql.sock
/usr/local/mysql/mysql.sock
[root@zabbix etc]# ln -s /usr/local/mysql/mysql.sock /tmp/
//添加mysql.sock文件到tmp目录下,否则会在启动时会出现错误
[root@zabbix etc]# cd /root/zabbix-3.2.1/
[root@zabbix zabbix-3.2.1]# cp misc/init.d/fedora/core/zabbix_server /etc/init.d/
[root@zabbix zabbix-3.2.1]# chmod +x /etc/init.d/zabbix_server
[root@zabbix zabbix-3.2.1]# sed -i "s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#g" /etc/rc.d/init.d/zabbix_server
//将zabbix系统脚本中zabbix的安装路径进行更改
[root@zabbix zabbix-3.2.1]# systemctl daemon-reload
[root@zabbix zabbix-3.2.1]# /etc/init.d/zabbix_server start
Reloading systemd: [ 确定 ]
Starting zabbix_server (via systemctl): [ 确定 ]
[root@zabbix zabbix-3.2.1]# ss -lnt | grep 10051
LISTEN 0 128 *:10051 *:*
//添加为系统服务,并启动,确定其端口在监听,默认是10051
//如果启动失败查看/tmp/zabbix_server.log这个日志内容
[root@zabbix ~]# cp -r /root/zabbix-3.2.1/frontends/php/ /usr/local/nginx/html/zabbix
//复制zabbix的网页目录到nginx网页根目录下
[root@zabbix ~]# ps -ef | grep php
//根据查询结果就可以看出运行php程序的用户是nobody
[root@zabbix ~]# chown -R nobody:nobody /usr/local/nginx/html/zabbix/
//所以需要保证运行PHP的用户对这个目录有绝对的权限否则将无法更改数据
客户端访问测试:
根据提示的警告信息修改php的配置文件
[root@zabbix ~]# sed -i 's/post_max_size = 8M/post_max_size = 16M/g' /etc/php.ini
[root@zabbix ~]# sed -i 's/max_input_time = 60/max_input_time = 300/g' /etc/php.ini
[root@zabbix ~]# sed -i 's/max_execution_time = 30/max_execution_time = 300/g' /etc/php.ini
[root@zabbix ~]# echo -e "date.timezone = Asia/Shanghai" >> /etc/php.ini
[root@zabbix ~]# echo -e "always_populate_raw_post_data = -1" >> /etc/php.ini
[root@zabbix ~]# systemctl restart php-fpm
//重新启动php,使其加载配置文件
继续访问web页面,如图:
由此可以看出界面已经变成了中文!
但是需要注意zabbix中文乱码的问题,需要使用以下方法修改中文乱码的问题!
[root@zabbix ~]# ls | grep SIMKAI.TTF
SIMKAI.TTF
[root@zabbix ~]# sed -i 's/DejaVuSans/simkai.ttf/g' /usr/local/nginx/html/zabbix/include/defines.inc.php
[root@zabbix ~]# mv SIMKAI.TTF /usr/local/nginx/html/zabbix/fonts/simkai.ttf
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。