【Prometheus】Prometheus如何监控Haproxy

news2025/1/24 17:11:11

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生k8s,Prometheus监控,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:Prometheus监控系统零基础到进阶
景天的主页:景天科技苑

在这里插入图片描述

文章目录

  • Prometheus如何监控Haproxy
    • 1、监控案例介绍
      • 1.1 监控场景描述
      • 1.2 监控环境规划
    • 2、Prometheus监控Haproxy
      • 2.1 安装并配置Haproxy
      • 2.2 配置Prometheus,将Haproxy纳入监控
      • 2.3 Haproxy常用指标
      • 2.4 Haproxy告警规则文件
      • 2.5 Grafana导入Haproxy图形

Prometheus如何监控Haproxy

1、监控案例介绍

1.1 监控场景描述

在前⾯的章节中,我们已经学习了如何使用 Prometheus 结合node_exporter 来监控系统资源的CPU、内存、磁盘、网络等,
同时我们还通过“监控的方法论”找出了不同资源的重要的指标,并编写PromQL查询表达式和告警规则。
但是,系统资源的监控只是监控的一部分。因此我们还需要关注运行在这些节点上的应用程序。
接下来,我们将深入探讨如何通过应用程序暴露的指标来直接监控它们,或者通过 Exporter 来间接收集不同应用的指标数据。
同时我们还会逐一介绍每个应用的关键性能指标,并讲解如何利用PromQL 对这些指标进行查询。
此外,我们对应的PromQL制作为告警规则,以便在系统出现异常时,能第一时间进行通知。
我们先看下监控案例的场景
在这里插入图片描述

有些应用程序自带metrics,像Haprox,RabitMQ,kubernetes等,
有些需要我们借助exporter进行暴露metrics,很多应用都有对应的exporter
有些需要服务发现,
有些需要push数据给网关,
还有些黑盒监控,如何通过http探测网站,通过tcp去探测相关服务
我们针对不同类型,都有详细讲解如何监控。
1、应用自带Metrics如何监控:
2、应用无法自带Metrics,借助Exporter如何监控;
3、黑盒监控BlackBox;
4、PushGateway如何使用;
掌握这些监控的资源的重要指标,以及PromQL的查询表达式编写,PromQL告警规则文件;

告警:
AlertManager

图形:
Grafana

1.2 监控环境规划

在这里插入图片描述

2、Prometheus监控Haproxy

从 HAProxy 2.0 版本开始,HAProxy 内置了对 Prometheus 的支持。
这意味着 HAProxy 能够直接提供兼容Prometheus的指标格式,无需依赖任何额外的 exporter 。(安装Haproxy、然后修改stats,配置对外输出metrics接口)

2.1 安装并配置Haproxy

1、使用yum安装Haproxy,centos7默认安装的是1.5版本,无法安装2.0以上的版本。我们使用功能rocketlinux9.5系统可以yum安装

yum install haproxy -y

在这里插入图片描述

看下systemd配置文件
在这里插入图片描述

2、配置Haproxy的stats功能
先将源文件备份

cat /etc/haproxy/haproxy.cfg
global
  maxconn 100000 # Haproxy支持最大的会话数,如果default没有配置则使用global
  # uid 99
  # gid 99
  user haproxy
  group haproxy
  daemon
  log 127.0.0.1 local2 info
  pidfile /var/lib/haproxy/haproxy.pid
  stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin # 定义sock位置及权限
defaults
  option http-keep-alive
  option forwardfor
  maxconn 5000 # Haproxy支持的最大会话数,默认是100000
  retries 3 # 连接后端服务器失败的次数如果超过这里设置的值,haproxy会将对应的后端服务器标记为不可用
  mode http
  timeout connect 300s
  timeout client 300s
  timeout server 300s
# 打开负载均衡的状态页面
frontend stats
  bind *:9999
  stats enable
  stats uri /haproxy-status
  stats auth jingtian:123456
 
  # Prometheus metrics 的路径
  http-request use-service prometheus-exporter if { path /metrics }
  # 允许每秒通过haproxy的新会话数限制为 100 个。如果超过这个数值,额外的新会话将被延迟或拒绝
  rate-limit sessions 100
