日志可视化监控体系ElasticStack 8.X版本全链路实战

news2024/11/24 17:47:55

目录

一、SpringBoot3.X整合logback配置1.1 log4j、logback、self4j 之间关系

1.2 SpringBoot3.X整合logback配置

二、日志可视化分析ElasticStack

2.1为什么要有Elastic Stack

2.2 什么是Elastic Stack

三、ElasticSearch8.X源码部署

​四、Kibana源码部署

五、LogStash8.X源码安装部署

5.1 LogStash宏观配置文件组成

 5.2 安装部署

六、FileBeat安装部署

6.1为什么要有FileBeat?

6.2FileBeat配置

七、ElasticStack全链路配置

7.1 Filebeat部署

  本博文将详细阐述如何通过一系列技术栈——包括Filebeat、Logstash、Elasticsearch(ES)和Kibana——来处理、索引、存储并可视化nannanw-demo.log日志文件的整个过程。将详细介绍这些步骤,确保您能够轻松地检索、分析和洞察日志文件中的重要信息。

 通过下面的流程,nannanw-demo.log日志文件将被Filebeat高效地收集,并通过Logstash进行必要的转换和过滤,然后发送到Elasticsearch集群中进行索引和存储。最终,用户将能够通过Kibana这个强大的数据可视化工具来检索和分析这些日志数据,从而获取有价值的业务洞察。

一、SpringBoot3.X整合logback配置
1.1 log4j、logback、slf4j 之间关系

SLF4J(Simple logging Facade for Java) 门面设计模式 |外观设计模式
把不同的日志系统的实现进行了具体的抽象化,提供统一的日志使用接口

具体的日志系统就有log4j,logback等;

logback也是log4j的作者完成的,有更好的特性,可以取代log4j的一个日志框架, 是slf4j的原生实现

log4j、logback可以单独的使用,也可以绑定slf4j一起使用

编码规范建议不直接用log4j、logback的API,应该用slf4j, 日后更换框架所带来的成本就很低

1.2 SpringBoot3.X整合logback配置

打印代码:

  private static final Logger logger =
            LoggerFactory.getLogger(ProductController.class);

    @RequestMapping("findById")
    public Object findById(@RequestParam("id") long id ){
        ProductDO productDO = productService.findById(id);
        logger.info("这个是查询接口日志,info级别");
        logger.error("这个是查询接口日志,error级别");
        return productDO;
    }

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="LOG_HOME" value="./logs" />

    <!--采用打印到控制台,记录日志的方式-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 采用保存到日志文件 记录日志的方式,
    %d{yyyy-MM-dd HH:mm:ss.SSS}:输出日志发生的时间,精确到毫秒。
    [%thread]:输出日志所在的线程名。
    %-5level:输出日志级别,使用占位符%5level可以保持日志级别的对齐。
    %logger{36}:输出日志所在的类名(只输出类名的后36个字符)。
    %msg:输出日志消息。
    %n:新行。
    -->
    <appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_HOME}/nannanw-demo.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/nannanw-demo-%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>


    <!-- 指定某个类单独打印日志  logger是配置某个包或者类采用哪几个appender记录日志,比如控制台/文件;-->
    <logger name="net.nannanw.service.impl.LogServiceImpl"
            level="INFO" additivity="false">
        <appender-ref ref="rollingFile" />
        <appender-ref ref="console" />
    </logger>

    <root level="INFO" additivity="false">
        <appender-ref ref="rollingFile" />
    </root>

</configuration>


二、日志可视化分析ElasticStack

2.1为什么要有Elastic Stack

操作系统、网关、应用程序产生了很多日志,有单机有分布式部署,怎么看方便?
日志数据,字段格式参差不齐,如果进行过滤处理?
服务器多肉眼查看日志不方便,是否有各种图表、仪表盘,将数据分析结果以可视化的方式展示出来,更好理解和分析数据?

2.2 什么是Elastic Stack

它是一个开源的数据分析和可视化平台,由Elasticsearch、Logstash、Kibana和Beats组成,广泛用于实时数据分析、搜索和可视化
我们之前说的ELK实际上是分别由Elasticsearch、 Logstash、Kibana组成
在这两年发展的过程中有新成员Beats的加入,所以就形成了Elastic Stack,ELK是旧的称呼,Elastic Stack是新的名字

