zabbix 1-安装

最近组内讨论时,提到zabbix这个DD,要说以前还真是没了解过,google了一下,看起来很高大上的样子,貌似运维没有不知道它的。作为一个TS,我决定尝试一下,看看这位大神到底长什么样子。此篇主要是记录了我自己的安装过程和遇到的一些问题,相信肯定会和其他童鞋在环境上有各种差异,但是主导思想理会了,去google上找到解决的方法也就变得容易的多。既然是安装,开篇当然得先把官方的安装介绍贴出来,以指引各位走向正途:(https://www.zabbix.com/documentation/2.4/manual/installation/install)


 

1.创建一个zabbix的系统用户

#groupadd zabbix
#useradd -g zabbix -G mysql zabbix

创建用户的需求是官方建议的,目的是防止以root用户启动zabbix server可能会带来安全方面的问题。-G选项是我自己加的,因为后期连不上数据库,就使用usermod -a -G mysql添加了mysql的组,也不知道生效没有,暂且提前准备上。

2.创建zabbix数据库和用户

mysql>create database zabbix;
mysql>create user 'zabbix'@'localhost' identified by 'zabbix';
mysql>create user 'zabbix'@'%' identified by 'zabbix';
mysql>grant all privileges on zabbix.* to 'zabbix'@'localhost' with grant option;
mysql>grant all privileges on zabbix.* to 'zabbix'@'%' with grant option;

然后初始化数据库,在zabbix安装包zabbix/database目录下有各种数据库的初始化sql,我们进入mysql,里面有三个文件data.sql,images.sql,schema.sql,我看有高人用这种手法执行sql,效果很不错:

#cat schema.sql | mysql -uzabbix -pzabbix zabbix
#cat images.sql| mysql -uzabbix -pzabbix zabbix
#cat data.sql | mysql -uzabbix -pzabbix zabbix

3.安装PHP各模块需要的软件

此处是最耗费时间的,把这块搬到前面是因为zabbix server在安装时需要PHP支持很多东西,所以提前准备好,当然了也可以直接跳到第4步安装zabbix server,在提示缺少哪些组件时再回头重新配置PHP,这对于那些只缺少一两个模块的情况此种方法是应该去倡导的,否则随便乱动服务器,是会死人的。

我这里都安装了libpng(libpng-1.6.17.tar.gz), freetype(freetype-2.5.5.tar.gz),zlib(zlib-1.2.8.tar.gz),gettext(gettext-0.19.4.tar.gz),gd(libgd-2.1.1.tar.gz)
安装gd的选项多一点,如下,其他都是./configure --prefix;make;make install
#./configure --prefix=/usr/local/gd --with-zlib=/usr/local/zlib/ --with-png=/usr/local/libpng/ --with-jpeg=/usr/local/jpeg/ --with-freetype=/usr/local/freetype/
顺便也安装一下snmp:
#yum install net-snmp.i686
#yum install net-snmp-devel.i686

重新配置并安装PHP,配置选项如下:
#./configure --prefix=/opt/php5_3_3 --enable-maintainer-zts --with-apxs2=/opt/httpd2_2_24/bin/apxs --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=mysqlnd --with-jpeg-dir=/usr/local/jpeg --with-gettext=/usr/local/gettext --with-freetype-dir=/usr/local/freetype --with-zlib-dir=/usr/local/zlib/ --enable-zip --enable-sockets --enable-safe-mode --enable-mbstring --enable-bcmath --with-gd
--with-gd不用带目录,否则会提示错误,此问题见于PHP5.3.3,其他版本未知:
error: nested redefinition of ‘enum gdPixelateMode’

4.开始安装zabbix server

按照zabbix官方说明,操作如下:
#./configure --prefix=/opt/zabbix2_4_5 --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
#make
#make install

安装完后修改配置文件zabbix_server.conf,配置文件在zabbix server的etc目录下

#(注:我的服务器内网IP是172.25.20.125)
ListenPort=10051
SourceIP=172.25.20.125
LogFile=/tmp/zabbix_server.log
LogFileSize=10
DebugLevel=3
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
DBPort=3306

主要关心一下DBHost,DBName,DBUser和DBPassworld四个选项,其余默认都没有打开,可以不用理会

查看zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server

默认地址已经设为127.0.0.1了,所以看一下就好

查看zabbix_agent.conf
Server=172.25.20.125

看一下服务器地址有没有安装,此处都不用太过关注,因为在安装zabbix server时,--enable-agent基本上都已经配置好了本地地址,在后面windows主机安装agent时候,再来详细看看

检查配置文件无误之后,就可以启动zabbix了,由于我们在安装时指定了server和agent,所以两个都启动,这样在安装完zabbix web之后,便可以直接看到“zabbix server”主机的状态

进入zabbix的sbin目录,以zabbix用户的身份执行

$./zabbix_server

$./zabbix_agentd

如果有错误,就在配置文件定义的错误日志里面去查看,此处分别是/tmp/zabbix_server.log和/tmp/zabbix_agentd.log 说实话我还没有搞清楚agentd和agent两者之间的关系,好像agent是passive模式,只能等待zabbix_server来请求数据,而agentd是主动找server上交数据的。

5.安装Zabbix web接口

在下载的zabbix源码包里面,有一个frontends/php目录,里面就是zabbix的web管理页面,安装嘛,就是将里面的内容拷贝到apache的htdocs下面,我们在htdocs下单独建立一个zabbix目录,用于zabbix服务:
$mkdir /opt/httpd2_2_24/htdocs/zabbix
$cd /frontends/php
$cp -a . /opt/httpd2_2_24/htdocs/zabbix/
然后启动httpd,访问
http://172.25.20.125/zabbix/
首次访问会自动跳转到http://172.25.20.125/zabbix/setup.php安装页面
如果前面没有安装PHP的模块,此处会有一大堆错误,有一些PHP配置上不满足的,需要去php.ini里面修改,这块可以依照安装页面提示的内容去改,不满足的选项都可以在php.ini直接搜到。

6.在windows主机上安装zabbix_agentd

(注:windows主机的IP地址是172.25.20.134)
下载win版本的agent包,目前版本2.4.2,文件名称zabbix_agents_2.4.4.win.zip,解压后,首先修改conf目录下的配置文件
#配置日志文件路径
LogFile=C:\zabbix_agents_2.4.4.win\log\zabbix_agentd.log
#配置日志文件的大小,单位是MB
LogFileSize=5
#配置日志的等级,3应该是warn级别
DebugLevel=3
#外出访问的IP地址,对于有多网卡的情况,可以指定
SourceIP=172.25.20.134
#允许远程执行命令
EnableRemoteCommands=1
#zabbix server的IP地址
Server=172.25.20.125
#agent监听的IP地址,可以不指定
ListenIP=172.25.20.134
#服务器activa检查地址,可以配置端口如:ServerActive=172.25.20.125:10051,否则使用默认端口
ServerActive=172.25.20.125
#本地主机名,重要,因为在zabbix中添加主机时名称必须和此处一致
Hostname=172.25.20.134

配置修改完成,安装agentd,命令如下:
zabbix_agentd.exe -c C:\zabbix_agents_2.4.4.win\conf\zabbix_agentd.win.conf -i

安装完后手动去管理服务启动zabbix agentd,至此zabbix安装就基本结束了。


 

后面补充一些安装中遇到的问题:
错误1:配置PHP时提示configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config
因为没有安装net-snmp-devel.i686

错误2:启动zabbix_server后提示
connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)
用zabbix用户使用mysql -uzabbix -pzabbix连接提示同样的错误:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)
最后是给/var/lib/mysql设置了777的权限,然后恢复

