ZABBIX搭建

created by 薛峰

date 2012.07.26

 一、 写在开始。
ZABBIX 依赖lamp lnmp 环境,这里采用比较熟悉的lamp

1、 这里的LAMP意思是:Linux + Apache + MySQL + PHP

2、  需要的主要文件: httpd-2.2.19.tar.gz
       mysql-5.1.45.tar.gz
       php-5.2.5.tar.gz
3、 PHP GD 库需要的文件包:zlib-1.2.5.tar.gz
  libpng-1.5.9.tar.gz
  freetype-2.4.9.tar.gz
  jpegsrc.v6b.tar.gz
  libxml2-2.7.7.tar.gz
  libmcrypt-2.5.7.tar.gz

  fontconfig-2.4.2.tar.gz

  Autoconf-2.61.tar.gz
  gd-2.0.35.tar.gz
4、  安装zabbix 源码包是zabbix-1.8.tar.gz ,可能涉及到的文件是,net-snmp-5.3.2.tar.gz
5、  关于GD 库的相关知识,参见百度百科: http://baike.baidu.com/view/1752478.htm 。正文中涉及到多处目录创建的步骤,其中有的自动可以创建(/usr/local/zlib ),有的必须手动创建(/usr/local/jpeg/include 等)。
6、  测试环境:rhel5.3

二、搭建LAMP

1、  目录说明。
所有程序均安装在/usr/local 目录下,安装之前需要手动创建以下目录:
mysql httpd php gd zlib libpng freetype jpeg libxml2 libmcrypt fontconfig gd
 
2、  安装顺序。
->mysql
->apache
->gd zlib->libpng->freetype->jpeg->libxml2->libmcrypt->fontconfig->autoconf->gd
->php
 
    3 、安装MySQL
       1 )源码的编译 ( 可编辑文件setupmy.sh 输入以下内容并执行) ,参数如下:
 

  
  1. ./configure \ 
  2. --prefix=/usr/local/mysql \ 
  3. --localstatedir=/usr/local/mysql/data \ 
  4. --without-debug  \ 
  5. --without-docs \ 
  6. --without-geometry \ 
  7. --without-ndb-debug \ 
  8. --with-fast-mutexes \ 
  9. --with-embedded-server \ 
  10. --with-charset=latin1 \ 
  11. --with-extra-charsets=complex \ 
  12. --enable-thread-safe-client \ 
  13. --with-readline \ 
  14. --with-pthread \ 
  15. --enable-profiling \ 
  16. --enable-local-infile \ 
  17. --enable-assembler \ 
  18. --with-big-tables \ 
  19. --with-plugins=federated,innobase  

      2make && make install

      3 )添加mysql 用户,初始化库

  
  1. useradd mysql /usr/local/mysql/bin/mysql_install_db --user=mysql &  
      4 )把mysql 目录下的文件改所有组为mysql

  
  1. chgrp -R mysql *  
      5 )添加环境变量。
在文件/etc/profile 末尾添加:

  
  1. PATH=$PATH:/usr/local/mysql/bin 
            并执行:

  
  1. source /etc/profile 
      6 )启动mysql

  
  1. /usr/local/mysql/bin/mysqld_safe –user=mysql &  
        7 )初始化root 密码

  
  1. /usr/local/mysql/bin/mysqladmin –uroot password ‘password’ 
      8 )拷贝配置文件、转移数据目录

  
  1. cp support-files/my-small.cnf /usr/local/mysql/etc/my.cnf 
  2. cp –a /usr/local/mysql/data /home/mysql/ 
        9 )添加开机启动命令

  
  1. /usr/local/mysql/bin/mysqld_safe \ 
  2.  --defaults-file=/usr/local/mysql/etc/my.cnf \ 
  3.  --datadir=/home/mysql/data --user=mysql & 
        10 )重启mysql

  
  1. /usr/local/mysql/mysqladmin –uroot –p shutdown 
         4 、安装Apache
           1 )源码编译:

  
  1. ./configure \ 
  2.   --prefix=/usr/local/httpd \ 
  3.   --enable-modules=most \ 
  4.   --enable-mods-shared=all \ 
  5.   --disable-info \ 
  6.   --enable-so \ 
  7.   --enable-rewrite \ 
  8.   --enable-deflate 

          2make && make install

           3 )可以修改默认根目录,修改配置文件httpd.conf
 

  
  1. DocumentRoot "/var/www" 

          4)启动apache,在http://ipaddress看到”It works!”说明apache安装成功。


  
  1. /usr/local/httpd/bin/apachectl start 
 
