我搞zabbix的那两天(1)

摘要在生产环境上对服务器进行网络参数(好比CPU、内存等)的监控是很必要的,好比当服务器网络参数如内存不够用、磁盘空间快要占满时及时通知运维人员进行处理,保证服务器系统的安全。而zabbix就是这么一个很是流行且方案成熟的网监控解决方案,这篇文章主要分享我这两天部署zabbix经验【我搞zabbix的那两天(2)将介绍zabbix使用及短信等告警实现】,部署过程当中遇到不少问题,好比zabbix server安装完毕,初始化web设置页面一直进入不了,执行到配置数据库链接信息时一直链接不了等问题,为方便说明我将按照部署顺序来介绍,最后一部分将汇总本次部署遇到的问题。php

我搞zabbix的那两天(1)html

我搞zabbix的那两天(2) node

1、Zabbix简介

1.  zabbix是一个基于WEB界面的,并提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix能监视各类网络参数(好比CPU 负荷,内存使用,网络情况,端口监视,日志监视等等指标!),保证服务器系统的安全运营;并提供柔软的通知机制以让运维人员可以快速定位。mysql

2.  zabbix经过C/S模型来收集数据,经过B/S模型模式在web端展现和进行配置。被监控端:主机设备经过安装agent收集数据并发送给server端,网络设备经过SNMP收集数据并发送给server端。server端:经过收集SNMP和agent发送来的数据,将数据写入到后台数据库中(例如:mysql,oracle),在经过web展现出来。react

3.  运行环境linux

zabbix server 须要运行在LAMP或者是LNMP的环境下;本文介绍安装 的是zabbix-3.2.0版本,其对应的LAMP版本要求以下:c++

应用名web

版本号sql

下载地址数据库

Zabbix

3.2.0

https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.0/

Linux(CentOS)

6.5

 

Apache

2.2.15

yum方式安装,下面会介绍到

MySQL

5.5.29

源码安装

PHP

5.6.31(需5.4.X系列及以上)

yum方式升级安装,下面会介绍到

 

2、Zabbix 的部署准备

2.1 LAMP环境准备与配置

这里的依赖包均经过yum安装,所以需事先安装和配置好yum,这里不作叙述。

yum -y install gcc gcc-c++ autoconf httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmath mysql-connector-odbc mysql-devel libdbi-dbd-mysql net-snmp-devel curl-devel

  

2.2升级PHP

php建议>=5.4,若是小于这个版本会出现如下报错:

PHP Parse error:  syntax error, unexpected '[' in /var/www/html/zabbix/index.php on line 29我第一次安装就是没有升级PHP,查看apache日志一直报这个错误,因此这里要进行升级PHP。

2.2.1 卸载PHP5.3.3

php -V 

查看已经安装的php的包:

yum list installed | grep php

  

能够看到以下原有的安装包:

php-common.x86_64 0:5.3.3-38.el6   

php-gd.x86_64 0:5.3.3-38.el6        

php-ldap.x86_64 0:5.3.3-38.el6          

php-mysql.x86_64 0:5.3.3-38.el6    

php-odbc.x86_64 0:5.3.3-38.el6      

php-pdo.x86_64 0:5.3.3-38.el6           

php-pear.noarch 1:1.9.4-4.el6      

php-pecl-apc.x86_64 0:3.1.9-2.el6   

php-pecl-memcache.x86_64 0:3.0.5-4.el6  

php-pgsql.x86_64 0:5.3.3-38.el6    

php-soap.x86_64 0:5.3.3-38.el6      

php-xml.x86_64 0:5.3.3-38.el6           

php-xmlrpc.x86_64 0:5.3.3-38.el6

全都是5.3.3-38.el6版本的。

使用rpm -e --nodeps ph-xxx依次删掉上面的5.3.3版本

2.2 安装PHP5.6.x

如今咱们就能够进行安装5.6.x版本的PHP了。

rpm -Uvh http://download.Fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm;
rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm;
yum install --enablerepo=remi,remi-php56 php php-opcache php-pecl-apcu 	php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof php-pdo php-pear php-fpm php-cli php-xml php-bcmath php-process php-gd php-common;

以后再来编辑php.ini

2.3 配置php.ini

编辑PHP相关的 /etc/php.ini 文件。(这里必须作应的修改,不然在以后的web初始化过程当中会报错。)  

vim /etc/php.ini

修改以下条目或者经过 sed 命令进行内容替换

date.timezone = Asia/Shanghai
max_execution_time = 300
post_max_size = 16M  #有时候这里会被设置32M
max_input_time=300
memory_limit = 128M
mbstring.func_overload = 2

或经过 sed 方式进行内容替换:

sed -i "s/;date.timezone =/date.timezone = Asia\/Shanghai/g" /etc/php.ini
sed -i "s#max_execution_time = 30#max_execution_time = 300#g" /etc/php.ini
sed -i "s#post_max_size = 8M#post_max_size = 32M#g" /etc/php.ini
sed -i "s#max_input_time = 60#max_input_time = 300#g" /etc/php.ini
sed -i "s#memory_limit = 128M#memory_limit = 128M#g" /etc/php.ini
sed -i "/;mbstring.func_overload = 0/ambstring.func_overload = 2\n" /etc/php.ini

最后开启httpd并设置开机自启动

chkconfig httpd on
service httpd start

2.3 MySQL数据库的准备

开启mysql并设置开机自启动:

#chkconfig mysqld on

#service mysqld start

添加mysql数据库的 zabbix用户,并设置密码:

先用root身份登入mysql中,并执行如下命令

mysql>use mysql

mysql>insert into mysql.user(Host,User,Password) values("localhost","zabbix",password("zabbix"));

mysql>flush privileges;

2.4 为zabbix建立用户

groupadd zabbix -g 506
useradd -g zabbix -u 506 -m zabbix  

PS:这里将zabbix用户的UID与GID均设置为506。

3、Zabbix Server安装

3.1 tar包下载

下载地址:

https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.0/

 

3.2编译安装

 

tar xvf zabbix-3.2.0.tar.gz
./configure --prefix=/usr/local/zabbix --enable-server --enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl
make
make install

  

3.3 检查zabbix是否添加到系统服务

#cat /etc/services | grep zabbix

若是看到以下信息则表明已经添加成功,或者能够自行手动添加到 /etc/services 文件中:

zabbix-agent 10050/tcp     #Zabbix Agent

zabbix-agent 10050/udp    #Zabbix Agent

zabbix-trapper 10051/tcp   #Zabbix Trapper

zabbix-trapper 10051/udp  #Zabbix Trappe

 

3.4创建zabbix所需的数据库

root身份等人到mysql数据库中,并执行如下命令创建zabbix数据库:

mysql>create database zabbix character set utf8;

mysql>grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';

mysql>flush privileges;

然后在下载的源文件中存在一个database/mysql 子目录,中间存放在建 zabbix数据库结构的SQL脚本文件。先进入到zabbix源文件所在的 目录,并执行如下语句:

l mysql -u zabbix -p zabbix < ./database/mysql/schema.sql

l mysql -u zabbix -p zabbix < ./database/mysql/images.sql

l mysql -u zabbix -p zabbix < ./database/mysql/data.sql

PS:以上三条指令将目的执行sql脚本,构建zabbix数据库的结构,每 次都要输入mysql中zabbix帐户的密码

3.5 建立zabbix的的日志文件和链接