错误3:windows上安装zabbix_agentd,在Hosts里面添加了这个windwos的地址之后,总是连接不上,提示Get value from agent failed: cannot connect to [[172.25.20.134]:10050]: [4] Interrupted system call
最后推测应该是防火墙或者监控软件的问题(公司安装的无法删除),因为同样的agent和配置在另一台较干净的win平台上就没有任何问题

错误4:配置smtp.qq.com后发email总提示authentication failed,原来是QQ邮箱里面没有打开POP3/SMTP功能,而且这一功能开启后会要求设置一个独立的密码,有别于QQ的登陆密码,嘿嘿!配置外网smtp的方如下:
修改/etc/mail.rc,添加如下内容:
set from=10086@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=10086
set smtp-auth-password=smtppasswd
set smtp-auth=login
有网友说要关闭所有其他mail服务,此处只安装了postfix,所以暂时停止启动就好:
chkconfig postfix off

错误5:启动zabbix_server报错
./zabbix_server: escalator [processed 0 escalations in 0.000000 sec, processing escalations]: relocation error: ./zabbix_server: escalator [processed 0 escalations in 0.000000 sec, processing escalations]: symbol strstr, version libmysqlclient_16 not defined in file libmysqlclient.so.16 with link time reference
2847:20150519:093722.971 One child process died (PID:2884,exitcode/signal:127). Exiting ...
2847:20150519:093724.972 syncing history data...
2847:20150519:093724.972 syncing history data done
2847:20150519:093724.972 syncing trends data...
2847:20150519:093724.972 syncing trends data done
2847:20150519:093724.973 Zabbix Server stopped. Zabbix 2.4.5 (revision 53282).
奇怪前一天还好好的,就自动关了个机,结果第二天再次启动zabbix服务就报错了,没道理嘛!
goole一下错误信息,看网友表述的不外乎就是数据库文件损坏了,或者环境变量没有设置这个库路径,这点倒是有意思,联想一下,没错,zabbix找的库不是我们编译安装的mysql提供的,好,确认一下系统都安装了那些mysql的东东:
#rpm -qa| grep mysql
#mysql-libs-5.1.61-4.el6.i686
有一个mysql的lib包,卸载这个包提示postfix等依赖于它,再用ldd看一下zabbix_server到底链接到哪个so文件了
#ldd zabbix_server
linux-gate.so.1 => (0x00dd7000)
libmysqlclient.so.16 => /usr/lib/mysql/libmysqlclient.so.16 (0x008a4000)
哈哈,确实在系统目录,我们自己的安装的mysql应该在/usr/local/mysql下面,很好,覆盖系统/usr/lib/mysql下的库文件(这种做法只推荐测试环境)
#cp /usr/local/mysql/lib/libmysqlclient.so.16.0.0 /usr/lib/mysql/ -i
#cp: overwrite `/usr/lib/mysql/libmysqlclient.so.16.0.0'? y
如此如此,错误就消失了

附录1:结束zabbix进程

我至今还没有找到停止zabbix服务的方法,所以且能用一个笨办法,杀光所有进程:
#ps -ef | grep zabbix | awk '{print $2}' | xargs kill

附录2:测试主机是否和zabbix server连通
在服务器上执行

$./zabbix_get -s 172.25.20.134 -p 10050 -k "system.uptime"

172.25.20.134是agentd所在主机的IP,10050是agentd开启的端口

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注