阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS6.5下Zabbix安装使用学习系列

238次阅读
没有评论

共计 24744 个字符,预计需要花费 62 分钟才能阅读完成。

zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位 / 解决存在的各种问题。在普通的企业级环境中,zabbix 通常由 2 部分构成,zabbix server 与可选组件 zabbix agent。
     本系列的运行环境为 CentOS6.5,zabbix 的版本为官网最新的稳定版 2.4.7。
 
在使用 zabbix 之前,首先要学会安装 zabbix。官网的文档中,首推的安装方式为 yum 或 apt 安装,这种方式比较简单,适合于可以上网的环境。但对于有些企业级环境中,实行严格的内外网隔离策略,内网是不允许直连公网的,并且要监控服务器多数是运行在内网中。所以在这种情况下,就更加需要另外一种方式也就是源码安装的方式来安装 zabbix。
 
本文将介绍如何进行 zabbix 的源码安装。

一些 Zabbix 相关教程集合

Ubuntu 14.04 下 Zabbix2.4.5 源码编译安装  http://www.linuxidc.com/Linux/2015-05/117657.htm

安装部署分布式监控系统 Zabbix 2.06 http://www.linuxidc.com/Linux/2013-07/86942.htm

《安装部署分布式监控系统 Zabbix 2.06》http://www.linuxidc.com/Linux/2013-07/86942.htm

CentOS 6.3 下 Zabbix 安装部署 http://www.linuxidc.com/Linux/2013-05/83786.htm

Zabbix 分布式监控系统实践 http://www.linuxidc.com/Linux/2013-06/85758.htm

CentOS 6.3 下 Zabbix 监控 apache server-status http://www.linuxidc.com/Linux/2013-05/84740.htm

CentOS 6.3 下 Zabbix 监控 MySQL 数据库参数 http://www.linuxidc.com/Linux/2013-05/84800.htm

64 位 CentOS 6.2 下安装 Zabbix 2.0.6   http://www.linuxidc.com/Linux/2014-11/109541.htm

配置本地 yum 源

      因受网络限制,但有些依赖包又不得不需要安装,故只能自架本地 yum 源。假设已从 CD 中将各 rpm 包拷贝至 /ISO/Packages 目录下。按照如下顺序建立本地 yum 源。
 
  • 安装 createrepo 包,用于建立本地仓库,供 yum 源的安装和更新。
cd /ISO/Packages
ll|grep createrepo
rpm –ivh createrepo-0.9.9-18.e16.noarch.rpm

  若安装过程中提示需要安装依赖包,请按提示安装。

  • 执行 createrepo 命令,创建 repodata 目录
cd /ISO/Packages
createrepo .

  • 设置本地 yum 源
cd /etc/yum.repo.d
mv CentOS-Base.repo CentOS-Base.repo.bak
cp CentOS-Media.repo CentOS-Base.repo
vi CentOS-Base.repo
做如下配置修改:#yum 源所在地
baseurl=file:///ISO/Packages/
# 不做校验检查
gpgcheck=0
#设置为通过本地媒介进行 yum 安装
enabled=1


yum clean all
yum makecache

 安装 Mysql 数据库

zabbix 支持安装在多种数据库上,本方案中数据库为 mysql。安装及库表建立如下:

  • 安装 mysql5.6.28,安装方式为 rpm 安装,安装前若本机已有老旧 mysql,请卸载。
rpm –ivh MySQL-server-5.6.28-1.el6.x86_64.rpm
rpm –ivh MySQL-client-5.6.28-1.el6.x86_64.rpm
rpm –ivh MySQL-devel-5.6.28-1.el6.x86_64.rpm
rpm –ivh MySQL-shared-compat-5.6.28-1.el6.x86_64.rpm
  • 添加对 mysqlclient 的软连接(若不添加,后续的 zabbix 安装可能会报错说找不到 mysqlclient)。
cd /usr/lib64
ln -s libmysqlclient.so.16.0.0 libmysqlclient.so  
ln -s libmysqlclient_r.so.16.0.0 libmysqlclient_r.so
  • 安装完后默认的配置文件是 /usr/my.cnf,默认的 mysql root 账号密码保存在 /root/.mysql_secret。
  • 检查 mysql 是否在随机启动的列表中,若无则添加,并启动。
chkconfig --list|grep mysql
chkconfig --add mysql
chkconfig mysql on

service mysql start
  • 修改 root 账户密码。
mysql –uroot –p
set password=password('123456');
flush privileges;
  • 创建 zabbix 数据库及其访问账号。
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
flush privileges;
  • 初始化 zabbix 数据库。
mysql -uzabbix –p zabbix < schema.sql
mysql -uzabbix –p zabbix < images.sql
mysql -uzabbix –p zabbix < data.sql

安装 zabbix Server

  • 下载并解压 zabbix2.4.7
cd /usr/local/src
tar –xvf zabbix-2.4.7.tar.gz
cd zabbix-2.4.7
  • 添加 zabbix 账号(注意的是默认情况下 zabbix server 和 client 都是运行在 zabbix 账号下,需要自行添加该账号。也可以通过修改 server 的配置文件指定 zabbix server 运行在 root 账号下,不推荐)
groupadd zabbix
useradd –g zabbix zabbix
  • 安装 zabbix,若有缺依赖包,按提示自行添加
yum -y install net-snmp net-snmp-devel curl curl-devel libxml2 libxml2-devel 

./configure --prefix=/usr/local/zabbix --enable-server --with-mysql --with-net-snmp --with-libcurl --with-libxml2
make && make install
  • 修改 zabbix server 的配置文件
vi /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=10
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
  • 设置 zabbix server 的日志路径和访问权限
mkdir /var/log/zabbix
chown -R zabbix:zabbix /var/log/zabbix
  • 将 zabbix server 设置成随机启动,并启动
