【30天精通Prometheus:一站式监控实战指南】第14天:jmx_exporter从入门到实战:安装、配置详解与生产环境搭建指南,超详细

亲爱的读者们👋

  欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀

  Prometheus是云原生和DevOps的核心监控工具,我们将从基础概念开始,逐步涵盖配置、查询、告警和可视化。💪

  在接下来的30天里,我们将解锁Prometheus的实战技巧,通过案例和分享,助你深入理解其工作原理。📆

  目标:30天后,你将熟练掌握Prometheus,为未来的项目挑战做好准备!💯

  这是一段精彩旅程,期待你的加入!🎉


文章目录

  • 一、jmx_exporter概述📘
  • 二、安装jmx_exporter💾
    • 2.1 访问jmx_exporter官方网站 🌐
    • 2.2 选择适合的版本🔍
    • 2.3 下载jmx_prometheus_javaagent-1.0.0.jar⬇️
    • 2.4 运行jmx_exporter🚀
  • 三、jmx_exporter指标和配置详解📖
    • 3.1 config.yaml
  • 四、实战演练:生产环境搭建指南🔨
    • 4.1 使用jmx_exporter监控kafka
      • 4.1.1 上传jmx_prometheus_javaagent-1.0.0.jar
      • 4.1.2 创建kafka监控的kafka-common.yaml文件
      • 4.1.3 修改kafka的启动脚本
      • 4.1.4 重启kafka
      • 4.1.5 查看数据
  • 相关资料下载地址📚

一、jmx_exporter概述📘

定义
  jmx_exporter是一个开源工具,它能够将Java应用程序的JMX(Java Management Extensions)指标导出为Prometheus可以识别的度量数据格式。JMX Exporter充当了一个桥梁,使得Prometheus能够监控和收集Java应用的性能数据。

功能
  度量数据导出:JMX Exporter可以从Java应用程序中选择并配置需要导出的JMX指标,这些指标既可以是JVM内部的性能数据,如内存使用情况、线程状态等,也可以是应用程序特定的自定义指标。

  数据格式转换:导出的JMX指标会被JMX Exporter转换为Prometheus格式的度量数据,这是一种易于阅读和处理的文本格式,非常适合Prometheus服务器的存储和查询。

  配置灵活性:用户可以通过配置文件定义需要导出的JMX指标以及相关的匹配规则,提供了高度的定制性和配置灵活性。

  支持标签:与Prometheus一致,JMX Exporter也支持为导出的度量数据添加标签(labels),这些标签可以作为元数据,帮助用户更容易地进行数据查询和可视化。

  轻量级与高性能:JMX Exporter被设计为轻量级且高性能,旨在最小化对监控系统的性能影响。

应用场景
  Java应用程序性能监控:对于任何支持JMX的Java应用程序,包括独立的Java进程、Web服务器(如Tomcat)或Spring Boot应用程序等,JMX Exporter都能帮助导出关键的性能指标,供Prometheus监控和分析。

  故障排查与性能优化:当Java应用程序出现异常或性能下降时,通过JMX Exporter导出的数据,开发者和运维人员可以快速定位问题所在,分析性能瓶颈,并进行相应的优化。

  自动警报与通知:结合Prometheus的警报机制,当某个JMX指标超出预设的阈值时,可以自动触发警报并发送通知,从而实现快速响应和故障处理。

  数据可视化:通过将JMX数据导入可视化工具(如Grafana),可以创建丰富的仪表板,直观地展示Java应用程序的运行状态和性能数据。

二、安装jmx_exporter💾

注意事项和常见问题
  环境配置:确保Java环境已经正确安装并配置,因为jmx_exporter是一个Java程序,检查系统是否有足够的权限来安装和运行jmx_exporter。

  版本兼容性:选择与你的Java应用程序和Prometheus版本兼容的jmx_exporter版本。

  配置文件:在安装之前,准备好jmx_exporter的配置文件(如jmx_exporter.yml),以便能够正确地导出所需的JMX指标。

  确保jmx_exporter将要监听的端口没有被其他服务占用。

2.1 访问jmx_exporter官方网站 🌐

  • 打开浏览器,访问jmx_exporter的官方下载页面,通常位于Github网站的子目录下:https://github.com/prometheus/jmx_exporter/tree/release-1.0.0/docs

