Zabbix安装

  首先说明一下,本文主要参考了【http://www.linuxidc.com/Linux/2016-11/137030.htm】和【http://www.cnblogs.com/XYJK1002/p/5324293.html】两篇文章。在两者的基础上做了些小总结和小错误的修正(当然也可能不是错误,只是因为一些环境或其他原因而不同的操作而已)。

  一直想给测试环境也装一套Zabbix用来监控,这次刚好为了修复之前的SQL注入的漏洞,首先在自己的虚拟机上练一练手。令人高兴的是,安装过程比较顺利,基本没遇到什么大麻烦,一个上午就已经全部完成开始使用了。下面来记录一下安装过程。

■  安装环境说明

[root@localhost selinux]# cat /proc/version
Linux version 3.10.-.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8. (Red Hat 4.8.-) (GCC) ) # SMP Thu Nov :: UTC
[root@localhost selinux]# cat /etc/redhat-release
CentOS Linux release 7.2. (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的源码包从这里下载:【https://www.zabbix.com/download_sources】

  * 后来尝试了下源码安装,操作步骤写在下面做参考。

■  安装各种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-.noarch.rpm

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

yum repolist enabled|grep mysql
#查看可安装的mysql版本,结果如下
mysql-connectors-community/x86_64 MySQL Connectors Community
mysql-tools-community/x86_64 MySQL Tools Community
mysql56-community/x86_64 MySQL 5.6 Community Server #要装的是第三个
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 identified by 'zabbix';  #如需要在远程也能通过工具用zabbix用户连入数据库,那么可以把to后面写成'zabbix'@'%'
mysql>flush privileges;
mysql>quit; #至此数据库基本结构已经有了,接下来就是往里面导入数据
zcat /usr/share/doc/zabbix-server-mysql-3.2./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中有效的配置项如下:

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

  *可以注意一下的是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界面会引导你走一个配置流程。

  基本上只要一路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端口,后端处理请求。

■   源码安装

  相比于yum安装,源码安装显然要麻烦很多。今天尝试了下,所以记录一下。参考文章【https://blog.csdn.net/baron0071/article/details/79261792】以及这个博主的第二章那篇文章。还有【https://www.cnblogs.com/wangyao3568/p/7675782.html】

  首先说明,我的系统已经安装有nginx和mysql以及php5.6的相关组件,另外也有httpd,系统是CentOS6.5的。没装这些东西的同学肯定要去安装下才能保证最终zabbix-server的正确运行。。

  上面给出过源码包的官方下载地址。下载完成,传上服务器解压之后,首先进行编译。

./configure --prefix=/usr/local/zabbix --enable-server --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

  因为我这台服务器本身作为另一个监控集群的被监控机器,所以已经有zabbix_agentd进程在跑,所以就没有加上--enable-agent参数。

  编译过程中可能会遇到各种各样的问题,比如各种依赖包的确实。按照经验,基本上提示缺少哪个包,就去yum install 一下这个包本身和包名-devel两个包即可。由于之前这台机器有装过zabbix-server,所以组件基本上都齐了,编译过程基本未报错。之后就是make && make install安装。

  完成后可以在/usr/local/zabbix中看到四个目录,etc,lib,sbin和share。etc中的zabbix_server.conf文件是zabbix-server的配置文件,去里面改一些比如DBHost,DBName之类的配置。

  回到安装包的解压目录,注意database这个目录,里面是一些各种数据库的初始化SQL文件。这里我们使用mysql中的,运行命令导入SQL(前提条件是数据库中已经有了zabbix用户以及zabbix数据库等,MySQL如何添加用户添加数据库这些可以参考我的MySQL相关文章或者直接google一下,不难)

mysql -uzabbix -pzabbix123 zabbix < schema.sql
mysql -uzabbix -pzabbix123 zabbix < images.sql
mysql -uzabbix -pzabbix123 zabbix < data.sql

  我设定的zabbix用户密码是zabbix123并且对zabbix有全权限。当然MySQL在localhost上要不然还要指定-h。

  导入数据完成后再次回到安装目录。这次注意frontends/php目录。这里放着zabbixweb管理界面的所有前端php文件。将这些文件复制到一个合适的位置比如/usr/local/zabbix/share/php中。

  然后再回到安装目录中,关注misc/init.d中的各种系统的启动脚本。对于Centos而言可以使用fedora的。将fedora/core中的zabbix_server(agent我不需要,就不拷了)拷贝到/etc/init.d中来。然后修改一下这个文件中的BASEDIR的值,默认应该是/usr/zabbix,改成自己的目录如/usr/local/zabbix。改完后可以尝试性的service zabbix-server status看下能否正常调用这个启停脚本。OK的话甚至可以直接start起来。此时zabbix-server进程已经开始启动。但是目前还无法访问web管理界面。

  这样所有zabbix-server相关的准备工作做完了。接下来就是进行一些组件配置的设定以及启动服务了。

  关于zabbix-server的web界面访问方式,比较经典的是以httpd作为后台服务容器而nginx作为前台web容器。另外由于前段是php构成的也可以直接用nginx作为一整个web容器。不过推荐还是用前者。

  httpd的默认配置一般在/etc/conf/httpd中,除了一些基本的配置需要检查外,主要看到Include项配置。默认是conf.d/*.conf。到这个目录下去建立一个zabbix.conf作为被inlucde的配置文件。里面的内容参考下面这样:

#
# Zabbix monitoring system php web frontend
# Alias /zabbix /usr/local/zabbix/share/php <Directory "/usr/local/zabbix/share/php">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value date.timezone Asia/Shanghai
</Directory> <Directory "/usr/local/zabbix/share/php/conf">
Order deny,allow
Deny from all
<files *.php>
Order deny,allow
Deny from all
</files>
</Directory> <Directory "/usr/local/zabbix/share/php/api">
Order deny,allow
Deny from all
<files *.php>
Order deny,allow
Deny from all
</files>
</Directory> <Directory "/usr/local/zabbix/share/php/include">
Order deny,allow
Deny from all
<files *.php>
Order deny,allow
Deny from all
</files>
</Directory> <Directory "/usr/local/zabbix/share/php/include/classes">
Order deny,allow
Deny from all
<files *.php>
Order deny,allow
Deny from all
</files>
</Directory>

  这里配置的主要是外界能够通过httpd访问到哪些php文件。注意/usr/local/zabbix/share/php是我刚才定的那个目录,如果目录不同则需要相应的修改。

  nginx的配置也是类似的。一般默认的nginx配置文件在/etc/nginx/nginx.conf,这个配置文件通常也会include conf.d/*.conf。去conf.d下面加上个zabbix.conf,里面内容参考:

server {
listen 8088;
server_name 你的IP; #charset koi8-r; #access_log logs/host.access.log main; location ^~ /zabbix/jsrpc.php {
deny all;
} location / {
proxy_pass http://127.0.0.1:8888/;
proxy_redirect default;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

  这样的nginx+httpd配置,外界请求首先发到nginx监听着的8088端口,然后nginx转发给后端httpd的8888端口处理。

  至此,访问http://ip:8088/zabbix应该就能看到初始化配置的界面了。也就是上面给出的那张大图那里。

  我在初始化配置的过程中还经常遇到出错,然后刷新一下页面又回来了…不知道怎么回事。到初始化的最后一页提示我无法生成配置文件,让我手动下载(页面上给出了链接)然后放到/usr/local/zabbix/share/php/conf中。放了之后果然就可以正常访问了。初始用户密码Admin/zabbix。尝试到现在为止没出现什么异常。。

■  碰到的一些小问题

●  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。。呵呵了。。

【Zabbix】在CentOS7上安装Zabbix3.0的更多相关文章

  1. 在CentOS7上安装Zabbix3.0

    #!/bin/bash # # .配置无人值守的安装,定义安装过程中需要用到的一些信息 # mysql_root_pw=root_pw mysql_zabbix_pw=zabbix_pw DBPass ...

  2. 在Centos7上安装wxPython4.0.4

    在linux上安装wxPython4.0.4时需要gtk+2.0,在安装wxPython4.0.4遇到以下错误. linux上是用pip安装wxPython4.0.4的,执行命令如下: pip ins ...

  3. centos7上安装zabbix4.0

    zabbix4.0已经推出有一段时间了,针对之前版本做了很多优化配置,易用性得到提高,特别lts(long team support)长技术支持版本,官方说提供5年的稳定技术支持,在商业化运用上,是比 ...

  4. centos7上安装zabbix3.4的详细步骤与问题处理记录

    zabbix是linux运维工作中经常用到的开源工具,话不多说,直接开始正式的安装配置环境.1.安装环境 centos7 服务端:192.168.200.100 客户端:192.168.200.200 ...

  5. 在 CentOS6 上安装 Zabbix3.0 Agent 并开启客户端自动注册

    #!/bin/bash # # .配置yum源 # cat /etc/redhat-release |grep -i centos |grep '6.[[:digit:]]' &>/de ...

  6. centos7 下安装zabbix3.0 agent

    设置YUM源:rpm -ivh http://mirrors.aliyun.com/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpmrpm - ...

  7. centos7 安装zabbix3.0 安装zabbix4.0 yum安装zabbix 国内源安装zabbix 阿里云服务器安装zabbix

    首先,此篇文章是有原因的. 刚开始也和大家一样来学习安装zabbix 奈何网上的教程和现实出现不一样的情况 在安装zabbix过程中,因为zabbix下载源是在国外,下载途中会出现终止下载的情况 tr ...

  8. centos7安装zabbix3.0超详细步骤解析

    centos7安装zabbix3.0超详细步骤解析 很详细,感谢作者 以下是我操作的history 622 java -version 623 javac -version 624 grep SELI ...

  9. centos7 安装Zabbix3.0

    1 安装Mariadb数据库(代替MySQL)yum -y install mariadb*systemctl start mariadbsystemctl enable mariadb #自启动 2 ...

随机推荐

  1. 1.3 PCI总线的存储器读写总线事务

    总线的基本任务是实现数据传送,将一组数据从一个设备传送到另一个设备,当然总线也可以将一个设备的数据广播到多个设备.在处理器系统中,这些数据传送都要依赖一定的规则,PCI总线并不例外. PCI总线使用单 ...

  2. Maximum Entropy Model(最大熵模型)初理解

    0,熵的描述 熵(entropy)指的是体系的混沌的程度(可也理解为一个随机变量的不确定性),它在控制论.概率论.数论.天体物理.生命科学等领域都有重要应用,在不同的学科中也有引申出的更为具体的定义, ...

  3. 在CYGWIN下编译和运行软件Bundler ,以及PMVS,CMVS的编译与使用

    本人按照 http://blog.csdn.net/zzzblog/article/details/17166869 http://oliver.zheng.blog.163.com/blog/sta ...

  4. freemarker定义一个连续的序列

    freemarker定义一个连续的序列 1.简易说明 定义一个连续的序列,并打印出序列中的元素 2.实现源码 <#--freemarker定义了一个连续的序列--> <#assign ...

  5. 芝麻HTTP: 1.9.3-Scrapyd-Client的安装

    在将Scrapy代码部署到远程Scrapyd的时候,第一步就是要将代码打包为EGG文件,其次需要将EGG文件上传到远程主机.这个过程如果用程序来实现,也是完全可以的,但是我们并不需要做这些工作,因为S ...

  6. 如何让window.open()以post请求方式调用(巧妙解法)

    问题由来: 在公司遇到一个线上bug,如下 var url = 'http://106.75.31.215:8012/onlinePreview?url=' + encodeURIComponent( ...

  7. Defeat the Enemy UVALive - 7146

      Long long ago there is a strong tribe living on the earth. They always have wars and eonquer other ...

  8. Eclipse去除网上复制下来的来代码带有的行号

    一.正则表达式去除代码行号 作为开发人员,我们经常从网上复制一些代码,有些时候复制的代码前面是带有行号,如: MyEclipse本身自带有查找替换功能,并且支持正则表达式替换,使用正则替换就可以很容易 ...

  9. 手机端仿ios的日期组件脚本一

    二,代码 <script> var calendar1 = new LCalendar(); calendar1.init({ 'trigger': '#startDate', //标签i ...

  10. 拥抱.NET Core系列:MemoryCache 缓存域

    在上一篇“<拥抱.NET Core系列:MemoryCache 缓存选项>”我们介绍了一些 MSCache 的机制,今天我们来介绍一下 MSCache 中的缓存域. MSCache项目 M ...