cp /usr/local/src/zabbix-2.4.7/misc/init.d/Fedora/core/zabbix_server /etc/init.d
vi /etc/init.d/zabbix_server
#修改 zabbix 路径
BASEDIR=/usr/local/zabbix
chkconfig --add zabbix_server
chkconfig zabbix_server on

service zabbix_server start
  • 检查 zabbix server 是否正确启动
netstat -tlnp|grep zabbix
#可看见 zabbix server 运行在 10051 端口上
ps -ef|grep zabbix
#可看见 zabbix server 运行在 zabbix 账户下,并开启多个进程监听

安装 libjpeg&freetype

zabbix server 有图形化要求,需要借助 PHP gd 的支持,这两项是 PHP gd 的必须项。由于 PHP 默认不支持这两项的安装,因此需要提前装好这两组件。

  • 安装 freetype-2.6.tar.gz
cd /usr/local/src
tar -xvf freetype-2.6.tar.gz

cd freetype-2.6 .
/configure --prefix=/usr/local/freetype make && make install
  • 安装 jpegsrc.v6b.tar.gz
cd /usr/local/src

tar -xvf jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure --prefix=/usr/local/jpeg --enable-shared
make && make install

安装过程中,若报错类似 ”make: ./libtool: Command not found“,则需要把系统中的 libtool 的配置文件覆盖 jpeg 本身的老旧对应文件。

cp /usr/share/libtool/config/config.sub .
cp /usr/share/libtool/config/config.guess .
make clean
./configure --prefix=/usr/local/jpeg --enable-shared