# 定义负载均衡配置
frontend java
  bind *:80
  mode http
  rate-limit sessions 100
  default_backend javaserver
backend javaserver
  balance roundrobin
  server web1 127.0.0.1:8080 check
  server web2 127.0.0.1:8080 check
# 定义负载均衡配置
frontend web
  bind *:81
  mode http
  rate-limit sessions 200
  default_backend webservers
backend webservers
  balance roundrobin
  # 后端支持最大的并发连接数(会话数)
  fullconn 1000
  server web3 10.10.0.30:9090 check
  server web4 127.0.0.1:8080 check

在这里插入图片描述

3、启动Haproxy

systemctl enable haproxy.service --now

查看运行状态
在这里插入图片描述

我们看到haproxy开启了两个负载均衡组,分别为80和81两个端口号
一个haproxy可以有很多个负载均衡组
在这里插入图片描述

4、检查Haproxy的状态页面
http://10.10.0.31:9999/haproxy-status
刚进去需要先登录
在这里插入图片描述

5、检查Haproxy的metrics接口是否能暴露指标
http://10.10.0.31:9999/metrics
在这里插入图片描述

能访问这个metrics获取数据,依托于这个配置
在这里插入图片描述

2.2 配置Prometheus,将Haproxy纳入监控

1、编辑Prometheus配置文件,将Haproxy服务纳入监控
vim prometheus.yml

  - job_name: "haproxy"
    static_configs:
      - targets: ["jingtian02:9999"]

在这里插入图片描述

2、重新加载Prometheus配置文件

curl -X POST http://localhost:9090/-/reload

3、检查Prometheus的Status->Targets页面,验证Haproxy是否已经成功纳入监控中
在这里插入图片描述

在prometheus查询中,输入haproxy,可以查到相关指标
在这里插入图片描述

并且可以查询到结果
在这里插入图片描述

2.3 Haproxy常用指标

对于 HAProxy,通常会使用 RED 方法,监控:请求速率(Rate)、请求失败数(Errors)、请求延迟(Duration)
但是Haproxy作为负载均衡,他又分为了前端和后端:
Frontend 在 HAProxy 中指的是客户端连接到的部分,它负责接收来⾃客户端的请求并将它们转发到相应的 backend 集群。
通常监控 frontend 以下信息:

新建连接的速率
每秒的请求速率
当前活动连接数
响应时间
会话错误和拒绝

Backend 是由一个或多个服务器组成的集群,这些服务器用于处理frontend转发过来的请求。通常监控 backend 以下信息:
会话数、当前活动连接
后端服务器的响应时间
后端服务器错误和超时等
后端服务器的健康状态(比如是否在线、是否繁忙等)

1、haporxy fronted 连接与会话相关指标
在这里插入图片描述

haproxy_frontend_limit_session_rate 这个是需要在配置haproxy的配置文件中配置的
在这里插入图片描述
在这里插入图片描述

案例1:查询最近5分钟,Haproxy前端新建连接数的速率

rate(haproxy_frontend_connections_total[5m])

在这里插入图片描述

案例2:查询最近5分钟,Haproxy前端当前平均活跃的会话数,占总会话数上限的比率。 gauge类型的数据求一段时间的平均数可以用avg_over_time
计算公式:( 当前活跃的会话数 / 会话数的限制 * 100 )

avg_over_time(haproxy_frontend_current_sessions[5m]) / haproxy_frontend_limit_sessions * 100

在这里插入图片描述

案例3:查询最近5分钟,haproxy前端平均每秒的新建最大的会话速率,占比总限制的新建会话比率。
计算公式:( 每秒新建的最大会话速率 / 每秒新建会话速率限制 * 100)

avg_over_time(haproxy_frontend_max_session_rate[5m]) / haproxy_frontend_limit_session_rate * 100

在这里插入图片描述

2、haporxy fronted http请求与响应相关指标
在这里插入图片描述

