监控利器 --- Zabbix的安装

首先大致了解下监控体系。监控一共分为如下几大类:

1、硬件监控

IPMI(磁盘监控较弱)
企业用的主流服务器一般都带有远程控制卡,IBM(RSA)、DELL(DRAC)、HP(ILO)。独立于服务器系统,用于实时探测服务器硬件运行信息(也可用于远程管理服务器)。统一采用ipmitools进行管理。

使用 ipmitool 实现 Linux 系统下对服务器的 ipmi 管理可参考IBM文档:

https://www.ibm.com/developerworks/cn/linux/l-ipmi/index.html


MegaCli---磁盘监控


2、系统监控

(1)cpu、内存、io等系统性能相关值


3、网络监控

第三方工具:基调、博瑞、监控宝 ...

开源工具:smokeping

4、应用监控

5、日志监控

第三方工具:日志易

6、业务监控
用户体验相关问题


那Zabbix 是否可以实现上述监控需求呢?

在Zabbix Create host 页面,我们可以看到Zabbix提供了4种接口:需要安装zabbix agent的、仅仅需要SNMP协议支持的、更方便的Java应用监控、及IPMI硬件监控。除了部分业务监控实现较复杂之外,基本涵盖了常规监控需求。

监控利器 --- Zabbix的安装


下面先来了解下Zabbix安装的过程

Zabbix监控系统的安装一般采用如下组件:PHP+Nginx+MySQL+Zabbix

一、安装PHP


- 安装依赖包
确保安装之前有安装gd,png,curl,xml等等lib开发库。如果不确定,执行以下命令:
yum -y install gcc make gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel
================================================================================================
 Package                       Arch            Version                      Repository     Size
================================================================================================

Installing for dependencies:
 autoconf                      noarch          2.63-5.1.el6                 base          781 k
 automake                      noarch          1.11.1-4.el6                 base          550 k

 fontconfig                    x86_64          2.8.0-5.el6                  base          186 k
 (rpm -ivh XXX.rpm --replacefiles升级)

 freetype                      x86_64          2.3.11-17.el6                base          361 k
 zlib-devel                    x86_64          1.2.3-29.el6                 base           44 k
 freetype-devel                x86_64          2.3.11-17.el6                base          365 k

 fontconfig-devel              x86_64          2.8.0-5.el6                  base          209 k

 libXpm                        x86_64          3.5.10-2.el6                 base           51 k
 libXpm-devel                  x86_64          3.5.10-2.el6                 base           33 k
 (加参数 --nodeps)

 gd                            x86_64          2.0.35-11.el6                base          142 k

 libX11-common                 noarch          1.6.3-2.el6                  base          169 k

 libxcb                        x86_64          1.11-2.el6                   base          142 k
 libxcb-devel                  x86_64          1.11-2.el6                   base          1.1 M

 libX11                        x86_64          1.6.3-2.el6                  base          586 k
 libX11-devel                  x86_64          1.6.3-2.el6                  base          984 k

  xorg-x11-proto-devel          noarch          7.7-13.el6                   base          286 k
 libXau-devel                  x86_64          1.0.6-4.el6                  base           14 k

 libidn-devel                  x86_64          1.18-2.el6                   base          137 k


 Installing:
 bzip2-devel                   x86_64          1.0.5-7.el6_0                base          250 k

 libjpeg-turbo                 x86_64          1.2.1-3.el6_5                base          174 k
 libjpeg-turbo-devel           x86_64          1.2.1-3.el6_5                base           96 k

 libpng                        x86_64          2:1.2.49-2.el6_7             base          182 k
 libpng-devel                  x86_64          2:1.2.49-2.el6_7             base          112 k

 gd-devel                      x86_64          2.0.35-11.el6                base           78 k

 libcurl                       x86_64          7.19.7-52.el6                base          169 k
 libcurl-devel                 x86_64          7.19.7-52.el6                base          247 k

  libxml2                       x86_64          2.7.6-21.el6                 base          803 k
 libxml2-devel                 x86_64          2.7.6-21.el6                 base          1.1 M

##################################################
Updating:

 libgcc                        x86_64          4.4.7-17.el6                 base          103 k
 libgomp                       x86_64          4.4.7-17.el6                 base          134 k
 cpp                           x86_64          4.4.7-17.el6                 base          3.7 M
 gcc                           x86_64          4.4.7-17.el6                 base           10 M

 make                          x86_64          1:3.81-23.el6                base          389 k
 curl                          x86_64          7.19.7-52.el6                base          197 k
 libxml2-python                x86_64          2.7.6-21.el6                 base          323 k