安装过程中,若报错类似 ”cannot create regular file `/usr/local/jpeg/include/jconfig.h’: No such file or directory”, 则需要手动建立相应目录。

mkdir -p /usr/local/jpeg/include
mkdir -p /usr/local/jpeg/lib
mkdir -p /usr/local/jpeg/bin
mkdir -p /usr/local/jpeg/man/man1
make && make install

安装 PHP

zabbix server 本身是由 php 编写的,因此需要安装 php 的运行环境。

  • 建立 php 运行账号
groupadd www
useradd –g www www
  • 下载并解压 php-5.6.16.tar.bz2
cd /usr/local/src
tar –xvf php-5.6.16.tar.bz2
cd php-5.6.16
  • 安装 php
yum -y install libpng-devel
./configure --prefix=/usr/local/php --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --enable-sockets --with-gd --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-gettext --enable-mbstring --enable-bcmath --with-config-file-path=/usr/local/php/etc
make && make install

若安装过程中有缺依赖包,请按照提示安装。

  • 将 PHP 命令添加至环境变量中。
vi /etc/profile
#末尾加入:export PATH=$PATH:/usr/local/php/bin
#立即生效:source /etc/profile
  • 配置 php-fpm
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
  • 为满足 zabbix 的最低运行要求,配置 php.ini 文件。
cp /usr/local/src/php-5.6.16/php.ini-production /usr/local/php/etc/php.ini
vi /usr/local/php/etc/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
always_populate_raw_post_data = -1
date.timezone = Asia/Shanghai
  • 设置 php 随机启动,并启动。
# 开机启动
vi /etc/rc.local
/usr/local/php/sbin/php-fpm
#立即启动
/usr/local/php/sbin/php-fpm

启动后可观察 php 运行在 9000 端口上。

安装 Nginx

zabbix server 需要运行在 web 服务器上,官网推荐是安装在 apache 上,本方案是运行在 nginx 上,方法如下:

  • 下载并安装 nginx-1.8.0.tar.gz
cd /usr/local/src
tar –xvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
  • 安装 nginx
yum -y install pcre-devel
./configure --with-http_ssl_module --with-http_realip_module
make && make install

上述安装中若缺依赖包,请根据提示安装

  • 修改 nginx 的配置文件,主要修改点如下:
user www www;
work_processes auto;

   location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME       $document_root$fastcgi_script_name;
        include        fastcgi_params;
 }
         
  • 将 zabbix server 的运行文件拷贝至 nginx 目录下。
cd /usr/local/nginx/html
mkdir zabbix
cd zabbix
cp -r /usr/local/src/zabbix-2.4.7/frontends/php/* .
cd ..
chown –R www:www zabbix
  • 设置 nginx 开机启动,并启动 nginx。
# 开机启动
vi /etc/rc.local
/usr/local/nginx/sbin/nginx
#启动 nginx
/usr/local/nginx/sbin/nginx

初始化 zabbix server

nginx 启动后,可以直接访问 zabbix server:http://localhost/zabbix/index.php , 初始化是以图形界面进行配置的。

  • 首先检测 php 的运行环境是否正确。

CentOS6.5 下 Zabbix 安装使用学习系列

  • 其次确保数据库连接正确

CentOS6.5 下 Zabbix 安装使用学习系列

  • 配置好端口和 host

CentOS6.5 下 Zabbix 安装使用学习系列

  • 再次确认配置选项

CentOS6.5 下 Zabbix 安装使用学习系列

  • 配置成功CentOS6.5 下 Zabbix 安装使用学习系列

 

至此,zabbix server 的源码安装成功结束,进入登录界面,默认的登录名和密码是:Admin/zabbix。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-07/133421p2.htm

对于允许连接公网的环境下,显然通过 yum 安装是最为简单方便的,也是官网推荐的安装方式。通过这种方式安装,会将 php、apache、zabbix 本身都一并安装,解决了烦人的依赖包问题。

  本文将介绍如何进行 yum 安装。

安装 MySQL

zabbix 支持安装在多种数据库上,本方案中数据库为 mysql。安装及库表建立如下:

  • 安装 mysql5.6.28,安装方式为 rpm 安装,安装前若本机已有老旧 mysql,请卸载。
rpm –ivh MySQL-server-5.6.28-1.el6.x86_64.rpm
rpm –ivh MySQL-client-5.6.28-1.el6.x86_64.rpm
rpm –ivh MySQL-devel-5.6.28-1.el6.x86_64.rpm
rpm –ivh MySQL-shared-compat-5.6.28-1.el6.x86_64.rpm
  • 添加对 mysqlclient 的软连接(若不添加,后续的 zabbix 安装可能会报错说找不到 mysqlclient)。
cd /usr/lib64
ln -s libmysqlclient.so.16.0.0 libmysqlclient.so  
ln -s libmysqlclient_r.so.16.0.0 libmysqlclient_r.so
  • 安装完后默认的配置文件是 /usr/my.cnf,默认的 mysql root 账号密码保存在 /root/.mysql_secret。
  • 检查 mysql 是否在随机启动的列表中,若无则添加,并启动。
chkconfig --list|grep mysql
chkconfig --add mysql
chkconfig mysql on
service mysql start
  • 修改 root 账户密码。
mysql –uroot –p
set password=password('123456');
flush privileges;
  • 创建 zabbix 数据库及其访问账号。
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
flush privileges;
  • 初始化 zabbix 数据库。
mysql -uzabbix –p zabbix < schema.sql
mysql -uzabbix –p zabbix < images.sql
mysql -uzabbix –p zabbix < data.sql

安装 zabbix

  • 添加 zabbix 账号,zabbix server 默认运行在 zabbix 账号下。
groupadd zabbix
useradd –g zabbix zabbix
  • 安装 zabbix
# 下载安装 zabbix 的 yum 配置库
rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
# 安装 zabbix
yum -y install zabbix-server-mysql zabbix-web-mysql
  • 配置并启动 zabbix
# 修改 zabbix 配置文件
vi /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=10
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
#启动 zabbix
service zabbix_server start
  • 配置 php
vi /etc/httpd/conf.d/zabbix.conf
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value date.timezone Asia/Shanghai
  • 启动 apache
service httpd start

至此,启动完成,可通过 http://localhost/zabbix 来访问 zabbix server,默认用户名密码为:Admin/zabbix。

zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位 / 解决存在的各种问题。在普通的企业级环境中,zabbix 通常由 2 部分构成,zabbix server 与可选组件 zabbix agent。
     本系列的运行环境为 CentOS6.5,zabbix 的版本为官网最新的稳定版 2.4.7。
 
在使用 zabbix 之前,首先要学会安装 zabbix。官网的文档中,首推的安装方式为 yum 或 apt 安装,这种方式比较简单,适合于可以上网的环境。但对于有些企业级环境中,实行严格的内外网隔离策略,内网是不允许直连公网的,并且要监控服务器多数是运行在内网中。所以在这种情况下,就更加需要另外一种方式也就是源码安装的方式来安装 zabbix。
 
本文将介绍如何进行 zabbix 的源码安装。

一些 Zabbix 相关教程集合

Ubuntu 14.04 下 Zabbix2.4.5 源码编译安装  http://www.linuxidc.com/Linux/2015-05/117657.htm

安装部署分布式监控系统 Zabbix 2.06 http://www.linuxidc.com/Linux/2013-07/86942.htm

《安装部署分布式监控系统 Zabbix 2.06》http://www.linuxidc.com/Linux/2013-07/86942.htm

CentOS 6.3 下 Zabbix 安装部署 http://www.linuxidc.com/Linux/2013-05/83786.htm

Zabbix 分布式监控系统实践 http://www.linuxidc.com/Linux/2013-06/85758.htm

CentOS 6.3 下 Zabbix 监控 apache server-status http://www.linuxidc.com/Linux/2013-05/84740.htm

CentOS 6.3 下 Zabbix 监控 MySQL 数据库参数 http://www.linuxidc.com/Linux/2013-05/84800.htm

64 位 CentOS 6.2 下安装 Zabbix 2.0.6   http://www.linuxidc.com/Linux/2014-11/109541.htm

配置本地 yum 源

      因受网络限制,但有些依赖包又不得不需要安装,故只能自架本地 yum 源。假设已从 CD 中将各 rpm 包拷贝至 /ISO/Packages 目录下。按照如下顺序建立本地 yum 源。
 
  • 安装 createrepo 包,用于建立本地仓库,供 yum 源的安装和更新。
cd /ISO/Packages
ll|grep createrepo
rpm –ivh createrepo-0.9.9-18.e16.noarch.rpm

  若安装过程中提示需要安装依赖包,请按提示安装。

  • 执行 createrepo 命令,创建 repodata 目录
cd /ISO/Packages
createrepo .

  • 设置本地 yum 源
cd /etc/yum.repo.d
mv CentOS-Base.repo CentOS-Base.repo.bak
cp CentOS-Media.repo CentOS-Base.repo
vi CentOS-Base.repo
做如下配置修改:#yum 源所在地
baseurl=file:///ISO/Packages/
# 不做校验检查
gpgcheck=0
#设置为通过本地媒介进行 yum 安装
enabled=1


yum clean all
yum makecache

 安装 Mysql 数据库

zabbix 支持安装在多种数据库上,本方案中数据库为 mysql。安装及库表建立如下:

  • 安装 mysql5.6.28,安装方式为 rpm 安装,安装前若本机已有老旧 mysql,请卸载。
rpm –ivh MySQL-server-5.6.28-1.el6.x86_64.rpm
rpm –ivh MySQL-client-5.6.28-1.el6.x86_64.rpm
rpm –ivh MySQL-devel-5.6.28-1.el6.x86_64.rpm
rpm –ivh MySQL-shared-compat-5.6.28-1.el6.x86_64.rpm
  • 添加对 mysqlclient 的软连接(若不添加,后续的 zabbix 安装可能会报错说找不到 mysqlclient)。
cd /usr/lib64
ln -s libmysqlclient.so.16.0.0 libmysqlclient.so  
ln -s libmysqlclient_r.so.16.0.0 libmysqlclient_r.so
  • 安装完后默认的配置文件是 /usr/my.cnf,默认的 mysql root 账号密码保存在 /root/.mysql_secret。
  • 检查 mysql 是否在随机启动的列表中,若无则添加,并启动。
chkconfig --list|grep mysql
chkconfig --add mysql
chkconfig mysql on

service mysql start
  • 修改 root 账户密码。
mysql –uroot –p
set password=password('123456');
flush privileges;
  • 创建 zabbix 数据库及其访问账号。
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
flush privileges;
  • 初始化 zabbix 数据库。
mysql -uzabbix –p zabbix < schema.sql
mysql -uzabbix –p zabbix < images.sql
mysql -uzabbix –p zabbix < data.sql

安装 zabbix Server

  • 下载并解压 zabbix2.4.7
cd /usr/local/src
tar –xvf zabbix-2.4.7.tar.gz
cd zabbix-2.4.7
  • 添加 zabbix 账号(注意的是默认情况下 zabbix server 和 client 都是运行在 zabbix 账号下,需要自行添加该账号。也可以通过修改 server 的配置文件指定 zabbix server 运行在 root 账号下,不推荐)
groupadd zabbix
useradd –g zabbix zabbix
  • 安装 zabbix,若有缺依赖包,按提示自行添加
yum -y install net-snmp net-snmp-devel curl curl-devel libxml2 libxml2-devel 

./configure --prefix=/usr/local/zabbix --enable-server --with-mysql --with-net-snmp --with-libcurl --with-libxml2
make && make install
  • 修改 zabbix server 的配置文件
vi /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=10
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
  • 设置 zabbix server 的日志路径和访问权限
mkdir /var/log/zabbix
chown -R zabbix:zabbix /var/log/zabbix
  • 将 zabbix server 设置成随机启动,并启动
cp /usr/local/src/zabbix-2.4.7/misc/init.d/Fedora/core/zabbix_server /etc/init.d
vi /etc/init.d/zabbix_server
#修改 zabbix 路径
BASEDIR=/usr/local/zabbix
chkconfig --add zabbix_server
chkconfig zabbix_server on

service zabbix_server start
  • 检查 zabbix server 是否正确启动
netstat -tlnp|grep zabbix
#可看见 zabbix server 运行在 10051 端口上
ps -ef|grep zabbix
#可看见 zabbix server 运行在 zabbix 账户下,并开启多个进程监听

安装 libjpeg&freetype

zabbix server 有图形化要求,需要借助 PHP gd 的支持,这两项是 PHP gd 的必须项。由于 PHP 默认不支持这两项的安装,因此需要提前装好这两组件。

  • 安装 freetype-2.6.tar.gz
cd /usr/local/src
tar -xvf freetype-2.6.tar.gz

cd freetype-2.6 .
/configure --prefix=/usr/local/freetype make && make install
  • 安装 jpegsrc.v6b.tar.gz
cd /usr/local/src

tar -xvf jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure --prefix=/usr/local/jpeg --enable-shared
make && make install

安装过程中,若报错类似 ”make: ./libtool: Command not found“,则需要把系统中的 libtool 的配置文件覆盖 jpeg 本身的老旧对应文件。

cp /usr/share/libtool/config/config.sub .
cp /usr/share/libtool/config/config.guess .
make clean
./configure --prefix=/usr/local/jpeg --enable-shared

安装过程中,若报错类似 ”cannot create regular file `/usr/local/jpeg/include/jconfig.h’: No such file or directory”, 则需要手动建立相应目录。