常见的数据采集流程:Beats 采集(Filebeat/Metricbeat)–> Logstash –> Elasticsearch –> Kibana
Elasticsearch:一个分布式实时搜索和分析引擎,能够快速地存储、搜索和分析大量结构化和非结构化数据,它是Elastic Stack的核心组件,提供分布式数据存储和搜索能力。

Logstash:是一个用于数据收集、转换和传输的数据处理引擎,支持从各种来源(如文件、日志、数据库等)收集数据
可以对数据进行结构化、过滤和转换,然后将数据发送到Elasticsearch等目标存储或分析系统。

Kibana:数据可视化和仪表盘工具,连接到Elasticsearch,通过简单易用的用户界面创建各种图表、图形和仪表盘

Beats:是轻量级的数据收集器,用于收集和发送各种类型的数据到Elasticsearch或Logstash
Beats提供了多种插件和模块,用于收集和传输日志、指标数据、网络数据和安全数据等

总结:Elastic Stack的架构主要是将各个组件连接起来形成数据处理和分析的流程

三、ElasticSearch8.X源码部署

1.上传安装包和解压:
tar -zxvf elasticsearch-8.4.1-linux-x86_64.tar.gz


2.新建一个用户,安全考虑,elasticsearch默认不允许以root账号运行
创建用户:useradd es_user
设置密码:passwd es_user


3.修改目录权限
# chmod是更改文件的权限   
# chown是改改文件的属主与属组  
# chgrp只是更改文件的属组。

chgrp -R es_user /usr/local/software/elk_test/elasticsearch-8.4.1
chown -R es_user /usr/local/software/elk_test/elasticsearch-8.4.1
chmod -R  777 /usr/local/software/elk_test/elasticsearch-8.4.1

4.修改文件和进程最大打开数,需要root用户,如果系统本身有这个文件最大打开数和进程最大打开数配置,则不用
在文件内容最后添加后面两行(切记*不能省略)
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535


5.修改虚拟内存空间,默认太小
在配置文件中改配置 最后一行上加上,执行 sysctl -p(立即生效)
vim /etc/sysctl.conf 
vm.max_map_count=262144
6.修改elasticsearch的JVM内存,机器内存不足,常规线上推荐16到24G内存
vim config/jvm.options
-Xms1g
-Xmx1g


7.修改 elasticsearch相关配置

vim config/elasticsearch.yml

cluster.name: nannanw-application
node.name: node-1
path.data: /usr/local/software/elk_test/elasticsearch-8.4.1/data
path.logs: /usr/local/software/elk_test/elasticsearch-8.4.1/logs
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
xpack.security.enabled: false
xpack.security.enrollment.enabled: false
ingest.geoip.downloader.enabled: false


8.配置说明

cluster.name: 指定Elasticsearch集群的名称。所有具有相同集群名称的节点将组成一个集群。
node.name: 指定节点的名称。每个节点在集群中应该具有唯一的名称。
path.data: 指定用于存储Elasticsearch索引数据的路径。
path.logs: 指定Elasticsearch日志文件的存储路径。
network.host: 指定节点监听的网络接口地址。0.0.0.0表示监听所有可用的网络接口,开启远程访问连接
http.port: 指定节点上的HTTP服务监听的端口号。默认情况下,Elasticsearch的HTTP端口是9200。
cluster.initial_master_nodes: 指定在启动集群时作为初始主节点的节点名称。
xpack.security.enabled: 指定是否启用Elasticsearch的安全特性。在这里它被禁用(false),意味着不使用安全功能。
xpack.security.enrollment.enabled: 指定是否启用Elasticsearch的安全认证和密钥管理特性。在这里它被禁用(false)。
ingest.geoip.downloader.enabled: 指定是否启用GeoIP数据库下载功能。在这里它被禁用(false)

9.启动ElasticSearch
切换到es_user用户启动, 进入bin目录下启动, &为后台启动,再次提示es消息时 Ctrl + c 跳出
./elasticsearch &

