4 Promethues监控主机和容器

目录

目录

1. 监控节点

1.1 安装Node exporter

解压包

 拷贝至目标目录

查看版本

 1.2 配置Node exporter

 1.3 配置textfile收集器

 1.4 启动systemd收集器

1.5 基于Docker节点启动node_exporter

1.6 抓取Node Exporter

 1.7 过滤收集器

 2. 监控Docker容器

2.1 运行cAdvisor

 2.2  抓取cAdvisor

 2.3 Node Exporter和cAdvisor指标

 2.3.1 USE方法

CPU利用率

计算每种CPU模式的每秒使用率

计算每台主机的平均CPU使用率 

 计算每个主机5分钟范围内使用率的平均百分比

 CPU饱和度

计算mode模式为idle的主机上的CPU数量,使用count函数做聚合:

 计算CPU饱和度

内存使用率

计算可用内存的百分比

 内存饱和度

计算内存饱和度

磁盘使用率

 计算主机使用磁盘空间的百分比

 使用正则表达式匹配多个挂载点

 计算未来使用磁盘空间趋势(提前规避磁盘用尽的风险)

 2.3.2 服务状态

 查看docker服务状态

 查看已经active的docker

 2.3.3 可用性和up指标

 2.3.4 metadata指标

 2.4 查询持久性

2.4.1 记录规则

配置记录规则

添加记录配置

更新规则组为每10秒运行一次

 3. 可视化

3.1 安装Grafana

3.1.1 在Ubuntu上安装Grafana

3.1.2 启动和配置Grafana

3.1.3 配置Grafana Web界面

采用Prometheus作为数据源

点击Data sources

 add data source

 配置Promethues地址​编辑

保存并测试配置

 3.1.4 使用仪表板

Add  visualization

 选择data sources

选择指标查询,并保存

 仪表盘查看图表结果

 图标结果


这里将在1台运行docker守护进程的unbuntu主机上进行演示。我们将在主机上安装exporter,然后配置节点和Docker指标让Promethues来抓取。

基本的主机资源监控,包括:

  • CPU
  • 内存
  • 磁盘
  • 可用性

当然月可以使用Grafana,并对收集的数据进行基本的可视化。

1. 监控节点

 Promethues使用exporter工具来暴露主机和服务上的指标,目前有很多用于各种目的的exporter。Node exporter是Go语言编写的,提供了一个可用于收集各种主机指标数据(含CPU、内存和磁盘)的库。它还有个textfile收集器,允许导出静态指标。

在监控中有时候术语“节点”可以用来指代主机。

除了exporter,还有其他支持Promethues的主机监控客户端,如collectd。

在linux主机上,下载并安装Node exporter,同时选择一个Docker守护进程主机。

官方下载地址:Releases · prometheus/node_exporter · GitHub

1.1 安装Node exporter

解压包

tar -xzf node_exporter-1.6.0.linux-amd64.tar.gz

 拷贝至目标目录

sudo cp node_exporter-1.6.0.linux-amd64/node_exporter /usr/local/bin/

查看版本

/usr/local/bin/

 1.2 配置Node exporter

可以通过参数来对node_exporter进行配置,使用--help查看完整的参数列表。

node_exporter --help

默认情况下,node_exporter在端口9100上运行,并在路径/metrics上暴露指标。可以通过--web.listen-address和-web.telemetry-path参数来设置端口和路径,如下所示:

node_exporter --web.listen-address=":9600" --web.telemetry-path="/node_metrics"

这会将node_exporter绑定到端口9600并在路径、node-metrics上暴露指标。

 通过浏览器访问,已经暴露以下指标

 可以看到以上有许多指标,也就是说许多收集器默认都是启用的。可以通过使用 no- 前缀来修改状态。如暴露/proc/net/arp 统计信息的arp收集器是默认启动的,可以通过参数 --collector.arp控制。禁止次收集器,需要运行如下指令:

node_exporter --web.listen-address=":9600" --web.telemetry-path="/node_metrics" --node-collector.arp

 1.3 配置textfile收集器

textfile收集器非常有用,它允许我们暴露自定义指标。这些自定义指标可能是批处理或cron作业等无法抓起的,可能是没有exporter的源,甚至可能是为主机提供上下文的静态指标。

