ELK日志管理

news2024/11/24 11:10:08

目录

一.ELK简介

1.Elasticsearch

2.Logstash

4.ELK 组件解决的主要问题

5.ELK应用的好处

6.ELK的工作原理

7.ELK的主要应用场景

二.安装部署ELK

1.前期准备

2.安装部署ElasticseaErch 软件

3. 在apache节点上 部署  Logstash

4.安装 kibana

三.实现nginx日志管理


一.ELK简介

ELK Stack:Elasticsearch、Kibana、Beats 和 Logstash | Elastic

通俗来讲,ELK 是由 Elasticsearch、Logstash、Kibana 三个开源软件的组成的一个组合体,ELK 是 elastic 公司研发的一套完整的日志收集、分析和展示的企业级解决方案,在这三个软件当中,每个软件用于完成不同的功能,ELK 又称为ELK stack,官方域名为 elastic.co,ELK stack 的主要优点有如下几个:处理方式灵活: elasticsearch 是实时全文索引,具有强大的搜索功能配置相对简单:elasticsearch 的 API 全部使用 JSON 接口,logstash 使用模块配置,kibana 的配置文件部分更简单。检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。集群线性扩展:elasticsearch 和 logstash 都可以灵活线性扩展前端操作绚丽:kibana 的前端设计比较绚丽,而且操作简单

1.Elasticsearch

一个分布式、RESTful风格的搜索和数据分析引擎。它设计用于实时搜索,可以处理大规模数据的存储和分析。Elasticsearch使用Lucene作为底层的搜索引擎,提供了强大的全文搜索、结构化查询和分析能力。

Elasticsearch 使用 Java 语言开发,是建立在全文搜索引擎 Apache Lucene 基础之上的搜索引擎,Apache Lucene - Welcome to Apache Lucene。

Elasticsearch 的特点

  • 实时搜索、实时分析

  • 分布式架构、实时文件存储

  • 文档导向,所有对象都是文档

  • 高可用,易扩展,支持集群,分片与复制

  • 接口友好,支持 json

2.Logstash

一个用于日志数据收集、转换和发送的开源工具。Logstash可以从多个来源收集数据,对数据进行处理和转换(如过滤、格式化),然后将数据发送到各种目的地,如Elasticsearch、其他存储系统或者消息队列。

3.Kibana

一个用于数据可视化的开源工具。Kibana提供了一个基于Web的界面,让用户能够搜索、查看和交互存储在Elasticsearch索引中的数据。它支持各种图表、表格、地图等形式的数据可视化,帮助用户更好地理解数据和发现数据中的模式。

4.ELK 组件解决的主要问题

分布式日志数据统一收集,实现集中式查询和管理

Logstash 可以从分布式环境中收集日志数据,支持多种来源的日志收集,如文件、消息队列、数据库等,通过统一格式化和过滤后发送到 
Elasticsearch 进行存储和索引。Elasticsearch 作为分布式的搜索和分析引擎,能够存储大规模的日志数据,并支持高效的搜索和聚合查询,实现集中式的数据查询和管理。

故障排查

ELK Stack 提供强大的日志分析和搜索能力,可以帮助运维人员快速定位和解决系统中的故障问题。
通过 Kibana 的实时图表和仪表板功能,运维人员可以可视化地监控系统运行状态、识别异常事件,并进行相关的调查和处理。

安全信息和事件管理

ELK Stack 可以用于集中管理和分析安全相关的日志信息,如入侵检测系统(IDS)、防火墙日志、认证和授权日志等。
Elasticsearch 的强大搜索和分析功能可以用于快速检测和响应安全事件,帮助组织提升安全防护和响应能力。

报表功能

Kibana 提供了丰富的数据可视化功能,可以创建定制化的报表和仪表板,将数据以图表和表格形式展示,支持各种数据分析需求和业务报告的生成。