Transaction Summary
================================================================================================
Install      19 Package(s)
Upgrade      16 Package(s)


- 编译安装PHP 5.5.0

zabbix特别要求的安装参数
bcmath --enable-bcmath
mbstring --enable-mbstring
sockets --enable-sockets
gd --with-gd
libxml --with-libxml-dir=/usr/local
xmlwriter 同上
xmlreader 同上
ctype 默认支持
session 默认支持
gettext 默认支持

以下参数支持,ftp,图片函数,pdo等支持,因为使用了php自带的mysqlnd,所以不需要额外安装mysql的lib库了.如果你是64位系统,参数后面加上--with-libdir=lib64,如果不是可以跳过。

tar -xjf php-5.5.0.tar.bz2
cd php-5.5.0
./configure --prefix=/usr/local/php-5.5.0 --with-config-file-path=/usr/local/php-5.5.0/etc --with-bz2 --with-curl --enable-ftp --enable-sockets --disable-ipv6 --with-gd --with-jpeg-dir=/usr/local --with-png-dir=/usr/local --with-freetype-dir=/usr/local --enable-gd-native-ttf --with-iconv-dir=/usr/local --enable-mbstring --enable-calendar --with-gettext --with-libxml-dir=/usr/local --with-zlib --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-mysql=mysqlnd --enable-dom --enable-xml --enable-fpm --with-libdir=lib64 --enable-bcmath
make
make install

- 配置php
cp php.ini-production /usr/local/php-5.5.0/etc/php.ini
修改部分参数,确保后续能安装zabbix:
memory_limit = 128M
post_max_size = 32M
max_execution_time = 300
max_input_time = 300
mbstring.func_overload = 1
date.timezone = Asia/Shanghai

cp /usr/local/php-5.5.0/etc/php-fpm.conf.default /usr/local/php-5.5.0/etc/php-fpm.conf

- 启动php-fpm
/usr/local/php-5.5.0/sbin/php-fpm
执行以上命令,如果没报错一般情况下表示启动正常,如果不放心,也可以通过端口判断是PHP否启动
# netstat -nlt | grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN


二、安装Nginx

- 安装pcre
为了支持rewrite功能,我们需要安装pcre
================================================================================================
 Package                  Arch                Version                   Repository         Size
================================================================================================
Updating:
 pcre                     x86_64              7.8-7.el6                 base              196 k

Installing:
 pcre-devel               x86_64              7.8-7.el6                 base              320 k
 pcre-static              x86_64              7.8-7.el6                 base               83 k

Transaction Summary
================================================================================================
Install       2 Package(s)
Upgrade       1 Package(s)

- 安装openssl
需要ssl的支持
# yum install openssl*
================================================================================================
 Package                    Arch          Version                          Repository      Size
================================================================================================

Installing for dependencies:
###################################
 keyutils-libs              x86_64        1.4-5.el6                        base            20 k
 keyutils-libs-devel        x86_64        1.4-5.el6                        base            29 k

 krb5-libs                  x86_64        1.10.3-57.el6                    base           770 k
 libcom_err                 x86_64        1.41.12-22.el6                   base            37 k
 libselinux                 x86_64        2.0.94-7.el6                     base           109 k

 libcom_err-devel           x86_64        1.41.12-22.el6                   base            33 k

 libsepol-devel             x86_64        2.0.41-4.el6                     base            64 k
 libselinux-devel           x86_64        2.0.94-7.el6                     base           137 k

 krb5-devel                 x86_64        1.10.3-57.el6                    base           504 k
 perl-WWW-Curl              x86_64        4.09-4.el6                       base            47 k

 e2fsprogs-libs             x86_64        1.41.12-22.el6                   base           121 k
 libss                      x86_64        1.41.12-22.el6                   base            42 k
 e2fsprogs                  x86_64        1.41.12-22.el6                   base           554 k

 libselinux-python          x86_64        2.0.94-7.el6                     base           203 k
 libselinux-utils           x86_64        2.0.94-7.el6                     base            82 k

Installing for dependencies:
###################################
Installing:
 openssl                    x86_64        1.0.1e-48.el6_8.1                updates        1.5 M
 openssl-devel              x86_64        1.0.1e-48.el6_8.1                updates        1.2 M
 openssl-perl               x86_64        1.0.1e-48.el6_8.1                updates         56 k
 openssl-static             x86_64        1.0.1e-48.el6_8.1                updates        997 k
 openssl098e                x86_64        0.9.8e-20.el6.centos.1           base           762 k