案例1:查询 HAProxy 前端最近1分钟的 HTTP 每秒请求速率。

rate (haproxy_frontend_http_requests_total[1m])

在这里插入图片描述

案例2:查询 HAProxy 前端最近1分钟,最⼤的新建请求数量。

max_over_time(haproxy_frontend_http_requests_rate_max[1m])

在这里插入图片描述

案例3:查询 HAProxy 前端最近1分钟,HTTP每秒的错误请求速率

rate(haproxy_frontend_request_errors_total[1m])

在这里插入图片描述

案例4:查询 最近5分钟,HTTP 响应错误(4xx 和 5xx)占总请求比率,计算公式:(4xx|5xx的响应码增长率 / 总的请求数 )
我们先看下响应状态码都是什么样的
在这里插入图片描述

然后看下4xx 5xx响应速率和最近5分钟请求总数
在这里插入图片描述

可以看到上面是多的一方,并且多了code,所以要去除code,并且使用功能group_left,哪边是多的一方,group_哪边
ignoring或group_left都必须放在 加减乘除 操作符的右侧

rate(haproxy_frontend_http_responses_total{code=~"4xx|5xx"}[5m])
/ ignoring(code)
 group_left
rate(haproxy_frontend_http_requests_total[5m]) * 100

在这里插入图片描述

3、HaproxyBackend 相关指标
在这里插入图片描述

后端限制最大会话数
在这里插入图片描述

案例1:计算最近5分钟,当前后端平均每秒的活跃的会话数,占总会话数限制的比率。
计算公式:( 当前并发活跃的会话数 / 最大限制的会话数 * 100 )

avg_over_time(haproxy_backend_current_sessions[5m]) / haproxy_backend_limit_sessions * 100

在这里插入图片描述

案例2:计算最近5分钟,后端4xx响应的错误率:计算公式:( 后端4xx响应数 / 后端总请求数 * 100 )

rate(haproxy_backend_http_responses_total{code="4xx"}[5m]) / ignoring(code) rate(haproxy_backend_http_requests_total[5m]) * 100

在这里插入图片描述

案例3:计算最近5分钟,后端5xx响应的错误率:计算公式:( 后端5xx响应数 / 后端总请求数 * 100%)

rate(haproxy_backend_http_responses_total{code="5xx"}[5m]) / ignoring(code) rate(haproxy_backend_http_requests_total[5m]) * 100

在这里插入图片描述

4、Haproxy监控状态相关指标
在这里插入图片描述

后端活跃的服务器数量
在这里插入图片描述

只有一个后端服务不是失败的,其他的都检测失败
在这里插入图片描述

案例1:查询Haroxy运行了多长时间,计算公式:( (当前时间 - haproxy运行时间) / 小时 )
time()得到的是当前的时间戳
在这里插入图片描述

(time() - haproxy_process_start_time_seconds ) / 3600

在这里插入图片描述

案例2:检查后端的活跃服务器小于1

haproxy_backend_active_servers < 1

在这里插入图片描述

案例3:查询Haproxy后端服务器是否有检测失败的

haproxy_server_check_failures_total == 1

在这里插入图片描述

2.4 Haproxy告警规则文件

1、编写告警规则文件