5.ELK应用的好处
  1. 日志查询和问题排查

    Elasticsearch 作为一个强大的实时搜索和分析引擎,能够快速索引和存储大量日志数据。通过Elasticsearch,可以进行高效的日志查询,帮助运维人员快速定位问题,进行故障排查和日志分析。
  2. 故障恢复和自愈

    ELK技术栈通过实时的数据索引和分析能力,支持快速响应故障情况。运维团队可以利用实时监控和预警功能,在系统出现异常时迅速发现并采取相应的措施,从而实现故障的快速恢复和自动化处理。
  3. 应用日志分析和错误报警

    使用Logstash作为日志收集、处理和转发的工具,可以从各种数据源(如应用程序、服务器日志等)中采集数据,并经过处理后发送到Elasticsearch进行存储和分析。通过Kibana提供的数据可视化功能,可以实时监控应用程序的日志信息,快速识别和报警异常情况,及时处理问题。
  4. 性能分析

    ELK技术栈能够不仅仅分析日志,还可以进行性能分析。通过监控系统和应用程序的指标,如CPU使用率、内存使用情况、网络流量等,可以帮助运维团队发现性能瓶颈和优化机会,提高系统的稳定性和性能。
  5. 用户行为分析

    借助Elasticsearch强大的分析能力,可以对用户行为数据进行收集、存储和分析。通过分析用户的操作行为、偏好和趋势,可以为产品改进、市场营销和用户体验优化提供数据支持。
6.ELK的工作原理
  1. 部署 Logstash

    Logstash通常部署在需要收集日志的服务器上,也可以集中部署在一个日志服务器上。它负责从各种数据源(如日志文件、消息队列等)收集数据。
  2. 数据处理和输出

    Logstash接收到原始数据后,会进行数据过滤、解析和格式化。这些步骤包括解析数据、标准化格式、甚至是数据的增强和转换(如IP地址转换为地理位置)等。
  3. 数据存储与索引

    格式化后的数据被送入Elasticsearch集群进行存储和索引。Elasticsearch是一个分布式搜索和分析引擎,能够快速索引大量数据,并支持复杂的查询。
  4. 数据可视化

    Kibana作为ELK技术栈中的可视化工具,通过与Elasticsearch集成,可以实时查询和分析存储在Elasticsearch中的数据。Kibana提供了丰富的图表、表格和地图等视觉化组件,用于用户界面的数据展示和交互。
  5. 实时监控和警报

    ELK技术栈可以配置实时监控和警报机制,使得系统能够在发生关键事件或达到特定阈值时即时通知相关人员。

总体来说,ELK技术栈通过Logstash收集、处理和传输数据,Elasticsearch进行存储和索引,Kibana进行数据可视化和交互,使得用户能够实现对日志和其他数据源的集中管理、实时分析和可视化展示,从而帮助企业快速响应问题、优化系统性能和提升运维效率。

7.ELK的主要应用场景
  1. EL日志集中管理与分析

    ELK最常见的用途是实时收集、存储和分析大量的日志数据。通过Logstash收集来自各种数据源的日志,经过Elasticsearch的索引和存储,再由Kibana进行可视化展示和分析。这种集中管理和分析日志的能力,使得运维团队能够快速识别和解决系统问题,改善系统稳定性和可靠性。
  2. 应用性能监控与优化

    通过监控应用程序的日志和性能指标(如CPU使用率、内存占用、请求响应时间等),ELK可以帮助开发团队分析和优化应用程序的性能。这种实时的监控和分析能力,有助于提前发现潜在的性能问题,并迅速采取措施进行优化,从而提升用户体验和系统效率。
  3. 安全事件监控与分析

    ELK技术栈也被广泛应用于安全信息和事件管理(SIEM)。通过收集和分析安全事件日志(如入侵检测系统、防火墙日志等),可以快速检测潜在的安全威胁和异常行为。Elasticsearch的强大搜索和分析功能,结合Kibana的可视化能力,使安全团队能够及时响应和应对安全事件,加强系统的安全防护。
  4. 业务智能与数据分析

    ELK不仅限于日志管理和安全监控,还可以用于业务智能和数据分析。企业可以利用Elasticsearch强大的搜索和分析引擎,结合Kibana的可视化功能,分析业务数据趋势、用户行为和市场动态,为决策提供数据支持和见解。
  5. IoT数据分析

    随着物联网(IoT)设备的普及,ELK技术栈也被应用于IoT数据的收集、存储和分析。通过Logstash收集IoT设备生成的数据流,经过Elasticsearch进行实时索引和存储,再由Kibana进行数据可视化,帮助企业理解和优化IoT设备的性能、运行状况和用户体验。

二.安装部署ELK

