prometheus安装及使用

news/2025/1/20 13:45:56/文章来源:https://www.cnblogs.com/yanshier/p/18681184

Prometheus

架构图

环境准备: 10.0.0.31 prometheus-server31 2 core 2GB+10.0.0.32 prometheus-server32 1 core 1GB+10.0.0.33 prometheus-server331 core 1GB+10.0.0.41 node-exporter41 1 core 1GB+10.0.0.42 node-exporter42 1 core 1GB+10.0.0.43 node-exporter431 core 1GB+10.0.0.51 grafana512 core 2GB+- Prometheus概述:
官网地址:https://prometheus.io/github地址:https://github.com/prometheus/prometheus- Prometheus  一键部署1.下载Prometheus server 
[root@prometheus-server31 ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.53.3/prometheus-2.53.3.linux-amd64.tar.gz2.创建工作目录
[root@prometheus-server31 ~]# mkdir -pv /yanshier/softwares3.解压软件包 
[root@prometheus-server31 ~]# tar xf prometheus-2.53.3.linux-amd64.tar.gz -C /yanshier/softwares/4.启动Prometheus server 
[root@prometheus-server31 ~]# cd /yanshier/softwares/prometheus-2.53.3.linux-amd64/
[root@prometheus-server31 prometheus-2.53.3.linux-amd64]# 
[root@prometheus-server31 prometheus-2.53.3.linux-amd64]# ll
total 261340
drwxr-xr-x 4 1001 colord      4096 Nov  5 20:37 ./
drwxr-xr-x 3 root root        4096 Nov 11 09:42 ../
drwxr-xr-x 2 1001 colord      4096 Nov  5 20:35 console_libraries/
drwxr-xr-x 2 1001 colord      4096 Nov  5 20:35 consoles/
-rw-r--r-- 1 1001 colord     11357 Nov  5 20:35 LICENSE
-rw-r--r-- 1 1001 colord      3773 Nov  5 20:35 NOTICE
-rwxr-xr-x 1 1001 colord 137839708 Nov  5 20:19 prometheus*
-rw-r--r-- 1 1001 colord       934 Nov  5 20:35 prometheus.yml
-rwxr-xr-x 1 1001 colord 129729365 Nov  5 20:19 promtool*
[root@prometheus-server31 prometheus-2.53.3.linux-amd64]# 
[root@prometheus-server31 prometheus-2.53.3.linux-amd64]# ./prometheus 
ts=2024-11-11T01:42:50.535Z caller=main.go:589 level=info msg="No time or size retention was set so using the default time retention" duration=15d
ts=2024-11-11T01:42:50.536Z caller=main.go:633 level=info msg="Starting Prometheus Server" mode=server version="(version=2.53.3, branch=HEAD, revision=1491d29fb1e8f8acbab29fd54fd4ce9be2cbd7bc)"
ts=2024-11-11T01:42:50.536Z caller=main.go:638 level=info build_context="(go=go1.22.8, platform=linux/amd64, user=root@c6939e39a10c, date=20241105-12:18:07, tags=netgo,builtinassets,stringlabels)"
ts=2024-11-11T01:42:50.536Z caller=main.go:639 level=info host_details="(Linux 5.15.0-119-generic #129-Ubuntu SMP Fri Aug 2 19:25:20 UTC 2024 x86_64 prometheus-server31 (none))"
ts=2024-11-11T01:42:50.536Z caller=main.go:640 level=info fd_limits="(soft=1048576, hard=1048576)"
ts=2024-11-11T01:42:50.536Z caller=main.go:641 level=info vm_limits="(soft=unlimited, hard=unlimited)"
ts=2024-11-11T01:42:50.544Z caller=web.go:568 level=info component=web msg="Start listening for connections" address=0.0.0.0:9090
ts=2024-11-11T01:42:50.545Z caller=main.go:1148 level=info msg="Starting TSDB ..."
ts=2024-11-11T01:42:50.545Z caller=tls_config.go:313 level=info component=web msg="Listening on" address=[::]:9090
...5.访问Prometheus的WebUI
http://10.0.0.31:9090/

二进制部署node-exporter

node_exporter的作用:可以暴露Linux服务器的指标,可以采集CPU,内存,磁盘,网络等一系列使用情况,基于http协议暴露到外端。1.下载node-exporter
[root@node-exporter41 ~]# wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz2.创建工作目录 
[root@node-exporter41 ~]# mkdir -pv /yanshier/softwares3.解压node-exporter
[root@node-exporter41 ~]# tar xf node_exporter-1.8.2.linux-amd64.tar.gz -C /yanshier/softwares/4.启动node-exporter 
[root@node-exporter41 ~]# cd /yanshier/softwares/node_exporter-1.8.2.linux-amd64/
[root@node-exporter41 node_exporter-1.8.2.linux-amd64]# 
[root@node-exporter41 node_exporter-1.8.2.linux-amd64]# ll
total 20048
drwxr-xr-x 2 1001 1002     4096 Jul 14 19:58 ./
drwxr-xr-x 3 root root     4096 Nov 11 10:29 ../
-rw-r--r-- 1 1001 1002    11357 Jul 14 19:57 LICENSE
-rwxr-xr-x 1 1001 1002 20500541 Jul 14 19:54 node_exporter*
-rw-r--r-- 1 1001 1002      463 Jul 14 19:57 NOTICE
[root@node-exporter41 node_exporter-1.8.2.linux-amd64]# 
[root@node-exporter41 node_exporter-1.8.2.linux-amd64]# ./node_exporter 
ts=2024-11-11T02:29:41.996Z caller=node_exporter.go:193 level=info msg="Starting node_exporter" version="(version=1.8.2, branch=HEAD, revision=f1e0e8360aa60b6cb5e5cc1560bed348fc2c1895)"
ts=2024-11-11T02:29:41.996Z caller=node_exporter.go:194 level=info msg="Build context" build_context="(go=go1.22.5, platform=linux/amd64, user=root@03d440803209, date=20240714-11:53:45, tags=unknown)"
ts=2024-11-11T02:29:41.996Z caller=node_exporter.go:196 level=warn msg="Node Exporter is running as root user. This exporter is designed to run as unprivileged user, root is not required."
ts=2024-11-11T02:29:41.997Z caller=filesystem_common.go:111 level=info collector=filesystem msg="Parsed flag --collector.filesystem.mount-points-exclude" flag=^/(dev|proc|run/credentials/.+|sys|var/lib/docker/.+|var/lib/containers/storage/.+)($|/)
ts=2024-11-11T02:29:41.997Z caller=filesystem_common.go:113 level=info collector=filesystem msg="Parsed flag --collector.filesystem.fs-types-exclude" flag=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$
ts=2024-11-11T02:29:41.998Z caller=diskstats_common.go:111 level=info collector=diskstats msg="Parsed flag --collector.diskstats.device-exclude" flag=^(z?ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\d+n\d+p)\d+$
ts=2024-11-11T02:29:41.998Z caller=node_exporter.go:111 level=info msg="Enabled collectors"
ts=2024-11-11T02:29:41.998Z caller=node_exporter.go:118 level=info collector=arp
ts=2024-11-11T02:29:41.998Z caller=node_exporter.go:118 level=info collector=bcache
ts=2024-11-11T02:29:41.998Z caller=node_exporter.go:118 level=info collector=bonding
ts=2024-11-11T02:29:41.998Z caller=node_exporter.go:118 level=info collector=btrfs
ts=2024-11-11T02:29:41.998Z caller=node_exporter.go:118 level=info collector=conntrack
ts=2024-11-11T02:29:41.998Z caller=node_exporter.go:118 level=info collector=cpu
ts=2024-11-11T02:29:41.998Z caller=node_exporter.go:118 level=info collector=cpufreq
ts=2024-11-11T02:29:41.998Z caller=node_exporter.go:118 level=info collector=diskstats
...5.测试验证
http://10.0.0.41:9100/metrics参考格式说明:TYPE:表示metric的数据类型。HELP:表示metric帮助信息。metric:具体的指标标签:给指标打标签,起到标识性作用。# HELP node_cpu_seconds_total Seconds the CPUs spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="0",mode="idle"} 422.62
node_cpu_seconds_total{cpu="0",mode="iowait"} 0.17
node_cpu_seconds_total{cpu="0",mode="irq"} 0
node_cpu_seconds_total{cpu="0",mode="nice"} 0
node_cpu_seconds_total{cpu="0",mode="softirq"} 0.03
node_cpu_seconds_total{cpu="0",mode="steal"} 0
node_cpu_seconds_total{cpu="0",mode="system"} 3.98
node_cpu_seconds_total{cpu="0",mode="user"} 2.46
node_cpu_seconds_total{cpu="1",mode="idle"} 424.3
node_cpu_seconds_total{cpu="1",mode="iowait"} 0.27
node_cpu_seconds_total{cpu="1",mode="irq"} 0
node_cpu_seconds_total{cpu="1",mode="nice"} 0
node_cpu_seconds_total{cpu="1",mode="softirq"} 0.14
node_cpu_seconds_total{cpu="1",mode="steal"} 0
node_cpu_seconds_total{cpu="1",mode="system"} 2.59
node_cpu_seconds_total{cpu="1",mode="user"} 2.44

- node-exporter配置模块黑白名单

	1.默认启用,禁用的指标:
https://github.com/prometheus/node_exporter?tab=readme-ov-file#enabled-by-defaulthttps://github.com/prometheus/node_exporter?tab=readme-ov-file#disabled-by-default2.模块白名单
[root@node-exporter41 node_exporter-1.8.2.linux-amd64]# ./node_exporter --collector.cpu --collector.uname --collector.disable-defaults
ts=2024-11-11T02:51:24.052Z caller=node_exporter.go:193 level=info msg="Starting node_exporter" version="(version=1.8.2, branch=HEAD, revision=f1e0e8360aa60b6cb5e5cc1560bed348fc2c1895)"
ts=2024-11-11T02:51:24.052Z caller=node_exporter.go:194 level=info msg="Build context" build_context="(go=go1.22.5, platform=linux/amd64, user=root@03d440803209, date=20240714-11:53:45, tags=unknown)"
ts=2024-11-11T02:51:24.052Z caller=node_exporter.go:196 level=warn msg="Node Exporter is running as root user. This exporter is designed to run as unprivileged user, root is not required."
ts=2024-11-11T02:51:24.053Z caller=node_exporter.go:111 level=info msg="Enabled collectors"
ts=2024-11-11T02:51:24.053Z caller=node_exporter.go:118 level=info collector=cpu
ts=2024-11-11T02:51:24.053Z caller=node_exporter.go:118 level=info collector=uname
ts=2024-11-11T02:51:24.053Z caller=tls_config.go:313 level=info msg="Listening on" address=[::]:9100
ts=2024-11-11T02:51:24.053Z caller=tls_config.go:316 level=info msg="TLS is disabled." http2=false address=[::]:91003.模块黑名单
[root@node-exporter41 node_exporter-1.8.2.linux-amd64]# ./node_exporter --no-collector.cpu注意,只需要将"--no-collector.MODULE",将NAME换成你需要禁用的模块即可。温馨提示:将41-43节点都安装上node-exporter

- Prometheus监控node-exporter实战

	1.修改Prometheus的配置文件 
[root@prometheus-server31 ~]# vim /yanshier/softwares/prometheus-2.53.3.linux-amd64/prometheus.yml 
...
# 全局配置
global:# 采集目标(targets)的时间间隔scrape_interval: 3s......
# 抓取配置
scrape_configs:...- job_name: "yanshier-node-exporter"metrics_path: "/metrics"scheme: "http"static_configs:- targets: ["10.0.0.41:9100","10.0.0.42:9100","10.0.0.43:9100"]     2.重新加载配置 
[root@prometheus-server31 ~]# curl -X POST 10.0.0.31:9090/-/reload3.访问WebUI验证 
http://10.0.0.31:9090/targetshttp://10.0.0.31:9090/config- prometheus metrics type
prometheus监控中采集过来的数据统一称为Metrics数据,其并不是代表具体的数据格式,而是一种统计度量计算单位。当我们需要为某个系统或者某个服务做监控时,就需要使用到metrics。prometheus支持的metrics包括但不限于以下几种数据类型:guage:最简单的度量指标,只是一个简单的返回值,或者叫瞬时状态。比如说统计硬盘,内存等使用情况。counter:就是一个计数器,从数据量0开始累积计算,在理想情况下,只能是永远的增长,不会降低(有特殊情况,比如粉丝量)。比如统计1小时,1天,1周,1一个月的用户访问量,这就是一个累加的操作。histogram:是统计数据的分布情况,比如最小值,最大值,中间值,中位数等,代表的是一种近似百分比估算数值。通过histograms可以分别统计处在一个时间段(1s,2s,5s,10s)内nginx访问用户的响应时间。summary:summary是histograms的扩展类型,主要弥补histograms不足。- PromQL语句初体验up判断一个被监控目标是否存活,若存活则为1,若不存或则为0。node_load5-0查询5分钟内的负载,不显示metrics。node_cpu_seconds_total{instance="10.0.0.42:9100"}基于标签过滤,查询10.0.0.42节点的CPU信息。node_cpu_seconds_total{instance="10.0.0.42:9100",mode="idle",cpu="1"}可以定义多个过滤参数,使用逗号分隔即可。node_cpu_seconds_total{instance="10.0.0.42:9100",cpu="1",mode!="idle"}表示查询CPU不等于"idle"的模式。node_cpu_seconds_total{instance="10.0.0.42:9100",cpu="1",mode=~"i.*"}	支持基于正则匹配我们需要的数据,表示查询以i开头的所有模式。node_cpu_seconds_total{instance="10.0.0.42:9100",cpu="1",mode!~"i.*"}取反效果,表示查询不以i开头的所有模式。node_cpu_seconds_total{instance="10.0.0.42:9100",cpu="1",mode="idle"}[10s]表示查询10s内CPU采集的数据信息。- Prometheus常用的函数
官方文档:https://prometheus.io/docs/prometheus/2.53/querying/functions/实验环境准备:
[root@node-exporter42 ~]# apt -y install stress
[root@node-exporter42 ~]# 
[root@node-exporter42 ~]# stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 20mincrease函数:用来针对counter数据类型,截取其中一段时间总的增量。例子:increase(node_cpu_seconds_total{mode="idle",cpu="0", instance="10.0.0.42:9100"}[1m])统计1分钟内,使用标签过滤器查看"10.0.0.42:9100"节点的第0颗CPU,空闲状态使用的总时间增量。sum函数:加和的作用。例子:sum(increase(node_cpu_seconds_total{mode="idle",cpu="0"}[1m]))统计1分钟内,使用标签过滤器查看所有节点的第0颗CPU,空闲状态使用的总时间增量,并将返回结果累加。avg函数:求平均值。avg(increase(node_cpu_seconds_total{mode="idle",cpu="0"}[1m]))max函数:求最大值。max(increase(node_cpu_seconds_total{mode="idle",cpu="0"}[1m]))min:求最小值。min(increase(node_cpu_seconds_total{mode="idle",cpu="0"}[1m]))by函数:将数据进行分组,类似于MySQL的"GROUP BY"。举个例子:sum(increase(node_cpu_seconds_total{mode="idle"}[1m])) by (instance)统计1分钟内,使用标签过滤器查看CPU空闲状态,并将结果进行累加,基于instance进行分组。rate函数:它的功能是按照设置的时间段,取counter在这个时间段中平均每秒的增量。举个例子:rate(node_cpu_seconds_total{mode="idle",cpu="0", instance="10.0.0.42:9100"}[1m])统计1分钟内,使用标签过滤器查看"10.0.0.42:9100"节点的第0颗CPU,空闲状态使用的每秒的增量。increase和rate如何选择:(1)对于采集数据频率较低的场景建议使用increase函数,因为使用rate函数可能会出现断点,比如针对硬盘容量监控。(2)对于采集数据频率较高的场景建议使用rate函数,比如针对CPU,内存,网络流量等都是可以基于rate函数来采集等。topk函数:取前几位的最高值,实际使用的时候一般会用该函数进行瞬时报警,而不是为了观察曲线图。举个例子:topk(3, rate(node_cpu_seconds_total{mode="idle"}[1m]))统计1分钟内,使用标签过滤器查看CPU,所有状态使用的每秒的增量,只查看前3个节点。count函数:把数值符合条件的,输出数目进行累加加和。比如说企业中有100台服务器,如果只有10台服务器CPU使用率高于80%时候是不需要报警的,但是数量超过70台时就需要报警了。举个例子:count(yanshier_tcp_wait_conn > 500):假设yanshier_tcp_wait_conn是咱们自定义的KEY。若TCP等待数量大于500的机器数量就判断条件为真。count(rate(node_cpu_seconds_total{cpu="0",mode="idle"}[1m]))对统计的结果进行计数。- 统计各个节点CPU的使用率1.我们需要先找到CPU相关的KEY
node_cpu_seconds_total2.过滤出CPU的空闲时间({mode='idle'})和全部CPU的时间('{}')
node_cpu_seconds_total{mode='idle'}过滤CPU的空闲时间。
node_cpu_seconds_total{}此处的'{}'可以不写,因为里面没有任何参数,代表获取CPU的所有状态时间。3.统计1分钟内CPU的增量时间
increase(node_cpu_seconds_total{mode='idle'}[1m])统计1分钟内CPU空闲状态的增量。
increase(node_cpu_seconds_total[1m])统计1分钟内CPU所有状态的增量。4.将结果进行加和统计
sum(increase(node_cpu_seconds_total{mode='idle'}[1m]))将1分钟内所有CPU空闲时间的增量进行加和计算。
sum(increase(node_cpu_seconds_total[1m]))将1分钟内所有CPU空闲时间的增量进行加和计算。5.按照不同节点进行分组
sum(increase(node_cpu_seconds_total{mode='idle'}[1m])) by (instance)将1分钟内所有CPU空闲时间的增量进行加和计算,并按照机器实例进行分组。
sum(increase(node_cpu_seconds_total[1m])) by (instance)将1分钟内所有CPU空闲时间的增量进行加和计算,并按照机器实例进行分组。6.计算1分钟内CPU空闲时间的百分比
sum(increase(node_cpu_seconds_total{mode='idle'}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance)7.统计1分钟内CPU的使用率,计算公式: (1 - CPU空闲时间的百分比) * 100%。
(1 - sum(increase(node_cpu_seconds_total{mode='idle'}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance)) * 1008.统计1小时内CPU的使用率,计算公式: (1 - CPU空闲时间的百分比) * 100%。
(1 - sum(increase(node_cpu_seconds_total{mode='idle'}[1h])) by (instance) / sum(increase(node_cpu_seconds_total[1h])) by (instance)) * 100最终结果:1.计算CPU一分钟内的使用率
(1 - (sum(increase(node_cpu_seconds_total{mode='idle'}[1m])) by (instance)) / sum(increase(node_cpu_seconds_total[1m])) by (instance)) * 1002 计算CPU用户态的1分钟内百分比
sum(increase(node_cpu_seconds_total{mode='user'}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance) * 1003 计算CPU内核态的1分钟内百分比
(sum(increase(node_cpu_seconds_total{mode='system'}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance)) * 1004 计算CPU IO等待时间的1分钟内百分比
(sum(increase(node_cpu_seconds_total{mode='iowait'}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance)) * 1005.计算CPU nice时间的1分钟内百分比
(sum(increase(node_cpu_seconds_total{mode='nice'}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance)) * 1006.计算CPU softirq软中断时间的1分钟内百分比
(sum(increase(node_cpu_seconds_total{mode='softirq'}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance)) * 1007.计算CPU steal虚拟机CPU时间被物理机偷走时间的1分钟内百分比
(sum(increase(node_cpu_seconds_total{mode='steal'}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance)) * 1008.计算CPU irq中断时间的1分钟内百分比
(sum(increase(node_cpu_seconds_total{mode='irq'}[1m])) by (instance) / sum(increase(node_cpu_seconds_total[1m])) by (instance)) * 100

- ubuntu部署grafana

grafana是一款优秀的开源图形化展示界面,支持以Prometheus为数据源展示数据。1.准备MySQL数据源 
[root@prometheus-server31 ~]# wget http://192.168.13.253/Resources/Docker/softwares/yanshier-autoinstall-docker-docker-compose.tar.gz[root@prometheus-server31 ~]# tar xf yanshier-autoinstall-docker-docker-compose.tar.gz [root@prometheus-server31 ~]# ./install-docker.sh i[root@prometheus-server31 ~]# wget http://192.168.13.253/Resources/Docker/images/WordPress/yanshier-mysql-v8.0.36-oracle.tar.gz[root@prometheus-server31 ~]# docker load  -i yanshier-mysql-v8.0.36-oracle.tar.gz [root@prometheus-server31 ~]# docker run -d --network host --restart always -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -e MYSQL_DATABASE=prometheus -e MYSQL_USER=grafana -e MYSQL_PASSWORD=yanshier --name mysql-server mysql:8.0.36-oracle[root@prometheus-server31 ~]# docker exec -it mysql-server mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.36 MySQL Community Server - GPLCopyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| prometheus         |
| sys                |
+--------------------+
5 rows in set (0.01 sec)mysql> 
mysql> SHOW TABLES FROM prometheus;
Empty set (0.01 sec)mysql> 
mysql> 2.安装grafana依赖库
[root@grafana51 ~]# apt-get install -y adduser libfontconfig1 musl3.下载grafana
[root@grafana51 ~]# wget https://dl.grafana.com/enterprise/release/grafana-enterprise_9.5.21_amd64.deb4.安装grafana 
[root@grafana51 ~]# dpkg -i grafana-enterprise_9.5.21_amd64.deb 5.修改grafana的配置文件[根据你的MySQL环境做修改即可]
[root@grafana51 ~]# vim /etc/grafana/grafana.ini 
...
[database]
...
type = mysql
host = 10.0.0.31:3306
name = prometheus
user = grafana
password = yanshier     温馨提示:如果我们不配置MySQL作为grafana的数据源,则默认会将数据存储在"/var/lib/grafana"目录的sqlite3数据库中。sqlite3数据库性能相比于MySQL较弱,生产环境建议更换为MySQL作为grafana的数据库存储哟~6.启动grafana 
[root@grafana51 ~]# systemctl enable --now grafana-server.service 
[root@grafana51 ~]# 
[root@grafana51 ~]# ss -ntl | grep 3000
LISTEN 0      4096               *:3000            *:*          
[root@grafana51 ~]# 7.访问grafana的WebUI
http://10.0.0.51:3000/默认的用户名和密码均为: admin- grafana基本使用grafana免费开源代码原地址
https://grafana.com/grafana/dashboards/
---------------------------------------------------------
Prometheus通过pull拉取pushgatway与exproters的数据放在存储IO并提供webUI进行临时查询数据同时编写对应promQL查询数据的语法由grafana图形化展示实现存储APIclients--开发人员基于库操作

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

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

相关文章

【SQL Server】Service Broker——在单个数据库建完成对话

一般来说,在SQL Server中调用存储过程,是同步的。如果一个操作比较长,那么我们我们希望执行异步操作。 消息队列概念 。消息队列在SQL Server李,是一种存储消息的结构。消息生产者将消息发送到队列中,而消息消费者则从队列中读取并处理消息。这种机制实现了应用程序组件之…

uos 开发笔记

version GLIBCXX_3.4.26 not found的问题解决 一查看是否有这个库/lib64/libstdc++.so.6 二查看这个库/lib64/libstdc++.so.6中的的GLIBCXX的支持的版本 经查看是环境里已经有这个库,并且是个软连接,软连接到libstdc++.so.6.0.19查看这个库/lib64/libstdc++.so.6中的的GLIBC…

C#/.NET/.NET Core技术前沿周刊 | 第 22 期(2025年1.13-1.19)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等…

映射注入

一、前言 在所有先前的实现中,私有内存类型都用于在执行期间存储有效负载。私有内存是使用 VirtualAlloc 或 VirtualAllocEx 分配的,如下图所示可以看到内存类型属于Private二、映射内存注入 分配私有内存的过程因被恶意软件广泛使用而受到安全解决方案的高度监控。为了避免使…

攀高行为检测识别摄像机

攀高行为检测识别摄像机具有高清晰度和远程监控功能。通过高清晰度的摄像头捕捉到工作人员在高空作业中的实时图像,并通过远程监控系统进行数据传输和处理。管理人员可以随时随地查看工作人员的操作情况,及时发现异常行为并采取相应措施。攀高行为检测识别摄像机支持多种智能…

升降梯人数统计识别摄像机

升降梯人数统计识别摄像机具有高效的图像识别功能。通过高清晰度的摄像头捕捉到升降梯内乘客的图像,并通过图像识别技术进行快速准确的人数统计。并通过智能算法对数据进行融合分析。通过多源数据融合分析,可以更加全面准确地评估升降梯内乘客流量情况。升降梯人数统计识别摄…

边坡监测预警摄像机

边坡监测预警摄像机是一种结合了摄像技术和智能算法的设备,能够实时监测边坡的变化情况,并通过分析和识别地表位移、裂缝扩展等特征来提供监测和预警服务。这种摄像机在土木工程、地质灾害防治、城市规划等领域有着广泛的应用,可以帮助管理人员及时发现潜在风险并采取相应措…

防疲劳驾驶摄像头

防疲劳驾驶摄像头具有高清晰度和远程监控功能。通过高清晰度的摄像头实时捕捉到驾驶员的面部表情和眼睛活动情况,并通过远程监控系统进行数据传输和处理。当系统检测到驾驶员出现打哈欠、频繁眨眼等疲劳征兆时,会自动触发警示系统,提醒司机注意休息或换班。防疲劳驾驶摄像头…

vue3.5保证你看得明明白白

子组件中设置默认属性 <template><div class="child-page"><h1>我是子组件</h1><h3>{{ total }}</h3><h3>{{ userInfo }} </h3></div> </template><script setup> // 在<script setup>defi…

工作时间离岗智能识别监测系统

工作时间离岗智能识别监测系统基于YOLOX和RNN的深度学习算法,工作时间离岗智能识别监测系统系统利用现场已有的监控摄像机识别监控画面中的人员位置和行为特征。通过深度学习算法的处理,系统能够自动识别员工是否离岗,并计算离岗时间。一旦员工离岗时间超出预设的安全阈值,…

RADXA 5B 开启 USB OTG 网络(虚拟网卡)

RADXA 5B 开启 USB OTG 网络(虚拟网卡)按照官方文档进行配置, 会不成功 确保 USB-A 接口主板上, 插入 USB3.0 下方接口(按着主板)配置设备树 Overlays打开系统配置工具sudo rsetup依次选择 Overlays -> 警告Yes -> Manage overlays -> 空格选中Set OTG port 1 to Peri…

一架小飞机有 4 排座位,每排有 3 个座位。已经有八名乘客登机,他们在这些座位中随机就坐

问题111: 一架小飞机有 4 排座位,每排有 3 个座位。已经有八名乘客登机,他们在这些座位中随机就坐.一架小飞机有 4 排座位,每排有 3 个座位。已经有八名乘客登机,他们在这些座位中随机就坐. 接下来要登机的是一对夫妻. 问这对夫妻能够坐在同一排的 2 个相邻座位上的概率是多…