Kubernetes精讲之prometheus

news2025/2/25 2:15:36

目录

一 Prometheus简介

1.1 Prometheus架构

二 在k8s中部署Prometheus

2.1 下载部署Prometheus所需资源

2.3 登陆grafana

2.4 导入面板

三 监控使用示例

3.1 建立监控项目


一 Prometheus简介

Prometheus是一个开源的服务监控系统和时序数据库

其提供了通用的数据模型和快捷数据采集、存储和查询接口

它的核心组件Prometheus服务器定期从静态配置的监控目标或者基于服务发现自动配置的目标中进行拉取数据

新拉取到啊的 数据大于配置的内存缓存区时,数据就会持久化到存储设备当中

1.1 Prometheus架构

1.1.1 组件功能:

  • 监控代理程序:如node_exporter:收集主机的指标数据,如平均负载、CPU、内存、磁盘、网络等等多个维度的指标数据。
  • kubelet(cAdvisor):收集容器指标数据,也是K8S的核心指标收集,每个容器的相关指标数据包括:CPU使用率、限额、文件系统读写限额、内存使用率和限额、网络报文发送、接收、丢弃速率等等。
  • API Server:收集API Server的性能指标数据,包括控制队列的性能、请求速率和延迟时长等等
  • etcd:收集etcd存储集群的相关指标数据
  • kube-state-metrics:该组件可以派生出k8s相关的多个指标数据,主要是资源类型相关的计数器和元数据信息,包括制定类型的对象总数、资源限额、容器状态以及Pod资源标签系列等。
  • 每个被监控的主机都可以通过专用的exporter程序提供输出监控数据的接口,并等待Prometheus服务器周期性的进行数据抓取
  • 如果存在告警规则,则抓取到数据之后会根据规则进行计算,满足告警条件则会生成告警,并发送到Alertmanager完成告警的汇总和分发
  • 当被监控的目标有主动推送数据的需求时,可以以Pushgateway组件进行接收并临时存储数据,然后等待Prometheus服务器完成数据的采集
  • 任何被监控的目标都需要事先纳入到监控系统中才能进行时序数据采集、存储、告警和展示
  • 监控目标可以通过配置信息以静态形式指定,也可以让Prometheus通过服务发现的机制进行动态管理

二 在k8s中部署Prometheus

2.1 下载部署Prometheus所需资源

有网的方法

#在helm中添加Prometheus仓库
[root@k8s-master helm]# helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
"prometheus-community" has been added to your repositories

#下载Prometheus项目
[root@k8s-master helm]# helm pull prometheus-community/kube-prometheus-stack
[root@k8s-master helm]# ls
kube-prometheus-stack-62.6.0.tgz

#解压项目包
[root@k8s-master helm]# tar zxf kube-prometheus-stack-62.6.0.tgz
[root@k8s-master helm]# ls
kube-prometheus-stack  kube-prometheus-stack-62.6.0.tgz
[root@k8s-master helm]# cd kube-prometheus-stack/
[root@k8s-master kube-prometheus-stack]# ls
Chart.lock  charts  Chart.yaml  CONTRIBUTING.md  README.md  templates  values.yaml

没网的方法

[root@K8s-master ~]# mkdir prometheus
[root@K8s-master ~]# cd prometheus/
[root@K8s-master prometheus]# ls
grafana-11.2.0.tar                nginx-exporter-1.3.0-debian-12-r2.tar
kube-prometheus-stack-62.6.0.tgz  node-exporter-1.8.2.tar
kube-state-metrics-2.13.0.tar     prometheus-62.6.0.tar
nginx-18.1.11.tgz

[root@K8s-master prometheus]# tar zxf kube-prometheus-stack-62.6.0.tgz 
[root@K8s-master prometheus]# cd kube-prometheus-stack/
[root@K8s-master kube-prometheus-stack]# ls
Chart.lock  charts  Chart.yaml  CONTRIBUTING.md  README.md  templates  values.yaml