10.常见命令,可以用postman访问(使用阿里云网络安全组记得开放端口)

#查看集群健康情况
http://112.24.7.xxx:9200/_cluster/health

#查看分片情况
http://11224.7.xxx9200/_cat/shards?v=true&pretty

#查看节点分布情况
http://112.24.7.xxx:9200/_cat/nodes?v=true&pretty

#查看索引列表
http://112.24.7.xxx:9200/_cat/indices?v=true&pretty

 11.常见问题注意

磁盘空间需要85%以下,不然ES状态会不正常
不要用root用户安装
linux内存不够
linux文件句柄
没开启远程访问 或者 网络安全组没看开放端口
有9300 tcp端口,和http 9200端口,要区分
没权限访问,重新执行目录权限分配
chgrp -R es_user /usr/local/software/elk_test/elasticsearch-8.4.1
chown -R es_user /usr/local/software/elk_test/elasticsearch-8.4.1
chmod -R  777 /usr/local/software/elk_test/elasticsearch-8.4.1


四、Kibana源码部署

1.上传安装包和解压
tar -zxvf kibana-8.4.1-linux-x86_64.tar.gz

2.配置用户权限
chgrp -R es_user /usr/local/software/elk_test/kibana-8.4.1
chown -R es_user /usr/local/software/elk_test/kibana-8.4.1
chmod -R  777 /usr/local/software/elk_test/kibana-8.4.1

3.修改配置文件 
vim config/kibana.yml

server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://112.74.7.xxx:9200"]
i18n.locale: "zh-CN" #汉化

server.port: 指定Kibana服务器监听的端口号,Kibana将在5601端口上监听HTTP请求。
server.host: 指定Kibana服务器绑定的网络接口地址, "0.0.0.0"表示监听所有可用的网络接口。
elasticsearch.hosts: 指定ES集群的主机地址,可以配置多个,Kibana将连接到位于"112.74.7.xxx"主机上、使用默认HTTP端口9200的es
i18n.locale: 指定Kibana界面的语言区域,"zh-CN"表示使用简体中文作为语言。

4.启动,切换到es_user 用户, 建议先不用守护进程方式启动,可以直接启动查看日志
./kibana &

5.访问(网络安全组记得开发端口)
# 验证请求
http://112.74.7.xxx:5601

#查看集群健康情况
GET /_cluster/health

#查看分片情况
GET /_cat/shards?v=true&pretty

#查看节点分布情况
GET /_cat/nodes?v=true&pretty

#查看索引列表
GET /_cat/indices?v=true&pretty

验证连接es是否成功:


五、LogStash8.X源码安装部署

5.1 LogStash宏观配置文件组成

# 输入
input {
  ...
}
# 过滤器
filter {
  ...
}
# 输出
output {
  ...
}

 5.2 安装部署

1.上传安装包和解压
tar -zxvf logstash-8.4.1-linux-x86_64.tar.gz

JVM内存不够的话修改 config/jvm.options

2.创建新配置文件 touch config/test-logstash.conf

input {
  file {
    path => "/usr/local/software/elk_test/nannanw-demo.log"
    start_position => "beginning"
    stat_interval => "3"
    type => "nannanw-demo-log"
  }
}

output {
   if [type] == "nannanw-demo-log" {
     elasticsearch {
       hosts => ["http://112.74.97.xxx:9200"]
       index => "nannanw-demo-%{+YYYY.MM.dd}"
    }
  }
}

注: 这个内容输入得时候,注意不要有多余得换行符 空格等得。建议在linux中 vim直接编辑。

3.配置文件

input:指定Logstash接收数据的输入插件,使用file插件作为输入。file插件用于读取并处理文件中的数据。

file:指定使用的输入插件是file插件。

path:指定要读取的文件路径,Logstash会读取位于"/usr/local/software/elk_test/log/springboot-nannanw-demo.log"路径下的文件。

start_position:指定从文件的哪个位置开始读取数据。设置为"beginning"表示从文件的开始位置开始读取数据。

stat_interval:指定文件的状态检查间隔(以秒为单位)。设置为"3"表示每隔3秒检查一次文件状态,以判断是否有新数据。