mkdir -p /usr/local/jpeg/include
mkdir -p /usr/local/jpeg/lib
mkdir -p /usr/local/jpeg/bin
mkdir -p /usr/local/jpeg/man/man1
make && make install

安装 PHP

zabbix server 本身是由 php 编写的,因此需要安装 php 的运行环境。

  • 建立 php 运行账号
groupadd www
useradd –g www www
  • 下载并解压 php-5.6.16.tar.bz2
cd /usr/local/src
tar –xvf php-5.6.16.tar.bz2
cd php-5.6.16
  • 安装 php
yum -y install libpng-devel
./configure --prefix=/usr/local/php --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-mysql=mysqlnd --with-mysqli=mysqlnd --enable-sockets --with-gd --with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype --with-gettext --enable-mbstring --enable-bcmath --with-config-file-path=/usr/local/php/etc
make && make install

若安装过程中有缺依赖包,请按照提示安装。

  • 将 PHP 命令添加至环境变量中。
vi /etc/profile
#末尾加入:export PATH=$PATH:/usr/local/php/bin
#立即生效:source /etc/profile
  • 配置 php-fpm
cd /usr/local/php/etc
cp php-fpm.conf.default php-fpm.conf
  • 为满足 zabbix 的最低运行要求,配置 php.ini 文件。
cp /usr/local/src/php-5.6.16/php.ini-production /usr/local/php/etc/php.ini
vi /usr/local/php/etc/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
always_populate_raw_post_data = -1
date.timezone = Asia/Shanghai
  • 设置 php 随机启动,并启动。
# 开机启动
vi /etc/rc.local
/usr/local/php/sbin/php-fpm
#立即启动
/usr/local/php/sbin/php-fpm

启动后可观察 php 运行在 9000 端口上。

安装 Nginx

zabbix server 需要运行在 web 服务器上,官网推荐是安装在 apache 上,本方案是运行在 nginx 上,方法如下:

  • 下载并安装 nginx-1.8.0.tar.gz
cd /usr/local/src
tar –xvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
  • 安装 nginx
yum -y install pcre-devel
./configure --with-http_ssl_module --with-http_realip_module
make && make install