5 、安装PHP

         PHPGD库很重要,要首先安装,而GD库又需要很多其他的包(见一3),按顺序安装,大多只需要”—prefix”一个参数即可,个别的另加参数。

(1)       按照顺序依次编译安装:

zlib->libpng->freetype-> jpeg->libxml2->libmcrypt-> fontconfig-> gd

(2)       其中编译安装jpeg的时候,需要手动创建

jpeg/include
jpeg/lib
jpeg/bin
jpeg/man/man1

(3)       jpeg编译参数除了”--prefix”还有:

 

  
  1. --enable-shared --enable-static 

(4)       fontconfig的编译参数要添加:


  
  1. --with-freetype-config=/usr/local/freetype/bin/freetype-config 

(5)       编译GD的参数:


  
  1. ./configure \ 
  2. --prefix=/usr/local/gd \ 
  3. --with-png=/usr/local/libpng \ 
  4. --with-freetype=/usr/local/freetype \ 
  5. --with-jpeg=/usr/local/jpeg \ 
  6. --with-fontconfig=/usr/local/fontconfig 
         6 )最后编译GD 库的时候可以用tee 命令把编译输出保存下来,例如:
 

  
  1. sh setupgd.sh | tee /root/gd.t 
               如果自gd.t 文件中找到如下内容说明gd 库编译成功:
               ** Configuration summary for gd 2.0.35:
 

   Support for PNG library:                 yes

   Support for JPEG library:                yes

   Support for Freetype 2.x library:        yes

   Support for Fontconfig library:          yes

   Support for Xpm library:                 yes

   Support for pthreads:                    yes

如果报png.h的错误的话,进入gd源文件目录,修改gd_png.c文件,把第16行png.h改成”/usr/local/libpng/include/png.h 的绝对路径。

(7)       编译PHP


  
  1. ./configure \ 
  2.  --prefix=/usr/local/php \ 
  3.  --with-config-file-path=/usr/local/php/etc \ 
  4.  --with-mysql=/usr/local/mysql \ 
  5.  --with-mysqli=/usr/local/mysql/bin/mysql_config \ 
  6.  --enable-fpm \ 
  7.  --enable-sockets \ 
  8.  --enable-pdo \ 
  9.  --with-pdo-mysql=/usr/local/mysql \ 
  10.  --with-gd \ 
  11.  --with-jpeg-dir=/usr/local/jpeg \ 
  12.  --enable-bcmath \ 
  13.  --enable-xml \ 
  14.  --enable-mbstring \ 
  15.  --with-zlib-dir=/usr/local/zlib \ 
  16.  --with-png-dir=/usr/local/libpng \ 
  17.  --with-freetype-dir=/usr/local/freetype \ 
  18.  --with-apxs2=/usr/local/httpd/bin/apxs 

(8)       编译完成之后,make && make install,由于每个人电脑环境有所差异,有的可能报错,google一下错误自行解决即可。

 
6 、模块间整合。
    编辑apache 配置文件httpd.conf
  (1 )将<Directory /> <Directory "/var/www"> 之间的Deny from all 改成
 

  
  1. Allow from all 
      2 )添加” LoadModule php5_module modules/libphp5.so” 一行。

     3)在标签” <IfModule dir_module>”之间附加”index.php”

     4)在"AddType application/x-gzip .gz .tgz"下添加一行:


  
  1. AddType application/x-httpd-php .php .phtml 
      5 )重启Apache ,在根目录创建文件”test.php” ,输入内容:

  
  1. <?php 
  2.   phpinfo(); 
  3. ?> 
     (6)        浏览器中输入 http://ipaddress/test.php ,如果出现php 信息页面则,LAMP 搭建成功。

三、搭建zabbix

1 、在安装zabbix 之前,在多数服务器都会报错

“Invalid NET-SNMP directory - unable to find net-snmp-config

         所以先安装net-snmp 包。“./configure –prefix=/usr/local/snmp
         之后编译安装zabbix ,参数是:

  
  1. ./configure \ 
  2.  --prefix=/home/zabbix \ 
  3.  --enable-server \ 
  4.  --enable-proxy \ 
  5.  --enable-agent \ 
  6.  --with-mysql=/usr/local/mysql/bin/mysql_config \ 
  7.  --with-net-snmp=/usr/local/snmp/bin/net-snmp-config \ 
  8.  --with-libcurl 
    2 、创建zabbix 用户。

  
  1. useradd zabbix 
    3 、创建zabbix 数据库。

  
  1. > create database zabbix character set utf8; 
