我搞zabbix的那两天
摘要:在生产环境上对服务器进行网络参数(比如CPU、内存等)的监控是很必要的,比如当服务器网络参数如内存不够用、磁盘空间快要占满时及时通知运维人员进行处理,保证服务器系统的安全。而zabbix就是这么一个非常流行且方案成熟的网监控解决方案,这篇文章主要分享我这两天部署zabbix经验【我搞zabbix的那两天(2)将介绍zabbix使用及短信等告警实现】,部署过程中遇到很多问题,比如zabbix server安装完毕,初始化web设置页面一直进入不了,执行到配置数据库连接信息时一直连接不了等问题,为方便说明我将按照部署顺序来介绍,最后一部分将汇总本次部署遇到的问题。
一、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的那两天的更多相关文章
- 我搞zabbix的那两天(2)
摘要:前一篇(我搞zabbix的那两天(1))我介绍了Zabbix的安装部署以及遇到的问题,这一篇将介绍zabbix 使用及短信等告警实现!!! Zabbix主界面及汉化方法介绍 1.1 初始化主界面 ...
- 我搞zabbix的那两天(1)
摘要:在生产环境上对服务器进行网络参数(比如CPU.内存等)的监控是很必要的,比如当服务器网络参数如内存不够用.磁盘空间快要占满时及时通知运维人员进行处理,保证服务器系统的安全.而zabbix就是这么 ...
- zabbix 使用问题两个--中文乱码,以及监控ESXi下的虚拟机
1. 中文乱码 最开始中文显现 长方形不显示文字.解决办法: c:\windows\fonts 下面复制 楷体的字体(字体随意看自己喜欢) 文件名一般为: simkai.ttf 2.将simkai.t ...
- 转 zabbix 优化方法 以及 后台数据库查询方法 两则
############sample 1 https://blog.51cto.com/sfzhang88/1558254 如何从Zabbix数据库中获取监控数据 sfzhang关注6人评论40627 ...
- ss命令结合zabbix对socket做监控
本文为博客园作者所写: 一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 最近天冷了,socket也出问题了,一直没有做监控,现在就把监控加起来,目前我们使用的有z ...
- python调用zabbix接口实现Action配置
要写这篇博客其实我的内心是纠结的,老实说,我对zabbix的了解实在不多.但新公司的需求不容置疑,当我顶着有两个头大的脑袋懵懵转入运维领域时,面前摆着两百多组.上千台机器等着写入zabbix监控的需求 ...
- Zabbix简介及安装
前言 未经监控就上线的系统,就是裸奔,耍流氓. 监控对我们来说太重要了,监控工具也有很多,像,Cacti,Nagios,Ganglia,Zabbix等等,今天我们要介绍的是Zabbix,它的功能很强大 ...
- zabbix 3.2 高可用实现方式二-pacemaker+corosync实现zabbix高可用集群
一.pacemaker 是什么 1.pacemaker 简单说明 2.pacemaker 由来 二.pacemaker 特点 三.pacemaker 内部结构 1.群集组件说明: 2.功能概述 四.c ...
- 分布式系统监视zabbix讲解三之用户和用户组--技术流ken
概述 Zabbix 中的所有用户都通过 Web 前端去访问 Zabbix 应用程序.并为每个用户分配唯一的登陆名和密码. 所有用户的密码都被加密并储存于 Zabbix 数据库中.用户不能使用其用户名和 ...
随机推荐
- JVM锁机制之synchronized
概述: synchronized是java用于处理多线程同步的一个关键字,用于标记一个方法/代码块,使之成为同步方法/同步块. 用synchronized可以避免多线程处理时的竞态条件问题. 相关概念 ...
- PuTsangTo-单撸游戏开发01 Flag与计划
先立下flag,至少1年之内坚持并2年之内完成自己的一个梦想--游戏开发. 没有参加培训也不打算参加培训,就纯靠业余时间自学并用自己的思路完成一整套游戏体系.做出此决心时也已经做好准备烂尾了,但是有种 ...
- Codeforces Round #436 (Div. 2) E. Fire
http://codeforces.com/contest/864/problem/E 题意: 有一堆物品,每个物品有3个属性,需要的时间,失效的时间(一开始)和价值.只能一件一件的选择物品(即在选择 ...
- 动易CMS - 设为首页代码和加入收藏代码(兼容各种浏览器)
注意: 这里虽然说是兼容,但是有些浏览器的设置就是不支持用js来把页面设为首页,加入收藏夹,只能让用户手动去在浏览器或者按键去设置这些功能,这里说的兼容是指当浏览器有这个设置的时候js会有提示. ...
- Jest 单元测试入门
今天,我们要讲的是 Jest 单元测试的入门知识. 为何要进行单元测试? 在学习 Jest 之前,我们需要回答一个问题:为何要进行单元测试?编写单元测试可以给你带来很多好处: 将测试自动化,无需每次都 ...
- 记一次坑爹的RSA旅程____快哭了555555555(来自实验吧的warmup的wp和感想)
这么简单的题目搞了我那么久,森森感觉自己菜的不行....哎,努力吧少年,BXS已经全国第二了. 嗯,废话不说,这道题目来自实验吧的"warmup",附上链接 http://www. ...
- Doing Homework again
Doing Homework again Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I6 ...
- 1042 数字0-9的数量 1050 循环数组最大子段和 1062 序列中最大的数 1067 Bash游戏 V2 1092 回文字符串
1042 数字0-9的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 给出一段区间a-b,统计这个区间内0-9出现的次数. 比如 10-19,1出现11次 ...
- 从DDD开始说起
前言 从13年接触DDD之后开始做应用架构已经整整四个年头. 四年里关于DDD的感触良多,慢慢有了一些心得. 关于DDD的介绍已经有很多的文章和书籍,这里我推荐三本最重要的书籍. <领域驱动设计 ...
- jQuery中下拉select、复选checkbox、单选radio的操作代码
//select $("#Icon") //对象 $("#Icon").val() //取值 $("#Icon").val("fa ...