[root@K8s-master kube-prometheus-stack]# vim values.yaml 
  imageRegistry: "reg.harbor.org"

#根据所有项目中的values.yaml中指定的image路径下载容器镜像并上传至harbor仓库

#上传镜像
[root@K8s-master kube-prometheus-stack]# cd ..
[root@K8s-master prometheus]# docker load -i prometheus-62.6.0.tar 

打标签

[root@K8s-master prometheus]# docker tag quay.io/prometheus/prometheus:v2.54.1 reg.harbor.org/prometheus/prometheus:v2.54.1
[root@K8s-master prometheus]# docker tag quay.io/thanos/thanos:v0.36.1 reg.harbor.org/thanos/thanos:v0.36.1
[root@K8s-master prometheus]# docker tag quay.io/prometheus/alertmanager:v0.27.0 reg.harbor.org/prometheus/alertmanager:v0.27.0
[root@K8s-master prometheus]# docker tag quay.io/prometheus-operator/admission-webhook:v0.76.1 reg.harbor.org/prometheus-operator/admission-webhook:v0.76.1
[root@K8s-master prometheus]# docker tag registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20221220-controller-v1.5.1-58-g787ea74b6 reg.harbor.org/ingress-nginx/kube-webhook-certgen:v20221220-controller-v1.5.1-58-g787ea74b6
[root@K8s-master prometheus]# docker tag quay.io/prometheus-operator/prometheus-operator:v0.76.1 reg.harbor.org/prometheus-operator/prometheus-operator:v0.76.1
[root@K8s-master prometheus]# docker tag quay.io/prometheus-operator/prometheus-config-reloader:v0.76.1 reg.harbor.org/prometheus-operator/prometheus-config-reloader:v0.76.1

上传

[root@K8s-master prometheus]# docker push reg.harbor.org/prometheus/prometheus:v2.54.1
[root@K8s-master prometheus]# docker push reg.harbor.org/thanos/thanos:v0.36.1
[root@K8s-master prometheus]# docker push reg.harbor.org/prometheus/alertmanager:v0.27.0
[root@K8s-master prometheus]# docker push reg.harbor.org/prometheus-operator/admission-webhook:v0.76.1
[root@K8s-master prometheus]# docker push reg.harbor.org/ingress-nginx/kube-webhook-certgen:v20221220-controller-v1.5.1-58-g787ea74b6
[root@K8s-master prometheus]# docker push reg.harbor.org/prometheus-operator/prometheus-operator:v0.76.1
[root@K8s-master prometheus]# docker push reg.harbor.org/prometheus-operator/prometheus-config-reloader:v0.76.1

修改配置

[root@K8s-master kube-prometheus-stack]# cd charts/
[root@K8s-master charts]# ls
crds  grafana  kube-state-metrics  prometheus-node-exporter  prometheus-windows-exporter
[root@K8s-master charts]# cd grafana/
[root@K8s-master grafana]# ls
Chart.yaml  ci  dashboards  README.md  templates  values.yaml
[root@K8s-master grafana]# vim values.yaml 
  imageRegistry: "reg.harbor.org"
....
 image:
    # -- The Docker registry
    registry: docker.io
    repository: library/busybox
    tag: "latest"
    sha: ""
    pullPolicy: IfNotPresent
......

上传镜像

[root@K8s-master prometheus]# docker load -i grafana-11.2.0.tar
#打标签
[root@K8s-master prometheus]# docker tag grafana/grafana:11.2.0 reg.harbor.org/grafana/grafana:11.2.0
[root@K8s-master prometheus]# docker tag quay.io/kiwigrid/k8s-sidecar:1.27.4 reg.harbor.org/kiwigrid/k8s-sidecar:1.27.4
[root@K8s-master prometheus]# docker tag grafana/grafana-image-renderer:latest reg.harbor.org/grafana/grafana-image-renderer:latest
[root@K8s-master prometheus]# docker tag bats/bats:v1.4.1 reg.harbor.org/bats/bats:v1.4.1


