摘要:在生产环境上对服务器进行网络参数(比如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)的更多相关文章

  1. 我搞zabbix的那两天

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

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

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

  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. [Proposal]MyTools

    [名称]:MyTools [需求分析]:现在市场上常用的移动端工具类APP,要么功能单一,如手电筒,录音机,指南针等,要么虽然有多种功能的整合,但只是单一的堆砌,内部依然是一个个独立的功能模块,并未形 ...

  2. ASP.NET Web API 中使用 swagger 来管理 API 文档

    本文以 ASP.NET Web API 为后台框架,利用 EF6 连接 postgreSQL 数据库,使用 swagger 来生成 REST APIs文档.文章分二个部分,第一部分主要讲如何用 EF6 ...

  3. .NET Core下开源任务调度框架Hangfire的Api任务拓展(支持秒级任务)

    HangFire的拓展和使用 看了很多博客,小白第一次写博客. 最近由于之前的任务调度框架总出现问题,因此想寻找一个替代品,之前使用的是Quartz.Net,这个框架方便之处就是支持cron表达式适合 ...

  4. .Net中验证码图片生成

    开发网站或平台系统,登录页面是必不可少的功能,但是现在很多人可以使用工具暴力破解网站密码,为了防止这类非法操作,需要在登录页面添加验证,验证码就是最常用的一种验证方式. 我结合了自己的经验和网上的验证 ...

  5. Spring IOC 容器源码分析 - 获取单例 bean

    1. 简介 为了写 Spring IOC 容器源码分析系列的文章,我特地写了一篇 Spring IOC 容器的导读文章.在导读一文中,我介绍了 Spring 的一些特性以及阅读 Spring 源码的一 ...

  6. GitLab问题小结

    1.内存消耗太大 (1)公司使用gitlab后,发现服务器内存居高不下,使用top命令查看内存消耗,发现服务器上git将近消耗一半内存资源.而且很奇怪的是竟然开启了32个进程.后经查资料,原来这跟gi ...

  7. cad2015卸载/安装失败/如何彻底卸载清除干净cad2015注册表和文件的方法

    cad2015提示安装未完成,某些产品无法安装该怎样解决呢?一些朋友在win7或者win10系统下安装cad2015失败提示cad2015安装未完成,某些产品无法安装,也有时候想重新安装cad2015 ...

  8. POJ 2707

    #include<iostream> #include<stdio.h> #include<algorithm> using namespace std; int ...

  9. 剑指offer一之二维数组中的查找

    一.题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 二.解答方法: 方法 ...

  10. 在MongoDB中实现聚合函数

    在MongoDB中实现聚合函数 随着组织产生的数据爆炸性增长,从GB到TB,从TB到PB,传统的数据库已经无法通过垂直扩展来管理如此之大数据.传统方法存储和处理数据的成本将会随着数据量增长而显著增加. ...