收集器通过扫描指定目录中的文件,提取所有格式为Promethues指标的字符串,然后暴露它们以便抓取。

在设置收集器前,需要先创建一个目录来保存指标定义文件

sudo mkdir -p /var/lib/node_exporter/textfile_collector

现在在该目录中创建一个新指标,指标在以.prom结尾的文件内定义,并且使用Promethues的特定文本格式。

特定的文本格式允许指定Promethues支持的所有指标类型,即计数型、测量型、计时型等。

 我们使用此格式创建一个包含有关此主机的元数据指标。

metadata{role="docker_server",datacenter="CD"} 1

这里包含了一个指标名称(metadata)和两个标签。一个标签role定义节点的角色。在示例中,标签的值为docker_server。另一个标签datacenter定义主机的地理位置在成都。最后,指标的值为1,表示该指标不是计数型、测量型或计时型,而是提供上下文。

接着将指标添加到textfile_collector目录下的metadata.prom文件中。

echo 'metadata{role="docker_server",datacenter="CD"} 1'|sudo tee /var/lib/node_exporter/textfile_collector/metadata.prom

 当然在真实环境中,建议使用配置管理工具来编辑该文件。比如在配置新主机时,可以从模板创建元数据指标,这样可以自动对主机和服务进行分类。

Node exporter默认加载textfile收集器,不需要通过参数指定textfile收集器,但需要指定textfile_exporter目录,以便于Node exporter知道在哪里可以找到自定义指标。因此,需要指定--collector.textfile.directory参数。

node_exporter --web.listen-address=":9600" --web.telemetry-path="/node_metrics" --no-collector.arp  --collector.textfile.directory="/var/lib/node_exporter/textfile_collector"

以上配置指定了textfile收集器地址,能看到对应的结果如下:

 1.4 启动systemd收集器

systemd收集器记录systemd中的服务和系统状态。这个收集器收集了很多指标,当我们不想收集其所有指标时,可以指定指标进行收集。如下我们将特定的服务列入白名单,智手机以下服务的指标:

  • docker.service  ,Docker守护进程
  • ssh.service ,SSH守护进程
  • rsyslog.service ,RSyslog守护进程

使用--collerctor.systemd.unit-whitelist参数来进行配置,它会匹配systemd的正则表达式。

1.5 基于Docker节点启动node_exporter

node_exporter --web.listen-address=":9600" --collector.textfile.directory /var/lib/node_exporter/textfile_collector --collector.systemd --collector.systemd.unit-whitelist="(docker|ssh|rsyslog).service"

1.6 抓取Node Exporter

通过配置新作业来抓取Node Exporter导出的数据。查看当前prometheus.yml文件和抓取配置中的scrape_configs部分。

 要获取新数据,需要为配置添加另一个作业,配置如下:

scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["localhost:9090"]- job_name: "node"static_configs:- targets: ["localhost:9600"]

可以看到有两个作业,名为node的新作业和已有的prometheus的旧作业。重启Prometheus后,配置将被重新加载且服务器会开始抓取,很快能看到时间序列数据开始流入Prometheus服务器中。

 1.7 过滤收集器

Node Exporter可以返回很多指标,除了通过本地配置来控制Node Exporter在本地运行哪些收集器外,Prometheus还提供了一种方式来限制收集器从服务器端实际抓取的数据,尤其是在你无法控制正抓取的主机的配置时,这种方式很有效。

Prometheus 通过添加特定收集器列表来实现作业配置。

scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["localhost:9090"]- job_name: "node"static_configs:- targets: ["localhost:9600"]params:collect[]:- cpu- meminfo- diskstats- netdev- netstat- filefd- filesystem- xfs- systemd
~                            

指定CPU参数访问结果如下:

 2. 监控Docker容器

Prometheus提供了几种方法来监控Docker,包括一些自定义的exporter,但一般推荐使用Google的cAdvisor工具。在Docker守护进程上,cAdvisor作为Docker容器运行,单个cAdvisor容器返回针对Docker守护进程和所有正在运行的容器指标。Prometheus支持通过它导出指标,并将数据传输到其他各种存储系统,如InfluxDB、Elasticsearch和kafka。

