0x00 背景
Zabbix 监听 Nginx 的实时状态,本次测试只有一台机器,Server与Agentd全部部署在测试机上。
0x01 介绍
Zabbix是一个企业级的、开源的、分布式的监控套件
Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送基于Email的告警. 这样可以保证快速的对问题作出相应. Zabbix可以利用存储数据提供杰出的报告及图形化方式. 这一特性将帮助用户完成容量规划.
Zabbix支持polling和trapping两种方式. 所有的Zabbix报告都可以通过配置参数在WEB前端进行访问. Web前端将帮助你在任何区域都能够迅速获得你的网络及服务状况. Zabbix可以通过尽可能的配置来扮演监控你的IT基础框架的角色,而不管你是来自于小型组织还是大规模的公司.
0x02 软件准备
1. Zabbix : http://www.zabbix.com/download 版本:3.4.4
2. Nginx : http://nginx.org/en/download.html 版本:1.12.2
3. PHP : http://www.php.net/downloads.php 版本:7.1.11
4. libjpeg : http://www.ijg.org/files/jpegsrc.v8b.tar.gz
5. freetype : https://download.savannah.gnu.org/releases/freetype/ 版本:2.4.0
0x03 Nginx 源码编译安装
1. 创建新目录,将Nginx包存放到该目录下,并解压
mkdir /home/${user}/soft
mkdir /home/${user}/soft/nginx
cd /home/${user}/soft/nginx
tar -xzvf nginx-1.12.2.tar.gz
注:${user} 是指用户目录 , 将Nginx包传到目录 /home/${user}/soft/nginx
2. 安装Gcc等依赖
yum install gcc gcc-c++ openssl_devel
yum install openssl openssl-devel
yum install pcre-devel
yum install zlib-devel
3. 编译Nginx的【状态模块】【TCP代理模块】
cd /home/${user}/soft/nginx/nginx-1.12.2
./configure --prefix=/opt/nginx/ --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-http_realip_module --with-http_image_filter_module --with-stream
make
make install
可能遇到错误:
错误:./configure: error: the HTTP image filter module requires the GD library.
原因: 没有安装GD库的依赖
解决方法: yum install gd-devel
0x04 安装依赖 libjpeg
1. 创建目录,将libjpeg包放在目录下并解压
mkdir /home/${user}/soft
mkdir /home/${user}/soft/libjpeg
cd /home/${user}/soft/libjpeg
tar -xzvf jpegsrc.v8b.tar.gz
注:${user} 是指用户目录 ,将libjpeg包传到目录 /home/${user}/soft/libjpeg
2. 源码编译libjpeg
cd /home/${user}/soft/libjpeg/jpeg-8b
./configure --prefix=/usr/local/libjpeg --enable-shared --enable-static
make
make install
0x05 安装依赖 freetype
1. 创建目录,将freetype包放在目录下并解压
mkdir /home/${user}/soft
mkdir /home/${user}/soft/freetype
cd /home/${user}/soft/freetype
tar -xzvf freetype-2.4.0.tar.gz
注:${user} 是指用户目录 ,将libjpeg包传到目录 /home/${user}/soft/freetype
2. 源码编译freetype
cd /home/${user}/soft/freetype/freetype-2.4.0
./configure --prefix=/usr/local/freetype --enable-static --enable-shared
make
make install
0x06 php 源码编译php-fpm模块以及相关Zabbix相关依赖模块
1. 创建新目录,将Nginx包存放到该目录下并解压
mkdir /home/${user}/soft
mkdir /home/${user}/soft/php
cd /home/${user}/soft/php
tar -xzvf php-7.1.11.tar.gz
注:${user} 是指用户目录, 将PHP包传到目录 /home/${user}/soft/php
2. 编译PHP相关模块
cd /home/${user}/soft/php/php-7.1.11
./configure --prefix=/opt/php/ --enable-fpm --with-mysqli --enable-bcmath --enable-mbstring --enable-sockets --with-jpeg-dir=/usr/local/libjpeg --with-freetype-dir=/usr/local --with-gd -with-gettext
make
make install
可能遇到的问题及解决方法:
错误: error: xml2-config not found. Please check your libxml2 installation.
原因:缺少libxml2库
解决方法: yum install libxml2-devel
0x07 配置php-fpm
1. 复制一份有效的配置文件
cp /opt/php/etc/php-fpm.conf.default /opt/php/etc/php-fpm.conf
cp /opt/php/etc/php-fpm.d/www.conf.default /opt/php/etc/php-fpm.d/www.conf
2. 创建php.ini
touch /opt/php/etc/php.ini
vim /opt/php/etc/php.ini
#############################
增加以下配置,用于Zabbix
#############################
post_max_size=16M
max_execution_time=300
date.timezone=Asia/Shanghai
#############################
保存退出
3. 运行php-fpm
/opt/php/sbin/php-fpm -R -c /opt/php/etc/php.ini
注: -R 参数是指以管理员身份运行
-c 指定运行时配置文件路径
默认是以9000端口运行 netstat -ant | grep 9000
0x08 配置Nginx支持php-fpm
1. 在nginx.conf配置文件中,添加如下配置, 配置文件路径 /opt/nginx/conf/nginx.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm index.php;
}
location = /nginx-status {
stub_status on;
access_log off;
allow 127.0.0.1;
####zabbix服务器端的IP地址一般为内网IP
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
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;
}
}
2. 开启nginx
/opt/nginx/sbin/nginx
3. 测试php-fpm是否生效
在Nginx的Web目录下创建文件 index.php
vim /opt/nginx/html/index.php
文件内容如下:
<?php phpinfo(); ?>
4. 打开浏览器,输入页面地址 http://${IP}:${PORT}/index.php, 若出现以下页面,则生效
0x09 Zabbix 编译安装
1. 创建目录,将源码包上传到指定目录并解压
mkdir /home/${user}/soft
mkdir /home/${user}/soft/zabbix
cd /home/${user}/soft/zabbix // 源码包上传到该路径
tar -xzvf zabbix-3.4.4.tar.gz
2. 源码编译
cd /home/${user}/soft/zabbix/zabbix-3.4.4
./configure --prefix=/opt/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-libxml2
make
make install
可能遭遇问题:
1. 问题:configure: error: MySQL library not found
原因:缺失Mysql驱动包
解决:yum install mysql-devel
2. 问题:configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config
原因:缺失net-snmp驱动包
解决:yum install net-snmp-devel
3. 问题:configure: error: Unable to use libevent (libevent check failed)
原因:缺失libevent驱动包
解决: yum install libevent-devel
4. 问题:configure: error: Curl library not found
原因:缺失CURL驱动包
解决:yum install curl-devel
0x10 Zabbix表数据导入
1. 安装Mysql数据库
yum install mysql
2. 创建zabbix表
mysql -u root -p
输入密码
create database zabbix default charset utf8;
3. 数据导入
mysql -uroot -p zabbix < /home/htdf/soft/zabbix/zabbix-3.4.4/database/mysql/schema.sql
输入密码
mysql -uroot -p zabbix < /home/htdf/soft/zabbix/zabbix-3.4.4/database/mysql/images.sql
输入密码
mysql -uroot -p zabbix < /home/htdf/soft/zabbix/zabbix-3.4.4/database/mysql/data.sql
输入密码
0x11 配置Zabbix
1. zabbix_server.conf (/opt/zabbix/etc/zabbix_server.conf)
DBName=zabbix
DBUser=root
DBPassword=${root} //root的密码,跟你的数据库设置有关
DBPort=3306
2. zabbix_agentd.conf (/opt/zabbix/etc/zabbix_agentd.conf)
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
0x12 配置Zabbix Web端
1. 创建目录 ,并将Zabbix的Web资源放入
mkdir /opt/zabbix/web
cp -R /home/htdf/soft/zabbix/zabbix-3.4.4/frontends/php/* /opt/zabbix/web/
2. 配置Nginx 解析该目录下的Web资源,修改/opt/nginx/conf/nginx.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /opt/zabbix/web/;
index index.html index.htm index.php;
}
location = /nginx-status {
stub_status on;
access_log off;
allow 127.0.0.1;
####zabbix服务器端的IP地址一般为内网IP
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root /opt/zabbix/web/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
3. 重启Nginx
killall nginx
/opt/nginx/sbin/nginx
0x13 启动Zabbix
1. 启动Server
/opt/zabbix/sbin/zabbix_server
2. 启动Agentd
/opt/zabbix/sbin/zabbix_agentd
0x14 安装Zabbix Web
1. 浏览器打开地址 http://${IP}:${PORT}/setup.php, 点击Next Step
2. 点击“Next Step”
3. 根据自己情况填好数据库连接信息,并点击"Next Step"
4. Host:默认, PORT:默认,Name:自定义 点击“Next Step”
5. 点击 “Next Step”
6. 点击“Finish”
7. 进入登录界面 账号:Admin 密码:zabbix