2.2 选择适合的版本🔍

  • 在下载页面,你将看到jmx_prometheus_javaagent-1.0.0.jar源码包。根据你的操作系统选择适合的版本

2.3 下载jmx_prometheus_javaagent-1.0.0.jar⬇️

  • 点击所选版本的下载链接,将jmx_prometheus_javaagent-1.0.0.jar的二进制包下载到你的本地计算机。

2.4 运行jmx_exporter🚀

java -javaagent:./jmx_prometheus_javaagent-1.0.0.jar=12345:config.yaml -jar yourJar.jar

三、jmx_exporter指标和配置详解📖

3.1 config.yaml

---
startDelaySeconds: 0
hostPort: 127.0.0.1:1234
username: 
password: 
ssl: false
lowercaseOutputName: false
lowercaseOutputLabelNames: false
includeObjectNames: ["org.apache.cassandra.metrics:*"]
excludeObjectNames: ["org.apache.cassandra.metrics:type=ColumnFamily,*"]
autoExcludeObjectNameAttributes: true
excludeObjectNameAttributes:
  "java.lang:type=OperatingSystem":
    - "ObjectName"
  "java.lang:type=Runtime":
    - "ClassPath"
    - "SystemProperties"
rules:
  - pattern: 'org.apache.cassandra.metrics<type=(\w+), name=(\w+)><>Value: (\d+)'
    name: cassandra_$1_$2
    value: $3
    valueFactor: 0.001
    labels: {}
    help: "Cassandra metric $1 $2"
    cache: false
    type: GAUGE
    attrNameSnakeCase: false
  • startDelaySeconds: 0
      设置jmx_exporter在启动后延迟开始抓取指标的时间(以秒为单位),设置为0意味着jmx_exporter会立即开始抓取指标,这个延迟可以用于等待应用程序完全启动并初始化其JMX MBeans。
  • hostPort: 127.0.0.1:1234
      指定通过远程 JMX 连接到的主机和端口,jmx_exporter将尝试连接到这个地址和端口来抓取JMX指标。如果既没有指定 this 也没有指定 jmxUrl,则将与本地 JVM 通信
  • username
      用于远程 JMX 密码认证的用户名,如果JMX代理配置了身份验证,这个参数是必需要配置的。
  • password
      用于远程 JMX 密码认证的密码,如果JMX代理配置了身份验证,这个参数是必需要配置的,与username一起用于身份验证。
  • jmxUrl: service:jmx:rmi:///jndi/rmi://127.0.0.1:1234/jmxrmi
      要连接到的完整 JMX URL,它告诉jmx_exporter如何连接到JMX代理。如果你指定了jmxUrl,那么hostPort就不需要了,因为jmxUrl已经包含了连接所需的所有信息。如果 hostPort 是,则不应指定
  • ssl: false
      是否应通过 SSL 完成 JMX 连接,设置为false意味着不使用SSL。如果需要通过安全的SSL连接进行JMX通信,应将其设置为true。若要配置证书,必须设置以下系统属性:
-Djavax.net.ssl.keyStore=/home/user/.keystore
-Djavax.net.ssl.keyStorePassword=changeit
-Djavax.net.ssl.trustStore=/home/user/.truststore
-Djavax.net.ssl.trustStorePassword=changeit
  • lowercaseOutputName: false
      控制输出的指标名称是否应该被转换为小写。设置为false时,指标名称将保持原始大小写;设置为true时,所有输出的指标名称将被转换为小写。对于保持指标名称的一致性很有帮助,特别是当JMX MBeans的属性名称大小写不一致时
  • lowercaseOutputLabelNames: false
      控制输出的指标标签名称是否应该被转换为小写。设置为false时,标签名称将保持原始大小写。设置为true时,所有输出的标签名称将被转换为小写。有助于确保标签名称的一致性,便于在Prometheus中进行查询和聚合
  • includeObjectNames: [“org.apache.cassandra.metrics:*”]
      定义一个ObjectName的列表,jmx_exporter将只收集这些ObjectName对应的JMX MBeans的指标。在这个例子中,配置为只收集以“org.apache.cassandra.metrics:”开头的ObjectName对应的MBeans。这是一种过滤机制,用于减少收集的数据量,只关注感兴趣的部分。如果不配置,默认为:所有mBeans
  • excludeObjectNames: [“org.apache.cassandra.metrics:type=ColumnFamily,*”]
      定义一个不被收集的ObjectName的列表。在这个例子中,配置为排除所有以“org.apache.cassandra.metrics:type=ColumnFamily,”开头的ObjectName。这可以用于进一步细化includeObjectNames中定义的列表,排除某些不需要的MBeans。默认值为:无
  • autoExcludeObjectNameAttributes: true
      控制当某些ObjectName的属性无法转换为标准的Prometheus指标类型时,是否自动排除这些属性。设置为true时,这样的属性将被自动排除。设置为false时,即使属性无法转换,也会被尝试收集,这可能会导致错误或不可预测的行为。这个选项有助于避免收集无效或不可用的数据。默认值为:true
  • excludeObjectNameAttributes
      允许指定要从JMX指标收集中排除的特定ObjectName的属性。这个参数非常有用,当你想要收集大部分JMX MBean的属性,但又想排除某些不需要或者不适合作为监控指标的属性时。excludeObjectNameAttributes的结构是一个映射(map),其中键(key)是ObjectNames(需要采用规范形式),值(value)是一个字符串列表,表示要从该ObjectName中排除的属性名称。下述是一个例子:
"java.lang:type=OperatingSystem": ["ObjectName"]
"java.lang:type=Runtime": ["ClassPath","SystemProperties"]
  • rules
      一个规则列表,其中每个规则定义了如何从JMX MBeans中提取信息,并将其转换为Prometheus指标。规则会按顺序应用,一旦找到匹配的规则,处理就会停止,不匹配的属性将不会被收集。如果未指定,则默认以默认格式收集所有内容
    • pattern: ‘org.apache.cassandra.metrics<type=(\w+), name=(\w+)><>Value: (\d+)’
        一个正则表达式,用于匹配JMX MBean的属性。'org.apache.cassandra.metrics<type=(\w+), name=(\w+)><>Value: (\d+)'这个正则表达式用于匹配Cassandra的JMX指标。捕获组(例如(\w+))可以在其他选项中使用,以便从匹配的字符串中提取信息
    • name: cassandra_$1_$2
        定义要设置的Prometheus指标的名称。可以使用正则表达式中的捕获组来动态构建指标名称,例如cassandra_$1_$2
    • value: $3
        指定指标的值。这可以是静态值,也可以是使用正则表达式捕获组提取的值,例如$3。如果未指定,则将使用抓取的 mBean 值
    • valueFactor: 0.001
        可选数字(如果未指定,则为抓取的 mBean 值)乘以,主要用于将 mBean 值从毫秒转换为秒
    • labels: {}
        标签名称到标签值对的映射。可以在每个中使用捕获组。 必须设置为使用此项。空名称和值将被忽略。如果未指定且未使用默认格式,则不会设置任何标签
    • help: “Cassandra metric $1 $2”
        指标的帮助文本。可以使用从中捕获组。 必须设置为使用此项。默认为 mBean 属性描述、属性域和属性名称
    • cache: false
        是否将 Bean 名称表达式缓存到规则计算(匹配和不匹配)。不建议对 Bean 值进行规则匹配,因为只有第一次抓取的值才会被缓存和重用。这可以提高收集大量 mban 时的性能。默认值为:false
    • type: GAUGE
        指标的类型,必须设置为使用此项。默认值为:GAUGE、COUNTER、UNTYPED、name、UNTYPED
    • attrNameSnakeCase: false
        将属性名称转换为蛇形大小写。这在与模式和默认格式匹配的名称中可以看出。例如,anAttrName 设置为 an_attr_name。默认值为:false

四、实战演练:生产环境搭建指南🔨

4.1 使用jmx_exporter监控kafka

  • 注意:kafka要对应exporter合适的版本
    • 此处jmx_exporter版本为:jmx_prometheus_javaagent-1.0.0.jar
    • kafka版本为:无zk,3.4.1的kafka kraft单节点
    • kafka部署路径为:/home/deploy/kafka_2.13-3.4.1

4.1.1 上传jmx_prometheus_javaagent-1.0.0.jar

