监控利器 --- 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监控系统的安装一般采用如下组件: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,并查看是否已启动
查看html文件
在防火墙放行80端口后,浏览器内应该能正常打开 http://IP/index.html
三、安装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
-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 进行配置了
第二步主要是检查PHP扩展支持:有问题一般去php.ini修改
第三步、主要是进行zabbix数据库基本信息的录入
第四步、可选择配置zabbix server的host、port和name,无特殊要求默认即可
前期配置的一个总体确认页面
在nginx的html目录下将会自动创建一个conf文件
若自动创建失败,则按提示下载配置文件、手动上传到conf目录下
现在可以以用户:Admin,密码:zabbix 进行登录
注:登陆后如果提示,server is not running
# 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"