设为首页 收藏本站
查看: 1254|回复: 0

[经验分享] 【Zabbix】在CentOS7上安装Zabbix3.0

[复制链接]

尚未签到

发表于 2018-1-1 16:16:02 | 显示全部楼层 |阅读模式
  Zabbix安装
  首先说明一下,本文主要参考了【http://www.iyunv.com/Linux/2016-11/137030.htm】和【http://www.cnblogs.com/XYJK1002/p/5324293.html】两篇文章。在两者的基础上做了些小总结和小错误的修正(当然也可能不是错误,只是因为一些环境或其他原因而不同的操作而已)。
  一直想给测试环境也装一套Zabbix用来监控,这次刚好为了修复之前的SQL注入的漏洞,首先在自己的虚拟机上练一练手。令人高兴的是,安装过程比较顺利,基本没遇到什么大麻烦,一个上午就已经全部完成开始使用了。下面来记录一下安装过程。
  ■  安装环境说明
  

[iyunv@localhost selinux]# cat /proc/version  
Linux version
3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Nov 19 22:10:57 UTC 2015  
[iyunv@localhost selinux]#
cat /etc/redhat-release  
CentOS Linux>7.2.1511 (Core)   

  【https://www.zabbix.com/documentation/3.2/manual/installation/install_from_packages】这是Zabbix的官方文档,我大概看了一下还是蛮全的。它还按照不同数据库配置给出了不同的安装说明。
  据说在CentOS早期版本上mysql是作为一个自带软件安装着的,在进入CentOS7之后就把mysql换成了mariaDB。为了和老版本统一,这次安装我仍然选择了mysql来进行安装。
  至于CentOS6版本上的Zabbix安装,本来以为大同小异的,没想到今天试了一下发现几乎就像是装一个不同的软件一样。。(主要是yum源中基本上还没有支持CentOS6的zabbix相关包,所以只能通过源码编译)详细的也不想说了,参考这篇文章:【http://www.cnblogs.com/zzzhfo/p/5820321.html】,Zabbix的源码包从这里下载:【http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.4/zabbix-3.0.4.tar.gz】
  ■  安装各种zabbix主要包和依赖包
  安装过程中注意root权限,如果不是root就要记得sudo。
  通过yum来安装软件可以自动化解决依赖的问题比较好用,但是默认源中似乎不带zabbix软件包,所以需要首先添加带有zabbix的源:
  

rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm  

  然后就可以通过yum来安装各种zabbix相关的包了。可以确定需要首先安装的是zabbix-server-mysql和zabbix-web-mysql两个包。
  

yum install -y zabbix-server-mysql zabbix-web-mysql  

  另外对比之前说过的两篇参考文章和官方文档,我又用rpm -qa | grep zabbix之后发现,主要还有zabbix-agent和zabbix-get两个包没有装(不知道zabbix-sender起什么作用没有装&不需要加监控代理所以zabbix-proxy没有装)。于是再yum一下这两个包,全部安装结束之后可能会要将近100M的空间。
  在这个安装过程中,作为依赖还会自动安装一些其他东西比如PHP什么的。。
  ■  mysql的安装与初始化
  默认的源中已经没有mysql了,要通过yum安装mysql的话必须先添加mysql社区的源。可以这么做:
  

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm  
rpm -ivh mysql-community-release-el7-5.noarch.rpm
  

  如果报没有wget的错可以先yum下wget。然后就可以
  

yum repolist enabled|grep mysql  
#查看可安装的mysql版本,结果如下
  
mysql
-connectors-community/x86_64 MySQL Connectors Community                  39  
mysql
-tools-community/x86_64      MySQL Tools Community                       49  
mysql56
-community/x86_64          MySQL 5.6 Community Server                 344  

  
#要装的是第三个
  

