我搞zabbix的那两天(1)
摘要:在生产环境上对服务器进行网络参数(比如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的那两天(1)的更多相关文章
- 我搞zabbix的那两天
摘要:在生产环境上对服务器进行网络参数(比如CPU.内存等)的监控是很必要的,比如当服务器网络参数如内存不够用.磁盘空间快要占满时及时通知运维人员进行处理,保证服务器系统的安全.而zabbix就是这么 ...
- 我搞zabbix的那两天(2)
摘要:前一篇(我搞zabbix的那两天(1))我介绍了Zabbix的安装部署以及遇到的问题,这一篇将介绍zabbix 使用及短信等告警实现!!! Zabbix主界面及汉化方法介绍 1.1 初始化主界面 ...
- 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 数据库中.用户不能使用其用户名和 ...
随机推荐
- MySQL5.7Gtid主从复制总是遇到日志被清等出现无法正常主从复制
最近最是在MySQL5.7上的的gtid主从复制问题总是遇上下面问题: Last_Error: Coordinator stopped because there were error(s) in t ...
- Alwasyon环境下增加数据文件需要注意的几点
半夜收到报警短信,服务器磁盘空间不足,爬起来检查一番,发现由于索引重建导致,而且该磁盘下仍有自动增长的数据文件,由于该服务器上其他盘符有剩余空间,于是打算将该磁盘下的数据文件限制增长,并新增几个数据文 ...
- 一步步改造wcf,数据加密传输-匿名客户端加密传输
一步步改造wcf,数据加密传输-匿名客户端加密传输 百度搜索wcf加密传输,资料挺多,真真正正能用的确不多. 一是本来就很复杂,而是各位大神给的资料不足.本人今天来提供一个简易方法. 匿名客户端加密传 ...
- WPF的xaml中特殊字符表示
直接看表,描述很清晰 字符 转义字符 备注 & (ampersand) & 这个没什么特别的,几乎所有的地方都需要使用转义字符 > (greater-than character ...
- SVM的代码实现-python
隔了好久木有更新了,因为发现自己numpy的很多操作都忘记了,加上最近有点忙... 接着上次 我们得到的迭代函数为 首先j != yi j = yi import numpy as np def sv ...
- Docker Compose模板文件介绍
模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多,这里面大部分指令跟 docker run 相关参数的含义都是类似的.默认的模板文件名称为 docker-compose.yml ,格 ...
- [Spring]@Autowired,@Required,@Qualifier注解
@Required注解 @Required注解用于setter方法,表明这个属性是必要的,不可少的,必须注入值 假设有个测试类,里面有name和password两个属性 我给两个属性的setter方法 ...
- 使用IST重新加入节点(5.7.20)
IST不是SST用于节点重新加入吗?我们有解决方案! 鉴于上述痛点,我们将介绍 gcache.freeze_purge_at_seqno Percona XtraDB Cluster 5.7.20.这 ...
- (转)linux用户态和内核态理解
原文:https://blog.csdn.net/buptapple/article/details/21454167 Linux探秘之用户态与内核态-----------https://www.cn ...
- windows线程退出的方法
线程的handle用处: 线程的handle是指向“线程的内核对象”的,而不是指向线程本身.每个内核对象只是内核分配的一个内存块,并且只能由内核访问.该内存块是一种数据结构,它的成员负责维护对象的各种 ...