基于Ngxtop的QPS监控

本文介绍了如何使用ngxtop工具和Shell脚本来监控Nginx服务器的QPS,并确保在多台服务器上并发执行采集脚本。通过ECharts展示数据,并提及可以扩展为告警系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://heqiao2010.com/articles/2018/07/14/1531540986101.html

之前参与一个公有云项目的开发,系统入口是公有云平台提供的LB。云平台的LB再将请求转发到后方的多台Nginx,Nginx上再做反向代理到后方的服务器。为了获取系统的QPS,我们在Nginx服务器上写了个定时任务脚本,定期采集并发量,然后汇总。

并发量采集脚本

  1. 先安装ngxtop
    依次运行:
sudo yum -y install epel-release
sudo yum -y install python-pip #安装python-pip
sudo yum clean all #清除缓存
sudo pip install ngxtop #安装Ngxtop

注意:由于ngxtop是通过监控access.log文件来获取并发量的,因此nginx.conf中的access log一定要打开。

安装好了之后就能得到当前这台nginx服务器上此时的并发量了。当然也可以通过一些参数对请求做一些过滤比如ngxtop -i 'status >= 400' print request status http_referer;我们获取的并发数是整个系统的,可以不过滤。

running for 10 seconds, 1035 records processed: 102.47 req/sec

Summary:
|   count |   avg_bytes_sent |   2xx |   3xx |   4xx |   5xx |
|---------+------------------+-------+-------+-------+-------|
|    1035 |         4793.348 |   611 |   414 |    10 |     0 |

Detailed:
| request_path                                            |   count |   avg_bytes_sent |   2xx |   3xx |   4xx |   5xx |
|---------------------------------------------------------+---------+------------------+-------+-------+-------+-------|
| /portal/protocol                                        |     351 |            4.427 |    14 |   337 |  
### 如何使用 Prometheus 监控 QPS Prometheus 是一种强大的开源监控工具,能够通过采集和分析各种指标来评估系统的性能。对于监控 QPS(Queries Per Second),可以通过定义合适的度量标准并利用 PromQL 查询语言实现。 #### 定义 QPS 度量 QPS 表示每秒处理的请求数,在某些场景下可以理解为服务端接收到的请求速率。通常情况下,这种数据可以从计数器类型的指标中提取出来。例如,如果有一个名为 `http_requests_total` 的计数器指标记录 HTTP 请求总数,则可以通过计算该值的变化率得到 QPS[^1]。 ```promql rate(http_requests_total[1m]) ``` 上述 PromQL 表达式表示在过去一分钟内平均每秒增加多少次 HTTP 请求。这里使用的函数 `rate()` 计算了指定时间窗口内的变化比率[^3]。 #### 配置 Prometheus 抓取目标 为了使 Prometheus 能够收集到这些必要的指标,首先需要配置抓取目标。这可能涉及设置 Exporter 或者直接集成支持 OpenMetrics 协议的应用程序接口[^2]。具体操作如下: - **安装 Exporters**: 对于不同的应用和服务类型有不同的 exporters 可供选用。比如 Node Exporter 用于操作系统级别的统计;Tomcat Exporter 则专注于 Java Web 应用环境下的性能测等。 - **调整 scrape_configs 参数**: 在 Prometheus 配置文件 (通常是 prometheus.yml) 中添加相应的 job 和 static_configs 来指向待检测的服务实例地址列表。 ```yaml scrape_configs: - job_name: 'example' static_configs: - targets: ['localhost:9100'] ``` 以上 YAML 片段展示了一个简单的例子,其中 localhost 上运行着一个听端口为 9100 的 exporter 进程[^4]。 #### 数据可视化与告警设定 除了基本的数据获取外,还应该考虑如何更直观地展现结果以及及时响应异常情况。Grafana 是常用的配套解决方案之一,它允许创建丰富的仪表盘并将多个图表组合在一起以便更好地理解和跟踪趋势。另外也可以基于特定条件触发通知机制提醒相关人员采取行动。 最后值得注意的是,并非所有的指标都适合简单地转换成 QPS 形式来进行观察。有些累积型变量即使表面上看起来像是增长模式也不一定代表实际的工作负载强度,因此需谨慎解读其含义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值