共计 24744 个字符,预计需要花费 62 分钟才能阅读完成。
一些 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 源
- 安装 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 的运行环境是否正确。
- 其次确保数据库连接正确
- 配置好端口和 host
- 再次确认配置选项
- 配置成功
至此,zabbix server 的源码安装成功结束,进入登录界面,默认的登录名和密码是:Admin/zabbix。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2016-07/133421p2.htm
对于允许连接公网的环境下,显然通过 yum 安装是最为简单方便的,也是官网推荐的安装方式。通过这种方式安装,会将 php、apache、zabbix 本身都一并安装,解决了烦人的依赖包问题。
安装 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 相关教程集合:
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 源
- 安装 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 的运行环境是否正确。
- 其次确保数据库连接正确
- 配置好端口和 host
- 再次确认配置选项
- 配置成功
至此,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 的界面中进行相应配置,即可快速搭建一个报警系统。总的来说,快速搭建一个报警系统的顺序如下:
- 配置 Host groups。在生产环境中,可能会有多个不同的业务,每个业务下又有自己的服务器。因此,通过定义 Host group 可以进行业务分组。
- 配置 Template。顾名思义模板的意思,假设我们有多台 MySQL 服务器或应用服务器,他们的机器配置、开放端口都基本相同,那么我们没有必要一台台机器进行监控配置,只需要定义一个模板,便可以适用于所有类似的机器。而 Host group 和 Template 的对应关系可理解为多对多关系:一个 Host group 可以拥有多个 Template,比如该 Host group 下所有 windows 机器可用 windows Template,所有 Linux 机器可用 Linux Template;而一个 Template 可以被多个 Host group 复用。
- 配置 Host。即被监控的机器,指定该 Host 属于哪些 Host group,并可适用于哪些模板。Host 与 Host group 及 Template 也是多对多的关系,不过实际环境中,某台主机应是可以确定属于哪个业务,应用哪个模板的,这样简单明了。
- 配置 Media Types。即设计报警类型,默认的类型有 email、SMS、script、Jabber 等,我们采用自定义脚本类型,并指明调报警时调用哪个脚本。
- 配置 Users。首先要创建用户组,才能创建用户。创建的用户组需要指明 Permission,即该用户组可以对哪些 Host group 进行读、写或拒绝的权限操作,那么该用户组下所有用户都能继承该用户组的权限。
- 配置 User。指明创建的用户属于哪个用户组,更为重要的一点是设置 Media,也就是该用户可以使用哪些 Media Type,当报警发生时,发送给哪些收件人,在什么时间段发送,指明发送的报警级别。
- 配置 Action。在此可以指定报警的触发条件,报警后的标题和内容,恢复后的标题和内容,报警时发送频率、发送给哪些用户组或用户、用什么样的 Media 进行发送。
以上配置完成后,即完成了一个报警系统。当有报警发生时,比如 web 服务器挂了,那我们除了收邮件或短信外,在 server 的界面中如何看到呢?可以在两个地方看到。
一个是 Trigger,在此可以看到每条报警的具体信息,如报警名称、级别、状态、哪台主机报警的、是否已有人处理了;
另一个是 Events,在此除了可以看到上述报警信息外,最重要一点是可以看到是否触发了 action,也就是报警信息是否成功处理,就在此查看。
zabbix 支持中文界面,可以在右上角的 Profile->User->Language 中进行设置。不过中文支持的还是有不足之处,最典型的例子当属你设置的主机 visiable name 为中文时,当看图形统计时,可能会显示成乱码。
下面的内容将按照上述配置过程一一明细出来,
配置 Host groups
从 Configuration->Host groups,即可看到 Host groups 列表,默认 zabbix 已创建了些分组。我们可以创建一个属于自己的分组。
简单取个名称即可
配置 Template
很多人可能对 zabbix 提供的众多监控项感到不知所措,如何设置监控项才是最正确的呢?其实 zabbix 早已想到了这些问题,在它提供的模板列表中就有适合于不同场景的模板供你参考选择。即使你不知道某些监控项为什么这样做,但参照模板给的配置那是绝对错不了的。下面我们来看看如何快速搭建一个自定义的模板。
先从 Configuration->Templates 查看下既有的模板列表:
对于生产环境而言,windows 服务器和 linux 服务器应算是最多的了,我们可以以他们为基础快速创建自定义模板。每个 Template 都进行了进一步的细分:
- Application:自定义的分类名,可以使每个 item 都有相应分类。
- Items:监控项,如监控端口、内存、CPU、磁盘使用情况、网卡项。
- Triggers:触发器,在此设定一个阀值,当 item 的值达到这个阀值时,触发器将生效报警。
- Graphs:设置某些 item 的图形化界面,如磁盘空间的分布、内存使用情况、CPU 变化情况等。
- Screens:将多个 Graph 整合在一个界面中。
- Discovery:自动发现条目,最典型的两个应用,一个是磁盘分区的自动发现,你无须告诉 zabbix 这台机器有多少个分区,只需要进行 Discovery 配置,zabbix 可以自动把某台机器的所有分区都找出来,若是后加的分区,zabbix 也能找出来;另一个应用是网卡的自动发现,若网卡数量有变化,zabbix 也能感知。
本文不会对上述项的内容进行详述,感兴趣的同学可以自行查看官网相关文档。
在此我们会快速地基于默认模板创建自定义模板,默认模板中的 item 内容很全面,但实际中我们可能仅需要其中一部分即可。我们以 windows 机器为例,看看如何做。
首先创建一个自定义的模板
简单取名,指定所属 Host group 即可
建立完自己的模板后,我们可以手动建立自己的 Application 分类
再次进入 Template OS Windows 的 item 分类中,我们筛选感兴趣的内容,并拷贝至我们创建的模板中。
如法炮制,我们将 Triggers、Graphs 等感兴趣项拷贝进模板中,对于无法拷贝的 Screens 和 Discovery rules,可以手动复制即可。zabbix 还提供了 import 和 export 功能,方便你定义的模板在其他机器上导入。
配置 Host
接下来要定义被监控的机器,进入 Configuration->Hosts->Create Host,创建一个 Host
设置该 Host 对应的模板
配置好后,agent 可以重启后与该 Host 进行通信。
配置 Media Type
从 Administration->Media Types->Create media type,创建一个 script 的 media type,还记得上一篇提到的 script 路径吗?对,这个脚本需要放在 /usr/local/zabbix/share/zabbix/alertscripts 目录下。
配置 Users
从 Administration->Users->Create user group,创建一个新的用户组
设置该用户组可以拥有的 host group 权限
配置 User
选择某用户组后,点击 Create user 按钮,创建一个新用户
设置该用户的媒介类型
配置 Action
从 Configuration->Actions->Create action,创建一个 action。
可保持默认条件不变
设置相关动作
至此,配置完成。若想试试报警是否成功,可以尝试将被监控机网络断开,server 的 ping 命令会在一定时间内发现被监控机断开,就会触发报警。
邮件内容大致如下:
通过前面的文章,你已经可以快速地搭建一个报警系统,并能正常的收到报警邮件了。不过在很多企业级环境下,邮件发送服务器往往放在外网,而 zabbix server 放置在内网,在这种情况下,zabbix 的报警信息又如何能传送给邮件发送服务器呢?
其实也很简单,方法也很多,这里给出一个我们在实际生产环境中的例子,大致的流程是:
- 请求网络组的同事将邮件发送服务器的 22 端口开放给内网的 zabbix 机器;
- 前面提到的 server 报警脚本需要做改造,将报警信息封装成一个时间戳文件;
- 利用 scp 命令将时间戳文件传送给邮件发送服务器,为避免登录密码,需要在 server 端生成免登录证书信息,并将公钥给邮件发送服务器;
- server 发送完后删除时间戳文件;
- 邮件发送服务器专门开辟一个路径存放传送过来的时间戳文件;
- 邮件发送服务器上,用 Java 或 Python 等你熟悉的语言写一个小程序,可以解析时间戳文件,并调用 Mutt 进行邮件发送;
- 邮件发送服务器上,用 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 端口挂了后,触发远程命令动作。
设置触发条件。
设置命令动作。
设置完成后,可以尝试将被监控机器的 nginx 给停了。
/usr/local/nginx/sbin/nginx -s quit
等上几分钟后,zabbix server 将监控到 nginx 挂了,并尝试重启,注意的是 zabbix server 不关心远程命令的执行结果。
在 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