#上传
[root@K8s-master prometheus]# docker push reg.harbor.org/grafana/grafana:11.2.0
[root@K8s-master prometheus]# docker push reg.harbor.org/kiwigrid/k8s-sidecar:1.27.4
[root@K8s-master prometheus]# docker push reg.harbor.org/grafana/grafana-image-renderer:latest
[root@K8s-master prometheus]# docker push reg.harbor.org/bats/bats:v1.4.1

修改配置

[root@K8s-master prometheus]# cd kube-prometheus-stack/
[root@K8s-master kube-prometheus-stack]# cd charts/
[root@K8s-master charts]# cd kube-state-metrics/
[root@K8s-master kube-state-metrics]# ls
Chart.yaml  README.md  templates  values.yaml
[root@K8s-master kube-state-metrics]# vim values.yaml
  registry: reg.harbor.org
....
  imageRegistry: "reg.harbor.org"
.....

上传镜像

[root@K8s-master prometheus]# docker load -i nginx-exporter-1.3.0-debian-12-r2.tar

#打标签
[root@K8s-master prometheus]# docker tag bitnami/nginx-exporter:1.3.0-debian-12-r2 reg.harbor.org/bitnami/nginx-exporter:1.3.0-debian-12-r2

#上传
[root@K8s-master prometheus]# docker push reg.harbor.org/bitnami/nginx-exporter:1.3.0-debian-12-r2

修改配置

[root@K8s-master prometheus]# cd kube-prometheus-stack/
[root@K8s-master kube-prometheus-stack]# cd charts/
[root@K8s-master charts]# cd prometheus-node-exporter/
[root@K8s-master prometheus-node-exporter]# ls
Chart.yaml  ci  README.md  templates  values.yaml
[root@K8s-master prometheus-node-exporter]# vim values.yaml
  registry: reg.harbor.org
......
  imageRegistry: "reg.harbor.org"
......

上传镜像

[root@K8s-master prometheus]# docker load -i node-exporter-1.8.2.tar 

#打标签
[root@K8s-master prometheus]# docker tag quay.io/prometheus/node-exporter:v1.8.2 reg.harbor.org/prometheus/node-exporter:v1.8.2
[root@K8s-master prometheus]# docker tag quay.io/brancz/kube-rbac-proxy:v0.18.0 reg.harbor.org/brancz/kube-rbac-proxy:v0.18.0

#上传
[root@K8s-master prometheus]# docker push reg.harbor.org/prometheus/node-exporter:v1.8.2
[root@K8s-master prometheus]# docker push reg.harbor.org/brancz/kube-rbac-proxy:v0.18.0

上传镜像

[root@K8s-master prometheus]# docker load -i kube-state-metrics-2.13.0.tar

#打标签
[root@K8s-master prometheus]# docker tag registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.13.0 reg.harbor.org/kube-state-metrics/kube-state-metrics:v2.13.0
[root@K8s-master prometheus]# docker tag quay.io/brancz/kube-rbac-proxy:v0.18.0 reg.harbor.org/brancz/kube-rbac-proxy:v0.18.0

#上传
[root@K8s-master prometheus]# docker push reg.harbor.org/kube-state-metrics/kube-state-metrics:v2.13.0
[root@K8s-master prometheus]# docker push reg.harbor.org/brancz/kube-rbac-proxy:v0.18.0

安装Prometheus

#利用helm安装Prometheus
[root@k8s-master kube-prometheus-stack]# kubectl create namespace kube-prometheus-stack

#注意,在安装过程中千万别ctrl+c
[root@K8s-master kube-prometheus-stack]# helm  -n kube-prometheus-stack install kube-prometheus-stack  .
NAME: kube-prometheus-stack
LAST DEPLOYED: Thu Sep 12 00:48:16 2024
NAMESPACE: kube-prometheus-stack
STATUS: deployed
REVISION: 1
NOTES:
kube-prometheus-stack has been installed. Check its status by running:
  kubectl --namespace kube-prometheus-stack get pods -l "release=kube-prometheus-stack"