yum install -y mysql-community-server  

  mysql服务器程序的安装过程大概也要占据几十M的空间,考虑到依赖也要装十来个包。
  安装完成mysql之后就可以启动mysql服务来进行数据库的初始化。在CentOS7中启动服务用的是systemctl,在6中还是service:
  

systemctl enable mysqld  #设置开机自动启动mysql  
systemctl start mysqld    #立即启动mysql
  

  顺利启动之后可连入mysql进行数据库初始化:
  

mysql -u root -p  
password:    #会问你密码,第一次登录不用管直接回车即可
  
mysql
>    #进入mysql的命令行界面  
##创建zabbix数据库和用户,这里能不能自由取名什么的不清楚没试过,有机会可以尝试一下
  
mysql
>create database zabbix character set utf8 collate utf8_bin;  
mysql
>grant all privileges on zabbix.* to zabbix@localhost>mysql>flush privileges;
  
mysql
>quit;  

  
#至此数据库基本结构已经有了,接下来就是往里面导入数据
  

zcat /usr/share/doc/zabbix-server-mysql-3.2.1/create.sql.gz |mysql -uzabbix -pzabbix -b zabbix    #注意用的命令是zcat不是cat,然后-p后面密码是根据上面mysql中建立的用户的密码来的。  

  这一步导入数据可能会花费较长时间,在导入数据完成之后可以看一看zabbix数据库中的表和结构,可以看到已经具有了基本的zabbix数据库表结构了。可以通过dbvis等工具远程连入数据库查看表结构。
  ■  配置zabbix并启动
  有了数据库之后,还需要将zabbix和数据库联系起来。这一步就是需要修改zabbix的服务端配置。配置文件在/etc/zabbix/zabbix_server.conf(默认位置,如果安装过程中有个性化更改的话就需要找其他地方了)在这个配置文件中可以配置DBHost,DBName,DBUser,DBPassword等。按照上面的意思,配置的数据库就是在本地的所以DBHost可以直接写localhost。如果是远程的数据库的话DBHost就可以写远程数据库的URL。配置完成后的zabbix_server.conf中有效的配置项如下:
  

[iyunv@localhost zabbix]# egrep -v '(^.*#|^$)' zabbix_server.conf  
LogFile
=/var/log/zabbix/zabbix_server.log  
LogFileSize
=0  
PidFile
=/var/run/zabbix/zabbix_server.pid  
DBHost
=localhost  
DBName
=zabbix  
DBUser
=zabbix  
DBPassword
=zabbix  
SNMPTrapperFile
=/var/log/snmptrap/snmptrap.log  
Timeout
=4  
AlertScriptsPath
=/usr/lib/zabbix/alertscripts  
ExternalScripts
=/usr/lib/zabbix/externalscripts  
LogSlowQueries
=3000  

  *可以注意一下的是zabbix_server.log这个日志记录了zabbix服务器的运行情况,出了问题可以来查。
  alertscripts和externalscripts对应的是告警脚本和外部脚本监控方式。
  如果顺利的话到此为止,所有zabbix相关的内容都已经配置完成了,就可以启动zabbix_server了:
  

systemctl enable zabbix-server  
systemctl start zabbix
-server  

  然后可以去前端配置中修改一下时区(虽然不知道这么做的意义是什么。。),文件位于/etc/httpd/conf.d/zabbix.conf,其中有一行被注释的#php_value date.timezone Europe/Rica,把注释去掉然后把地区信息改成Asia/Shanghai即可。
  最后,启动apache服务来打通服务器到前端用户的最后一道屏障,这样可以让用户通过web界面来访问配置zabbix的功能。
  

systemctl enable httpd  
systemctl start httpd
  

  另外,为了zabbix_server可以监控自己,可以再systemctl start zabbix-agent一下。
  此时可以netstat -ntlp查看开放端口,如果顺利应该可以看到我们开放了3306(mysql),80(httpd),10051(zabbix_server用),10050(zabbix_agent)用的四个端口。如果ps -ef|grep zabbix看一下也可以看到很多条zabbix_server和zabbix_agent的各种进程。
  ■  zabbix的网页界面配置
  这时候在浏览器访问http://IP/zabbix就可以访问到zabbix的web界面。因为是首次访问,web界面会引导你走一个配置流程。