节点地址服务
node1节点(2C/4G)node1/192.168.240.11Elasticsearch
node2节点(2C/4G)node2/192.168.240.12    Elasticsearch
Apache节点apache/192.168.240.13    Logstash  Kibana  Apache
1.前期准备

1.1 安装java环境

java -version										#如果没有安装,yum -y install java
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

1.2 关闭防火墙和selinux

systemctl disable  --now   firewalld
setenforce 0
2.安装部署ElasticseaErch 软件

2.1  安装ElasticseaErch 软件

[root@localhost data]# ls
elasticsearch-6.7.2.rpm  elasticsearch-head-master.zip  node-v8.2.1.tar.gz  phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@localhost data]# rpm -ivh elasticsearch-6.7.2.rpm 
cd /etc/elasticsearch/
mkdir bak 
cp -a *.yml  bak/
#备份

2.2  修改配置文件

[root@node1 elasticsearch]# vim elasticsearch.yml
17 cluster.name: my-elk-001
#修改集群名字

23 node.name: node1
24 node.master: true
25 node.data: true
#设置 节点名称 主从之间不能一致    24作为主节点   25作为数据节点

45 bootstrap.memory_lock: true
#内存锁开启  禁止使用  swap

57 network.host: 0.0.0.0
#监听地址
61 http.port: 9200
#  默认使用端口
62 transport.tcp.port: 9300
#内部传输端口

75 discovery.zen.ping.unicast.hosts: ["192.168.240.11:9300", "192.168.240.12:9300"]
#自动集群发现,加入主机名  使用单播 类似心跳线

grep -v "^#"  elasticsearch.yml 

2.3  修改系统配置

两台服务器都需要改

[root@localhost elasticsearch]#vim /etc/security/limits.conf
......
*  soft    nofile          65536
*  hard    nofile          65536
*  soft    nproc           32000
*  hard    nproc           32000
*  soft    memlock         unlimited
*  hard    memlock         unlimited

2.4  修改 systemd 服务管理器

两台服务器都需要改

/etc/systemd/system.conf 文件是用于配置 systemd 的,这是一种用于 Linux 操作系统的系统和服务管理器。通过这个文件,你可以自定义与系统操作、性能和行为相关的各种设置

  • DefaultTimeoutStartSec=:设置启动服务的默认等待时间

  • DefaultTimeoutStopSec=:设置停止服务的默认等待时间

  • DefaultRestartSec=:设置在重新启动服务之前的默认休眠时间

  • DefaultLimitNOFILE=:设置打开文件数量的默认限制

  • DefaultLimitNPROC=:设置进程数量的默认限制

  • DefaultLimitCORE=:设置核心文件大小的默认限制

  • DefaultEnvironment=:指定服务的默认环境变量

[root@localhost elasticsearch]#vim /etc/systemd/system.conf
DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity

2.5  修改内核参数

两台服务器都需要改

Lucene 是一个高性能、全功能的文本搜索引擎库,用于实现高效的文本索引和搜索。它是用 Java 编写的,可以嵌入到各种应用程序中,以提供强大的全文搜索功能。Lucene 是许多流行搜索平台的核心,如 Apache Solr 和 Elasticsearch。

以下是 Lucene 的一些关键特性和功能:

  1. 文本索引:Lucene 提供了强大的文本索引功能,能够处理大规模文本数据并生成高效的索引。

  2. 全文搜索:支持复杂的查询语法,包括布尔查询、短语查询、通配符查询、模糊查询等。

  3. 可扩展性:Lucene 设计为模块化和可扩展的,允许用户根据需要扩展和定制其功能。

  4. 分词和分析:提供了丰富的分词器和分析器,用于将文本分解为可索引和可搜索的词语。

  5. 排序和评分:支持对搜索结果进行排序和评分,以提高搜索的准确性和相关性。

  6. 多语言支持:支持多种语言的文本处理和搜索。

优化elasticsearch用户拥有的内存权限 由于ES构建基于lucene, 而lucene设计强大之处在于lucene能够很好的利用操作系统内存来缓存索引数据,以提供快速的查询性能。lucene的索引文件segements是存储在单文件中的,并且不可变,对于OS来说,能够很友好地将索引文件保持在cache中,以便快速访问;因此,我们很有必要将一半的物理内存留给lucene ; 另一半的物理内存留给ES(JVM heap )。所以, 在ES内存设置方面,可以遵循以下原则:

  • 当机器内存小于64G时,遵循通用的原则,50%给ES,50%留给操作系统,供lucene使用

  • 当机器内存大于64G时,遵循原则:建议分配给ES分配 4~32G 的内存即可,其它内存留给操作系统,供lucene使用