2.1 运行cAdvisor

由于cAdvisor只是Docker主机上的另一个容器,因此可以使用docker run命令启动它。

docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:rw --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest

 启动后结果如下:

通过浏览器访问,确认它是正常运行的。

 通过metrics可以看见指标数据。

 2.2  抓取cAdvisor

我们需要告诉 Prometheus cAdvisor 是在Docker守护进程上进行的,可以在配置中添加第三个作业。

 修改配置后重启Prometheus ,即可开始进行抓取。

 2.3 Node Exporter和cAdvisor指标

现在从主机中收集总共3组独立的指标:

  • Prometheus 服务器自己的指标
  • 主机Node Exporter指标
  • 主机cAdvisor指标

 2.3.1 USE方法

USE方法关注的是使用率、饱和度和错误指标,以帮助进行性能诊断,经常被用在CPU、内存和磁盘监控。

CPU利用率

为了获得USE中的使用率,我们将使用Node Exporter收集的名为node_cpu_seconds_total的指标。如下所示:

 可以看见指标列表如下格式:

node_cpu_seconds_total{cpu="0", instance="localhost:9600", job="node", mode="idle"}

node_cpu_seconds_total 指标包含许多标签,包括instance和job标签,分别标识它来自哪个主机以及被哪个作业抓取。

当然以上的指标列表作用并不大。对于性能分析需要使用PromQL将其转换成更有用的指标。

计算每种CPU模式的每秒使用率

计算每台主机的平均CPU使用率 

 计算每个主机5分钟范围内使用率的平均百分比

 CPU饱和度

在主机上获得CPU饱和的一种方法是跟踪平均负载,实际上它是将主机上的CPU数量考虑在内的一段时间内的平均运行队列长度。平均负载少于CPU的数量通常是正常的,长时间内超过该数字的平均值则表示CPU已经饱和。

查看主机的平均负载,可以通过 node_load*指标,它显示了1分钟、5分钟和15分钟的平均负载。我们将使用1分钟的平均负载:node_load1.

计算mode模式为idle的主机上的CPU数量,使用count函数做聚合:
count by (instance) (node_cpu_seconds_total{mode="idle"})

 可以看见主机上有三个CPU。

 计算CPU饱和度

查询mode为idle,1分钟的平均负载超过主机CPU数量的2倍的结果。

node_load1 >on (instance) 2*count by (instance) (node_cpu_seconds_total{mode="idle"})

 可以看见2倍没有数据,0.1倍有数据,CPU饱和度很低。

内存使用率

Node Exporter的内存指标按内存的类型和使用率进行细分,可以以node_memory为前缀的指标列表中找到它们,如下:

 虽然关于内存的指标很多,但这里我们主要以以下指标获得使用率。

  • node_memory_MemFree_bytes:主机上的可用内存。
  • node_memory_MemTotal_bytes: 主机上的总内存。
  • node_memory_Buffers_bytes:缓冲缓存中的内存。
  • node_memory_Cached_bytes:页面缓存中的内存。

所有这些指标都是以字节为单位来表示的。

计算可用内存的百分比
(node_memory_MemTotal_bytes-(node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes))/node_memory_MemTotal_bytes*100

 内存饱和度

可通过检查内存和磁盘的读写来监控内存饱和度。可以使用从/proc/vmstat收集的两个Node Exporter指标:

  • node_vmstat_pswpin:系统每秒从磁盘读到内存的字节数。
  • node_vmstat_pswpout:系统每秒从内存读到磁盘的字节数。

两者都是自上次启动以来的字节数,以KB为单位。

计算内存饱和度

为了获取饱和度指标,我们对每个指标计算一分钟的速率,将两个速率相加再乘以1024以获得字节数。 

1024 *sum by (instance) (rate(node_vmstat_pswpin[1m])+rate(node_vmstat_pswpout[1m]))

磁盘使用率

对于磁盘,我们只测量磁盘使用情况而不是使用率、饱和度或者错误情况。这是因为在大多数情况下,它是对可视化和警报最有用的数据。Node Exporter的磁盘使用指标位于以 node_filesystem为前缀的指标列表中。如下:

 计算主机使用磁盘空间的百分比

