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

我搞zabbix的那两天(1)

我搞zabbix的那两天(2)

一、Zabbix简介

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

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

3. 运行环境

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

应用名

版本号

下载地址

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方式升级安装,下面会介绍到

二、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。

三、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的安装完成。

四、进入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.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到知识点,那就是双赢了。
当然由于笔者能力有限,或许文中存在描述不正确,欢迎指正、补充!
感谢您的阅读。如果本文对您有用,那么请点赞鼓励。

  

  

  

  

  

我搞zabbix的那两天的更多相关文章

  1. 我搞zabbix的那两天(2)

    摘要:前一篇(我搞zabbix的那两天(1))我介绍了Zabbix的安装部署以及遇到的问题,这一篇将介绍zabbix 使用及短信等告警实现!!! Zabbix主界面及汉化方法介绍 1.1 初始化主界面 ...

  2. 我搞zabbix的那两天(1)

    摘要:在生产环境上对服务器进行网络参数(比如CPU.内存等)的监控是很必要的,比如当服务器网络参数如内存不够用.磁盘空间快要占满时及时通知运维人员进行处理,保证服务器系统的安全.而zabbix就是这么 ...

  3. zabbix 使用问题两个--中文乱码,以及监控ESXi下的虚拟机

    1. 中文乱码 最开始中文显现 长方形不显示文字.解决办法: c:\windows\fonts 下面复制 楷体的字体(字体随意看自己喜欢) 文件名一般为: simkai.ttf 2.将simkai.t ...

  4. 转 zabbix 优化方法 以及 后台数据库查询方法 两则

    ############sample 1 https://blog.51cto.com/sfzhang88/1558254 如何从Zabbix数据库中获取监控数据 sfzhang关注6人评论40627 ...

  5. ss命令结合zabbix对socket做监控

    本文为博客园作者所写: 一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 最近天冷了,socket也出问题了,一直没有做监控,现在就把监控加起来,目前我们使用的有z ...

  6. python调用zabbix接口实现Action配置

    要写这篇博客其实我的内心是纠结的,老实说,我对zabbix的了解实在不多.但新公司的需求不容置疑,当我顶着有两个头大的脑袋懵懵转入运维领域时,面前摆着两百多组.上千台机器等着写入zabbix监控的需求 ...

  7. Zabbix简介及安装

    前言 未经监控就上线的系统,就是裸奔,耍流氓. 监控对我们来说太重要了,监控工具也有很多,像,Cacti,Nagios,Ganglia,Zabbix等等,今天我们要介绍的是Zabbix,它的功能很强大 ...

  8. zabbix 3.2 高可用实现方式二-pacemaker+corosync实现zabbix高可用集群

    一.pacemaker 是什么 1.pacemaker 简单说明 2.pacemaker 由来 二.pacemaker 特点 三.pacemaker 内部结构 1.群集组件说明: 2.功能概述 四.c ...

  9. 分布式系统监视zabbix讲解三之用户和用户组--技术流ken

    概述 Zabbix 中的所有用户都通过 Web 前端去访问 Zabbix 应用程序.并为每个用户分配唯一的登陆名和密码. 所有用户的密码都被加密并储存于 Zabbix 数据库中.用户不能使用其用户名和 ...

随机推荐

  1. bookStore案例第一篇【部署开发环境、解决分类模块】

    前言 巩固Servlet+JSP开发模式,做一个比较完整的小项目 成果图 该项目包含了两个部分,前台和后台. 前台用于显示 后台用于管理 该项目可分为5个模块来组成:分类模块,用户模块,图书模块,购买 ...

  2. Eclipse集成spket插件_Ext-5.1.0

    1, spket-1.6.23.jar下载 官网下载:http://www.spket.com/download.html ,  百度网盘地址: http://pan.baidu.com/s/1qXH ...

  3. quartz定时格式配置以及JS验证

    一个Cron-表达式是一个由六至七个字段组成由空格分隔的字符串,其中6个字段是必须的而一个是可选的,如下: ---------------------------------------------- ...

  4. Js前端传递json数组至服务器端并解析的实现。

    最近做的一个小项目中需要将json数组数据传递到服务器端进行保存,现分享一下解决思路. 环境:EasyUi+Mvc 4.0 如下: 在上述截图中的红色圈起来的部分,需要在点击保存后通过一次ajax请求 ...

  5. Spring常用注解介绍【经典总结】

    Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式. Spring注解方式减少了配置文件内容 ...

  6. JS设计模式(三) 数据访问对象模式

    引言 HTML5 提供了两种在客户端存储数据的新方法:localStorage.sessionStorage,他们是Web Storage API 提供的两种存储机制,区别在于前者属于永久性存储,而后 ...

  7. matplotlib学习之绘图基础

    matplotlib:http://www.cnblogs.com/jasonhaven/p/7609059.html 1.基本图形 散点图:显示两组数据的值,每个点的坐标位置由变量的值决定,头一组不 ...

  8. [C语言]贪吃蛇_结构数组实现

    一.设计思路 蛇身本质上就是个结构数组,数组里存储了坐标x.y的值,再通过一个循环把它打印出来,蛇的移动则是不断地刷新重新打印.所以撞墙.咬到自己只是数组x.y值的简单比较. 二.用上的知识点 结构数 ...

  9. CSS中新属性calc()

    CSS3的calc()使用 原文: http://www.w3cplus.com/css3/how-to-use-css3-calc-function.html © w3cplus.com calc( ...

  10. 简单Elixir游戏服设计-玩家进程跑起来

    有了玩家模型,我们试试让玩家进程跑起来. 需要搞个PlayerSupervisor来负责启动和监控玩家进程. defmodule PlayerSupervisor do use Supervisor ...