type:指定数据的类型名称。设置为"nannanw-demo-log"表示数据的类型是SpringBoot访问日志。

output:指定Logstash处理完数据后的输出插件。使用elasticsearch插件将处理后的日志数据发送到Elasticsearch。

elasticsearch:指定使用的输出插件是elasticsearch插件。

hosts:指定Elasticsearch集群的主机地址。Logstash将处理后的数据发送到位于"112.74.97.XXXX"主机上,HTTP端口9200的ES节点

index:指定数据在Elasticsearch中的索引名称,比如【filebeat-8.4.1-2024.06.16 】
  使用[@metadata][beat]字段、[@metadata][version]字段和当前日期来构建索引名称
  可以根据采集数据的来源和版本动态创建索引。

4.启动,进入bin目录

./logstash -f /usr/local/software/elk_test/logstash-8.4.1/config/test-logstash.conf &

执行成功后,进入kibana索引管理页面查看:

出现下图得这种就表示logstash内容已经写入es了


通过kibana查看es日志:

可以指定traceId:888888889123进行检索

六、FileBeat安装部署

6.1为什么要有FileBeat?

Beats 可以直接把数据直接写入到 Elasticsearch 之中,为什么还需要 Logstash 呢?
是因为 Logstash 有丰富的 filter 供我们使用,可以帮加工数据,并最终把数据转为对应要求的格式
beats是轻量级的用来收集日志的 用来优化logstash的, 而logstash更加专注一件事(消耗的性能比较多),那就是数据转换,格式化,等处理工作

6.2FileBeat配置

filebeat.inputs: //指定Filebeat的输入配置,用于定义要监视的日志文件。
- type: log //指定日志文件的类型, 可以是log、file等。
  paths:
    - /path/to/logfile1.log //指定要监视的日志文件的路径。可以是单个路径或多个路径的列表。
    - /path/to/logfile2.log
  fields: //为每个输入配置添加自定义字段,用于标记和分类日志数据。
    app: myapp
  fields_under_root: true//控制是否将fields字段中的自定义字段添加到根级别的事件中,以便在输出时可见。

output.logstash://指定Filebeat的输出配置,将日志数据发送到Logstash
  hosts: ["logstash-host:5044"]//指定Logstash的地址和端口号,可以是单个地址或多个地址的列表。


此外,Filebeat配置文件还可以包含其他参数,用于定制Filebeat的行为和功能,如日志采集的过滤规则、证书设置、日志解析器等。

七、ElasticStack全链路配置

数据采集链路
Beats 采集(Filebeat/Metricbeat)–> Logstash –> Elasticsearch –> Kibana

7.1 Filebeat部署

1.安装包和解压
tar -zxvf filebeat-8.4.1-linux-x86_64.tar.gz

2.进入目录,创建配置文件 touch test-filebeat.yml
 

filebeat.inputs:
- type: log
  paths: ["/usr/local/software/elk_test/nannanw-demo*.log*"]
  encoding: UTF-8
  fields:
    service: nannanw-demo

output.logstash:
  hosts: ["112.74.97.xxx:5044"]

模拟日志数据,准备日志文件,/usr/local/software/elk_test/nannanw-demo.log 


3.配置LogStash配置文件

input {
  beats {
    port => 5044
  }
}

output {
 if [type] == "nannanw-demo" {
     elasticsearch {
       hosts => ["http://112.74.97.xxx:9200"]
       index => "nannanw-type-beat-demo-%{+YYYY.MM.dd}"
    }
  }

 if [fields][service] == "nannanw-demo" {
     elasticsearch {
       hosts => ["http://112.74.97.xxx:9200"]
       index => "nannanw-fields-beat-demo-%{+YYYY.MM.dd}"
    }
  }
}


input:指定Logstash接收数据的输入插件。使用beats插件作为输入.beats插件用于接收来自Beats数据采集器的日志数据。
beats:指定使用的输入插件是beats插件。
port:指定beats插件监听的端口号, Logstash会监听5044端口,等待来自Beats采集器的数据。

4.启动logstash (停止之前进程)
./logstash -f /usr/local/software/elk_test/logstash-8.4.1/config/test-beat-logstash.conf &