上述安装中若缺依赖包,请根据提示安装

  • 修改 nginx 的配置文件,主要修改点如下:
user www www;
work_processes auto;

   location ~ \.php$ {
        root           html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param SCRIPT_FILENAME       $document_root$fastcgi_script_name;
        include        fastcgi_params;
 }
         
  • 将 zabbix server 的运行文件拷贝至 nginx 目录下。
cd /usr/local/nginx/html
mkdir zabbix
cd zabbix
cp -r /usr/local/src/zabbix-2.4.7/frontends/php/* .
cd ..
chown –R www:www zabbix
  • 设置 nginx 开机启动,并启动 nginx。
# 开机启动
vi /etc/rc.local
/usr/local/nginx/sbin/nginx
#启动 nginx
/usr/local/nginx/sbin/nginx

初始化 zabbix server

nginx 启动后,可以直接访问 zabbix server:http://localhost/zabbix/index.php , 初始化是以图形界面进行配置的。

  • 首先检测 php 的运行环境是否正确。

CentOS6.5 下 Zabbix 安装使用学习系列

  • 其次确保数据库连接正确

CentOS6.5 下 Zabbix 安装使用学习系列

  • 配置好端口和 host

CentOS6.5 下 Zabbix 安装使用学习系列

  • 再次确认配置选项

CentOS6.5 下 Zabbix 安装使用学习系列

  • 配置成功CentOS6.5 下 Zabbix 安装使用学习系列

 

至此,zabbix server 的源码安装成功结束,进入登录界面,默认的登录名和密码是:Admin/zabbix。

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-07/133421p2.htm

部署完 zabbix server 后,自然要部署 zabbix agent。在官方描述中,agent 是部署在被监控的机器上,用于采集 CPU、内存、磁盘等统计信息,并上报给 server 用于进一步处理。agent 的采集信息方式也非常高效,是通过本机操作系统的系统调用完成。

agent 主要通过被动和主动两种方式上报本机信息,顾名思义,被动方式意味着 server 下达采集命令时,agent 才会去收集信息;而主动方式意味着 agent 会在第一次时就从 server 处获取要采集的 items,并定期将每个 item 的新值发送给 server 端。那问题来了,agent 是通过被动模式还是主动模式采集信息呢?答案是取决于当你在 server 的监控界面设计这个 item 时采用哪种模式,默认为被动模式。

agent 能部署到几乎所有的操作系统上,在本系列中,我们仅以 CentOS 和 windows 两种操作系统来进行说明。

部署在 centOS 上

具体的操作系统版本为 centOS6.5。

首先要做的第一件事就是添加 zabbix 账号,zabbix agent 和 server 一样,默认都是运行于 zabbix 账号下。

groupadd zabbix
useradd –g zabbix zabbix

具体安装时,又可分为 yum 安装和源码安装,下面分别介绍。

yum 安装

yum 安装很简单,几乎两行就搞定。

rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm
yum -y install zabbix-agent

源码安装

  • 下载源码并安装
cd /usr/local/src
tar xvf zabbix-2.4.7.tar.gz
cd zabbix-2.4.7
./configure --prefix=/usr/local/zabbix --enable-agent
make && make install
  • 设置随机启动
cp /usr/local/src/zabbix-2.4.7/misc/init.d/Fedora/core/zabbix_agentd /etc/init.d
vi /etc/init.d/zabbix_agentd
#修改 BASEDIR
BASEDIR=/usr/local/zabbix
chkconfig --add zabbix_agentd
chkconfig zabbix_agentd on

无论是哪种安装方式,都需要修改下配置文件。

# 日志最大值,默认 1M,超出会 rotate
LogFileSize=1
#被动模式下服务器地址,可以是 ip 或者 hostname
Server=192.168.0.1
#主动模式下服务器地址,可以 ip 或者 hostname
ServerActive=192.168.0.1
#被监控机的 ip 或 hostname,注意的是该值必须和你在 server 的监控界面中定义的 server name 要保持一致
Hostname=192.168.0.2

最后,启动 agent,并查看是否正确启动。

service zabbix_agentd start
#默认的 log 路径
cat /tmp/zabbix_agentd.log
#启动正常的话应该能看到类似如下内容:9604:20151229:091802.672 Starting Zabbix Agent [192.168.0.64]. Zabbix 2.4.7 (revision 56694).
9604:20151229:091802.673 using configuration file: /usr/local/zabbix/etc/zabbix_agentd.conf
9604:20151229:091802.673 agent #0 started [main process]
9607:20151229:091802.675 agent #3 started [listener #2]
9608:20151229:091802.676 agent #4 started [listener #3]
9606:20151229:091802.677 agent #2 started [listener #1]
9605:20151229:091802.677 agent #1 started [collector]
9609:20151229:091802.678 agent #5 started [active checks #1]

但出现 ”no active checks on server [192.9.199.132:10051]: host [192.168.0.139] not found” 的错误,意思是做 active 检查时没有发现 server。解决办法是先在 server 的“主机”中添加监控机,记得取名必须和你在 agent 的配置文件中定义的 hostname 一致,再重启 agent 即可。

默认情况下 agent 运行在 10050 端口,注意防火墙要打开此端口。

# 以下命令看见 zabbix agent 运行在 10050 端口
netstat -tlnp|grep zabbix
#注意防火墙设置
vi /etc/sysconfig/iptables
#添加对 10050 的端口开放
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10050 -j ACCEPT
#重启防火墙
service iptables restart

部署在 Windows 上

Windows 版本的 agent 为 zabbix_agents_2.4.4.win.zip,将其解压缩如 C 盘下,进入配置文件目录,修改配置文件如下:

# 日志最大值,默认 1M,超出会 rotate
LogFileSize=1
#被动模式下服务器地址,可以是 ip 或者 hostname
Server=192.168.0.1
#主动模式下服务器地址,可以 ip 或者 hostname
ServerActive=192.168.0.1
#被监控机的 ip 或 hostname,注意的是该值必须和你在 server 的监控界面中定义的 server name 要保持一致
Hostname=192.168.0.3

将 agent 添加为 windows 开机启动服务,进入命令行模式。

#32 位操作系统进入以下路径
cd c:\zabbix\bin\win32
#64 位操作系统进入以下路径
cd c:\zabbix\bin\win64
#设置成 windows 服务
zabbix_agentd.exe -c c:\zabbix\conf\zabbix_agentd.win.conf –i

windows 下 agent 的启动和停止。

# 启动
zabbix_agentd.exe -s 
#停止
zabbix_agentd.exe -x

同 centOS 类似,日志可在默认的 c:\zabbix_agentd 下查看。若有 windows 防火墙限制,请设置相应的入站规则和出站规则,这里不再赘述。

相信大家使用 zabbix 的最主要目的就是当被监控机器发生故障时,能通过 zabbix 获得第一时间的报警提醒。zabbix 常用的报警媒介有 email,短信,jabber 和脚本,这其中脚本类型最为灵活,尤其当邮件服务器、短信服务器不与 zabbix server 在同一台服务器时,自定义脚本基本上成为我们唯一可靠的方式。

在本文中,我们将在 zabbix server 上安装邮件客户端,并以脚本方式将报警信息通过邮件发出来,若以后想做短信提醒、微信提醒,技术路径都是一样的。

安装 msmtp

msmtp 是一个 SMTP 客户端,可将邮件发送至 SMTP 服务端,其官网地址为 http://msmtp.sourceforge.net/index.html。

  • 下载并安装 msmtp
cd /usr/local/src
wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2/download
tar jxvf msmtp-1.4.32.tar.bz2
cd msmtp-1.4.32
./configure --prefix=/usr/local/msmtp
make && make install
  • 配置 msmtp
mkdir –p /usr/local/msmtp/etc
vi /usr/local/msmtp/etc/msmtprc
#添加如下内容:account default 
host smtp.163.com                    
port 25
from xxx@163.com      
auth login
tls off
user  xxx                     
password xxx                
logfile /var/log/mmlog

chmod 777 /var/log/mmlog
  • 测试 msmtp
/usr/local/msmtp/bin/msmtp  xxx@163.com 
hello,test 
ctrl d
# 查看日志有无成功 
cat /usr/local/msmtp/msmtp.log
# 查看 163 邮箱,看看信收到没有。

安装 Mutt

Mutt 是一个 Email 客户端,它不能直接发送邮件,更多的是承担对 email 的管理功能,与 msmtp 可搭配使用。其官网地址为:http://www.mutt.org/ 

若想了解更多 Mutt 与 msmtp 的搭配使用,可查看如下地址:http://msmtp.sourceforge.net/doc/msmtp.html#Using-msmtp-with-Mutt 

  • 下载并安装 Mutt
cd /usr/local/src
wget ftp://ftp.mutt.org/pub/mutt/mutt-1.5.24.tar.gz
tar xvf mutt-1.5.24.tar.gz
cd mutt-1.5.24
./configure –prefix=/usr/local/mutt
make && make install
  • 配置 Mutt
vi /usr/local/mutt/etc/Muttrc
#在最后添加如下几行:set sendmail="/usr/local/msmtp/bin/msmtp"
set use_from=yes
set realname="xxx"
set from=xxx@163.com
set envelope_from=yes
  • 测试 Mutt
echo "hello,world"|/usr/local/mutt/bin/mutt –s "test mail" xxx@163.com
#上述语句将发送一封标题为 "test mail",内容为 "hello,world",收件人为 xxx@163.com 的邮件,可检查该邮箱能否收到邮件

至此,邮件客户端已配置完成,那 zabbix 如何将报警信息传递给 Mutt 呢?我们仅需要写如下一段脚本:

cd /usr/local/zabbix/share/zabbix/alertscripts
touch notification.sh
chmod +x notification.sh

vi notification.sh
#添加如下内容
#!/bin/bash
echo "$3"| /usr/local/mutt/bin/mutt -s "$2" $1

其中 $1 为 zabbix 传递的收件人地址,$2 为邮件标题,$3 为邮件内容。

而上述路径 /usr/local/zabbix/share/zabbix/alertscripts 是默认的 zabbix 脚本调用路径,当有报警信息时,zabbix 会在该路径下查找并调用指定的脚本,如我们自定义的 notification.sh 脚本。

下一篇文章我们将介绍如何在 zabbix server 界面完成报警提醒的全过程设置。

通过之前的文章,我们已搭建好 zabbix server、agent 和 mail 客户端,现在万事俱备,只差在 server 的界面中进行相应配置,即可快速搭建一个报警系统。总的来说,快速搭建一个报警系统的顺序如下:

  1. 配置 Host groups。在生产环境中,可能会有多个不同的业务,每个业务下又有自己的服务器。因此,通过定义 Host group 可以进行业务分组。
  2. 配置 Template。顾名思义模板的意思,假设我们有多台 MySQL 服务器或应用服务器,他们的机器配置、开放端口都基本相同,那么我们没有必要一台台机器进行监控配置,只需要定义一个模板,便可以适用于所有类似的机器。而 Host group 和 Template 的对应关系可理解为多对多关系:一个 Host group 可以拥有多个 Template,比如该 Host group 下所有 windows 机器可用 windows Template,所有 Linux 机器可用 Linux Template;而一个 Template 可以被多个 Host group 复用。
  3. 配置 Host。即被监控的机器,指定该 Host 属于哪些 Host group,并可适用于哪些模板。Host 与 Host group 及 Template 也是多对多的关系,不过实际环境中,某台主机应是可以确定属于哪个业务,应用哪个模板的,这样简单明了。
  4. 配置 Media Types。即设计报警类型,默认的类型有 email、SMS、script、Jabber 等,我们采用自定义脚本类型,并指明调报警时调用哪个脚本。
  5. 配置 Users。首先要创建用户组,才能创建用户。创建的用户组需要指明 Permission,即该用户组可以对哪些 Host group 进行读、写或拒绝的权限操作,那么该用户组下所有用户都能继承该用户组的权限。
  6. 配置 User。指明创建的用户属于哪个用户组,更为重要的一点是设置 Media,也就是该用户可以使用哪些 Media Type,当报警发生时,发送给哪些收件人,在什么时间段发送,指明发送的报警级别。
  7. 配置 Action。在此可以指定报警的触发条件,报警后的标题和内容,恢复后的标题和内容,报警时发送频率、发送给哪些用户组或用户、用什么样的 Media 进行发送。

以上配置完成后,即完成了一个报警系统。当有报警发生时,比如 web 服务器挂了,那我们除了收邮件或短信外,在 server 的界面中如何看到呢?可以在两个地方看到。

一个是 Trigger,在此可以看到每条报警的具体信息,如报警名称、级别、状态、哪台主机报警的、是否已有人处理了;

另一个是 Events,在此除了可以看到上述报警信息外,最重要一点是可以看到是否触发了 action,也就是报警信息是否成功处理,就在此查看。

zabbix 支持中文界面,可以在右上角的 Profile->User->Language 中进行设置。不过中文支持的还是有不足之处,最典型的例子当属你设置的主机 visiable name 为中文时,当看图形统计时,可能会显示成乱码。

下面的内容将按照上述配置过程一一明细出来,

配置 Host groups

从 Configuration->Host groups,即可看到 Host groups 列表,默认 zabbix 已创建了些分组。我们可以创建一个属于自己的分组。

CentOS6.5 下 Zabbix 安装使用学习系列

简单取个名称即可

CentOS6.5 下 Zabbix 安装使用学习系列

配置 Template

  很多人可能对 zabbix 提供的众多监控项感到不知所措,如何设置监控项才是最正确的呢?其实 zabbix 早已想到了这些问题,在它提供的模板列表中就有适合于不同场景的模板供你参考选择。即使你不知道某些监控项为什么这样做,但参照模板给的配置那是绝对错不了的。下面我们来看看如何快速搭建一个自定义的模板。

先从 Configuration->Templates 查看下既有的模板列表:

CentOS6.5 下 Zabbix 安装使用学习系列

对于生产环境而言,windows 服务器和 linux 服务器应算是最多的了,我们可以以他们为基础快速创建自定义模板。每个 Template 都进行了进一步的细分:

  • Application:自定义的分类名,可以使每个 item 都有相应分类。
  • Items:监控项,如监控端口、内存、CPU、磁盘使用情况、网卡项。
  • Triggers:触发器,在此设定一个阀值,当 item 的值达到这个阀值时,触发器将生效报警。
  • Graphs:设置某些 item 的图形化界面,如磁盘空间的分布、内存使用情况、CPU 变化情况等。
  • Screens:将多个 Graph 整合在一个界面中。
  • Discovery:自动发现条目,最典型的两个应用,一个是磁盘分区的自动发现,你无须告诉 zabbix 这台机器有多少个分区,只需要进行 Discovery 配置,zabbix 可以自动把某台机器的所有分区都找出来,若是后加的分区,zabbix 也能找出来;另一个应用是网卡的自动发现,若网卡数量有变化,zabbix 也能感知。

本文不会对上述项的内容进行详述,感兴趣的同学可以自行查看官网相关文档。

在此我们会快速地基于默认模板创建自定义模板,默认模板中的 item 内容很全面,但实际中我们可能仅需要其中一部分即可。我们以 windows 机器为例,看看如何做。

首先创建一个自定义的模板

CentOS6.5 下 Zabbix 安装使用学习系列

简单取名,指定所属 Host group 即可

CentOS6.5 下 Zabbix 安装使用学习系列

建立完自己的模板后,我们可以手动建立自己的 Application 分类

CentOS6.5 下 Zabbix 安装使用学习系列

再次进入 Template OS Windows 的 item 分类中,我们筛选感兴趣的内容,并拷贝至我们创建的模板中。

CentOS6.5 下 Zabbix 安装使用学习系列

如法炮制,我们将 Triggers、Graphs 等感兴趣项拷贝进模板中,对于无法拷贝的 Screens 和 Discovery rules,可以手动复制即可。zabbix 还提供了 import 和 export 功能,方便你定义的模板在其他机器上导入。

配置 Host

接下来要定义被监控的机器,进入 Configuration->Hosts->Create Host,创建一个 Host

CentOS6.5 下 Zabbix 安装使用学习系列

设置该 Host 对应的模板

CentOS6.5 下 Zabbix 安装使用学习系列

配置好后,agent 可以重启后与该 Host 进行通信。

配置 Media Type

从 Administration->Media Types->Create media type,创建一个 script 的 media type,还记得上一篇提到的 script 路径吗?对,这个脚本需要放在 /usr/local/zabbix/share/zabbix/alertscripts 目录下。

CentOS6.5 下 Zabbix 安装使用学习系列

配置 Users

从 Administration->Users->Create user group,创建一个新的用户组

CentOS6.5 下 Zabbix 安装使用学习系列

设置该用户组可以拥有的 host group 权限

CentOS6.5 下 Zabbix 安装使用学习系列

配置 User

选择某用户组后,点击 Create user 按钮,创建一个新用户

CentOS6.5 下 Zabbix 安装使用学习系列

设置该用户的媒介类型

CentOS6.5 下 Zabbix 安装使用学习系列

配置 Action

从 Configuration->Actions->Create action,创建一个 action。

CentOS6.5 下 Zabbix 安装使用学习系列

可保持默认条件不变

CentOS6.5 下 Zabbix 安装使用学习系列

设置相关动作

CentOS6.5 下 Zabbix 安装使用学习系列

至此,配置完成。若想试试报警是否成功,可以尝试将被监控机网络断开,server 的 ping 命令会在一定时间内发现被监控机断开,就会触发报警。

邮件内容大致如下:

通过前面的文章,你已经可以快速地搭建一个报警系统,并能正常的收到报警邮件了。不过在很多企业级环境下,邮件发送服务器往往放在外网,而 zabbix server 放置在内网,在这种情况下,zabbix 的报警信息又如何能传送给邮件发送服务器呢?

其实也很简单,方法也很多,这里给出一个我们在实际生产环境中的例子,大致的流程是:

  1. 请求网络组的同事将邮件发送服务器的 22 端口开放给内网的 zabbix 机器;
  2. 前面提到的 server 报警脚本需要做改造,将报警信息封装成一个时间戳文件;
  3. 利用 scp 命令将时间戳文件传送给邮件发送服务器,为避免登录密码,需要在 server 端生成免登录证书信息,并将公钥给邮件发送服务器;
  4. server 发送完后删除时间戳文件;
  5. 邮件发送服务器专门开辟一个路径存放传送过来的时间戳文件;
  6. 邮件发送服务器上,用 Java 或 Python 等你熟悉的语言写一个小程序,可以解析时间戳文件,并调用 Mutt 进行邮件发送;
  7. 邮件发送服务器上,用 crontab 设置一个 1 分钟的定时调用,调用小程序处理时间戳文件。

具体做法如下:

  • 改造 notification.sh
#!/bin/bash

CURRENT_TIME=`date '+%s'`
MAILPATH=/usr/local/zabbix/share/zabbix/alertscripts

#step 1 make the mail file
echo to=$1 >> $MAILPATH/$CURRENT_TIME.txt
echo subject="$2"  >> $MAILPATH/$CURRENT_TIME.txt
echo content="$3" >> $MAILPATH/$CURRENT_TIME.txt

#step 2 send the file
scp $MAILPATH/$CURRENT_TIME.txt zabbix@192.9.199.13:/home/zabbix/mails/

#step 3 rm the file
rm -f $MAILPATH/$CURRENT_TIME.txt
  • 配置 ssh 免登录,先在邮件发送服务器上执行如下动作
groupadd zabbix
useradd -g zabbix zabbix
su
- zabbix ssh-keygen #安装提示一步步敲回车生成证书信息 cd ~/.ssh touch authorized_keys cat id_rsa.pub >> authorized_keys

同样的方法在 zabbix server 上执行一次,再将 zabbix server 的公钥信息拷贝至邮件发送服务器

scp ~/.ssh/id_rsa.pub zabbix@192.9.199.13:~/
#进入邮件发送服务器
ssh 192.9.199.13
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

至此,报警文件即可免登录发送至邮件发送服务器。

在邮件发送服务器设置定时调用

crontab -e
*/1 * * * * nohup java -jar /home/zabbix/notificationParse.jar &