DSC0000.png

  基本上只要一路next step下去就可以了,中间可能会遇到让你填数据库用户的密码,以及一个server name(这个是会显示在未来zabbixweb界面的title里的),其他都是一些确认信息。全部点完之后就来到了登录界面,默认的管理员账密是Admin:zabbix。进入web界面之后还可以为我们的用户配置语言(zabbix语言配置是针对用户而不是系统的,这一点比较奇葩,zabbix中有很多这样的逻辑。。)。据说配置成中文时还会遇到乱码什么的,因为我本身习惯看英文界面加上我切换中文时没遇到问题。。就不多说了如果碰到乱码参考上面两篇文章给出的解决方案。
  进入zabbix的web界面之后就不用多说了,总之就按照以前熟悉的感觉来吧。
  默认的zabbix中自带了很多template,其中很多项都是冗余的,如果要正式用记得要优化一下。另外会自带一台主机,就是Zabbix Server,监控地址是127.0.0.1,自带关联了Template OS Linux和Template Zabbix Server两个模板,默认状态是disable。可以把这个enable之后等一会儿,然后去看latest data下面的数据。数据正常出现了的话这就是好了。
  ■  用Nginx做一个代理
  默认的Zabbix前端是由apache作为web容器的,默认端口是80(也就是httpd服务自带的一些配置)。这样的话显然不是很好。另外去年爆出来一个zabbix的Web界面是存在一个SQL注入漏洞的,要解决这个漏洞升级Zabbix版本太麻烦了,一个好办法是利用Nginx作为接入zabbixweb界面的前端代理,对请求做一些过滤,就可以消除这个隐患了。
  关于Nginx的配置,在uWSGI+Nginx发布flask应用那篇文章里说过,这里就不多说了。需要注意的是在nginx配置完成之后,应该把apache的配置/etc/httpd/conf/httpd.conf修改,把Listen后面的端口号写成和Nginx甩出来的后端端口号一致。在Nginx的配置中添加一条:
  

location ^~ /zabbix/jsrpc.php {  
deny all;}
  

  来把所有请求jsrpc.php的都给拒绝掉。那个SQL注入漏洞就是从这里发现的。如果配置静态路由,可以加上一条location /zabbix的配置,在里面配置上proxy_pass http://127.0.0.1:8881;(8881是我自己随便写的端口号,只要和httpd.conf配置里一致即可)
  至此,启动Nginx和httpd两个服务之后就可以看到80端口由Nginx掌控,它对外面进来的请求进行处理分配,转移到相关的后端apache端口,后端处理请求。
  ■  碰到的一些小问题
  ●  selinux冲突
  安装完成后对于127.0.0.1的监控已经正常运转,但是在web界面下总是会显示一条黄色的警告,提示Zabbix server is not running:data displayed maynot be current。不知道具体原因,总之我上服务器把服务器上的selinux关掉之后就不再显示了。
  ●  虚拟机调通问题
  Zabbix在虚拟机中完全起来之后,宿主机却访问不来web界面,原来是
  1.防火墙组织了访问。对于这种情况,如果只是测试环境的虚拟机的话大可以systemctl stop firewalld直接关掉防火墙。如果需要防火墙的话那么就需要配置防火墙来放行一些端口,这需要修改/etc/firewalld/zones/public.xml这个文件了。具体的修改方法还没试过,请百度
  2.开启web服务时host只写了127.0.0.1而不是0.0.0.0。。呵呵了。。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-430563-1-1.html 上篇帖子: Zabbix 中文乱码问题 下篇帖子: zabbix 自动发现 相关
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表