5.启动filebeat,停止方案 ps -ef |grep filebeat
./filebeat -e -c test-filebeat.yml &

6.kibana验证

全文到这就结束了,以上内容就是nannanw-demo.log 从文件到写入es 到kibana展示检索得全部过程~

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

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

相关文章

昇思25天学习打卡营第3天|函数式自动微分

文章目录 昇思MindSpore快速入门基于MindSpore的函数式自动微分1、简介2、函数与计算图算例3、微分函数与梯度计算4、Stop Gradient&#xff08;停止梯度计算&#xff09;5、Auxiliary data6、神经网络梯度计算 Reference 昇思MindSpore快速入门 基于MindSpore的函数式自动微分…

Keil5中:出现:failed to execute ‘...\ARMCC\bin\ArmCC‘

点三个点&#xff0c;去自己的磁盘找自己的ARM\ARMCC\bin

vue-cil搭建项目

目录 一、使用 HbuilderX 快速搭建一个 vue-cli 项目 1.需要的环境——Node.js 2.搭建Vue-cil项目 二、组件路由 1.安装vue-router 2.创建router目录 3.使用路由 4.在main.js中配置路由 vue-cli 官方提供的一个脚手架&#xff0c;用于快速生成一个 vue 的项目模板&#xff1b;…

Windows/Linux/Mac 系统局域网服务发现协议及传输速度比较

简介 分析 / 验证对比常见局域网服务发现协议在 Windows/Linux/Mac 等不同系统下的支持和表现 在使用不同系统的智能硬件时&#xff0c;如常见的树莓派 / Openwrt 路由器 / Debian/Fedora/Windows/Mac 等系统是&#xff0c;系统间相互发现以及网络共享本应是系统的基础服务&a…

游戏AI的创造思路-技术基础-深度学习(3)

继续填坑&#xff0c;本篇介绍深度学习中的长短期记忆网络~~~~ 目录 3.3. 长短期记忆网络&#xff08;LSTM&#xff09; 3.3.1. 什么是长短期记忆网络 3.3.2. 形成过程与运行原理 3.3.2.1. 细胞状态与门结构 3.3.2.2. 遗忘门 3.3.2.3. 输入门 3.3.2.4. 细胞状态更新 3.…

vscode 生成项目目录结构 directory-tree 实用教程

1. 安装插件 directory-tree 有中文介绍&#xff0c;极其友好&#xff01; 2. 用 vscode 打开目标项目 3. 快捷键 Ctrl Shift p&#xff0c;输入 Directory Tree 后回车 会在 README.md 文件的底部生成项目目录&#xff08;若项目中没有 README.md 文件&#xff0c;则会自动创…

数据结构速成--图

由于是速成专题&#xff0c;因此内容不会十分全面&#xff0c;只会涵盖考试重点&#xff0c;各学校课程要求不同 &#xff0c;大家可以按照考纲复习&#xff0c;不全面的内容&#xff0c;可以看一下小编主页数据结构初阶的内容&#xff0c;找到对应专题详细学习一下。 目录 …

CO-DETR利用coco数据集训练和推理过程

CO-DETR利用coco数据集训练和推理过程&#xff0c;参考链接 Co-DETR训练自己的数据集 文章目录 前言训练过程推理过程总结 前言 环境&#xff1a;PyTorch 1.11.0 Python 3.8(ubuntu20.04) Cuda 11.3 先是在github上下载CO-DETR模型 !git clone https://github.com/Sense-X/Co…

JAVA设计模式-大集合数据拆分

背景 我们在做软件开发时&#xff0c;经常会遇到把大集合的数据&#xff0c;拆分成子集合处理。例如批量数据插入数据库时&#xff0c;一次大约插入5000条数据比较合理&#xff0c;但是有时候待插入的数据远远大于5000条。这时候就需要进行数据拆分。数据拆分基本逻辑并不复杂&…

复分析——第9章——椭圆函数导论(E.M. Stein R. Shakarchi)

第 9 章 椭圆函数导论 (An Introduction to Elliptic Functions) The form that Jacobi had given to the theory of elliptic functions was far from perfection; its flaws are obvious. At the base we find three fundamental functions sn, cn and dn. These functio…