4、  mysql 添加zabbix 用户。

  
  1. > grant all privileges on zabbix.* to  zabbix@localhost identified by 'zabbix'; 
5、  导入数据。

  
  1. > mysql -uroot -p zabbix < create/schema/mysql.sql 
  2. > mysql -uroot -p zabbix < create/data/data.sql 
  3. > mysql -uroot -p zabbix < create/data/p_w_picpaths_mysql.sql 
6、  想服务端口添加定义。
 

  
  1. zabbix-agent 10050/tcp Zabbix Agent 
  2. zabbix-agent 10050/udp Zabbix Agent 
  3. zabbix-Trapper 10051/tcp Zabbix Trapper 
  4. zabbix-Trapper 10051/udp Zabbix Trapper 
7、  复制配置文件。

  
  1. mkdir /etc/zabbix 
  2. cp misc/conf/zabbix_server.conf /etc/zabbix/ 
  3. cp misc/conf/zabbix_proxy.conf /etc/zabbix/ 
  4. cp misc/conf/zabbix_agent.conf /etc/zabbix/ 
  5. cp misc/conf/zabbix_agentd.conf /etc/zabbix/ 
8、  修改配置文件(zabbix_server.conf )中的DB 用户名和密码。

  
  1. DBUser=zabbix 
  2. DBPassword=zabbix 
9、  安装启动脚本。

  
  1. cp misc/init.d/redhat/zabbix_server_ctl /etc/init.d/ 
  2. cp misc/init.d/redhat/zabbix_agentd_ctl /etc/init.d/ 
其中misc/init.d/ 目录下有gentoo aix debian 等等不同系统下的脚本,拷贝过去稍作修改即可,这里我的测试系统是rhel5.3
修改启动脚本(server agent )中的

  
  1. BASEDIR=/home/zabbix, 
  2. ZABBIX_SUCKERD=$BASEDIR/sbin/zabbix_server 
改成你的安装目录。
10、  拷贝zabbix web 页面文件到httpd 的根目录。

  
  1. cp -r frontends/php /var/htdoc/zabbix 
    11 、这个时候启动zabbix 的话,有可能报错:

zabbix_server: error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory

         需要执行

  
  1. echo /usr/local/mysql/lib/mysql/ >> /etc/ld.so.conf 
  2. ldconfig 
    12 、启动| 停止| 重启zabbix 命令

  
  1. /etc/init.d/zabbix_server_ctl start|stop|restart 
  2. /etc/init.d/zabbix_agent_ctl start|stop|restart 

    13ps –ef | grep zabbix相信可以看到输出结果。


四、web 设置(此步骤会因使用的zabbix 版本不同而略有不同)。
1、  在浏览器输入:http://192.168.1.177/zabbix ,可以看到

图1
 
在这个页面的上部还有一行小字,如下:

Timezone for PHP is not set. Please set "date.timezone" option in php.ini.

修改 php.ini 文件,把相关行改成以下内容,
date.timezone = Asia/Hong_Kong
注意要去掉前边的“;”注释符。
 
2、  下一步可以看到图2 ,勾选I agree ,点击next

图2
 

3、 第三步是“Check of pre-requisites”页面,红色字体是需要修改的。通常是如图3的几项内容。

图3
 
点击报错的行,会有相应提示,在php.ini 中修改相应内容即可。完成后下一步。
 
4、  来到第四步,数据库配置页面,“Configure DB connection

图4
 
host mysql 所在机器的ip Name 是数据库名,在点击“Test connection ”前,注意有可能在前边添加zabbix 用户的时候给的权限不够,需做少量改动。

  
  1. > update mysql.user set host=’%’ where user=’zabbix’; 
  2. > update mysql.db set host=’%’ where user=’zabbix’; 
  3. > flush privileges; 
       Test connection. —— OK 下一步。
5、 zabbix 服务器页面,如图5

图5
 
6、  安装(Install )页面需要下载一个php 配置文件并保存,如图6 加红线部分。

6
 
按说明操作后下一步。
 
7、  完成后默认用户名Admin ,密码zabbix