node_filesystem_size_bytes指标显示了被监控的每个文件系统挂载的大小。可以使用与内存指标类似的查询来生成在主机上使用的磁盘空间的百分比。

(node_filesystem_size_bytes{mountpoint="/"}-node_filesystem_free_bytes{mountpoint="/"})/node_filesystem_size_bytes{mountpoint="/"}*100

与内存指标不同,我们在主机的每个挂载点都有文件系统指标。所以我们添加了mountpoint标签。特别是根文件系统"/"挂载。

如果想要监控特定挂载点,可以添加查询。如监控/run挂载点,使用查询语句如下

(node_filesystem_size_bytes{mountpoint="/run"}-node_filesystem_free_bytes{mountpoint="/run"})/node_filesystem_size_bytes{mountpoint="/run"}*100

 使用正则表达式匹配多个挂载点

将操作符从 = 更改为 =~,告诉Prometheus右侧值是正则表达式,可以同时匹配/run和/根文件。

(node_filesystem_size_bytes{mountpoint=~"/|/run"}-node_filesystem_free_bytes{mountpoint=~"/|/run"})/node_filesystem_size_bytes{mountpoint=~"/|/run"}*100

 计算未来使用磁盘空间趋势(提前规避磁盘用尽的风险)

选择1小时的时间窗口[1h],并将此时间序列快照放在predict_linear函数中。该函数使用简单的线性回归,根据以前的增长情况来确定文件系统何时会耗尽空间。该函数包括一个范围向量(即1小时时间窗口),以及未来需要预测的时间点。这些都是以秒为单位的,因此这里使用4*3600秒,即4小时。

predict_linear(node_filesystem_free_bytes{mountpoint="/"}[1h],4*3600)<0

 2.3.2 服务状态

服务状态在 node_systemd_unit_state 指标中暴露出来。如下:

 查看docker服务状态

node_systemd_unit_state{name="docker.service"}

 查看已经active的docker

服务有failed、inactive、active等状态,其中表示当前服务状态的指标的值为1.

 2.3.3 可用性和up指标

还可以使用 up指标 来监控特定节点状态。

up

 2.3.4 metadata指标

使用Node Exporter的textfile收集器来查看我们创建的metadata指标,结合日志输出到对应的matadata或许是一种比较灵活的指标上报方式。

 2.4 查询持久性

截至当前,我们在浏览器中输入表达式进行查询,虽然查询输出结果很方便,但结果还是临时存储在Prometheus服务器上的。我们可以通过以下三种方式使查询持久化:

  • 记录规则:根据查询创建新指标
  • 警报规则:从查询生成警报
  • 可视化:使用Grafana等仪表板可视化查询。

2.4.1 记录规则

记录规则使一种根据已有时间序列计算新时间序列(特别使聚合时间序列)的方法,这样做是为了:

  • 跨多个时间序列生成聚合。
  • 预先计算消耗大的查询。
  • 产生可用于生成警报的时间序列。

配置记录规则

记录规则存储在Prometheus服务器上,位于Prometheus服务器加载的文件中。规则是自动计算的,频率则是由prometheus.yml配置文件中的global块中的evaluation_interval参数控制的。

global:
  scrape_interval: 15s 
  evaluation_interval: 15s 

规则文件在 Prometheus配置文件的rule_files块中指定

rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"
 

在Prometheus配置文件prometheus.yml的rule_files块中添加这个文件。

rule_files:- "rules/node_rules.yml"

添加记录配置

把CPU、内存和磁盘计算转换为记录规则。监控主机时,要对节点预先计算这三个指标的查询,这样就可以将这些计算作为指标,然后可以设置警报或者通过Grafana等仪表板进行可视化。

groups:
- name: node_rulesrules:- record: instance:node_cpu:avg_rate5mexpr: 100 -avg (irate(node_cpu_seconds_total{job="node",mode="idle"}[5m])) by (instance) *100

记录规则在规则组中定义,这里的规则组叫做node_rules。规则组名称在服务器中必须是唯一的。规则组内的规则以固定间隔顺序执行。默认情况下,通过全局evaluate_interval来控制的。