[root@localhost elasticsearch]#vim /etc/sysctl.conf
#一个进程可以拥有的最大内存映射区域数,参考数据(分配 2g/262144,4g/4194304,8g/8388608)
vm.max_map_count=262144

sysctl -p
sysctl -a | grep vm.max_map_count

 将配置文件elasticsearch.yml  传输到另一台服务器

scp -r /etc/elasticsearch/elasticsearch.yml  192.168.240.12:/etc/elasticsearch/

#需要注意的是传输完成后需要将配置文件中的
23 node.name: node1  修改为node2

2.6  重启服务器 启动elasticsearch服务

reboot
systemctl start elasticsearch.service
systemctl enable elasticsearch.service
netstat -antp | grep 9200

2.7  查看节点信息

浏览器访问  
http://192.168.240.11:9200  
http://192.168.240.12:9200 
查看节点 Node1、Node2 的信息。

浏览器访问 
http://192.168.240.11:9200/_cluster/health?pretty  
http://192.168.240.12:9200/_cluster/health?pretty
查看群集的健康情况,可以看到 status 值为 green(绿色), 表示节点健康运行。

浏览器访问 http://192.168.240.11:9200/_cluster/state?pretty  检查群集状态信息

2.8  编译安装 Elasticsearch-head 插件

主从都可以安装

Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。 安装 Elasticsearch-head 需要提前安装好依赖软件 nodephantomjs。 node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到。

2.8.1  编译安装 node 组件

#上传软件包 node-v8.2.1.tar.gz 到/data
yum install gcc gcc-c++ make -y

cd /data
tar zxvf node-v8.2.1.tar.gz

cd node-v8.2.1/
./configure
make && make install

2.8.2  安装phantomjs 

#上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到data
cd /data
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd /opt/phantomjs-2.1.1-linux-x86_64/bin
ln -s  /data/phantomjs-2.1.1-linux-x86_64/bin/phantomjs   /usr/bin
#做软链接

2.8.3  安装Elasticsearch-head 数据可视化工具

#上传软件包 elasticsearch-head-master.zip 到/data
cd /data
unzip elasticsearch-head-master.zip
cd /data/elasticsearch-head/
npm install		 //安装依赖包

2.8.4  启动 Elasticsearch-head服务

必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。

[root@localhost elasticsearch]#cd /data/elasticsearch-head/
[root@localhost elasticsearch-head]# npm run start &
#elasticsearch-head 监听的端口是 9100
netstat -natp |grep 9100

2.8.5 测试插件

192.168.240.11:9100
192.168.240.12:9100

2.8.6  插入索引测试

curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

3. 在apache节点上 部署  Logstash

3.1 安装服务

yum -y install java
java -version
#java 有了不用安装
yum -y install httpd
systemctl start httpd

3.2 安装logstash

cd /opt
[root@localhost data]#  rpm -ivh logstash-6.7.2.rpm                          

#开启服务
systemctl enable --now logstash.service

[root@localhost opt]# ln -s  /usr/share/logstash/bin/logstash   /usr/bin/
# 做软连接

3.3 使用logstash

Logstash 命令常用选项: -f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。 -e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。 -t:测试配置文件是否正确,然后退出。

例子:在命令行中收集日志数据

#输入采用标准输入,输出采用标准输出(类似管道),新版本默认使用 rubydebug 格式输出

logstash -e 'input { stdin{} } output { stdout{} }'

# 此处输入需要的信息
hello world

{
       "message" => "hello world",
    "@timestamp" => 2024-07-16T07:50:39.326Z,
          "host" => "apache",
      "@version" => "1"
}

logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
结果与上面一样

3.4 使用 Logstash 将信息写入 Elasticsearch 中

logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.240.11:9200","192.168.240.12:9200"] } }'

# 输入信息
www.cxk.com
hello world

3.5 使用配置文件