cat /etc/prometheus/rules/haproxy_rules.yml
groups:
- name: "Haproxy告警规则"
  rules:
  - alert: Haproxy前端活跃会话数过高
    expr: |
      avg_over_time(haproxy_frontend_current_sessions[5m])
      /
      haproxy_frontend_limit_sessions * 100 > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "实例:{{ $labels.instance }} Haproxy前端活跃会话数占限制比率过高"
      description: "Haproxy前端'{{ $labels.proxy }}' 活跃会话数占限制的会话数比率超过了80%,当前值为{{ $value }}%。"
 
 
  - alert: Haproxy前端新建会话速率过高
    expr: |
      avg_over_time(haproxy_frontend_max_session_rate[5m])
      /
      haproxy_frontend_limit_session_rate * 100 > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "实例:{{ $labels.instance }} Haproxy前端新建会话速率占限制比率过高"
      description: "Haproxy前端'{{ $labels.proxy }}' 每秒新建的会话速率占限制比率已经超过80%,当前值为{{ $value }}%。"
 
 
  - alert: Haproxy前端HTTP响应4xx\5xx错误率过高
    expr: |
      rate(haproxy_frontend_http_responses_total{code=~"4xx|5xx"}[5m])
      /ignoring(code)
      group_left
      rate(haproxy_frontend_http_requests_total[5m]) * 100 > 20
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "实例:{{ $labels.instance }} Haproxy前端HTTP响应错误率过高"
      description: "Haproxy前端'{{ $labels.proxy }}' 的 {{ $labels.code }}状态码占总请求的比率已经超过20%,当前错误率为{{ $value }}%。"
 
 
  - alert: Haproxy后端活跃会话数占限制比率过高
    expr: |
      avg_over_time(haproxy_backend_current_sessions[5m])
      /
      haproxy_backend_limit_sessions * 100 > 80
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "实例:{{ $labels.instance }} Haproxy后端活跃会话数占限制比率过高"
      description: "Haproxy后端'{{ $labels.proxy }}' 活跃会话数占总会话数限制的比率超过了80%,当前值为{{ $value }}%。"
 
 
  - alert: Haproxy后端4xx错误率过高
    expr: |
      rate(haproxy_backend_http_responses_total{code="4xx"}[5m])
      /
      ignoring(code) rate(haproxy_backend_http_requests_total[5m]) * 100> 10
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "实例:{{ $labels.instance }} Haproxy后端4xx错误率过高 "
      description: "Haproxy后端'{{ $labels.proxy }}' 的4xx响应错误率超过了10%,当前错误率为{{ $value }}%。"
 
 
  - alert: Haproxy后端5xx错误率过高
    expr: |
      rate(haproxy_backend_http_responses_total{code="5xx"}[5m])
      /
      ignoring(code) rate(haproxy_backend_http_requests_total[5m]) * 100> 10
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "实例:{{ $labels.instance }} Haproxy后端5xx错误率过高 "
      description: "Haproxy后端'{{ $labels.proxy }}' 的5xx响应错误率超过了10%,当前错误率为{{ $value }}%。"

  - alert: Haproxy后端无活跃服务器
    expr: haproxy_backend_active_servers < 1
    for: 5m
    labels:
      severity: critical
    annotations:
      summary: "实例:{{ $labels.instance }} 后端无活跃服务器"
      description: "Haproxy '{{ $labels.proxy }}' 后端活跃服务器数量小于1,这意味着整个后端服务不可用,立即检查后端服务器状态。"
 
 
  - alert: Haproxy后端服务器检测失败
    expr: haproxy_server_check_failures_total == 1
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: "实例:{{ $labels.instance }} 后端服务器检测失败"
      description: "Haproxy '{{ $labels.proxy }}' 后端的 '{{ $labels.server }}' 实例检测失败,可能存在连接问题或服务不稳定。"

在这里插入图片描述

重新加载prometheus配置

curl -X POST http://localhost:9090/-/reload

查看告警
在这里插入图片描述

2.5 Grafana导入Haproxy图形

导入haproxy的Grafana模板。ID为 12693 这个模板提供了 HAProxy 性能和状态的图表,包括请求数、响应时间、错误计数等。

在Grafana 仪表盘-新建-导入
在这里插入图片描述

输入12693,点击加载
在这里插入图片描述

选择数据源prometheus,点击导入
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

如果想看下某个图形,表达的是什么数据,可以点击右上角三个点,点击编辑

在这里插入图片描述
在这里插入图片描述

可以看到PromQL语句
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2281537.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【0x0012】HCI_Delete_Stored_Link_Key命令详解

目录 一、命令参数 二、命令格式及参数 2.1. HCI_Delete_Stored_Link_Key 命令格式 2.2. BD_ADDR 2.3. Delete_All 三、生成事件及参数 3.1. HCI_Command_Complete事件 3.2. Status 3.3. Num_Keys_Deleted 四、命令执行流程 4.1. 命令发送阶段 4.2. 控制器处理阶段…