规则组内规则执行的顺序性质意味着你可以在后续规则中使用之前创建的规则。这允许你根据规则创建指标,然后在之后的规则中重用这些指标。这仅在规则组内适用,规则组是并行运行的,因此不建议跨组使用规则。

更新规则组为每10秒运行一次
groups:
- name: node_rulesinterval: 10srules:- record: instance:node_cpu:avg_rate5mexpr: 100 -avg (irate(node_cpu_seconds_total{job="node",mode="idle"}[5m])) by (instance) *100

其中record记录规则产生的新的时间序列命名一般的推荐格式为:

level:metric:operations(1)level 表示聚合级别
(2)metric 是指标名称
(3)operations 是应用于指标的操作列表,一般最新的操作放在前面。这里cpu查询命名将为:instance:node_cpu:avg_rate5m

 此外我们通过指定一个expr字段来保存生成新时间序列的查询。通过添加labels块向新时间序列添加新标签。根据规则创建的时间序列会继承用于创建它们的时间序列的相关标签,但你也可以添加或者覆盖标签。如下。

groups:
- name: node_rulesinterval: 10srules:- record: instance:node_cpu:avg_rate5mexpr: 100 -avg (irate(node_cpu_seconds_total{job="node",mode="idle"}[5m])) by (instance) *100labels:metric_type: aggregation                                 

让我们再创建一些查询,并添加它们。

groups:
- name: node_rulesinterval: 10srules:- record: instance:node_cpu:avg_rate5mexpr: 100 -avg (irate(node_cpu_seconds_total{job="node",mode="idle"}[5m])) by (instance) *100labels:metric_type: aggregation- record: instance:node_memory_usage:percentageexpr: (node_memory_MemTotal_bytes-(node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes))/node_memory_MemTotal_bytes*100- record: instance:root:node_filesystem_usage:percentageexpr: (node_filesystem_size_bytes{mountpoint="/"}-node_filesystem_free_bytes{mountpoint="/"})/node_filesystem_size_bytes{mountpoint="/"}*100

ps:需要重启Prometheus服务器或者进行SIGHUP才能激活新规则。

 3. 可视化

Prometheus虽然有内置的仪表板和图形界面,但非常简单,通常最适合查看指标和呈现单个图表。为了给Prometheus添加一个功能更全面的可视化界面,该平台选择与开源仪表板工具Grafana集成。Grafana接受来自不同数据源(如Graphite、Elasticsearch和Promethues)的数据,然后提供可视化仪表板。

3.1 安装Grafana

Grafana支持在Linux、windows、mac上进行安装部署,这里选择在Linux上部署。

3.1.1 在Ubuntu上安装Grafana

官方下载及安装教程见: https://grafana.com/grafana/download

单节点安装只需要下载 tar.gz包就好,如grafana-enterprise-10.0.3.linux-amd64.tar.gz,解压后启动脚本。

3.1.2 启动和配置Grafana

有两个地方可以配置Grafana: 本地配置文件和Grafana Web界面。本地配置文件主要用于配置服务器级的设置(如身份验证和网络),文件在不同系统的位置不一样,安装方式也会导致文件不一样。

笔者是通过tar.gz压缩包安装的,该文件在/usr/local/grafana/grafana-10.0.3/conf/defaults.ini

 启动指令:

sudo ./grafana-server

3.1.3 配置Grafana Web界面

Grafana是一个基于Go的Web应用服务,默认在端口3000上运行(注意访问Linux是需要开放该端口权限)。默认的登录账号和密码都为admin和admin,当然可以在上面提到的defaults.ini配置文件中的[security]部分进行控制。

 当然也可以配置用户身份验证,包括与Google验证、Github验证或者本地用户身份验证的集成。Grafana配置文档中包含用户管理和身份验证。针对我们的意图,我们将假设控制台位于内部环境中并继续使用本地身份验证。

采用Prometheus作为数据源

首先将Grafana与我们的Prometheus数据关联起来。

点击Data sources

 add data source

这里选择Promethues

 配置Promethues地址
保存并测试配置

滑动到该页面最下方,点击save&test,如果出现以下页面就算配置成功。

 3.1.4 使用仪表板