mv jmx_prometheus_javaagent-1.0.0.jar /home/deploy/kafka_2.13-3.4.1/libs/

4.1.2 创建kafka监控的kafka-common.yaml文件

vi /home/deploy/kafka_2.13-3.4.1/config/kraft/kafka-common.yml

lowercaseOutputName: true

rules:
# Special cases and very specific rules
- pattern : kafka.server<type=(.+), name=(.+), clientId=(.+), topic=(.+), partition=(.*)><>Value
  name: kafka_server_$1_$2
  type: GAUGE
  labels:
    clientId: "$3"
    topic: "$4"
    partition: "$5"
- pattern : kafka.server<type=(.+), name=(.+), clientId=(.+), brokerHost=(.+), brokerPort=(.+)><>Value
  name: kafka_server_$1_$2
  type: GAUGE
  labels:
    clientId: "$3"
    broker: "$4:$5"
- pattern : kafka.coordinator.(\w+)<type=(.+), name=(.+)><>Value
  name: kafka_coordinator_$1_$2_$3
  type: GAUGE

# Quota specific rules
- pattern: kafka.server<type=(.+), user=(.+), client-id=(.+)><>([a-z-]+)
  name: kafka_server_quota_$4
  type: GAUGE
  labels:
    resource: "$1"
    user: "$2"
    clientId: "$3"
- pattern: kafka.server<type=(.+), client-id=(.+)><>([a-z-]+)
  name: kafka_server_quota_$3
  type: GAUGE
  labels:
    resource: "$1"
    clientId: "$2"
- pattern: kafka.server<type=(.+), user=(.+)><>([a-z-]+)
  name: kafka_server_quota_$3
  type: GAUGE
  labels:
    resource: "$1"
    user: "$2"

# Generic gauges with 0-2 key/value pairs
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+), (.+)=(.+)><>Value
  name: kafka_$1_$2_$3
  type: GAUGE
  labels:
    "$4": "$5"
    "$6": "$7"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+)><>Value
  name: kafka_$1_$2_$3
  type: GAUGE
  labels:
    "$4": "$5"
- pattern: kafka.(\w+)<type=(.+), name=(.+)><>Value
  name: kafka_$1_$2_$3
  type: GAUGE

# Emulate Prometheus 'Summary' metrics for the exported 'Histogram's.
#
# Note that these are missing the '_sum' metric!
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+), (.+)=(.+)><>Count
  name: kafka_$1_$2_$3_count
  type: COUNTER
  labels:
    "$4": "$5"
    "$6": "$7"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.*), (.+)=(.+)><>(\d+)thPercentile
  name: kafka_$1_$2_$3
  type: GAUGE
  labels:
    "$4": "$5"
    "$6": "$7"
    quantile: "0.$8"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+)><>Count
  name: kafka_$1_$2_$3_count
  type: COUNTER
  labels:
    "$4": "$5"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.*)><>(\d+)thPercentile
  name: kafka_$1_$2_$3
  type: GAUGE
  labels:
    "$4": "$5"
    quantile: "0.$6"
- pattern: kafka.(\w+)<type=(.+), name=(.+)><>Count
  name: kafka_$1_$2_$3_count
  type: COUNTER
- pattern: kafka.(\w+)<type=(.+), name=(.+)><>(\d+)thPercentile
  name: kafka_$1_$2_$3
  type: GAUGE
  labels:
    quantile: "0.$4"

# Generic gauges for MeanRate Percent
# Ex) kafka.server<type=KafkaRequestHandlerPool, name=RequestHandlerAvgIdlePercent><>MeanRate
- pattern: kafka.(\w+)<type=(.+), name=(.+)Percent\w*><>MeanRate
  name: kafka_$1_$2_$3_percent
  type: GAUGE
- pattern: kafka.(\w+)<type=(.+), name=(.+)Percent\w*><>Value
  name: kafka_$1_$2_$3_percent
  type: GAUGE
- pattern: kafka.(\w+)<type=(.+), name=(.+)Percent\w*, (.+)=(.+)><>Value
  name: kafka_$1_$2_$3_percent
  type: GAUGE
  labels:
    "$4": "$5"

4.1.3 修改kafka的启动脚本

vi /home/deploy/kafka_2.13-3.4.1/bin/kafka-run-class.sh

  • 加在脚本的最开始