github汉化

本文主要讲述了github如何汉化的方法。 目录 问题描述汉化步骤1.打开github&#xff0c;搜索github-chinese2.打开项目&#xff0c;打开README.md3.下载安装脚本管理器3.1 在README.md中往下滑动&#xff0c;找到浏览器与脚本管理器3.2 选择浏览器对应的脚本管理器3.2.1 点击去…

机器学习-K近邻算法

文章目录 一. 数据集介绍Iris plants dataset 二. 代码三. k值的选择 一. 数据集介绍 鸢尾花数据集 鸢尾花Iris Dataset数据集是机器学习领域经典数据集&#xff0c;鸢尾花数据集包含了150条鸢尾花信息&#xff0c;每50条取自三个鸢尾花中之一&#xff1a;Versicolour、Setosa…

C++函数——fill

在C中&#xff0c;std::fill 是标准库提供的一个算法适用于几乎所有类型的容器&#xff0c;只要这些容器支持迭代器操作。具体来说&#xff0c;std::fill 的适用性取决于容器是否提供了满足其要求的迭代器类型&#xff0c;用于将指定范围内的所有元素设置为某个特定值。它是一个…

如何打造高效同城O2O平台?外卖跑腿系统源码选型与开发指南

打造一个高效的同城O2O平台&#xff0c;选择合适的外卖跑腿系统源码并制定科学的开发方案至关重要。本篇文章&#xff0c;笔者将从源码选型、核心功能、开发架构及运营策略等方面&#xff0c;全面解析O2O平台的搭建思路。 一、外卖跑腿系统源码的选型要点 在搭建O2O平台时&…

Flutter_学习记录_基本组件的使用记录

1.TextWidge的常用属性 1.1TextAlign: 文本对齐属性 常用的样式有&#xff1a; TextAlign.center 居中TextAlign.left 左对齐TextAlign.right 有对齐 使用案例&#xff1a; body: Center(child: Text(开启 TextWidget 的旅程吧&#xff0c;珠珠, 开启 TextWidget 的旅程吧&a…

Qt实践:一个简单的丝滑侧滑栏实现

Qt实践&#xff1a;一个简单的丝滑侧滑栏实现 笔者前段时间突然看到了侧滑栏&#xff0c;觉得这个抽屉式的侧滑栏非常的有趣&#xff0c;打算这里首先尝试实现一个简单的丝滑侧滑栏。 首先是上效果图 &#xff08;C&#xff0c;GIF帧率砍到毛都不剩了&#xff09; QProperty…

10. SpringCloud Alibaba Sentinel 规则持久化部署详细剖析

10. SpringCloud Alibaba Sentinel 规则持久化部署详细剖析 文章目录 10. SpringCloud Alibaba Sentinel 规则持久化部署详细剖析1. 规则持久化1.1 Nacos Server 配置中心-规则持久化实例 2. 最后&#xff1a; 1. 规则持久化 规则没有持久化的问题 如果 sentinel 流控规则没有…

SpringCloud微服务Gateway网关简单集成Sentinel

Sentinel是阿里巴巴开源的一款面向分布式服务架构的轻量级流量控制、熔断降级组件。Sentinel以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度来帮助保护服务的稳定性。 官方文档&#xff1a;https://sentinelguard.io/zh-cn/docs/introduction.html …

正则表达式以及Qt中的使用

目录 一、正则表达式 1、基本匹配&#xff1a; 2、元字符&#xff1a; 2.1 .运算符&#xff1a; 2.2 字符集&#xff1a; 2.3 重复次数&#xff1a; 2.4 量词{} 2.5 特征标群() 2.6 或运算符 2.7 \反斜线转码特殊字符 2.8 锚点 3、简写字符 4、零宽度断言 4.1 正…

【STM32HAL-----GPIO】