Transaction Summary
================================================================================================
Install      10 Package(s)
Upgrade      10 Package(s)

- 安装nginx
执行如下命令:
# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-pcre
注:
--with-http_stub_status_module:支持nginx状态查询
--with-http_ssl_module:支持https
--with-http_spdy_module:支持google的spdy,想了解请百度spdy,这个必须有ssl的支持
--with-pcre:为了支持rewrite重写功能,必须制定pcre

make && make install

启动     /usr/local/nginx/sbin/nginx,并查看是否已启动
监控利器 --- Zabbix的安装
查看html文件
监控利器 --- Zabbix的安装
在防火墙放行80端口后,浏览器内应该能正常打开 http://IP/index.html
监控利器 --- Zabbix的安装


三、安装MySQL
- 依赖包安装
================================================================================================
 Package                    Arch              Version                     Repository       Size
================================================================================================
Installing:
 bison                      x86_64            2.4.1-5.el6                 base            637 k
 bzr                        x86_64            2.1.1-2.el6                 base            5.3 M
 cmake                      x86_64            2.8.12.2-4.el6              base            8.0 M
 expat-devel                x86_64            2.0.1-11.el6_2              base            120 k
 gcc-c++                    x86_64            4.4.7-17.el6                base            4.7 M
 imake                      x86_64            1.0.2-11.el6                base            262 k
 libaio-devel               x86_64            0.3.107-10.el6              base             13 k
 libtool                    x86_64            2.2.6-15.5.el6              base            564 k
Installing for dependencies:
 libstdc++-devel            x86_64            4.4.7-17.el6                base            1.6 M
 python-crypto              x86_64            2.0.1-22.el6                base            159 k
 python-paramiko            noarch            1.7.5-2.1.el6               base            728 k
Updating for dependencies:
 libstdc++                  x86_64            4.4.7-17.el6                base            295 k

Transaction Summary
================================================================================================
Install      11 Package(s)
Upgrade       1 Package(s)

Installed:
  ncurses-devel.x86_64 0:5.7-4.20090207.el6                                                     
Dependency Updated:
  ncurses-base.x86_64 0:5.7-4.20090207.el6       ncurses-libs.x86_64 0:5.7-4.20090207.el6     

- cmake 安装mysql
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/msql/data -DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_EXAMPLE_STORAGE_ENGINE=1 -DWITH_PARTITON_STORAGE_ENGINE=1 -DWITH_FAST_MUTEXES=1 -DWITH_DEBUG=0 -DENABLED_LOCAL_INFILE=1 -DWITH_EMBEDDED_SERVER=0 -DWITH_READLINE=1

make && make install

- 初始化
#groupadd mysql
#useradd mysql -s /sbin/nologin -M -g mysql

cp support-files/my-default.cnf /usr/local/mysql/my.cnf
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile
echo $PATH

chown -R mysql.mysql /usr/local/mysql

cd /usr/local/mysql/scripts
./mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql     安装完成输出两个OK表示成功

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld

#/etc/init.d/mysqld start


四、安装Zabbix-Server
- 依赖包安装
net-snmp-devel libxml2-devel libcurl-devel mysql-devel

- 创建用户(以root身份启动zabbix时,会自动切换为zabbix用户来执行,故需要创建zabbix用户)
# groupadd zabbix
# useradd zabbix -s /sbin/nologin -M -g zabbix

- 编译安装
# mkdir /usr/local/zabbix
# ./configure --prefix=/usr/local/zabbix/ --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-openipmi --with-libxml2 --with-unixodbc --with-libcurl 
编译参数说明:
--with-net-snmp:开启snmp监控
--with-openipmi:开启IPMI监控
--with-libxml2:开启虚拟机监控
--with-unixodbc:开启支持ODBC的数据库监控
--with-libcurl:开启WEB监控

# make && make install

- 初始化数据库
mysql> create database zabbix default charset utf8;
初始化proxy的数据库:
# mysql -uroot -p123456 zabbix < [源码目录下]/database/mysql/schema.sql
初始化server需要另外再导两份数据:
# mysql -uroot -p123456 zabbix < [源码目录下]/database/mysql/images.sql
# mysql -uroot -p123456 zabbix < [源码目录下]/database/mysql/data.sql

- 修改zabbix server配置文件
# cp [源码目录下]/conf/zabbix_server.conf /usr/local/zabbix/etc/zabbix_server.conf
# vim /usr/local/zabbix/etc/zabbix_server.conf
DBName=zabbix
DBUser=zabbix
DBHost=hostname
DBPassword=123456
DBPort=3306
DBSocket = $Socket_file_path