......
export JMX_PORT="9999"
export KAFKA_OPTS="-javaagent:/home/deploy/kafka_2.13-3.4.1/libs/jmx_prometheus_javaagent-1.0.0.jar=9998:/home/deploy/kafka_2.13-3.4.1/config/kraft/kafka-kraft-3_0_0.yml"

4.1.4 重启kafka

4.1.5 查看数据

curl http://localhost:9998/metrics

在这里插入图片描述

相关资料下载地址📚

  • 官方文档:https://prometheus.io/docs/introduction/overview/
  • 下载地址:https://github.com/prometheus/prometheus/releases/tag/v2.52.0
  • 文档地址:https://prometheus.io/docs/prometheus/latest/installation/
  • 离线包下载链接:https://pan.baidu.com/s/1ANF_AlFnM5_FMIbKBuzBmg 提取码:yqpt

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mybatis增删改查模板设置及设置调用

mybatis增删改查模板设置 系统配置文件完成以及连接好数据之后&#xff0c;就可以用这个mybatis了&#xff0c;首先写这个数据库的增删改查模板StashMapper.xml&#xff0c;这个东西是要放在DAO层中的奥&#xff0c;切记。 1.编写mybatis对应数据库的增删改查模板 在我的Sta…

[Qt学习笔记]Qtxlsx在Qt下的配置和调用

背景分析 Qt操作Excel文件一般有QAxObject和QtXlsx两种方法&#xff0c;前者需要调用wps或office组件进行读写操作&#xff0c;具有一定的局限性&#xff0c;下面列出两种方法的优缺点对比 QAxObject&#xff1a; 优点&#xff1a;支持xls和xlsx等版本。office组件读写速度快&…

面试题:useEffect的Clean Up 什么时候触发?

​ useEffect作为做常用的Hook&#xff0c;以下三个知识点你有必要了解下~ 防止写出奇怪的代码祸害队友&#xff0c;而我不幸就是这个受害者&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; useEffect的依赖项为空 useEffect的dependencyList作为一个可选参数…

LLaMA-Factory推理实践

运行成功的记录 平台&#xff1a;带有GPU的服务器 运行的命令 git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory/ conda create -n py310 python3.10 conda activate py310由于服务器不能直接从huggingface上下载Qwen1.5-0.5B&#xff0c;但本地可…

轻松拿捏C语言——【文件操作】

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ &#x1f389;创作不易&#xff0c;请多多支持&#x1f389; &#x1f308;感谢大家的阅读、点赞、收藏和关注&#x1f495; &#x1f339;如有问题&#xff0c;欢迎指正 目录 &#x1f…

Python高阶学习记录

文章导读 阅读本文需要一定的python基础&#xff0c;部分知识点是对python入门篇学习记录和python并发编程学习记录的深入探究&#xff0c;本文记录的Python知识点包括函数式编程&#xff0c;装饰器&#xff0c;生成器&#xff0c;迭代器&#xff0c;正则表达式&#xff0c;内存…

HTML蓝色爱心

目录 写在前面 HTML入门 完整代码 代码分析 运行结果 系列推荐 写在后面 写在前面 最近好冷吖&#xff0c;小编给大家准备了一个超级炫酷的爱心&#xff0c;一起来看看吧&#xff01; HTML入门 HTML全称为HyperText Markup Language&#xff0c;是一种标记语言&#…

最小时间差

首先可以想到&#xff0c;可以计算出任意两个时间之间的差值&#xff0c;然后比较出最小的&#xff0c;不过这种蛮力方法时间复杂度是O(n^2)。而先将时间列表排序&#xff0c;再计算相邻两个时间的差值&#xff0c;就只需要计算n个差值&#xff0c;而排序阶段时间复杂度通常为O…

Docker成功启动Rabbitmq却访问不了管理页面问题解决

目录 启动步骤&#xff1a; 无法访问问题总结&#xff1a; 启动步骤&#xff1a; 拉取镜像&#xff1a; docker pull rabbitmq 运行&#xff1a; docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq进入容器&#xff1a; docker exec -it 容器id /bin/…

C++ C (1152) : 循环赛日程表

