您当前的位置:首页 > 计算机 > 系统应用 > Linux

centos7下安装nginx-rrd性能监控工具

时间:03-10来源:作者:点击数:

背景:nginx安装完成后,怎么才能时时的监控nginx上的信息呢,在命令行下查看实在是太不方便了,所以找一个性能监控工具好些,市面上的监控工具有很多,不是专业的运维来讲,nginx-rrd就够用了,nginx-rrd是nginx中自带的监控工具,不怎么消耗系统资源,所以我打算用nginx-rrd来进行监控

基本环境:1. centos7 (可以连接外网)

2.nginx版本: 1.16.0

3.gcc版本:gcc 版本 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)

4.nginx-rdd版本: nginx-rrd-0.1.4

说明:nginx的安装我在之前的文档中有说明,这里就不说了

第一步:查看你系统中是否有ngx_http_stub_status模块,因为我之前的安装的时候带这个参数了,所以这里可以看到这个模块

查看命令:/usr/local/nginx/sbin/nginx -V

在这里插入图片描述

如果你的环境中没有这个模块,需要重新在安装nginx的安装目录下重新编译,编译的时候需要带ngx_http_stub_status这个参数

我的nginx的安装目录如下图所示;

在这里插入图片描述

如果需要重新编译的话,需要先把之前的nginx的目录删除,注意这个目录不是你安装nginx的目录,而是当你安装nginx时,系统默认的安装路径

删除命令:rm -rf /usr/local/nginx/

进入你安装nginx的目录下进行编译

执行命令:./configure --prefix=/usr/local/nginx --with-http_stub_status_module

该命令执行的位置如图;

在这里插入图片描述

然后在这个目录下执行编译安装

命令:make && make install

执行完成后,可以去nginx的目录下查看一下,该模块是否安装成功

要去的目录:cd /usr/local/nginx/sbin/

查看命令:./nginx -V

在这里插入图片描述

安装好之后,还需要编辑一下nginx的配置文件,不使用nginx默认的配置文件nginx.conf,默认的配置文件可读性不高

配置文件的位置:/usr/local/nginx/conf 如下图所示;

在这里插入图片描述

系统的默认的配置文件显示如下;

在这里插入图片描述

可以把原来的配置文件备份一份

命令:mv nginx.conf nginx.conf.bak

我修改的配置文件如下,把下面的内容复制粘贴到新建的nginx.conf文件中,新建文件的位置在还是在conf目录下

在这里插入图片描述

user root;

worker_processes 2;

error_log /usr/local/nginx/logs/nginx_error.log crit;

pid /usr/local/nginx/logs/nginx.pid;

worker_rlimit_nofile 51200;

events

{

use epoll;

worker_connections 1024;

}

http

