云原生系列之使用prometheus监控nginx

news2025/8/2 19:22:29

前言

大家好,又见面了,我是沐风晓月,本文主要讲解云原生系列之使用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 查看模板效果![请添加图片描述](https://img-blog.csdnimg.cn/ffb5e71d08024346be9b294f2237dace.png)
  • 八、Nginx常见监控指标
    • 8.1 基本活跃指标
    • 8.2 nginx的QPS
    • 8.3 nginx错误率
  • 九、总结

一. 实验环境

本次实验环境见下表:

操作系统服务器IPhostname
centos7.910.0.0.7mufengrow7
  • 查看操作系统
[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:
  -insecure
    	Ignore server certificate if using https (default true)
  -metrics.namespace string
    	Prometheus metrics namespace. (default "nginx")
  -nginx.scrape_timeout int
    	The number of seconds to wait for an HTTP response from the nginx.scrape_uri (default 2)
  -nginx.scrape_uri string
    	URI to nginx stub status page (default "http://localhost/status")
  -telemetry.address string
    	Address on which to expose metrics. (default ":9913")
  -telemetry.endpoint string
    	Path under which to expose metrics. (default "/metrics")
  -version
    	Print version information.

为了更直观一些,我们把参数用表格来展示:

参数描述
-insecure如果使用https,忽略服务器证书(默认为true)
-metrics.namespaceprometheus的metrics的命名空间(默认是nginx)
-nginx.scrape_timeout等待来自nginx的HTTP相应的秒数(默认是2秒)
-nginx.scrape_uri指定nginx状态页面的URI(默认是"http://localhost/status")
-telemetry.addressexporter暴露的端口(默认是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.yml
 SUCCESS: 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的步骤为:

  1. 安装Prometheus
  2. 编译安装nginx,注意nginx需要安装“nginx-moudle-vts”模块
  3. 安装“nginx-vts-exporter”,在设置对应的参数后启动
  4. 修改Prometheus的配置文件,添加监控ngxin的实例,并重新读取配置文件
  5. 进入Prometheus的WEB页面进行查看

我是沐风晓月,文章首发于csdn,你的支持就是我的动力。

💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~

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

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

相关文章

Linux系统中指针的详细分析与操作

文章目录 一、指针 二、指针的初始化 三、指针的运算 四、指针与数组 五、指针与字符串 六、函数指针 七、NULL 指针 八、对复杂指针的解释 C 语言指针真正精髓的地方在于指针可以进行加减法,这一点极大的提升了程序的对指针使用的灵活性,同时也…

【Linux】-- 工具介绍 vim_gcc/g++_gdb

目录 Linux中的软件管理工具 – yum 在Linux下安装软件的方式 认识yum 查找软件包 安装 卸载 lrzsz.x86_64 rz sz Linux中的编辑器 – vim vim的基本概念 vim各模式切换 vim命令模式命令 vim底行模式命令 gcc / g gcc / g的作用 gcc / g语法 预处理 编译 汇…

[ 攻防演练演示篇 ] 利用 shiro 反序列化漏洞获取主机权限

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

厦大纪老师chatgpt相关讲座3.7

在线更新数据,迭代学习训练,进而提高模型性能。 比较明显的是API部分,这一步学习的就是intruction,实现人机写作的复杂系统工程 数据充足,维基类似于百度百科 transformer结构更有优势,预测下一个字,模型越…

RK3399平台开发系列讲解(应用开发篇)断言的使用

🚀返回专栏总目录 文章目录 一、什么是断言二、静态断言三、运行时断言沉淀、分享、成长,让自己和他人都能有所收获!😄 📢断言为我们提供了一种可以静态或动态地检查程序在目标平台上整体状态的能力,与它相关的接口由头文件 assert.h 提供。 一、什么是断言 在编程中…

复位和时钟控制(RCC)

目录 复位 系统复位 电源复位 备份区复位 时钟控制 什么是时钟? 时钟来源 二级时钟源: 如何使用CubeMX配置时钟 复位 系统复位 当发生以下任一事件时,产生一个系统复位:1. NRST引脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWD…

51单片机数字电子钟开题报告

目录 选题背景 初步设计方案 芯片的选型 编译环境 关键问题 策略 方案 参考文献 选题背景 数字电子钟是一种受到越来越多人喜爱的钟表,其准确性和稳定性成为设计和研发的重要考虑因素。在现代社会,时间的准确性对于各行各业都非常重要&#xff0…

Http中post/get请求参数接收

1、 Http请求报文 Http请求报文示例图如下: ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE、HEAD、OPTIONS、PUT、TRACE。不过,当前的大多数浏览器只支持GET和POST,Spring 3.0提供了一个HiddenHttp…

[oeasy]python0100_wintel联盟_intel_微软_microsoft_msDOS_基尔代尔

wintel联盟 回忆上次内容 上次 了解了IBM的 背水一战 IBM 已经不在乎 软硬一体全自主的设计 了而采用了 开放的架构任何 硬件厂商和软件厂商 都可以来合作 以丧失 自主控制力的方式 获得了 对于 PC架构定义的荣誉 最终 后其身而身先外其身而身存 ibm兼容机的开放架构里 有两…

导出GIS | 将EXCEL表格中坐标导出成GIS格式文件

一 前言 EXCEL是我们日常工作学习数据处理的办公软件,操作易上手,几乎人人都会用。EXCEL表格能够处理各种数据,包括经纬度坐标数据,地址数据等等。 有时因工作需要需将表格中地址数据处理为GIS格式的文件,以便能够将数…

Java之内部类

目录 一.内部类 1.什么是内部类 2.内部类存在的原因 3. 内部类的分类 4.内部类的作用 二.成员内部类 1.基本概念 2.成员内部类的注意点 1.成员内部类可以用private方法进行修饰 2.成员内部类可以直接访问外部类的私有属性 3.外部类可以通过对象访问内部类的私有属性 …

量化择时——均线策略及改进方法(第1部分—因子测算)

文章目录道氏理论个股股价走势阶段板块、行业股价走势均线策略交易逻辑均线策略效果测算改进一:设置策略信号偏移量改进二:生成止盈止损信号道氏理论 使用盘面数据,根据计算出的一条或多条均线,判断入场与离场的时机,…

Redis学习(五):事务、持久化及使用Java操作Redis

事务 Redis事务本质:一组命令的集合。一个事务中的所有命令都会被序列化,在事务执行过程中,会按顺序执行。 一次性、顺序性、排他性!执行一系列的命令。 Redis单条命令保证原子性,但是事务不保证原子性! R…

MySQL面试题-日志

目录 1.MySQL 中常见的日志有哪些? 2.慢查询日志有什么用? 3.binlog 主要记录了什么? 4.Mysql的binlog有几种录入格式?分别有什么区别? 5.redo log 如何保证事务的持久性? 6.页修改之后为什么不直接刷…

Linux系统安装Docker

目录 Linux系统安装Docker 1、如果之前安装过旧版本的Docker,可以使用下面命令卸载 2、安装docker 3、启动docker 4、配置镜像加速 Linux系统安装Docker 前提:Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10&#xff0…

LearnDash Groups学习群组:您需要了解的一切

大约131k 网站使用 LearnDash。因此,毫无疑问,LearnDash是 WordPress 领域中最受欢迎的 LMS。而且,这是因为它具有强大的功能。但让它更受欢迎的是它与大多数第 3 方扩展很好地集成,并且比现有的任何其他 LMS 都更灵活。群组和群组…

扬帆优配|淡定的周期股走出慢牛,这些超跌大象股低估值

多只大市值股走势良好,超跌的绩优大盘股会否后发先至? 三一集团定下万亿市值方针 三一重工董事长许诺向金牌职工派发500万元巨额奖金刷屏网络,不过奖赏兑现的前提是三一集团的总市值要超越万亿元。 3月4日,在央视《对话》节目中…

同城外卖跑腿系统源码分析

外卖订餐已经成为很多“社畜”日常不可分割的一部分,足不出户,只需要一部电子设备即可在线订餐,并且可提供的选择非常多样化,与传统的电话订餐外卖模式相比也更便捷的多。 因此,同城外卖跑腿系统源码得以爆火&#xff…

微服务里的小问题

1.微服务为什么设置不同的namespace 为了实现三种服务三种情况下的隔离。 2.为什么要用nginx为naocos集群结点做负载均衡? 2.1 正向代理 就像我们访问外网需要一个代理。 2.2 反向代理 我们不需要访问真实的ip,只需要访问 这个服务的代理服务器即可&a…

【极致简洁】Python tkinter 实现下载工具,你想要的一键获取

嗨害大家好鸭!我是小熊猫~开发环境本次项目案例步骤成品效果【咱追求的就是一个简洁】界面如何开始?1.导入模块2.创建窗口【这步很重要】功能按键1.创建一个下拉列表2.设置下拉列表的值3.设置其在界面中出现的位置 column代表列 row 代表行4.设置下拉列表…