Visit https://github.com/prometheus-operator/kube-prometheus for instructions on how to create & configure Alertmanager and Prometheus instances using the Operator.


#查看所有pod是否运行
[root@K8s-master kube-prometheus-stack]# kubectl --namespace kube-prometheus-stack get pods
NAME                                                        READY   STATUS    RESTARTS   AGE
alertmanager-kube-prometheus-stack-alertmanager-0           2/2     Running   0          16m
kube-prometheus-stack-grafana-5454bc564-brzss               3/3     Running   0          17m
kube-prometheus-stack-kube-state-metrics-7f5b74ff59-cfxqq   1/1     Running   0          48s
kube-prometheus-stack-operator-54659dc7c4-dmqp9             1/1     Running   0          17m
kube-prometheus-stack-prometheus-node-exporter-f9qqj        1/1     Running   0          17m
kube-prometheus-stack-prometheus-node-exporter-jbx9x        1/1     Running   0          17m
kube-prometheus-stack-prometheus-node-exporter-m25bq        1/1     Running   0          17m
prometheus-kube-prometheus-stack-prometheus-0               2/2     Running   0          16m

#查看svc
[root@K8s-master kube-prometheus-stack]# kubectl -n kube-prometheus-stack get svc
NAME                                             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
alertmanager-operated                            ClusterIP   None             <none>        9093/TCP,9094/TCP,9094/UDP   17m
kube-prometheus-stack-alertmanager               ClusterIP   10.97.56.49      <none>        9093/TCP,8080/TCP            17m
kube-prometheus-stack-grafana                    ClusterIP   10.106.35.232    <none>        80/TCP                       17m
kube-prometheus-stack-kube-state-metrics         ClusterIP   10.98.215.227    <none>        8080/TCP                     17m
kube-prometheus-stack-operator                   ClusterIP   10.109.176.94    <none>        443/TCP                      17m
kube-prometheus-stack-prometheus                 ClusterIP   10.102.125.114   <none>        9090/TCP,8080/TCP            17m
kube-prometheus-stack-prometheus-node-exporter   ClusterIP   10.102.42.218    <none>        9100/TCP                     17m
prometheus-operated                              ClusterIP   None             <none>        9090/TCP                     17m

#修改暴漏方式
[root@K8s-master kube-prometheus-stack]# kubectl -n kube-prometheus-stack edit svc kube-prometheus-stack-grafana
  type: LoadBalancer

[root@K8s-master kube-prometheus-stack]# kubectl -n kube-prometheus-stack edit svc kube-prometheus-stack-prometheus
  type: LoadBalancer

[root@K8s-master kube-prometheus-stack]# kubectl -n kube-prometheus-stack get svc
NAME                                             TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                         AGE
alertmanager-operated                            ClusterIP      None             <none>          9093/TCP,9094/TCP,9094/UDP      21m
kube-prometheus-stack-alertmanager               ClusterIP      10.97.56.49      <none>          9093/TCP,8080/TCP               21m
kube-prometheus-stack-grafana                    LoadBalancer   10.106.35.232    172.25.254.60   80:34292/TCP                    21m
kube-prometheus-stack-kube-state-metrics         ClusterIP      10.98.215.227    <none>          8080/TCP                        21m
kube-prometheus-stack-operator                   ClusterIP      10.109.176.94    <none>          443/TCP                         21m
kube-prometheus-stack-prometheus                 LoadBalancer   10.102.125.114   172.25.254.61   9090:39249/TCP,8080:35449/TCP   21m
kube-prometheus-stack-prometheus-node-exporter   ClusterIP      10.102.42.218    <none>          9100/TCP                        21m
prometheus-operated                              ClusterIP      None             <none>          9090/TCP                        21m

各个svc的作用

alertmanager-operated 告警管理

kube-prometheus-stack-grafana 展示prometheus采集到的指标

kube-prometheus-stack-prometheus-node-exporter 收集节点级别的指标的工具