解析报警文件这块内容实现因人而异,就不再详述。

虽然我们已经创建了一个报警系统,但在实际场景中,运维人员从得到报警到实际解决问题有一定的时差,若业务系统没有做高可用,那业务不得不中断,对于某些要求严格的企业级环境,这是不可容忍的,那有没有方法能让 zabbix server 自动尝试解决问题呢?答案是有的,zabbix server 允许通过远程命令的方式对被监控机器进行操作。

本文将以 CentOS6.5 为例,演示如何进行远程命令操作。场景为被监控机器是一台运行 Nginx 的机器,zabbix server 监控其 80 端口,若 80 端口无法访问了,我们视为 Nginx 挂了,要求 zabbix 第一时间启动 Nginx。

首先我们要求 agent 的配置文件必须要支持远程命令。

vi /usr/local/zabbix/etc/zabbix_agentd.conf
#找到 EnableRemoteCommands 这一行,修改如下:### Option: EnableRemoteCommands
#       Whether remote commands from Zabbix server are allowed.
#       0 - not allowed
#       1 - allowed
#
# Mandatory: no
# Default:
# EnableRemoteCommands=0
   EnableRemoteCommands=1

其次,因为 agent 是运行于 zabbix 账号,若要启动 Nginx,必须要授权访问,可通过 visudo 的相应授权来解决。