1. 什么是GPIO&#xff1f;&#xff08;了解&#xff09; 2. STM32 GPIO简介 2.1. GPIO特点 2.2. GPIO电气特性 2.3. GPIO引脚分布图 IO引脚分布特点&#xff1a;按组存在、组数视芯片而定、每组最多16个IO引脚。 3. IO端口基本结构介绍 4. GPIO八种工作模式 4.1. 输入浮空 特…

亲测有效!解决PyCharm下PyEMD安装报错 ModuleNotFoundError: No module named ‘PyEMD‘

解决PyCharm下PyEMD安装报错 PyEMD安装报错解决方案 PyEMD安装报错 PyCharm下通过右键自动安装PyEMD后运行报错ModuleNotFoundError: No module named ‘PyEMD’ 解决方案 通过PyCharm IDE python package搜索EMD-signal&#xff0c;选择版本后点击“install”执行安装

低代码系统-产品架构案例介绍、简道云(七)

今天分析另外一个零代码、低代码产品-简道云&#xff0c;跟所有低代码产品的架构图一样&#xff0c;高、大、炫、美。 依然是从下至上&#xff0c;从左到右的顺序。 开发层 搭建中心 表单、流程、报表、用户中心&#xff0c;还是这些内容&#xff0c;自定义打印很多平台都有&am…

Chrome 132 版本新特性

Chrome 132 版本新特性 一、Chrome 132 版本浏览器更新 1. 在 iOS 上使用 Google Lens 搜索 在 Chrome 132 版本中&#xff0c;开始在所有平台上推出这一功能。 1.1. 更新版本&#xff1a; Chrome 126 在 ChromeOS、Linux、Mac、Windows 上&#xff1a;在 1% 的稳定版用户…

计算机网络三张表(ARP表、MAC表、路由表)总结

参考&#xff1a; 网络三张表&#xff1a;ARP表, MAC表, 路由表&#xff0c;实现你的网络自由&#xff01;&#xff01;_mac表、arp表、路由表-CSDN博客 网络中的三张表&#xff1a;ARP表、MAC表、路由表 首先要明确一件事&#xff0c;如果一个主机要发送数据&#xff0c;那么必…

cursor重构谷粒商城04——vagrant技术快速部署虚拟机

前言&#xff1a;这个系列将使用最前沿的cursor作为辅助编程工具&#xff0c;来快速开发一些基础的编程项目。目的是为了在真实项目中&#xff0c;帮助初级程序员快速进阶&#xff0c;以最快的速度&#xff0c;效率&#xff0c;快速进阶到中高阶程序员。 本项目将基于谷粒商城…

【玩转全栈】----Django连接MySQL

阅前先赞&#xff0c;养好习惯&#xff01; 目录 1、ORM框架介绍 选择建议 2、安装mysqlclient 3、创建数据库 4、修改settings&#xff0c;连接数据库 5、对数据库进行操作 创建表 删除表 添加数据 删除数据 修改&#xff08;更新&#xff09;数据&#xff1a; 获取数据 1、OR…

Jmeter使用Request URL请求接口

简介 在Jmeter调试接口时&#xff0c;有时不清楚后端服务接口的具体路径&#xff0c;可以使用Request URL和cookie来实现接口请求。以下内容以使用cookie鉴权的接口举例。 步骤 ① 登录网站后获取具体的Request URL和cookie信息 通过浏览器获取到Request URL和cookie&#…

mock可视化生成前端代码

介绍&#xff1a;mock是我们前后端分离的必要一环、ts、axios编写起来也很麻烦。我们就可以使用以下插件&#xff0c;来解决我们的问题。目前支持vite和webpack。&#xff08;配置超级简单&#xff01;&#xff09; 欢迎小伙伴们提issues、我们共建。提升我们的开发体验。 vi…

输入网址到网页显示,发生了什么--讲述

输入www.baidu.com作为网址&#xff0c; 孤身的人-HTTP 浏览器要做的第一步就是 解析URL&#xff0c;根据url里面的资源路径&#xff0c;确认服务器资源和路径&#xff0c;生成http请求消息&#xff0c;包括请求消息&#xff08;请求行 消息头 请求体&#xff09; 举例&am…