kube-prometheus-stack-prometheus 主程序

2.3 登陆grafana

#查看grafana密码
[root@K8s-master ~]# cd helm/
[root@K8s-master helm]# kubectl -n kube-prometheus-stack get secrets kube-prometheus-stack-grafana -o yaml
apiVersion: v1
data:
  admin-password: cHJvbS1vcGVyYXRvcg==
  admin-user: YWRtaW4=
  ldap-toml: ""
kind: Secret
metadata:
  annotations:
    meta.helm.sh/release-name: kube-prometheus-stack
    meta.helm.sh/release-namespace: kube-prometheus-stack
  creationTimestamp: "2024-09-11T16:48:31Z"
  labels:
    app.kubernetes.io/instance: kube-prometheus-stack
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: grafana
    app.kubernetes.io/version: 11.2.0
    helm.sh/chart: grafana-8.5.1
  name: kube-prometheus-stack-grafana
  namespace: kube-prometheus-stack
  resourceVersion: "326952"
  uid: fcef5431-7838-49da-ad1f-4b7892ffa986
type: Opaque

#查看密码
[root@K8s-master helm]# echo -n "cHJvbS1vcGVyYXRvcg==" | base64 -d
prom-operator     #密码
[root@K8s-master helm]# echo -n "YWRtaW4=" | base64 -d
admin            #用户

浏览器访问172.25.254.60

2.4 导入面板

官方监控模板:Grafana dashboards | Grafana Labs

导入步骤如下:

导入后效果如下:

2.5 访问Prometheus 主程序

[root@k8s-master helm]# kubectl -n kube-prometheus-stack edit svc kube-prometheus-stack-prometheus
type: LoadBalancer

[root@K8s-master ~]# kubectl -n kube-prometheus-stack get svc kube-prometheus-stack-prometheus
NAME                               TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                         AGE
kube-prometheus-stack-prometheus   LoadBalancer   10.102.125.114   172.25.254.61   9090:39249/TCP,8080:35449/TCP   16h

三 监控使用示例

3.1 建立监控项目

打开监控功能

#下载示例所需helm项目
[root@k8s-master test]# helm  pull  bitnami/nginx --version 18.1.11
[root@k8s-master test]# ls
nginx-18.1.11.tgz  nginx-exporter-1.3.0-debian-12-r2.tar

[root@k8s-master test]# tar zxf nginx-18.1.11.tgz
[root@k8s-master test]# cd nginx/

#修改项目开启监控
[root@k8s-master nginx]# vim values.yaml
*** ***
metrics:
  ## @param metrics.enabled Start a Prometheus exporter sidecar container
  ##
  enabled: true
  ## Bitnami NGINX Prometheus Exporter image
  ## ref: https://hub.docker.com/r/bitnami/nginx-exporter/tags/
*** ***
  serviceMonitor:
    ## @param metrics.serviceMonitor.enabled Creates a Prometheus Operator ServiceMonitor (also requires `metrics.enabled` to be `true`)
    ##
    enabled: true
    ## @param metrics.serviceMonitor.namespace Namespace in which Prometheus is running
    ##
namespace: "kube-prometheus-stack"  #1021行
*** ***
    labels:          #1046行
      release: kube-prometheus-stack    #1047行          #指定监控标签



[root@k8s-master ~]# kubectl -n kube-prometheus-stack get servicemonitors.monitoring.coreos.com --show-labels

#安装项目,在安装之前一定要上传镜像到仓库中
[root@k8s-master nginx]# helm install  zhang .
NAME: zhang
LAST DEPLOYED: Tue Sep 10 23:18:19 2024
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: nginx
CHART VERSION: 18.1.11
APP VERSION: 1.27.1

[root@k8s-master nginx]# kubectl get pods
NAME                             READY   STATUS    RESTARTS   AGE
zhang-nginx-68dfdd6c-6gc69   2/2     Running   0          15s