visudo

#允许 zabbix 账号可以无密码访问
## Allow root to run any commands anywhere 
root    ALL=(ALL)       ALL
zabbix  ALL=(ALL)       NOPASSWD:ALL

#允许不需要 tty 也能操作,因此注释下行
#Defaults    requiretty

这样客户端的设置就完成了,再看看 zabbix server 端如何设置。

我们新建一个 Action,当发现被监控机 80 端口挂了后,触发远程命令动作。

CentOS6.5 下 Zabbix 安装使用学习系列

设置触发条件。

CentOS6.5 下 Zabbix 安装使用学习系列

设置命令动作。

CentOS6.5 下 Zabbix 安装使用学习系列

设置完成后,可以尝试将被监控机器的 nginx 给停了。

/usr/local/nginx/sbin/nginx -s quit

等上几分钟后,zabbix server 将监控到 nginx 挂了,并尝试重启,注意的是 zabbix server 不关心远程命令的执行结果。

CentOS6.5 下 Zabbix 安装使用学习系列

在 Events 事件中,我们可以看到该远程命令已经被执行。

在被监控机器上我们再看看 80 端口是否已经起来。

netstat -tlnp|grep 80
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      4071/nginx

结果说明 Nginx 确实又起来了。

ZABBIX 的详细介绍:请点这里
ZABBIX 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-07/133421.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计24744字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中