退回到主页,现在可以看见data sources已经配置成功,可以开始配置仪表盘了。

 下面以创建CPU核数为例子。

Add  visualization

 选择data sources

这里只能选择上面配置的promethues的datasources。

选择指标查询,并保存

 仪表盘查看图表结果

 图标结果

 具体的教程见:Get started | Grafana documentation

当然Mysql和Redis的监控比较模板化,可以预先构建Grafana仪表板以满足其监控需求。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【微软知识】微软相关技术知识分享

微软技术领域 一、微软操作系统&#xff1a; 微软的操作系统主要是 Windows 系列&#xff0c;包括 Windows 10、Windows Server 等。了解 Windows 操作系统的基本使用、配置和故障排除是非常重要的。微软操作系统&#xff08;Microsoft System&#xff09;是美国微软开发的Wi…

电商高并发设计之SpringBoot整合Redis实现布隆过滤器

文章目录 问题背景前言布隆过滤器原理使用场景基础中间件搭建如何实现布隆过滤器引入依赖注入RedisTemplate布隆过滤器核心代码Redis操作布隆过滤器验证 总结 问题背景 研究布隆过滤器的实现方式以及使用场景 前言 本篇的代码都是参考SpringBootRedis布隆过滤器防恶意流量击穿缓…

Data Structure, Algorithm,and Applications in C++

在学习这本书进阶内容之前&#xff0c;我们可以跟着它的第一章部分再巩固和复习。本书由Sartaj Sahni撰写&#xff0c;由王立柱和刘志红翻译。全书通俗易懂&#xff0c;内容丰富&#xff0c;是巩固C内容的不二选择。希望本文对各位有所帮助。 目录 1.函数与参数 1.1.传值参数…

wxwidgets Ribbon构建多个page与按钮响应

新建一个控制台应用程序&#xff0c;添加好头文件的依赖与lib库文件的依赖&#xff0c;修改属性&#xff1a; 将进入ribbon界面的文件与主界面的类分开&#xff1a; 1、RibbonSample.cpp #include "stdafx.h" #include "MyFrame.h" class MyApp : public…

flutter:轮播

前言 介绍几个比较有不错的轮播库 swipe_deck 与轮播沾边&#xff0c;但是更多的是一种卡片式的交互式界面设计。它的主要概念是用户可以通过左右滑动手势浏览不同的卡片&#xff0c;每张卡片上都有不同的信息或功能。 Swipe deck通常用于展示图片、产品信息、新闻文章、社…

【WebRTC---序篇】(七)RTC多人连麦方案

服务端可以选择mediasoup&#xff0c;作为SFU服务器&#xff0c;只负责转发数据 下图举例三个Client (browser或者客户端)同时加入一个房间&#xff0c;每个app同时发布一路视频和一路音频&#xff0c;并且接受来自其他app的音视频流&#xff0c;mediasoup内部的结构如下&…

使用Django自带的后台管理系统进行数据库管理的实例

Django自带的后台管理系统主要用来对数据库进行操作和管理。它是Django框架的一个强大功能&#xff0c;可以让你快速创建一个管理界面&#xff0c;用于管理你的应用程序的数据模型。 使用Django后台管理系统&#xff0c;你可以轻松地进行以下操作&#xff1a; 数据库管理&…

宝塔Linux面板Java项目一键部署(springboot)

部署项目之前请安装相关软件: jdk1.8、redis、nginx 、mysql 等等(项目中用到的) 1. 网站 2. 创建项目文件夹 文件 - /www/wwwroot - 新建项目文件夹 - 存放jar文件 3. 上传jar文件 (直接拖进来) 4. 添加Java项目 5. jar包路径 - 项目端口, 提交(启动项目) 6. 成功运行 7. 浏览…

.NET网络编程——TCP通信

一、网络编程的基本概念 : 1. 网络 就是将不同区域的电脑连接到一起&#xff0c;组成局域网、城域网或广域网。把分部在不同地理区域的计算机于专门的外部设备用通信线路 互联成一个规模大、功能强的网络系统&#xff0c;从而使众多的计算机可以方便地互相传递信息&#xff0c…

eclipse版本与jdk版本对应关系