文章目录 一、题目描述二、参考代码 一、题目描述 二、参考代码 #include<iostream> #include<vector> #include<cstdlib> using namespace std;void generateSchedule(vector< vector<int> >& table, int numPlayers, int rounds) {// 生…

模拟通讯录(详解通讯录排序qsort,strcmp)

前言&#xff1a; 学习了C语言结构体、联合体、枚举等&#xff0c;就可以写一个通讯录来强化自己对结构体的理解学习。顺便提升大家的基本功&#xff01;&#xff01; 通讯录菜单的打印&#xff1a; 关于菜单的打印在之前写游戏的时候写过多次&#xff0c;大家可以参照之前的改…

2024后端服务架构升级

文章目录 原因改造方案新架构图技术选型思考 服务拆分公共组件设计自部署算法服务排期计划 全球多活改造 原因 背景&#xff1a; 1、xx业务经过多轮的业务决策和调整&#xff0c;存在非常多技术包袱&#xff0c;带了不好的用户体验和极高的维护成本 2、多套机房部署&#xf…

大创项目推荐 深度学习的口罩佩戴检测 - opencv 卷积神经网络 机器视觉 深度学习

文章目录 0 简介1 课题背景&#x1f6a9; 2 口罩佩戴算法实现2.1 YOLO 模型概览2.2 YOLOv32.3 YOLO 口罩佩戴检测实现数据集 2.4 实现代码2.5 检测效果 3 口罩佩戴检测算法评价指标3.1 准确率&#xff08;Accuracy&#xff09;3.2 精确率(Precision)和召回率(Recall)3.3 平均精…

数据仓库核心:维度表设计的艺术与实践

文章目录 1. 引言1.1基本概念1.2 维度表定义 2. 设计方法2.1 选择或新建维度2.2 确定维度主维表2.3 确定相关维表2.14 确定维度属性 3. 维度的层次结构3.1 举个例子3.2 什么是数据钻取&#xff1f;3.3 常见的维度层次结构 4. 高级维度策略4.1 维度整合维度整合&#xff1a;构建…

c++程序员为什么要做自己的底层库

五一期间&#xff0c;在家里翻到之前上学时候用的电脑和工作日志&#xff0c;粗略浏览一番&#xff0c;感慨10年岁月蹉跎&#xff0c;仍然没有找到自己技术方向的“道”。遂有感而发&#xff0c;写下此文。 算起来&#xff0c;接触软件开发也有10年时间了&#xff0c;最开始是…

06C内存分配

C零碎语法 目录 文章目录 C零碎语法1.内存布局2. 内存对齐2.1结构体内存对齐2.1应用 1.内存布局 2. 内存对齐 2.1结构体内存对齐 三条原则&#xff1a; &#xff08;1&#xff09;结构体变量的 起始地址能够被其最宽的成员大小整除。 &#xff08;2&#xff09;结构体每个…

基于知识图谱分析贸易关系走向

基于知识图谱分析贸易关系走向 前言一、基础数据二、贸易规则三、知识图谱可视化四、完整代码 前言 知识图谱是一种用图模型来描述知识和建模世界万物之间的关联关系的技术方法。在贸易关系的分析中&#xff0c;知识图谱可以将各个国家、地区、商品、贸易政策等作为节点&#…

华为坤灵管理型交换机S300,S500,S310,S210,S220,S200 web端开局配置

一. 准备线缆 笔记本或没有COM口的电脑,需准备转接线,并安装好随线光盘的驱动,检查设备管理器中COM口是否正常 2.连接电脑与交换机的CONSOLE口 二&#xff0c;准备软件putty。 Download PuTTY: latest release (0.81) 配置步骤如下&#xff1a; 开启HTTP服务。设置https://1…

路由策略实验2

对R7&#xff0c;重发布直连路由 对R2&#xff0c;做双向 对R3同样 先不改优先级 查看&#xff0c;知道所有给R3的路由为151&#xff0c;全部为OSPF。 知道了是错误的&#xff0c;先把3&#xff0c;4之间的线路断掉 接着对R3&#xff0c;让优先级全部回到100&#xff08;displa…

STL中vector动态二维数组理解(杨辉三角)

题目链接&#xff1a;118.杨辉三角 题目描述&#xff1a; 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 题目指要&#xff1a; 本题的主要目的是理解vector<vector<int&…