云原生系列之使用prometheus监控nginx
前言
大家好,又见面了,我是沐风晓月,本文主要讲解云原生系列之使用prometheus监控nginx
文章收录到 csdn 我是沐风晓月的博客【prometheus监控系列】专栏
,此专栏是沐风晓月
对云原生prometheus的的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业,阿里云社区专家博主😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘
文章目录
- 前言
- 一. 实验环境
- 二. nginx-vts-exporter简介
- 2.1 如何获取nginx exporter
- 2.2 nginx-vts-exporter简介
- 2.3 nginx-module-vts简介
- 三. 安装nginx1.22
- 3.1 下载nginx源码
- 3.2 下载nginx-module-vts模块
- 3.3 解压所有源码
- 3.4 安装编译nginx需要的依赖
- 3.5 编译安装nginx
- 3.6 修改nginx配置文件
- 3.7 检查nginx配置文件语法
- 3.8 启动nginx
- 3.9 查看nginx启动情况
- 3.10 登录网页验证模块
- 3.10.1 使用“nginx-module-vts”默认模式查看nginx状态
- 3.10.2 使用“nginx-module-vts”其他模式查看nginx状态
- 四. 安装nginx-vts-exporter
- 4.1 下载nginx_vts_exporter
- 4.2 解压nginx_vts_exporter
- 4.3 查看帮助文档
- 4.4 启动nginx-vts-exporter
- 4.5 查看nginx-vts-exporter启动状态
- 4.6 查看nginx-vts-exporter采集的数据
- 五. 配置prometheus拉取数据
- 5.1 修改prometheus的配置文件
- 5.2 让prometheus重新读取配置文件
- 六.查看prometheus的监控数据
- 6.1 到网页端查看prometheus监控目标
- 6.2 在prometheus网页查询结果
- 七、grafana导入模板
- 7.1 导入模板
- 7.2 查看模板效果
- 八、Nginx常见监控指标
- 8.1 基本活跃指标
- 8.2 nginx的QPS
- 8.3 nginx错误率
- 九、总结
一. 实验环境
本次实验环境见下表:
操作系统 | 服务器IP | hostname |
---|---|---|
centos7.9 | 10.0.0.7 | mufengrow7 |
- 查看操作系统
[root@mufengrow ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
- 查看hostname
# 修改hostname
[root@mufengrow ~]# hostname mufengrow7
[root@mufengrow ~]# bash# 查看hostname
[root@mufengrow7 ~]# hostname
mufengrow7
- 查看ip
[root@mufengrow7 ~]# ifconfig |grep inet |awk 'NR==1{print $2}'
10.0.0.7
本文中的prometheus监控软件已经安装好了,如果你还没安装,可以参考上一篇文章:prometheus安装及使用入门
更多内容关注csdn 【我是沐风晓月】
二. nginx-vts-exporter简介
2.1 如何获取nginx exporter
我们可以从prometheus官方的下载页面上看到,prometheus官方并没有提供官方对nginx的监控exporter。
那我们要怎么通过prometheus监控nginx呢?
在prometheus官方的下载页面,里面有提供一些比较好的第三方开源的exporter供我们使用。
prometheus官方下载页面:https://prometheus.io/download/
2.2 nginx-vts-exporter简介
我们都知道,nginx可以通过“ngx_http_stub_status_module”模块来显示自身的状态信息。但是状态页面显示的出来的结果又比较的简单,而且不符合prometheus采集数据的规范。所以就有人针对nginx
开源了一款prometheus监控nginx的exproter——“nginx-vts-exporter”。
nginx-vts-exporter的github地址:https://github.com/hnlq715/nginx-vts-exporter
通过查看github介绍可以知道该exproter不像官方提供的exporter一样简单的安装上了就可以采集数据。它需要nginx在编译安装的时候加上一个第三方的模块“nginx-module-vts”。通过这个第三方模块,将nginx更加详细的数据展示出来,然后通过“nginx-vts-exporter”进行采集展示,最后由prometheus进行采集汇总。
第三方模块的github地址:https://github.com/vozlt/nginx-module-vts
2.3 nginx-module-vts简介
“nginx-module-vts”是一个第三方的nginx模块
,提供了对nginx状态信息的访问。
“nginx-module-vts”模块提供了几种方式展示自己的状态,这个之后会说明。
但是“nginx-module-vts”模块对nginx的版本的支持是有要求的,在nginx1.4.x之前的版本都不支持。使用的时候需要注意。
三. 安装nginx1.22
3.1 下载nginx源码
下载nginx-1.22
的源码
[root@mufengrow7 ~]# cd /usr/local/src/
[root@mufengrow7 ~]# wget http://nginx.org/download/nginx-1.22.1.tar.gz
3.2 下载nginx-module-vts模块
下载nginx-module-vts用于之后的nginx编译安装
[root@mufengrow7 src]# wget https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.2.1.tar.gz
3.3 解压所有源码
解压nginx1.22的源码和解压nginx-module-vts模块的源码
#解压nginx1.22源码
[root@mufengrow7 src]# tar zxf nginx-1.22.1.tar.gz
#解压nginx-module-vts模块源码
[root@mufengrow7 src]# tar zxf v0.2.1.tar.gz
代码注释:
z
:指定解压的文件有gzip属性
x
:从归档文件中解压出文件。
f
:使用指定使用哪个归档文件。
3.4 安装编译nginx需要的依赖
编译安装nginx需要解决openssl和pcre的依赖,所以要提前将这两个包安装上
[root@mufengrow7 src]# yum install -y openssl-devel pcre-devel
3.5 编译安装nginx
编译安装nginx1.22,但是要注意的是我们需要在编译的参数里加上添加模块的参数“–add-module”,然后指向“nginx-module-vts”模块的源码路径
#进入nginx源码目录
[root@mufengrow7 src]# cd nginx-1.22.1/
#指定编译安装的参数,并进行检查,生成Makefile文件
[root@mufengrow7 nginx-1.22.1]# ./configure --prefix=/apps/nginx \
> --with-http_ssl_module \
> --with-http_v2_module \
> --with-http_realip_module \
> --with-http_stub_status_module \
> --with-http_gzip_static_module \
> --with-pcre \
> --with-file-aio \
> --with-stream \
> --with-stream_ssl_module \
> --with-stream_realip_module \
> --add-module=/usr/local/src/nginx-module-vts-0.2.1/ #指向“nginx-module-vts”模块源码的目录
#编译安装nginx
[root@mufengrow7 nginx-1.22.1]# make && make install
#查看nginx安装信息
[root@mufengrow7 nginx-1.22.1]# /apps/nginx/sbin/nginx -V
nginx version: nginx/1.22.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/apps/nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-file-aio --with-stream --with-stream_ssl_module --with-stream_realip_module --add-module=/usr/local/src/nginx-module-vts-0.2.1/ #可以看到“nginx-module-vts”模块已经安装到nginx里了
代码注释:
-V
:显示nginx版本和安装的配置
3.6 修改nginx配置文件
有人在想,如何修改nginx的配置文件才能让nginx的状态显示出来?
“nginx-module-vts”的github网页已经给出配置了
根据“nginx-module-vts”官方给除的配置修改nginx的配置文件,让nginx能展示出自己的状态。
#进入nginx的安装目录
[root@mufengrow7 nginx]# cd /apps/nginx/
#修改nginx的配置
[root@mufengrow7 nginx]# vim conf/nginx.conf
......
http {......;vhost_traffic_status_zone;......;server{......;location /status {vhost_traffic_status_display;vhost_traffic_status_display_format html;}}
}
3.7 检查nginx配置文件语法
修改配置文件后,需要检查nginx配置文件语法,查看是否出现语法上的错误
[root@mufengrow7 nginx]# ./sbin/nginx -t
nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok #这里显示ok就证明语法没问题,可以启动nginx
nginx: configuration file /apps/nginx/conf/nginx.conf test is successful
代码注释:
-t
:检查配置文件。
3.8 启动nginx
启动nginx
[root@mufengrow7 nginx]# ./sbin/nginx
3.9 查看nginx启动情况
[root@mufengrow7 nginx]# ps -ef | grep nginx | grep -v grep
root 5358 1 0 12:00 ? 00:00:00 nginx: master process ./sbin/nginx
nobody 5359 5358 0 12:00 ? 00:00:00 nginx: worker process
代码注释:
-
-ef
:在-ef
里可以分出两个选项-e
和-f
-
-e
:显示所有执行程序的进程(除会话领导者与终端关联的进程) -
-f
:显示UID,PPIP,C与STIME栏位 -
-v
:选择不匹配的行
3.10 登录网页验证模块
3.10.1 使用“nginx-module-vts”默认模式查看nginx状态
浏览器访问:
10.0.0.7/status
进入网页后,我们能看到模块给我们现实的结果
3.10.2 使用“nginx-module-vts”其他模式查看nginx状态
“nginx-module-vts”内置了4种查看nginx状态
的格式,我们上一点已经展示过使用html格式来展示nginx的状态,接下来我们会用“json”、“jsonp”、“prometheus”来展示nginx的状态。
- “json”格式
浏览器访问:http://10.0.0.7/status/format/json
四. 安装nginx-vts-exporter
4.1 下载nginx_vts_exporter
下载nginx_vts_exporter二进制包
#进入安装目录
[root@mufengrow7 nginx]# cd /apps
#下载nginx_vts_exporter二进制包
[root@mufengrow7 apps]# wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
4.2 解压nginx_vts_exporter
对nginx_vts_exporter二进制包进行解压
[root@mufengrow7 apps]# tar xf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
[root@mufengrow7 apps]# cd nginx-vts-exporter-0.10.3.linux-amd64/
解压后可以看到里面之后一个可执行文件
[root@mufengrow7 nginx-vts-exporter-0.10.3.linux-amd64]# ls
LICENSE nginx-vts-exporter
4.3 查看帮助文档
[root@mufengrow7 nginx-vts-exporter-0.10.3.linux-amd64]# ./nginx-vts-exporter --help
Usage of ./nginx-vts-exporter:-insecureIgnore server certificate if using https (default true)-metrics.namespace stringPrometheus metrics namespace. (default "nginx")-nginx.scrape_timeout intThe number of seconds to wait for an HTTP response from the nginx.scrape_uri (default 2)-nginx.scrape_uri stringURI to nginx stub status page (default "http://localhost/status")-telemetry.address stringAddress on which to expose metrics. (default ":9913")-telemetry.endpoint stringPath under which to expose metrics. (default "/metrics")-versionPrint version information.
为了更直观一些,我们把参数用表格来展示:
参数 | 描述 |
---|---|
-insecure | 如果使用https,忽略服务器证书(默认为true) |
-metrics.namespace | prometheus的metrics的命名空间(默认是nginx) |
-nginx.scrape_timeout | 等待来自nginx的HTTP相应的秒数(默认是2秒) |
-nginx.scrape_uri | 指定nginx状态页面的URI(默认是"http://localhost/status") |
-telemetry.address | exporter暴露的端口(默认是9913) |
-telemetry.endpoint | 公开的metrics路径(默认是“/metrics”) |
-version | 显示版本信息 |
4.4 启动nginx-vts-exporter
这里添加选项,让nginx-vts-exporter从nginx-module-vts的json格式下采集数据
[root@mufengrow7 nginx-vts-exporter-0.10.3.linux-amd64]# nohup /apps/nginx-vts-exporter-0.10.3.linux-amd64/nginx-vts-exporter -nginx.scrape_uri http://localhost/status/format/json &
[1] 5440
[root@mufengrow7 nginx-vts-exporter-0.10.3.linux-amd64]# nohup: ignoring input and appending output to ‘nohup.out’ #出现日志文件路径信息,继续按回车
[root@mufengrow7 nginx-vts-exporter-0.10.3.linux-amd64]# #回到标准输入的状态
4.5 查看nginx-vts-exporter启动状态
我们可以通过查看pid、端口和查看日志的方式确实“nginx-vts-exporter”的启动状态,通过下面的结果,我们可以看出“nginx-vts-exporter”已经在正常运行。
#查看pid
[root@mufengrow7 nginx-vts-exporter-0.10.3.linux-amd64]# ps -ef | grep nginx-vts-exporter | grep -v grep
root 5440 1680 0 12:36 pts/0 00:00:00 /apps/nginx-vts-exporter-0.10.3.linux-amd64/nginx-vts-exporter
#查看端口
[root@mufengrow7 nginx-vts-exporter-0.10.3.linux-amd64]# ss -tnl | grep 9913 | grep -v grep
LISTEN 0 128 [::]:9913 [::]:*
#查看日志
[root@mufengrow7 nginx-vts-exporter-0.10.3.linux-amd64]# tail -f nohup.out
2023/03/07 12:36:37 Starting nginx_vts_exporter (version=0.10.3, branch=HEAD, revision=8aa2881c7050d9b28f2312d7ce99d93458611d04)
2023/03/07 12:36:37 Build context (go=go1.10, user=root@56ca8763ee48, date=20180328-05:47:47)
2023/03/07 12:36:37 Starting Server at : :9913
2023/03/07 12:36:37 Metrics endpoint: /metrics
2023/03/07 12:36:37 Metrics namespace: nginx
2023/03/07 12:36:37 Scraping information from : http://localhost/status
4.6 查看nginx-vts-exporter采集的数据
浏览器访问
10.0.0.7:9913/metrics
五. 配置prometheus拉取数据
5.1 修改prometheus的配置文件
修改的方式如图:
其中job_name、prometheus读取配置文件的方式、目标的ip和端口都可以根据需求自行修改。
5.2 让prometheus重新读取配置文件
- 检查prometheus配置文件语法:
#进入prometheus安装目录
[root@mufengrow7 nginx-vts-exporter-0.10.3.linux-amd64]# cd /apps/prometheus
#执行命令检查语法
[root@mufengrow7 prometheus]# ./promtool check config prometheus.yml
Checking prometheus.ymlSUCCESS: prometheus.yml is valid prometheus config file syntax
- 重启prometheus
通过重启,让prometheus重新读取配置文件
[root@mufengrow7 prometheus]# systemctl restart prometheus
六.查看prometheus的监控数据
6.1 到网页端查看prometheus监控目标
我们到prometheus的网页端,查看prometheus采集数据的目标是否有有nginx,通过下图,我们知道prometheus
已经有采集nginx的数据了。
6.2 在prometheus网页查询结果
接下来我们到prometheus的查询面板查看prometheus有没有采集到nginx的数据
- 查询nginx版本
- 查看nginx出现“4XX”的次数
- 查看nginx的requests的次数
- 计算nginx在一分钟内的QPS
如果通过prometheus内置函数计算QPS,可以参考文章:prometheus常用的内置函数
通过以上的查询,我们也知道了prometheus有采集到nginx-vts-exproter的数据
七、grafana导入模板
本文中的grafana已经安装好了,如果你还未安装,可以参考文章:promehtheus整合grafana实现可视化监控实战
7.1 导入模板
grafana模板
推荐编号:2949
导入模板:
-
输入模板编号,点击Load
-
点击import
- 修改数据源,点击Import
7.2 查看模板效果
思考:
既然“nginx-module-vts”有专门给prometheus采集的格式,那么是否可以直接通过prometheus采集“nginx-module-vts”的数据,而不必添加一个“nginx-vts-module”的中间件呢?
答案:prometheus可以直接采集“nginx-module-vts”的数据
- 修改配置文件,如下图:
- Prometheus重启后,查看target
- 查询数据nginx的连接数
注意:对应的查询语句也要跟着改变,如果不知道查询语句的可以到“http://10.0.0.7/status/format/prometheus”进行查询
八、Nginx常见监控指标
8.1 基本活跃指标
nginx的基本活跃指标是可以通过“ngx_http_stub_status_module”模块来获取的。
名称 | 描述 |
---|---|
Accepts(接受) | nginx接受客户端的连接数 |
Handled(已处理) | 成功处理客户端连接数 |
Active(活跃) | 当前活跃的客户端连接数 |
Requests(请求数) | 客户端请求书 |
Waiting(等待) | 正在等待的连接数 |
Reading(读) | 正在读操作的连接数 |
Writing(写) | 正在写操作的连接书 |
8.2 nginx的QPS
我们可以使用Prometheus的PromQL的内置函数进行计算。
通过nginx计算的QPS,我们可以看出nginx服务的请求情况,通过QPS监控,可以了解是否有恶意攻击和对nginx的可行性进行判断。
8.3 nginx错误率
通过对错误代码的监控,可以知道客户端收到的结果是否正确。如果某段时间内错误结果不断飙升,证明网站可能出现物体
错误代码为:4XX(表示客户端错误代码) 5XX(表示服务端错误代码)
九、总结
Prometheus监控nginx的步骤为:
- 安装Prometheus
- 编译安装nginx,注意nginx需要安装“nginx-moudle-vts”模块
- 安装“nginx-vts-exporter”,在设置对应的参数后启动
- 修改Prometheus的配置文件,添加监控ngxin的实例,并重新读取配置文件
- 进入Prometheus的WEB页面进行查看
我是沐风晓月,文章首发于csdn,你的支持就是我的动力。
💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~
相关文章:

云原生系列之使用prometheus监控nginx
前言 大家好,又见面了,我是沐风晓月,本文主要讲解云原生系列之使用prometheus监控nginx 文章收录到 csdn 我是沐风晓月的博客【prometheus监控系列】专栏,此专栏是沐风晓月对云原生prometheus的的总结,希望能够加深自…...

第六届省赛——8移动距离(总结规律)
题目:X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3...当排满一行时,从下一行相邻的楼往反方向排号。比如:当小区排号宽度为6时,开始情形如下:1 2 3 4 5 612 11 10 9 8 713 14 1…...

C++vector 简单实现
一。概述 vector是我们经常用的一个容器,其本质是一个线性数组。通过对动态内存的管理,增删改查数据,达到方便使用的目的。 作为一个线性表,控制元素个数,容量,开始位置的指针分别是: start …...

通用缓存存储设计实践
目录介绍 01.整体概述说明 1.1 项目背景介绍1.2 遇到问题记录1.3 基础概念介绍1.4 设计目标1.5 产生收益分析 02.市面存储方案 2.1 缓存存储有哪些2.2 缓存策略有哪些2.3 常见存储方案2.4 市面存储方案说明2.5 存储方案的不足 03.存储方案原理 3.1 Sp存储原理分析3.2 MMKV存储…...

sheng的学习笔记Eureka Ribbon
Eureka-注册中心Eureka简介官方网址:https://spring.io/projects/spring-cloud-netflixEureka介绍Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现(请对比Zookeeper)。Zooleeper nacos.Eureka 采用了 C-S 的设计架构。Eureka Server 作为服…...

零代码工具我推荐Oracle APEX
云原生时代零代码工具我推荐Oracle APEX 国内的低码开发平台我也看了很多,感觉还是不太适合我这个被WEB抛弃的老炮。自从看了Oracle APEX就不打算看其它的了。太强大了,WEB服务器都省了,直接数据库到WEB页面。功能很强大,震撼到我…...

InstructGPT方法简读
InstructGPT方法简读 引言 仅仅通过增大模型规模和数据规模来训练更大的模型并不能使得大模型更好地理解用户意图。由于数据的噪声极大,并且现在的大多数大型语言模型均为基于深度学习的“黑箱模型”,几乎不具有可解释性和可控性,因此&…...
SpringCloud-5_模块集群化
避免一台Server挂掉,影响整个服务,搭建server集群创建e-commerce-eureka-server-9002微服务模块【作为注册中心】创建步骤参考e-commerce-eureka-server-9001修改pom.xml,加入依赖同9001创建resources/application.yml9002的ymlserver: # 修改端口号por…...

AQS底层源码深度剖析-BlockingQueue
目录 AQS底层源码深度剖析-BlockingQueue BlockingQueue定义 队列类型 队列数据结构 ArrayBlockingQueue LinkedBlockingQueue DelayQueue BlockingQueue API 添加元素 检索(取出)元素 BlockingQueue应用队列总览图 AQS底层源码深度剖析-BlockingQueue【重点中的重…...
Kotlin协程:Flow的异常处理
示例代码如下:launch(Dispatchers.Main) {// 第一部分flow {emit(1)throw NullPointerException("e")}.catch {Log.d("liduo", "onCreate1: $it")}.collect {Log.d("liudo", "onCreate2: $it")}// 第二部分flow …...

qt下ffmpeg录制mp4经验分享,支持音视频(h264、h265,AAC,G711 aLaw, G711muLaw)
前言 MP4,是最常见的国际通用格式,在常见的播放软件中都可以使用和播放,磁盘空间占地小,画质一般清晰,它本身是支持h264、AAC的编码格式,对于其他编码的话,需要进行额外处理。本文提供了ffmpeg录…...
C#读取Excel解析入门-1仅围绕三个主要的为阵地,进行重点解析,就是最理性的应对上法所在
业务中也是同样的功能点实现。只是多扩展了很多代码,构成了项目的其他部分,枝干所在。但是有用的枝干,仅仅不超过三个主要的!所以您仅仅围绕三个主要的为阵地,进行重点解析,就是最理性的应对上法所在了 str…...
一起Talk Android吧(第五百一十八回:在Android中使用MQTT通信五)
文章目录 知识回顾问题描述解决过程经验分享各位看官们大家好,这一回中咱们说的例子是" 在Android中使用MQTT通信五",本章回内容与前后章节内容无关联。闲话休提,言归正转,让我们一起Talk Android吧! 知识回顾 我们在前面章回中介绍了如何使用MQTT通信,包含它…...

100种思维模型之混沌与秩序思维模型-027
人类崇尚秩序与连续性,我们习惯于我们的日常世界,它以线性方式运作,没有不连续或突跳。 为此,我们学会了期望各种过程以连续方式运行,我们的内心为了让我们更有安全感,把很多事物的结果归于秩序,…...

Java开发 - Redis初体验
前言 es我们已经在前文中有所了解,和es有相似功能的是Redis,他们都不是纯粹的数据库。两者使用场景也是存在一定的差异的,本文目的并不重点说明他们之间的差异,但会简要说明,重点还是在对Redis的了解和学习上。学完本…...
Python - 使用 pymysql 操作 MySQL 详解
目录创建连接 pymsql.connect() 方法的可传参数连接对象 conn pymsql.connect() 方法游标对象 cursor() 方法使用示例创建数据库表插入数据操作数据查询操作数据更新操作数据删除操作SQL中使用变量封装使用简单使用: import pymysqldb pymysql.connect(host,user…...

机器学习-卷积神经网络CNN中的单通道和多通道图片差异
背景 最近在使用CNN的场景中,既有单通道的图片输入需求,也有多通道的图片输入需求,因此又整理回顾了一下单通道或者多通道卷积的差别,这里记录一下探索过程。 结论 直接给出结论,单通道图片和多通道图片在经历了第一…...

考研复试——计算机组成原理
文章目录计算机组成原理1. 计算机系统由哪两部分组成?计算机系统性能取决于什么?2. 冯诺依曼机的主要特点?3. 主存储器由什么组成,各部分有什么作用?4. 什么是存储单元、存储字、存储字长、存储体?5. 计算机…...

硬件设计 之摄像头分类(IR摄像头、mono摄像头、RGB摄像头、RGB-D摄像头、鱼眼摄像头)
总结一下在机器人上常用的几种摄像头,最近在组装机器人时,傻傻分不清摄像头的种类。由于本人知识有限,以下资料都是在网上搜索而来,按照摄像头的分类整理一下,供大家参考: 1.IR摄像头: IRinfr…...
PTA:C课程设计(2)
山东大学(威海)2022级大一下C习题集(2)2-5-1 字符定位函数(程序填空题)2-5-2 判断回文(程序填空题)2-6-1 数字金字塔(函数)2-6-2 使用函数求最大公约数(函数)2-6-3 使用函数求余弦函…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...