Logstash 配置文件基本由三部分组成:input、output 以及 filter(可选,根据需要选择使用)

  • input:表示从数据源采集数据,常见的数据源如Kafka、日志文件等 file beats kafka redis stdin

  • filter:表示数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式 grok 对若干个大文本字段进行再分割成一些小字段 (?<字段名>正则表达式) 字段名: 正则表达式匹配到的内容 date 对数据中的时间格式进行统一和格式化 mutate 对一些无用的字段进行剔除,或增加字段 mutiline 对多行数据进行统一编排,多行合并或拆分

  • output:表示将Logstash收集的数据经由过滤器处理之后输出到Elasticsearch。 elasticsearch stdout

#格式如下:
input {...}
filter {...}
output {...}

#在每个部分中,也可以指定多个访问方式。例如,若要指定两个日志来源文件,则格式如下:
input {
	file { path =>"/var/log/messages" type =>"syslog"}
	file { path =>"/var/log/httpd/access.log" type =>"apache"}
	
vim system.conf
input {
    file{
        path =>"/var/log/messages"
        type =>"system"
        start_position =>"beginning"
		# ignore_older => 604800
        sincedb_path => "/etc/logstash/sincedb_path/log_progress"
        add_field => {"log_hostname"=>"${HOSTNAME}"}
    }
}

#path表示要收集的日志的文件位置
#type是输入ES时给结果增加一个叫type的属性字段
#start_position可以设置为beginning或者end,beginning表示从头开始读取文件,end表示读取最新的,这个要和ignore_older一起使用
#ignore_older表示了针对多久的文件进行监控,默认一天,单位为秒,可以自己定制,比如默认只读取一天内被修改的文件
#sincedb_path表示文件读取进度的记录,每行表示一个文件,每行有两个数字,第一个表示文件的inode,第二个表示文件读取到的位置(byteoffset)。默认为$HOME/.sincedb*
#add_field增加属性。这里使用了${HOSTNAME},即本机的环境变量,如果要使用本机的环境变量,那么需要在启动命令上加--alow-env

output {
    elasticsearch {												#输出到 elasticsearch
        hosts => ["192.168.240.11:9200","192.168.240.12:9200"]	#指定 elasticsearch 服务器的地址和端口
        index =>"system-%{+YYYY.MM.dd}"							#指定输出到 elasticsearch 的索引格式
    }
}

实际测试:

[root@localhost log]# vim /etc/logstash/conf.d/system-log.conf 

input {
    file {
      path => "/var/log/messages"
      type => "system"
      start_position => "beginning"
    }

}

output {
  elasticsearch {
  hosts => [ "192.168.240.11:9200","192.168.240.12:9200" ]
  index => "system-%{+YYYY.MM.dd}"
  }

}

[root@localhost conf.d]# chmod +r /var/log/messages 
#添加权限

[root@localhost conf.d]# logstash   -f  /etc/logstash/conf.d/system-log.conf 
#启动logstash

4.安装 kibana

4.1 安装

rpm -ivh kibana-6.7.2-x86_64.rpm 

4.2 修改配置

[root@localhost data]# cd  /etc/kibana/
[root@localhost kibana]# cp kibana.yml  kibana.yml.bak -a

[root@localhost kibana]# vim kibana.yml

2   		 server.port: 5601          		#打开端口
7    server.host: "0.0.0.0"      	#监听端口
28   elasticsearch.hosts: ["http://192.168.240.11:9200", "http://192.168.240.12:9200"]  #el服务器地址
37   kibana.index: ".kibana"         #打开索引
96   logging.dest: /var/log/k.log      #指定日志文件, 需要手动建立文件
113  i18n.locale: "zh-CN"              #中文设置


touch  /var/log/kibana.log
[root@localhost kibana]# chown kibana:kibana /var/log/k.log

4.3  启动kibana

[root@localhost kibana]# systemctl enable --now kibana.service
[root@localhost kibana]# ss -nap |grep 5601

4.4 访问测试

4.5  建立索引

三.实现nginx日志管理

yum安装nginx,编辑配置文件

需要将原来的日志删除

yum install -y epel-release.noarch 
yum install -y nginx
systemctl start nginx
vim /etc/nginx/nginx.conf

log_format access_json '{"@timestamp":"$time_iso8601",'
        '"host":"$server_addr",'
        '"clientip":"$remote_addr",'
        '"size":$body_bytes_sent,'
        '"responsetime":$request_time,'
        '"upstreamtime":"$upstream_response_time",'
        '"upstreamhost":"$upstream_addr",'  
        '"http_host":"$host",'
        '"uri":"$uri",'
        '"xff":"$http_x_forwarded_for",'
        '"referer":"$http_referer",'
        '"tcp_xff":"$proxy_protocol_addr",'
        '"http_user_agent":"$http_user_agent",'
        '"status":"$status"}';

nginx -s reload

另一台主机访问curl 192.168.240.13 ,生成成功日志

 

vim /etc/logstash/conf.d/nginx-log.conf
input {
    file {
      path => "/var/log/nginx/access.log"
      type => "nginx"
      start_position => "beginning"
    }

}

output {
  elasticsearch {
  hosts => [ "192.168.240.11:9200","192.168.240.12:9200" ]
  index => "nginx-%{+YYYY.MM.dd}"
  }

}

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

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

相关文章

modbus slave 设备通过 网关thingsboard-gateway 将数据上传到thingsboard云平台

搭建thingsboard物联网云平台花了大量时间&#xff0c;从小白到最后搭建成功&#xff0c;折磨了好几天&#xff0c;也感谢网友的帮助&#xff0c;提供了思路最终成功搞定&#xff0c;特此记录。 一、thingsboard环境搭建&#xff08;Ubuntu20.04LTS&#xff09; 参考官方文档&a…

景区导航导览系统:基于AR技术+VR技术的功能效益全面解析

在数字化时代背景下&#xff0c;游客对旅游体验的期望不断提升。游客们更倾向于使用手机作为旅行的贴身助手&#xff0c;不仅因为它能提供实时、精准的导航服务&#xff0c;更在于其融合AR&#xff08;增强现实&#xff09;、VR&#xff08;虚拟现实&#xff09;等前沿技术&…

Template execution failed: ReferenceError: name is not defined

问题 我们使用了html-webpack-plugin&#xff08;webpack&#xff09;进行编译html&#xff0c;导致的错误。 排查结果 连接地址 html-webpack-plugin版本低(2.30.1)&#xff0c;html模板里面不能有符号&#xff0c;注释都不行 // var reg new RegExp((^|&)${name}([^&…

【ROS2】高级:使用 Fast DDS 发现服务器作为发现协议 [社区贡献]

目标&#xff1a;本教程将展示如何使用 Fast DDS Discovery Server 发现协议启动 ROS 2 节点。 教程级别&#xff1a;高级 时间&#xff1a;20 分钟 目录 背景 快速 DDS 发现服务器 v2 先决条件 运行此教程 设置发现服务器 启动监听节点 启动对话节点展示发现服务器执行 可视化…

【15】Android基础知识之Window(一)

概述 这篇文章纠结了很久&#xff0c;在想需要怎么写&#xff1f;因为window有关的篇幅&#xff0c;如果需要讲起来那可太多了。从层级&#xff0c;或是从关联&#xff0c;总之不是很好开口。这次也下定决心&#xff0c;决定从浅入深的讲讲window这个东西。 Window Window是…

django报错(三):No crontab program或got an unexpected keyword argument ‘user’

Crontab是linux系统上的定时管理模块&#xff0c;简单配置&#xff0c;灵活使用。但是要在windows使用必须借助Cygwin等虚拟工具&#xff0c;否则会报错“No crontab program”。如下图&#xff1a; python-crontab是其提供了python模块对crontab的访问&#xff0c;即可以通过p…

【简历】惠州某二本学院:前端简历指导,秋招面试通过率为0

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这是一份25届二本同学&#xff0c;投递前端职位的简历&#xff0c;那么在校招环节二本同学主要针对的还是小公司&#xff0c;这个学校因为…

怎么关闭Windows安全中心?

Windows安全中心是Windows操作系统中的一项重要功能&#xff0c;系统提供这个功能的目的是保护电脑免受各种安全威胁。尽管如此&#xff0c;有时候我们可能出于某些原因需要关闭它。本文将详细介绍如何关闭Windows安全中心&#xff0c;以及需要注意的事项。 重要提醒&#xff1…

minIO集成springboot

问题 minIO与spring集成。 步骤 创建桶 创建key 找到创建账号页面&#xff0c;如下图&#xff1a; 点击创建&#xff0c;如下图&#xff1a; 设置如下权限&#xff1a; {"Version": "2012-10-17","Statement": [{"Effect": &q…

生成式AI、3D模型交易、模型轻量化、模型格式转换、3D可视化、数字孪生引擎等

老子云3D可视化快速开发平台&#xff0c;集云压缩、云烘焙、云存储云展示于一体&#xff0c;使3D模型资源自动输出至移动端PC端、Web端&#xff0c;能在多设备、全平台进行展示和交互&#xff0c;是全球领先、自主可控的自动化3D云引擎。 平台架构 平台特性 1、基于 HTML5 和 …

django报错(一):python manage.py makemigrations,显示“No changes detected”

执行python manage.py makemigrations命令无任何文件生成&#xff0c;结果显示“No changes detected”。 解决方案一&#xff1a; 1、执行命令&#xff1a;python manage.py makemigrations –empty appname 2、删除其中的0001_initial.py文件&#xff08;因为这个文件内容是…

《昇思25天学习打卡营第25天|第10天》

今天是打卡的第十天&#xff0c;今天开始学应用实践中的LLM原理和实践&#xff0c;今天学的是基于MindSpore实现BERT对话情绪识别。最先了解的是BERT模型的简介&#xff08;来自变换器的双向编码器表征量&#xff08;Bidirectional Encoder Representations from Transformers&…

【Java】:浅克隆和深克隆

克隆 克隆和赋值 克隆的结果是有多个相同的实体&#xff0c;各个对象指向不同的实体而多个不同对象指向一个相同的实体不是克隆&#xff0c;而是赋值 克隆的过程 首先实例化一个 student1 对象 在堆里开辟了一块内存用来存储 age 10 这个数据 调用 clone 方法 在堆中又开辟了一…

Python数据结构:实现自定义栈与队列

更多Python学习内容&#xff1a;ipengtao.com 在计算机科学中&#xff0c;栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;是两种常见的数据结构。它们在算法和数据处理方面有着广泛的应用。本文将详细介绍如何在Python中实现自定义的栈与队列&#xff0c…

stm32精密控制步进电机(升级篇)

这一篇文章里会深入的对步进电机控制方法进行论述 如何避免步进电机丢转的问题 1.机械结构&#xff1a;排查一下传动的问题&#xff0c;举个例子&#xff0c;我的毕设里大臂机械臂的步进电机有时会有丢转问题&#xff0c;造成无法运动到指定位置&#xff0c;后面发现是因为皮带…

【单元测试】SpringBoot

【单元测试】SpringBoot 1. 为什么单元测试很重要&#xff1f;‼️ 从前&#xff0c;有一个名叫小明的程序员&#xff0c;他非常聪明&#xff0c;但有一个致命的缺点&#xff1a;懒惰。小明的代码写得又快又好&#xff0c;但他总觉得单元测试是一件麻烦事&#xff0c;觉得代码…

2.RabbitMQ相关概念

介绍 RabbitMQ是一个消息中间件&#xff0c;接受并转发消息。它接收、存储和转发消息数据。 四大核心概念&#xff1a; 1.生产者 产生数据发送消息的程序是生产者。 2.消费者 3.队列 每一个队列对应一个消费者。 如果两个消费者对应同一个队列&#xff0c;那么队列中的…

云监控(华为) | 实训学习day1(10)

云监控&#xff1a;确保服务器高效运行 在当今的数字化时代&#xff0c;服务器的稳定运行对于任何企业都至关重要。为了确保服务器的 CPU、内存和硬盘等资源的合理运行&#xff0c;云监控成为了一项不可或缺的技术。本文将详细介绍云监控的基本概念、所需软件、配置方法以及如何…

分布式 I/O 系统 BL200 Modbus TCP 耦合器

BL200 耦合器是一个数据采集和控制系统&#xff0c;基于强大的 32 位微处理器设计&#xff0c;采用 Linux 操作系统&#xff0c;支持 Modbus 协议&#xff0c;可以快速接入现场 PLC、SCADA 以及 ERP 系统&#xff0c; 内置逻辑控制、边缘计算应用&#xff0c;适用于 IIoT 和工业…

redis登录缓存

1.pom.xml中引入redis依赖 <!-- Redis依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 2.将登录成功的token存储到redis中 if(Md5…