官网&#xff1a;Eclipse/Installation - Eclipsepedia eclipse历史版本&#xff08;2007-&#xff09;&#xff1a;Older Versions Of Eclipse - Eclipsepedia Eclipse Packaging Project (EPP) Releases | Eclipse Packages

Spring Security 构建基于 JWT 的登录认证

一言以蔽之&#xff0c;JWT 可以携带非敏感信息&#xff0c;并具有不可篡改性。可以通过验证是否被篡改&#xff0c;以及读取信息内容&#xff0c;完成网络认证的三个问题&#xff1a;“你是谁”、“你有哪些权限”、“是不是冒充的”。 为了安全&#xff0c;使用它需要采用 …

亚马逊鲲鹏系统是怎么引流的?

亚马逊鲲鹏系统有三种引流方式&#xff0c;可设置通过亚马逊站点搜索、站外引流、直接访问产品页面进入到相关产品页面进行操作。 1、通过亚马逊站点搜索 正常的登录到我们的亚马逊主页&#xff0c;然后通过设置关键词及asin&#xff0c;最后进入你指定的产品&#xff0c;进行…

Redis的订阅者和发布者模式、主从双备和密码认证

四、Redis的订阅者和发布者模式、主从双备和密码认证 1、Redis的订阅者和发布者模式 两个数据库&#xff0c;一个是10&#xff0c;一个是15。订阅频道&#xff1a; 向频道推数据&#xff1a; 接收到数据&#xff1a; 2、redis的高可用&#xff08;HA&#xff09;主从双备 模拟…

基于传统检测算法hog+svm实现图像多分类

直接上效果图&#xff1a; 代码仓库和视频演示b站视频005期&#xff1a; 到此一游7758258的个人空间-到此一游7758258个人主页-哔哩哔哩视频 代码展示&#xff1a; 数据集在datasets文件夹下 运行01train.py即可训练 训练结束后会保存模型在本地 运行02pyqt.py会有一个可视化…

golang单元测试及mock总结

文章目录 一、前言1、单测的定位2、vscode中生成单测 二、构造测试case的注意事项1、项目初始化2、构造空interface{}3、构造结构体的time.Time类型4、构造json格式的test case 三、运行单测文件1、整体运行单测文件2、运行单个单测文件报错&#xff08;1&#xff09;command-l…

应用案例|基于3D视觉的高反光金属管件识别系统解决方案

Part.1 项目背景 在现代制造业中&#xff0c;高反光金属管件的生产以及质量的把控是一个重要的挑战。传统的2D视觉系统常常难以准确地检测和识别高反光金属管件&#xff0c;因为它们的表面特征不够明显&#xff0c;容易受到光照和阴影的干扰。为了应对这个问题&#xff0c;基于…

华为数通HCIP-IGMP(网络组管理协议)

IGMP&#xff08;网络组管理协议&#xff09; 作用&#xff1a;维护、管理最后一跳路由器以及组播接收者之间的关系&#xff1b; 应用&#xff1a;最后一跳路由器以及组播接收者之间&#xff1b; 原理&#xff1a;当组播接收者需要接收某个组别的流量时&#xff0c;会向最后…

kafka 理论知识

1 首先要了解kafka是什么 Kafka是一个分布式的消息订阅系统 1.1 kafka存储消息的过程 消息被持久化到一个topic中&#xff0c;topic是按照“主题名-分区”存储的&#xff0c;一个topic可以分为多个partition&#xff0c;在parition(分区)内的每条消息都有一个有序的id号&am…

高并发与性能优化的神奇之旅

作为公司的架构师或者程序员&#xff0c;你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢&#xff1f;笔者在出道那会为此是吃尽了苦头的&#xff0c;不过也得感谢这段苦&#xff0c;让笔者从头到尾去探索&#xff0c;找寻解决之法。 目录 第一站…

LabVIEW实现三相异步电机磁通模型

LabVIEW实现三相异步电机磁通模型 三相异步电动机由于经济和出色的机电坚固性而广泛用于工业化应用。这台机器的设计和驱动非常简单&#xff0c;但在控制扭矩和速度方面&#xff0c;它隐藏了相当大的功能复杂性。通过数学建模&#xff0c;可以理解机器动力学。 基于微分方程的…