root@k8s-master nginx]# kubectl get svc
NAME              TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                                     AGE
kubernetes        ClusterIP      10.96.0.1       <none>          443/TCP                                     7d5h
zhang-nginx      LoadBalancer   10.99.134.151   172.25.254.63   80:34867/TCP,443:31734/TCP,9113:34171/TCP    61s

[root@k8s-master nginx]# curl  172.25.254.63
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

#压力测试
[root@k8s-master nginx]# ab -c 5 -n 100 http://172.25.254.63/index.html

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

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

相关文章

【专题】2024跨境出海供应链洞察-更先进供应链报告合集PDF分享(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p37665 当前&#xff0c;全球化商业浪潮促使跨境电商行业飞速发展&#xff0c;产业带与跨境电商接轨、平台半托管模式涌现、社交电商带来红利机会以及海外仓不断扩张&#xff0c;这使得产业带外贸工厂、内贸工厂、传统进出口企业和品…

攻防世界---> 简单检查-100

学习笔记。 前言&#xff1a; 额&#xff0c;不会 gdb 一直以为reverse不会用到gdb&#xff0c;pwn才会使用到gdb。(已老实) 下载 查壳。 ida打开。 ida动态&#xff0c;发现&#xff0c;咱们输入的v8用v6的地址接收&#xff0c;且v8只是if判断&#xff0c;所以能够确定&#x…

响应式网站对seo有哪些影响?

响应式网站设计是一种能够自动调整布局以适应不同屏幕尺寸和设备类型的网站设计方法。这种设计方式对于搜索引擎优化&#xff08;SEO&#xff09;有着显著的影响&#xff0c;主要体现在以下几个方面&#xff1a; 响应式网站对seo都有哪些影响&#xff1f; 提高用户体验&#…

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程&#xff08;Gaussian Process&#xff0c;简称GP&#xff09;是一种概率模型&#xff0c;用于描述一组随机变量的联合概率分布&#xff0c;其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高…

mysql笔记6(数据库设计思维)

文章目录 1. 数据库设计基本概念① 什么叫关系&#xff1f;② 什么叫行&#xff1f;③ 什么叫列&#xff1f;④ 什么叫表结构&#xff1f;⑤ 为什么要提到实体和属性&#xff1f;⑥ 为什么有时候会在两张不同的表里建立重复的字段&#xff1f;⑦ 为什么有时候会故意设计一些冗余…

pgAdmin 4备份数据库失败,解决

pgAdmin4中&#xff0c;必须先设置二进制路径&#xff1b;binary paths pgAdmin4操作路径&#xff0c;File—>Preferences—>Paths—>Binary paths 找到postgreSQL的安装目录&#xff0c;bin目录复制&#xff0c;然后设置在截图标记位置&#xff1b; 再去备份数据库就…

uView使用心得

说实话我不爱用这个库&#xff0c;感觉很鸡肋&#xff0c;坑很多&#xff0c;可能没用习惯 picker选择器 绑定默认值是通过设置index&#xff0c;并且这个index需要通过api设置进去&#xff0c;设置defalutindex绑定值无效&#xff08;只有初始化可以&#xff0c;后面动态改变…

Marin说PCB之在CST软件中如何搭建两端子电容器--03

上期文章的结尾讲到的问题不知诸位大神们是否还记得&#xff1a;就是一颗新电容器的物料是否可以完全替换掉之前的Murata家的这个GRT033D70E105ME18物料&#xff1f; 小编我也看了私信有不少的人认为是可以替换掉的&#xff0c;原因是两个电容封装&#xff0c;容值都是一样的&a…

中国科技统计年鉴1991-2020年

&#xff08;数据收集&#xff09;中国科技统计年鉴1991-2020年.Excel格式资源-CSDN文库https://download.csdn.net/download/2401_84585615/89475658 《中国科技统计年鉴》是由国家统计局社会科技和文化产业统计司与科学技术部战略规划司共同编辑的官方统计资料书&#xff0c…

web基础之文件上传

1.下载安装 下载地址 链接&#xff1a;百度网盘-链接不存在 提取码&#xff1a;jhks 安装 直接把他放在phpstudy的WWW目录中。&#xff08;phpstudy的下载安装&#xff0c;可以自行百度一下&#xff09; 打开 访问地址&#xff1a;127.0.0.1/upload-labs 问题 这里可能…

每日一练:删除1链表的倒数第N个节点

19. 删除链表的倒数第 N 个结点 - 力扣&#xff08;LeetCode&#xff09; 一、题目要求 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例…

Ubuntu在CMakeLists.txt中指定OpenCV版本的参考方法

文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境&#xff1a;   Ubuntu20.04, ROS-Noetic, OpenCV-4.2.0, OpenCV-4.5.4。 一、问题描述 编译运行OpenCV遇到如下报错&#xff1a; terminate called after throwing an instance of cv::Excep…

springbootadmin源码编译修改001_node版本管理工具nvm_任意切换node版本---VUE工作笔记0026

由于项目需要对springbootadmin的源码进行编译和修改. 但是springbootadmin的源码编译很麻烦,主要是由于,springbootadmin-server-ui这个项目,因为他是一个前后端分离的 vue项目,而且是使用 https://github.com/coreybutler/nvm-windows/releases/tag/1.1.12 首先去下载,发…

Day 72

作业 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QLineEdit> #include <QLabel> #include <QIcon> #include <QPushButton> #include <QMovie> #include <QPainter> #include <QWidget> …

最好用的 Redis 可视化工具,不愧是官方出品,功能确实强大(带私活源码)

对于开发人员来说&#xff0c;很多人都用过Redis&#xff0c;它对于数据 key-value 结构的存储系统性能表现很优秀。 当然了&#xff0c;在很多的项目都用到。 当存储数据量比较大时&#xff0c;我们想要直观的看 Redis 里面的数据&#xff0c;除了代码&#xff0c;当然就要采…

基于Spark 的零售交易数据挖掘分析与可视化

基于Spark 的零售交易数据挖掘分析与可视化 本文将带你通过 PySpark 进行电商数据的分析处理&#xff0c;并将结果保存为 JSON 文件&#xff0c;供前端展示。我们将从数据的读取、处理、分析到结果保存和网页展示&#xff0c;覆盖完整的数据流。项目结构如下&#xff1a; 1、…

【HarmonyOS】鸿蒙头像上传-(编辑个人信息页- 头像上传)+实时数据更新

#效果图 #思路 ##步骤&#xff1a; ###一、利用picker api选择1张图片 实例化选择器参数(使用new PhotoSelectOptions())实例化图片选择器 (使用newPhotoViewPicker() )调用图片选择器的select方法传入选择器参数完成图片选取获得结果 利用picker api选择1张图片 async sele…

(一) 遥感中的大气窗口和 OBIA

摘要: 什么是地球的大气窗口? 不知您是否想过,光是如何穿过大气层到达地球的呢?这是源于大气中的臭氧、水、二氧化碳和其他分子,我们可以免受有害辐射的伤害。因此,我们只能看到电磁波谱的特定部分,这种现象被称为地球的“大气窗口”。 在遥感领域,传感器被建造来拾取那…

无人机巡检:突破传统局限,引领智能监测新时代

无人机行业正在经历快速发展&#xff0c;技术不断创新&#xff0c;应用领域不断拓展。从最初的航拍娱乐到如今的工业巡检、农业植保、物流配送、灾害救援等&#xff0c;无人机正展现出巨大的实用价值。如今&#xff0c;行业级无人机应用不断扩展&#xff0c;在测绘与泛测绘领域…

中控室控制台处在自动状态什么意思

在现代工业和智能控制系统中&#xff0c;中控室控制台作为集中控制和管理各种设备、系统和流程的核心&#xff0c;扮演着至关重要的角色。当提到中控室控制台处在自动状态时&#xff0c;这通常意味着控制台已经切换到一种高度智能化的工作模式&#xff0c;能够自动调整和管理各…