- 启动zabbix server
cp [源码目录下]/misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server
# vim /etc/init.d/zabbix_server
     BASEDIR=/usr/local/zabbix
# chmod a+x /etc/init.d/zabbix_server
# /etc/init.d/zabbix_server start

注:error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
[FAILED]解决方法:
# locate libmysqlclient.so.18
   /usr/local/mysql/lib/libmysqlclient.so.18
   /usr/local/mysql/lib/libmysqlclient.so.18.0.0
# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf
# ldconfig
# /usr/local/zabbix/sbin/zabbix_server start
Starting zabbix_server: [ OK ]

- zabbix前端web页面
复制源码包下的frontends
# cp -rp [源码目录]/frontends/php/* /usr/local/nginx/html/

再修改nginx的配置,使之支持php
 /usr/local/nginx/conf/nignx.conf
location / {
            root   /usr/local/nginx/html;
            index  index.php index.html index.htm;
        }

location ~\.php${
          fast_param SCRIPT_FILENAME     $document_root$fastcgi_script_name;
     }

- zabbix server 防火墙配置
vim /etc/sysconfig/iptables 放行80、9000、10050、10051端口
-A INPUT -s [内网段] -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -s [内网段] -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
-A INPUT -s [Server端IP]  -m state --state NEW -m tcp -p tcp --dport 10050:10051 -j ACCEPT
-A INPUT -s [Server端IP]  -m state --state NEW -m udp -p udp --dport 10050:10051 -j ACCEPT

# service iptables restart

- Web端,部分参数最后的配置
现在可以打开 http://IP/zabbix/setup.php 进行配置了
监控利器 --- Zabbix的安装

第二步主要是检查PHP扩展支持:有问题一般去php.ini修改
监控利器 --- Zabbix的安装

第三步、主要是进行zabbix数据库基本信息的录入
监控利器 --- Zabbix的安装

第四步、可选择配置zabbix server的host、port和name,无特殊要求默认即可
监控利器 --- Zabbix的安装

前期配置的一个总体确认页面
监控利器 --- Zabbix的安装

在nginx的html目录下将会自动创建一个conf文件
监控利器 --- Zabbix的安装

若自动创建失败,则按提示下载配置文件、手动上传到conf目录下
监控利器 --- Zabbix的安装


现在可以以用户:Admin,密码:zabbix 进行登录
监控利器 --- Zabbix的安装

注:登陆后如果提示,server is not running
监控利器 --- Zabbix的安装
# vim /usr/local/nginx/html/conf/zabbix.conf.php
修改$ZBX_SERVER 为ip,(默认localhost)



五、客户端安装Zabbix Agent
客户端防火墙放行10050的TCP和UDP端口(指定Sever IP),其余端口按需放行
-A INPUT -s [Server端IP]  -m state --state NEW -m tcp -p tcp --dport 10050 -j ACCEPT
-A INPUT -s [Server端IP]  -m state --state NEW -m udp -p udp --dport 10050 -j ACCEPT

创建zabbix用户(组)
# groupadd zabbix
# useradd zabbix -s /sbin/nologin -M -g zabbix

安装必要环境、编译安装zabbix:
yum -y install net-snmp-devel libxml2-devel libcurl-devel gcc-c++
./configure --prefix=/usr/local/zabbix --enable-agent

添加zabbix服务对应的端口(如果/etc/services下缺失的话)
echo 'zabbix-agent 10050/tcp #Zabbix Agent' >> /etc/services
echo 'zabbix-agent 10050/udp #Zabbix Agent' >> /etc/services
echo 'zabbix-trapper 10051/tcp #Zabbix trapper' >> /etc/services
echo 'zabbix-trapper 10051/udp #Zabbix trapper' >> /etc/services

修改Agent配置文件,指定Server IP
# vim /usr/local/zabbix/etc/zabbix_agentd.conf
Zabbix Server的IP:Server=XXX

注:为了避免自定义Item频繁提示:Not Supported 的解决办法,在agent配置文件中修改如下
     #Range: 1-30
     Timeout=8

配置启动文件
# cp /root/zabbix-2.2.13/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentd
# vim /etc/init.d/zabbix_agentd
     BASEDIR=/usr/local/zabbix
# chmod a+x /etc/init.d/zabbix_agentd

# service zabbix_agentd start

在zabbix server测试server与agent是否可以互通
# zabbix_get -s [客户端IP] -p10050 -k"agent.version"