mkdir /var/log/zabbix
chown zabbix.zabbix /var/log/zabbix
ln -s /usr/local/zabbix/etc /etc/zabbix
ln -s /usr/local/zabbix/bin/* /usr/bin/
ln -s /usr/local/zabbix/sbin/* /usr/sbin/

3.6 拷贝与配置zabbix启动文件

cp misc/init.d/fedora/core/zabbix_* /etc/init.d/
chmod 755 /etc/init.d/zabbix_*
sed -i "s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#g" /etc/init.d/zabbix_server
sed -i "s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#g" /etc/init.d/zabbix_agentd

3.7 配置zabbix_server.conf服务端文件

编辑并修改 /etc/zabbix/etc/zabbix_server.conf 文件,并修改以下条目:

DBHost=IP #当前服务器IP
DBName=zabbix #数据库名称
DBUser=zabbix #数据库用户
DBPassword=zabbix #数据库密码(先前设置了zabbix数据库密码为zabbix

或者用 sed 方式替换文件内容:

sed -i "s/DBUser\=root/DBUser\=zabbix/g"   /etc/zabbix/etc/zabbix_server.conf
sed -i "/# DBPassword=/aDBPassword=zabbix\n" /etc/zabbix/etc/zabbix_server.conf
sed-i "s#tmp/zabbix_server.log#var/log/zabbix/zabbix_server.log#g" /etc/zabbix/etc/zabbix_server.conf

  

3.8 配置 zabbix_agentd.conf 文件

(这里是为了监控 server 自己, 如对其余服务器进行监控,配置文件相相似)

PS:这里放的的是zabbix_agentd.conf是客户端配置文件,这里是为了演示,所以这里配置这个文件的目的就是为了可以实现对本地服务器的监控。该文件须要修改以下四个条目:

Server=127.0.0.1 #此处添加服务端的 ip,如服务器不为本机,则须要填写远端 zabbix_server 的 ip 地址
ServerActive=127.0.0.1 #此处修改成服务端的 ip,这里应该修改成该服务器对外的ip地址
/tmp/zabbix_agentd.log #修改日志路径
UnsafeUserParameters=0 #默认是不启用自定义脚本功能的,要自定义 key ,需开启,设置为1
Include=/etc/zabbix/zabbix_agentd.conf.d/ #自定义的 agent d 配置文件能够写在这个目录下面

利用sed 方式内容替换的执行命令以下:

 

sed -i "s/Server\=127.0.0.1/Server\=127.0.0.1,192.168.1.89/g" /etc/zabbix/etc/zabbix_agent.conf 
sed -i "s/ServerActive\=127.0.0.1/ServerActive\=192.168.1.89:10051/g" /etc/zabbix/etc/zabbix_agent.conf 
sed -i "s#tmp/zabbix_agentd.log#var/log/zabbix/zabbix_agentd.log#g" /etc/zabbix/etc/zabbix_agentd.conf
sed -i "#UnsafeUserParameters=0#aUnsafeUserParameters=1\n" /etc/zabbix//etc/zabbix_agentd.conf

 

3.9 拷贝PHP网页文件到Apache中

cp -r ./frontends/php/ /var/www/html/zabbix
chown -R apache.apache /var/www/html/zabbix

3.10 开启zabbix

/etc/init.d/zabbix_server start
/etc/init.d/zabbix_agent start 

至此,zabbix的安装完成。

 

4、进入Web页面设置zabbix

 

浏览器中输入地址:http://ip/zabbix,则可看到以下初始化欢迎界面。

 

PS:其中ip表明本地服务器对外开放的ip地址

点击next

PS: PHP字符串函数重载必须禁用

编辑/etc/php.ini修改mbstring.func_overload= 1再点击Next step”操做便可。

接下来是进行数据库的链接配置,依次填入数据库的链接信息以后,点击Next step”按钮,

一直报Cannot connect to the Database...Error connecting to database:Permission defined

刚开始判断是防火墙未开启端口或者是数据库没有给zabbix用户授予远程链接的权限致使,因而检查了防火墙并无开启,排除防火墙缘由,继续授予了zabbix远程链接权限,以下:

而后仍是链接不了,又根据错误提示权限不够,推断多是zabbix配置文件没有权限,因而授予配置文件权限:chown -R zabbix:zabbix /etc/zabbix/*,发现依然链接不了。

后面想了一下,多是selinux访问控制策略致使,因而使用setenforce 0命令暂时关闭SELinux

再点击Next step”,发现是能够了到下一步了

这是安装完后汇总的信息

 

 

看到这张图,说明已经安装成功了点击Finish按钮后进入zabbix的管理操做登录界面

点击Finish按钮后进入zabbix的管理操做登录界面

填写完帐号和密码后登录zabbix的管理操做界面,以下:

至此,zabbix server 基本安装结束。

5、问题汇总

 

5.1 安装好zabbix server后发现页面访问出现问题。

 

查看more /var/log/httpd/error_log错误日志发现

 

PHP Parse error:  syntax error, unexpected '[' in /var/www/html/zabbix/index.php on line 29

 

这是因为PHP版本<5.4,升级PHP便可,查看本文“2.2 升级PHP

 

5.2 web页面配置数据库链接不上

 

如图:

确保服务器防火墙开放了数据库端口;

确保数据库开放了zabbix用户远程链接用户的权限,使用以下命令:

mysql>grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';

mysql>show grants for zabbix;

若是前两项都没问题,确保SELinux是否关闭。使用setenforce 0命令

5.3部署好后,出现数据库链接问题:XXXX/mysql.sock找不到

检查链接数据IP是否正确,好比localhost为链接访问页面所在的主机的数据库,及当前操做的Windows电脑。

 

IP通常填服务器的内网IP便可。

 

检查zabbix_agentd.conf文件中Server=IP,此处IP为服务端的IP地址,内网外网所有写上都好分隔。

 

检查zabbix_server.conf文件中DB相关设置,包括IP,端口,sock地址等信息是否与当前数据库安装信息一致。

 

学习本就是一个不断模仿、练习、再到最后面本身原创的过程。

虽然可能历来不能写出超越网上通类型同主题博文,但为何仍是要写?
于本身而言,博文主要是本身总结。假设本身有观众,毕竟讲是最好的学(见下图)。

于读者而言,笔者能在这个过程get到知识点,那就是共赢了。
固然因为笔者能力有限,或许文中存在描述不正确,欢迎指正、补充!
感谢您的阅读。若是本文对您有用,那么请点赞鼓励。

相关文章
相关标签/搜索