{

include mime.types;

default_type application/octet-stream;

server_names_hash_bucket_size 3526;

server_names_hash_max_size 4096;

log_format main '$remote_addr - r e m o t e u s e r [ remote_user [remoteu​ser[time_local] “KaTeX parse error: Double superscript at position 34: … '̲status b o d y b y t e s s e n t " body_bytes_sent "bodyb​ytess​ent"http_referer” ’

‘“h t t p u s e r a g e n t " " http_user_agent" "httpu​sera​gent""http_x_forwarded_for”’;

access_log /usr/local/nginx/logs/access.log main;

sendfile on;

tcp_nopush on;

keepalive_timeout 30;

client_header_timeout 3m;

client_body_timeout 3m;

send_timeout 3m;

connection_pool_size 256;

client_header_buffer_size 1k;

large_client_header_buffers 8 4k;

request_pool_size 4k;

output_buffers 4 32k;

postpone_output 1460;

client_max_body_size 10m;

client_body_buffer_size 256k;

client_body_temp_path /usr/local/nginx/client_body_temp;

proxy_temp_path /usr/local/nginx/proxy_temp;

fastcgi_temp_path /usr/local/nginx/fastcgi_temp;

fastcgi_intercept_errors on;

tcp_nodelay on;

gzip on;

gzip_min_length 1k;

gzip_buffers 4 8k;

gzip_comp_level 5;

gzip_http_version 1.1;

gzip_types text/plain application/x-javascript text/css text/htm

application/xml;

include vhost/*.conf;

}

然后在conf目录下新建文件夹vhost文件夹,作为虚拟主机的配置文件目录

命令:mkdir vhost

在这里插入图片描述

在vhost目录下新建该虚拟主机的配置文件

命令:vi default.conf

配置文件内容如下,详细的代码的功能看右侧注释

server{

listen 80;

server_name localhost;

index index.html index.htm index.php;

root /usr/local/nginx/html;

    location = /nginx_status{  # 配置访问路径,即uri
        stub_status on;  # 开启该模块
        access_log off;  # 关闭日志
        allow 101.106.102.129;  # 允许访问的ip,即白名单ip 
        allow 127.0.0.1;
        deny all;  # 拒绝白名单ip以外的ip访问
   }

}

配置文件改好后,可以测试配置文件是否修改正确,正确时,显示如下图;

命令:./nginx -t 在/usr/local/nginx/sbin/目录下

在这里插入图片描述

然后启动,测试一下模块是否安装的没有问题,如下图所示,没有问题

说明:请求的时候,输入的是你的IP地址加上你配置文件default.conf中 location后的配置名称

启动也是在sbin目录下,配置上环境变量后才可以在任意目录下启动

启动命令:./nginx -c /usr/local/nginx/conf/nginx.conf 这种启动是加载配置文件启动的意思

启动位置:/usr/local/nginx/sbin/

查看启动状态的命令:netstat -lntp |grep nginx 或者ps -ef|gerp nginx

在这里插入图片描述

说明:

Active connections 当前活动的连接数量(包括等待的)

accepts 已接收的连接总数

handled 已处理的连接总数

requests 当前的请求总数

Reading nginx正在读取的连接数量

Writing nginx正在响应的连接数量

Waiting 当前空闲的连接数量

如上,通过这些简单的参数可以看到nginx当前的连接信息。在高并发场景下,可以根据Active connections参数判断当前的一个并发数量,Reading 参数则可以告诉我们当前nginx是否繁忙。当然,这只是最简单的一个nginx的监控方式,参数也就只有那么几个。但这些都是其他更高级的监控工具的基础,所以了解这些基础监控也是有必要的。

第二步:安装ngxtop
ngxtop介绍:ngxtop可以实时解析nginx访问日志,并且将处理结果输出到终端,功能类似于系统命令top,所以这个软件起名ngxtop。有了ngxtop,你可以实时了解到当前nginx的访问状况,再也不需要tail日志看屏幕刷新。

由于ngxtop是python编写的,我们可以使用pip进行安装。如果你的机器上没有安装pip,需要先把pip装上

安装命令: 1. yum install -y epel-release

2. yum install -y python-pip

然后通过pip安装ngxtop

安装命令:pip install ngxtop

ngxtop的使用说明;

命令:ngxtop --help

在这里插入图片描述

说明:上面help中的说明如下;

Options:

-l , --access-log # 需要分析的访问日志

-f , --log-format # log_format指令指定的日志格式 [默认: combined]

–no-follow ngxtop default behavior is to ignore current lines in log

and only watch for new lines as they are written to the access log.

Use this flag to tell ngxtop to process the current content of the access log instead. # 简而言之,对历史信息进行统计

-t , --interval report interval when running in follow mode [default: 2.0] # 指定监控信息刷新的间隔,单位为秒 [默认: 2.0]

-g , --group-by # 根据变量分组 [默认: request_path]

-w , --having # 具备子句 [默认: 1] having clause [default: 1]

-o , --order-by # 排序 [默认: count]

-n , --limit # 显示的条数 [默认: 10]

-a …, --a … add exp (must be aggregation exp: sum, avg, min, max, etc.) into output # 添加聚合表达式到输出信息中

-v, --verbose  # 更多的输出
-d, --debug  # 打印所有行和解析记录,debug
-h, --help  # 当前帮助信息.
--version  # 输出版本信息

指定nginx的配置文件进行启动:

启动命令:ngxtop -c /usr/local/nginx/conf/nginx.conf

在这里插入图片描述

注:Summary相当于请求的概览信息,Detailed就自然是请求的详细信息了。2xx、3xx、4xx以及5xx,都是表示的http状态。avg_bytes_sent表示请求所发送的字节数平均值,request_path则是请求路径,count表示请求的总次数。

默认情况下,ngxtop不会显示启动ngxtop之前的请求信息,只会显示ngxtop启动之后新的请求信息。所以我们可以到浏览器上刷新一下,随便访问一些页面,人为制造一些请求。如下图,这时就可以看到ngxtop成功监控到了请求信息:

我访问的网址:

http://192.168.234.138

http://192.168.234.138/index.html

在这里插入图片描述

我们可以通过选项来指定一些条件,例如我希望只显示http状态是200的,就可以使用-i进行指定:

命令:ngxtop -c /usr/local/nginx/conf/nginx.conf -i ‘status == 200’

刚开始执行时显示如下;

在这里插入图片描述

我去页面去请求几次访问后,显示如下;

在这里插入图片描述

例如我希望显示访问最多的ip,就可以使用-g进行指定:

命令:ngxtop -c /usr/local/nginx/conf/nginx.conf -g remote_addr

在这里插入图片描述
第三步:安装nginx-rrd

在上两小节中,我们介绍了两个基础的nginx工具,能够监控连接信息和请求信息,它们都是基于命令行的。本小节则介绍一个图形化的nginx监控工具,该工具就是nginx-rrd。nginx-rrd 也是 Nginx 官方推荐的一款 Nginx 监控工具,利用 nginx-rrd 可以很方便的生成图表,它可以监控连接信息和请求信息。

nginx-rrd 官网地址如下:

https://www.nginx.com/resources/wiki/modules/rrd_graph/

那么我们接下来就看看如何安装并使用nginx-rrd吧。nginx-rrd部分功能是基于上两小节所介绍的工具实现的,所以在安装nginx-rrd之前需要根据上两节的介绍安装好所需的工具。由于nginx-rrd是使用php实现的,所以在此之前,我们得先安装好php的运行环境,以及安装rrdtool的相关依赖,我这里使用yum进行安装

安装命令: 1. yum install -y php php-gd php-soap php-mbstring php-xmlrpc php-dom php-fpm

2. yum install -y perl rrdtool perl-libwww-perl libwww-perl perl-rrdtool

安装好php运行环境以及rrdtool后,我们还需要把nginx和php-fpm进行一个整合。修改php-fpm的配置文件,将文件中的user和group修改为与nginx.conf中的user一致:

命令:vi /etc/php-fpm.d/www.conf

修改这两个参数都为root,这个地方以你nginx.conf配置文件中用户为主

user = root

group = root

还需要让nginx支持解析php,在虚拟主机配置文件中,增加如下内容:

需要增加的内容:

location ~ .php$

{

include fastcgi_params;

fastcgi_pass unix:/tmp/php-fcgi.sock;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;

}

增加内容的位置:在这个配置文件的server{} 中配置

在这里插入图片描述

配置好后,启动php-fpm服务,并且重新加载nginx:

启动命令:systemctl start php-fpm

查看状态的命令:netstat -lntp |grep 9000

重启nginx的命令:nginx -s reload

然后在虚拟主机配置文件中所指向的网站根目录下,新建一个简单的php文件,用于测试nginx是否已经能够正常解析php代码:

命令:vi /usr/local/nginx/html/index.php

添加内容:

<?php phpinfo(); ?>

接着到浏览器上进行访问,如下则是代表nginx已经能够支持解析php了:

输入:http://192.168.234.138/index.php

在这里插入图片描述

现在我们就可以开始安装nginx-rrd了,首先使用如下命令,下载nginx-rrd的压缩包:

进入到src目录下,命令:cd /usr/local/src/

执行下载命令:wget http://soft.vpser.net/status/nginx-rrd/nginx-rrd-0.1.4.tgz

解压这个文件;

解压命令:tar -zvxf nginx-rrd-0.1.4.tgz

在这里插入图片描述

然后进入到解压后的目录下

命令:cd nginx-rrd-0.1.4

在这里插入图片描述

在该目录下分别执行

命令: 1. cp etc/nginx-rrd.conf /etc

2. cp usr/sbin/* /usr/sbin

3. rm -rf /usr/local/nginx/html/index.php # 删除之前测试用的php文件

4. cp html/index.php /usr/local/nginx/html/

修改nginx-rrd配置文件,配置数据存储目录以及图片存储目录,如下:

命令:vi /etc/nginx-rrd.conf

dir where rrd databases are stored

RRD_DIR="/usr/local/nginx/html/nginx-rrd"; # 数据存储目录

dir where png images are presented

WWW_DIR="/usr/local/nginx/html"; # 图片存储目录

配置完之后,我们还需要使用 crontab 新建定时任务,用于定时执行nginx-rrd的两个脚本,因为nginx-rrd需要定时去采集数据才能实现一个监控的效果:

编辑命令:crontab -e

查看命令:crontab -l

  • /bin/sh /usr/sbin/nginx-collect # 采集数据脚本
    */1 * * * * /bin/sh /usr/sbin/nginx-graph # 生成图片脚本

我们这里设定的定时任务是每一分钟执行一次,可以使用如下命令查看定时任务是否有在执行:

命令:tail -f /var/log/cron

确认定时任务有正常执行后,我们来安装apache的一个压测工具,方便于我们生成大量的请求数据:

安装命令:yum -y install httpd-tools

安装完成后,使用以下命令,对nginx进行压测,可以多执行几次:

命令:ab -n 10000 -c 10 http://127.0.0.1/index.html

命令说明:

-n 指定总共发送多少个请求

-c 指定同时发送多少个请求

使用压测工具产生了一些请求数据后,到浏览器上访问nginx-rrd的index.php文件,效果如下:

在这里插入图片描述
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门