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.2 PCI总线的信号定义

    PCI总线是一条共享总线,在一条PCI总线上可以挂接多个PCI设备.这些PCI设备通过一系列信号与PCI总线相连,这些信号由地址/数据信号.控制信号.仲裁信号.中断信号等多种信号组成. PCI总线是一 ...

  2. RTlinux3.2安装

    ( 1 ).前言 2003 年以后, fmslabs 的 RTLinux Free 版本为 3.2Pre ,和以前的 RTLinux 3.1 比较,不再需要必须从 2.4.4 的内核上安装. RTLi ...

  3. java.sql.SQLException: Can not issue empty query.

    1.错误描述 java.sql.SQLException: Can not issue empty query. at com.mysql.jdbc.SQLError.createSQLExcepti ...

  4. hi3531的pcie atu资源重映射

    1. 设置ATU 区域号寄存器为需要配置的地址转换区编号. 2. 设置ATU Region Lower Base Address Register 和ATU Region Upper Base Add ...

  5. 利用Tomcat部署Web项目报错

    1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...

  6. 使用 opencv 将图片压缩到指定文件尺寸

    前言 图片压缩应用很广泛,如生成缩略图等.前期我在进行图片处理的过程中碰到了一个问题,就是如何将图片压缩到指定尺寸,此处尺寸指的是生成图片文件的大小. 我使用 opencv 进行图片处理,于是想着直接 ...

  7. httpclient案例一(调用识别接口)

    public Map<String, Object> pictureRecognition(String recotype, MultipartFile imageFile) { Stri ...

  8. C#图解教程 第十五章 接口

    接口 什么是接口 使用IComparable接口的示例 声明接口实现接口 简单接口示例 接口是引用类型接口和as运算符实现多个接口实现具有重复成员的接口多个接口的引用派生成员作为实现显式接口成员实现 ...

  9. C#图解教程 第十七章 泛型

    泛型 什么是泛型 一个栈的示例 C#中的泛型 继续栈示例 泛型类声明泛型类创建构造类型创建变量和实例 使用泛型的栈的示例比较泛型和非泛型栈 类型参数的约束 Where子句约束类型和次序 泛型方法 声明 ...

  10. 【转载】Java并发编程:volatile关键字解析(写的非常好的一篇文章)

    原文出处: 海子 volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volat ...