一款轻量级的WPF UI库---Adonis UI

Adonis UI适用于 WPF 应用程序的轻型 UI 工具包,提供经典但增强的 Windows 视觉对象 组件内容 几乎所有 WPF 控件的模板的默认样式为方便起见,可根据需要使用两种配色方案(浅色和深色),也可用于自定义样式支持在运行时更改配色方案支持其他自定义配色方案提供水印等功能的…

华为BGP路由实验基础1------用物理口建立对等体

1.用物理口做BGP建立对等体建立BGP连接 实验拓扑&#xff1a; 实验步骤&#xff1a; 1.完成基本配置 sys [Huawei]sys AR1 [AR1]undo in e [AR1]int g0/0/0 [AR1-GigabitEthernet0/0/0]ip add 1.1.1.1 24 [AR1-GigabitEthernet0/0/0]q [AR1] sys [Huawei]sys AR2 [AR2]undo i…

2024年危化品安全员生产单位(生产管理人员)考试精选题库

31.《危险化学品安全管理条例》所称重大危险源,是指生产、储存、使用或者搬运危险化学品,且危险化学品的数量等于或者超过&#xff08;&#xff09;的单元(包括场所和设施)。 A.标准 B.一定量 C.临界量 答案&#xff1a;C 32.《危险化学品生产企业安全生产许可证实施办法》…

Sui创始团队在竞速环节中的快问快答

在Sui Basecamp活动期间&#xff0c;Sui区块链的最初贡献者在Oracle红牛赛车模拟器上展示了他们的技术能力&#xff0c;在驾驶圈时回答了有关Sui的问题。 Evan Cheng&#xff08;又名Revvin’ Evan&#xff09;在解释Mysticeti创下区块链最终性记录的同时保持着他的驾驶线路。…

C++——string类用法指南

一、前言 在C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是分离的&#xff0c;不太符合OOP的思想&#xff0c;而且底层空间需要用户自己管理&#xff0c;稍…

Linux—系统安全及应用

目录 一、账号安全控制 1、系统账号清理 1.1、将用户账号设置为无法登录 1.2、锁定长期不使用的账号 1.3、删除无用的账号 1.4、锁定账号文件passwd、shadow 2、密码安全控制 2.1、设置密码有效期 2.1.1、适用于新建用户 2.1.2、适用于已有用户 2.2、强制用户下次登录…

Python学习笔记26:进阶篇(十五)常见标准库使用之性能测试cProfile模块学习使用

前言 本文是根据python官方教程中标准库模块的介绍&#xff0c;自己查询资料并整理&#xff0c;编写代码示例做出的学习笔记。 根据模块知识&#xff0c;一次讲解单个或者多个模块的内容。 教程链接&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.html 本文主要…

Qt—贪吃蛇项目(由0到1实现贪吃蛇项目)

用Qt实现一个贪吃蛇项目 一、项目介绍二、游戏大厅界面实现2.1完成游戏大厅的背景图。2.2创建一个按钮&#xff0c;给它设置样式&#xff0c;并且可以跳转到别的页面 三、难度选择界面实现四、 游戏界面实现五、在文件中写入历史战绩5.1 从文件里提取分数5.2 把贪吃蛇的长度存入…

华为OceanStor磁盘阵列存储恢复出厂设置命令 LUN不处于在线状态,不能执行此操作解决方案

环境 OceanStor S2600T V2老版本 客户现场有一台Oceanstor 2600 V2的存储&#xff0c;因和另一台磁盘扩展框做了跨设备LUN需要进行配置清除&#xff0c;配置结束后需要重新划分存储空间并对接服务器&#xff0c;保证业务能够正常上线&#xff01;在清除配置回退的过程中&#…

Firefox 编译指南2024 Windows10篇- 编译Firefox(三)

1.引言 在成功获取了Firefox源码之后&#xff0c;下一步就是将这些源码编译成一个可执行的浏览器。编译是开发流程中的关键环节&#xff0c;通过编译&#xff0c;我们可以将源代码转换为可执行的程序&#xff0c;测试其功能&#xff0c;并进行必要的优化和调试。 对于像Firef…