ELK日志分析实战宝典之ElasticSearch从入门到服务器部署与应用

目录

ELK工作原理展示图

一、ElasticSearch介绍(数据搜索和分析)

1.1、特点

1.2、数据组织方式

1.3、特点和优势

1.3.1、分布式架构

1.3.2、强大的搜索功能

1.3.3、数据处理与分析

1.3.4、多数据类型支持

1.3.5、易用性与生态系统

1.3.6、高性能

1.3.7、灵活的数据模型

1.3.8、可视化和监控

1.4、Elasticsearch核心概念

二、Logstash介绍(数据处理和日志收集)

2.1、Logstash介绍

2.2、Logstash的stdin标注输入

2.3、Logstash的file输入文件

参数:

path

start_position

stat_interval

sincedb_path

discover_interval

exclude

ignore_older

2.4、Logstash过滤器值grok正则匹配

2.5、Logstash过滤器之mutate

2.6、Logstash过滤器之GeoIP地址查询

2.7、Logstash过滤器之useragent匹配归类

2.8、Logstash的output配置

2.9、Logstash的配置文件

三、Kibana介绍

四、ELK部署实战

4.1、Elasticsearch(ES)部署配置(Version: 8.17.0)

4.1.1、Elasticsearch(ES)下载安装

4.1.2、Elasticsearch(ES)配置

4.1.3、Elasticsearch配置参数解释

4.1.4、jvm堆大小配置

4.1.5、系统优化

4.1.6、启动ES


elk:日志搜集平台

Elastic StackELKElasticSearchLogstashKibana三个开源工具组成

ELK工作原理展示图

Logstash收集Appserver产生的log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图标再返回给Browser

一、ElasticSearch介绍(数据搜索和分析)

ElasticSearch是一个基于Lucene的开源分布式搜索服务。用于处理大规模数据的快速检索和分析,并具有高可扩展性、高性能和强大的全文搜索能力。

1.1、特点

分布式,零配置,自动发现,索引自动分片,索引副本机制等。它提供了一个分布式多用户能力的全文搜索引擎。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 在elasticsearch中,所有节点的数据是均等的。

1.2、数据组织方式

索引(库)-->类型(表)-->文档(记录

1.3、特点和优势

综合来说就是搜索很快,支持多类型数据可以监控可视化,并且有丰富插件,还有就是能够数据冗余高可用

1.3.1、分布式架构

  1. 可扩展性:Elasticsearch采用分布式架构,数据存储在多个节点上。可以通过添加新节点轻松扩展集群,处理PB级别的数据。
  2. 数据冗余与高可用性:支持数据分片和副本机制。当某个节点出现故障时,副本分片可以立即接管工作,确保数据的可用性和搜索服务的正常运行。

1.3.2、强大的搜索功能

  1. 全文搜索:基于Lucene构建,提供了非常强大的全文搜索能力。能够理解文本的语义,对文档中的文本内容进行深度分析。
  2. 实时搜索:能够实时索引新数据并立即用于搜索。
  3. 复杂查询支持:支持多种复杂的查询类型,如布尔查询、范围查询、模糊查询等。

1.3.3、数据处理与分析

  1. 聚合功能:提供强大的聚合功能,可以对数据进行分组、统计和分析。
  2. 数据关联与嵌套查询:支持处理具有复杂结构的数据,包括数据的嵌套和关联关系。

1.3.4、多数据类型支持

  1. 通用数据类型支持:可以处理各种类型的数据,包括文本、数字、日期、地理位置等。
  2. 非结构化数据处理:尤其擅长处理非结构化数据,如日志文件、文档内容等。

1.3.5、易用性与生态系统

  1. 简单的API与RESTful接口:提供了简单易用的API,通过RESTful接口与外部应用进行交互。
  2. 丰富的插件与集成:拥有丰富的插件生态系统,可以与其他工具和技术进行集成。

1.3.6、高性能

  1. 快速搜索:Elasticsearch 优化了搜索速度,能够快速返回搜索结果,即使是在大规模数据集上。
  2. 高效索引:Elasticsearch 优化了数据索引过程,可以高效地处理大量数据的索引。

1.3.7、灵活的数据模型

  1. 无模式(Schema-less):Elasticsearch 是无模式的,这意味着你可以存储结构化、半结构化或非结构化的数据,无需预先定义数据结构。
  2. 动态映射:Elasticsearch 可以自动检测并映射新的字段,使得数据索引和搜索更加灵活。

1.3.8、可视化和监控

  1. Kibana:Elasticsearch 的可视化工具 Kibana 可以轻松创建图表和仪表板,帮助用户直观地理解数据。
  2. Elasticsearch 监控:提供了监控工具,可以监控集群状态、性能指标等。

1.4、Elasticsearch核心概念

  1. Cluster:集群,包含多个节点,每个节点属于哪个集群是通过一个配置来决定的,对于中小型企业刚开始集群就一个节点很正常
  2. Node:节点,集群中的一个节点,节点也要一个名称(默认是随机分配的),节点的名称很重要(在执行运维管理的时候方便故障排查),默认的节点会加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么它们会自动组成一个“elasticsearch”的集群,当然一个节点也可以组成一个集群。
  3. Document:文档,ES中最小的数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中都可以存储多个document
  4. Index:索引,包含一堆相似结构的文档数据,比如可以有一个客户索引,商品分类索引,订单索引,索引有一个名称。
  5. Type:类型,每个索引里面都可以有一个或多个type,type是index的一个逻辑数据分类,一个type下的document有相同的filed。比如博客系统,有一个索引,一个用户数据type,博客数据type,评论数据type。
  6. shard:单机服务器无法存储大量数据,ES可以将一个索引中的数据分割为多个shard,分布在多台机器上存储,有了shard就可以横向扩展,存储更多的数据,让搜索和分析操作分布到多台机器上执行,提高吞吐量和性能。
  7. replica:任何一个服务器都会出现故障,此时shard可能会丢失,因此为每个shard建立多个replica副本,replica可以在shard故障时候提供备用服务

二、Logstash介绍(数据处理和日志收集)

Logstash的设计目的是为了简化从各种来源收集、转换和发送数据的过程,使其易于存储、分析和可视化。

2.1、Logstash介绍

Logstash是一个完全开源工具,可以对你的日志进行收集、过滤、分析,并将其存储供以后使用(如,搜索),logstash带有一个web界面,搜索和展示所有日志。 只收集和过滤日志,和改格式。(就是系统各个服务的日志,可以过滤并分析,还可以搜索指定服务的日志)

简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。

Logstash的事件(logstash将数据流中等每一条数据称之为一个event)处理流水线有三个主要角色完成:inputs –> filters –> outputs:

ogstash整个工作流分为三个阶段:输入、过滤、输出。每个阶段都有强大的插件提供支持:

Input (必须),设置数据来源

Filter(可选),负责数据处理与转换

output(必须),负责数据输出

2.2、Logstash的stdin标注输入

input {

  stdin {

    # 可选配置,例如添加字段或标签

    add_field => { "source" => "standard_input" }

    tags => [ "user_input" ]

  }

}

Logstash将从标准输入读取数据,并通过add_field添加一个额外的字段source,值为standard_input。tags配置用于添加标签user_input到事件中

filter {

  # 这里可以添加过滤器来处理输入数据

  # 例如,使用grok插件解析日志数据

  grok {

    match => { "message" => "%{COMBINEDAPACHELOG}" }

  }

}

output {

  # 输出处理后的数据到标准输出

  stdout { codec => rubydebug }

  

  # 或者输出到Elasticsearch

  elasticsearch {

    hosts => ["localhost:9200"]

    index => "myindex"

  }

}

2.3、Logstash的file输入文件

input {

  file {

    path => ["/var/log/messages", "/var/log/syslog"]

    start_position => "beginning"

    sincedb_path => "/var/lib/logstash/sincedb"

    stat_interval => 2

  }

}

Logstash会监控/var/log/messages和/var/log/syslog文件,从头开始读取文件内容,并将读取位置存储在/var/lib/logstash/sincedb中

参数:

path

指定要监控的文件或文件模式的路径。可以使用通配符来匹配多个文件。

示例:path => "/var/log/*.log"

start_position

指定Logstash开始读取文件的位置。可以是beginning(从头开始读取)或end(从文件末尾开始读取,类似于tail -F)。

示例:start_position => "beginning"

stat_interval

指定Logstash检查文件状态(如文件大小变化)的频率,以秒为单位。

示例:stat_interval => 2

sincedb_path

指定用于存储文件读取位置的数据库路径。Logstash会记录每个文件最后读取的位置,以便在重启后可以从上次中断的地方继续读取。

示例:sincedb_path => "/var/lib/logstash/sincedb"

discover_interval

指定Logstash发现新文件的频率,以秒为单位。

示例:discover_interval => 15

exclude

指定要排除的文件名模式。

示例:exclude => [ "*.gz", "*.zip" ]

ignore_older

指定忽略比指定时间更早的文件。

示例:ignore_older => 86400 (忽略一天前的文件)

2.4、Logstash过滤器值grok正则匹配

%{PATTERN_NAME:FIELD_NAME}

PATTERN_NAME 是预定义的正则表达式模式名称或自定义模式名称。

FIELD_NAME 是捕获的字段名,用于在Logstash事件中存储匹配的数据。

Logstash自带了许多预定义的Grok模式需要时百度

使用Grok过滤器解析Nginx访问日志的示例

filter {

  grok {

    match => { "message" => "%{NGINXACCESS} %{DATA:response_time} %{DATA:upstream_response_time}" }

  }

}

%{NGINXACCESS} 是一个预定义的Grok模式,用于匹配Nginx访问日志的常见格式。response_time 和 upstream_response_time 是自定义的字段名,用于捕获响应时间和上游响应时间。

2.5、Logstash过滤器之mutate

Logstash 的 mutate 过滤器是用于对重命名、删除、替换、修改数据类型等进行各种修改操作

filter {

  mutate {

    convert => { "age" => "integer" }          # 将 age 字段转换为整数类型

    gsub => [ "message", "\s+", "_" ]        # 将 message 字段中的多个空格替换为下划线

    split => [ "tags", "," ]              # 将 tags 字段根据逗号分隔为数组

    rename => { "old_name" => "new_name" }   # 将 old_name 字段重命名为 new_name

    remove_field => [ "temp_field" ]       # 删除 temp_field 字段

    add_field => { "new_field" => "new_value" } # 添加一个新字段 new_field,值为 new_value

  }

}

2.6、Logstash过滤器之GeoIP地址查询

GeoIP库可以根据IP地址提供对应的地域信息,包括国别,省市,经纬度等,对于可视化地图和区域统计非常有用。

单独安装命令

bin/logstash-plugin install logstash-filter-geoip

用例:

filter {

  geoip {

    source => "src_ip"         # 指定包含 IP 地址的字段名

    target => "geoip_data"    # 指定存储地理位置信息的字段名

    database => "/path/to/GeoLite2-City.mmdb" # 指定 GeoIP 数据库的路径

    # 可选的配置参数

    add_field => { "[geoip][coordinates]" => "%{[geoip][latitude]},%{[geoip][longitude]}" }

    remove_field => ["[geoip][database]" ] # 移除不必要的信息

  }

}

geolite库下载地址:https://dev.maxmind.com/geoip/geolite2-free-geolocation-data/

日志数据中有一个字段 src_ip 包含 IP 地址,通过上述配置,Logstash 将会使用 GeoIP 数据库来查询该 IP 地址的地理位置,并将结果存储在 geoip_data 字段中。结果可能包括国家名称 ([geoip][country_name])、城市名称 ([geoip][city_name])、经纬度 ([geoip][latitude] 和 [geoip][longitude]) 等信息。

2.7、Logstash过滤器之useragent匹配归类

解析用户代理(User-Agent)字符串,并从中提取有关用户设备的详细信息(操作系统、浏览器类型、版本号等)

安装命令

bin/logstash-plugin install logstash-filter-useragent

用例:

filter {

  useragent {

    source => "user_agent_string"   # 指定包含 User-Agent 字符串的字段名

    target => "user_agent_info"   # 指定存储解析后信息的字段名

    remove_field => ["user_agent_string"] # 可选:移除原始的 User-Agent 字段

  }

}

Logstash 将会解析User-Agent字符串,并将结果存储在 user_agent_info 字段中。

2.8、Logstash的output配置

Logstash 支持多种输出插件,使得数据可以流向各种不同的系统和服务,如 Elasticsearch、Kafka、文件系统、数据库等。

output {

  # 输出处理后的数据到标准输出

  stdout { codec => rubydebug }

  

  # 或者输出到Elasticsearch

  elasticsearch {

    hosts => ["localhost:9200"]

    index => "myindex"

  }

}

2.9、Logstash的配置文件

input {

  # 定义输入插件和配置选项

}

filter {

  # 定义过滤器插件和配置选项

}

output {

  # 定义输出插件和配置选项

}

、Kibana介绍

Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮你汇总、分析和搜索重要数据日志

四、ELK部署实战

这里用单节点部署


4.1、Elasticsearch(ES)部署配置(Version: 8.17.0

4.1.1、Elasticsearch(ES)下载安装

新增repo配置yum源以下载 

[elasticsearch]
name=Elasticsearch repository for 8.x packages
baseurl=https://artifacts.elastic.co/packages/8.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
[root@ES ~]# yum install --enablerepo=elasticsearch elasticsearch

jdk下载对应芯片及服务器版本的。(Version: 8.17.0的ES需要17以上)

[root@ES ~]# yum install java-17-openjdk-devel
#设置环境变量
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH    
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar 
[root@ES ~]# java -version
openjdk version "17.0.13" 2024-10-15 LTS
OpenJDK Runtime Environment (Red_Hat-17.0.13.0.11-1) (build 17.0.13+11-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.13.0.11-1) (build 17.0.13+11-LTS, mixed mode, sharing)
4.1.2、Elasticsearch(ES)配置
#创建运行ES的普通用户
[root@ES ~]# useradd users
[root@ES ~]# echo "123456" | passwd --stdin "users"
Changing password for user elasticsearch.
passwd: all authentication tokens updated successfully.
#配置ES
#vim /etc/elasticsearch/elasticsearch.yml 
#sed -ri '/^#/d' /etc/elasticsearch/elasticsearch.yml 
#没配置集群发现,默认多播(multicast)发现其他集群节点
# 集群名称
cluster.name: elk
# 节点名称
node.name: elk01
# 配置集群的初始主节点
cluster.initial_master_nodes: ["elk01"]
# 角色配置
node.roles: ["master", "data"]
# 数据路径
path.data: /var/lib/elasticsearch
# 日志路径
path.logs: /var/log/elasticsearch
# 是否内存锁定
bootstrap.memory_lock: false
# 网络主机设置
network.host: 0.0.0.0
# HTTP 端口
http.port: 9200
# 启用 CORS
http.cors.enabled: true
# 允许的 CORS 来源
http.cors.allow-origin: "*"
#关闭安全功能
xpack.security.enabled: false
# 禁用 SSL 传输层安全性
xpack.security.transport.ssl.enabled: false
xpack.security.http.ssl.enabled: false
4.1.3、Elasticsearch配置参数解释

集群设置

cluster.name:my_cluster

集群名称,同一集群节点名称需相同

node.name

node-1

节点名称,唯一标识

node.master

true

节点是否为主节点(8.x已废弃)使用node.roles代替

node.data

true

节点是否存储索引数据

node.roles

["master", "data"]

8.x以上使用。 "master" 角色(参与主节点选举和管理集群状态),"data" 角色(存储和索引数据),"ingest" 角色(处理数据摄入管道)

discovery.seed_hosts

["host1", "host2", "10.211.55.10:9300"]

集群中用于节点发现

cluster.initial_master_nodes

["host1", "host2"]

集群初始化时参与主节点选举节点

discovery.zen.minimum_master_nodes

2

设置选举主节点时需要参与的最少候选节点数。官方推荐(n/2)+1

discovery.zen.ping.timeout

1s

节点发现过程中的 ping 超时时间

网络设置

network.host

0.0.0.0 

监听网络请求的接口地址

http.port

9200

 服务端口号,默认9200

transport.tcp.port

9300

TCP 端口号,默认9300

存储设置

path.data

/path/to/data

索引数据存储路径

path.logs

/path/to/logs

日志文件存储路径

path.plugins

/path/to/plugins

插件存放路径(默认是es根目录下的plugins文件夹)

内存设置

bootstrap.memory_lock

true

是否在启动时锁定内存,防止内存交换到磁盘flase为否

ES_JAVA_OPTS

-Xms2g -Xmx2g

Java虚拟机(JVM)的堆内存大小

索引设置

index.number_of_shards

5

新索引默认分片数量

index.number_of_replicas

1

新索引默认的副本数量

安全设置

xpack.security.enabled

true

是否启用 X-Pack 安全特性

xpack.security.transport.ssl.enabled

true

是否启用传输层的 SSL 加密

xpack.security.http.ssl.enabled

true

是否启用 HTTP 层的 SSL 加密

日志设置

logger.org.elasticsearch

INFO

日志级别,例INFO、DEBUG、TRACE 等

其他设置

bootstrap.system_call_filter

true

是否允许执行潜在危险的系统调用(已被移除)

http.cors.enabled 

true

是否启用跨域资源共享(CORS)

http.cors.allow-origin

"*"

允许跨域请求的来源

cluster.routing.allocation

"all"

控制分片的分配策略

cluster.routing.allocation.disk.watermark

85%

磁盘空间使用阈值

cluster.routing.allocation.balance

"0.45f"

分片在不同节点之间的平衡策略

4.1.4、jvm堆大小配置

内存最小值(Xms)与最大值(Xmx)的大小相同,防止程序在运行时改变堆内存的大小。

堆内存大小不要超过系统内存的50%

[root@ES ~]# vim /etc/elasticsearch/jvm.options
## -Xms4g
## -Xmx4g
4.1.5、系统优化

(重新登录/重启才生效)

[root@ES ~]# vim /etc/security/limits.conf 

#每个用户打开的最大文件描述符数量为 65536,超出则警告* soft nofile 65536#每个用户打开的最大文件描述符数量为 131072,超出则操作失败* hard nofile 131072#每个用户创建的最大进程数量为 2048,超出则警告* soft nproc 2048#每个用户创建的最大进程数量为 4096,超出则操作失败* hard nproc 4096
4.1.6、启动ES
设置文件权限chown -R elasticsearch:elasticsearch /etc/elasticsearchchown -R elasticsearch:elasticsearch /var/lib/elasticsearchchown -R elasticsearch:elasticsearch /var/log/elasticsearch为前面创建的普通用户添加访问权限[root@ES ~]# usermod -aG elasticsearch useres[root@ES ~]# id useres uid=1001(useres) gid=1001(useres) groups=1001(useres),979(elasticsearch)​​​​​​​切换为普通用户[root@ES ~]# su - useres [useres@ES ~]$ systemctl start elasticsearch.service ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====Authentication is required to start 'elasticsearch.service'.Authenticating as: adminPassword: ==== AUTHENTICATION COMPLETE ====

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

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

相关文章

【老白学 Java】项目演练 - Quizzes #2

项目演练 - Quizzes #2 文章来源:《Head First Java》修炼感悟。 上一篇文章老白仔细分析了 Quizzes 的类结构,本文接上一章继续对功能模块逐步完善。 整个程序没有复杂的算法,仅仅用到了一些基础知识,如果大家已经了解了这部分内…

计算机网络 (33)传输控制协议TCP概述

一、定义与基本概念 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。它工作在OSI模型的第四层,即传输层,为用户提供可靠的、有序的和无差错的数据传输服务。TCP协议与UDP协议是传输层的两大主要协议,但两者在设计上有明显的不同&…

JuiceFS 2024:开源与商业并进,迈向 AI 原生时代

即将过去的 2024 年,是 JuiceFS 开源版本推出的第 4 年,企业版的第 8 个年头。回顾过去这一年,JuiceFS 社区版依旧保持着快速成长的势头,GitHub 星标突破 11.1K,各项使用指标增长均超过 100%,其中文件系统总…

4、SDH为基础的多业务传送-MSTP

1、SDH(Synchronous Digital Hierarchy,同步数字体系) SDH 就像是一条超级高速公路,它的规则很严格,所有的车辆(数据信号)都要按照它规定的速度和车道(标准的传输体制)行…

初级前端面试题 - js

前言:众所周知,HTML,CSS,JS是学习前端所必备的。js的基础学好了,框架类的vue,react等都会接受的很快,因此js是前端很总要的一个部分,这篇文章将会结合面试题,对js的知识点进行总结 号外号外,这是…

使用 Maxwell 计算母线的电动势

三相短路事件的动力学 三相短路事件在电气系统中至关重要,因为三相之间的意外连接会导致电流大幅激增。如果管理不当,这些事件可能会造成损坏,因为它们会对电气元件(尤其是母线)产生极大的力和热效应。 短路时&#x…

Unity自定义编辑器:基于枚举类型动态显示属性

1.参考链接 2.应用 target并设置多选编辑 添加[CanEditMultipleObjects] using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor;[CustomEditor(typeof(LightsState))] [CanEditMultipleObjects] public class TestInspector :…

利用 Python 脚本批量创建空白 Markdown 笔记

文章目录 利用 Python 脚本批量创建空白 Markdown 笔记1 背景介绍2 需求描述3 明确思路4 具体实现4.1. 遍历 toc.md 文件,收集文件名和对应的文件内容4.2. 实现文件批量生成逻辑4.3. 补全缺失的工具函数4.4. 进一步补全工具函数中的工具函数 5 脚本运行6 注意事项 利…

Apache XMLBeans 一个强大的 XML 数据处理框架

Apache XMLBeans 是一个用于处理 XML 数据的 Java 框架,它提供了一种方式将 XML Schema (XSD) 映射到 Java 类,从而使得开发者可以通过强类型化的 Java 对象来访问和操作 XML 文档。下面将以一个简单的案例说明如何使用 Apache XMLBeans 来解析、生成和验…

计算机毕业设计Python机器学习农作物健康识别系统 人工智能 图像识别 机器学习 大数据毕业设计 算法

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

2024-2029年中国毛绒玩具行业市场分析及发展前景预测报告

引言:重要性及市场增长趋势 在快节奏的现代生活中,毛绒玩具以其柔软触感和温馨陪伴,成为了许多人心灵的慰藉。它们不仅是儿童的忠实玩伴,更是成人世界里不可或缺的情感寄托。近年来,随着消费者情感需求的日益增长和个…

安装vue脚手架出现的一系列问题

安装vue脚手架出现的一系列问题 前言使用 npm 安装 vue/cli2.权限问题及解决方法一:可以使用管理员权限进行安装。方法二:更改npm全局安装路径 前言 由于已有较长时间未进行 vue 项目开发,今日着手准备开发一个新的 vue 项目时,在…

YARN WebUI 服务

一、WebUI 使用 与HDFS一样,YARN也提供了一个WebUI服务,可以使用YARN Web用户界面监视群集、队列、应用程序、服务、流活动和节点信息。还可以查看集群详细配置的信息,检查各种应用程序和服务的日志。 1.1 首页 浏览器输入http://node2.itc…

JavaSE——网络编程

一、InetAddress类 InetAddress是Java中用于封装IP地址的类。 获取本机的InetAddress对象: InetAddress localHost InetAddress.getLocalHost();根据指定的主机名获取InetAddress对象(比如说域名) InetAddress host InetAddress.getByNa…

互联网全景消息(10)之Kafka深度剖析(中)

一、深入应用 1.1 SpringBoot集成Kafka 引入对应的依赖。 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupI…

G1原理—3.G1是如何提升垃圾回收效率

大纲 1.G1为了提升GC的效率设计了哪些核心机制 2.G1中的记忆集是什么 3.G1中的位图和卡表 4.记忆集和卡表有什么关系 5.RSet记忆集是怎么更新的 6.DCQ机制的底层原理是怎样的 7.DCQS机制及GC线程对DCQ的处理 提升G1垃圾回收器GC效率的黑科技 G1设计了一套TLAB机制 快速…

Elastic-Job相关

文档参考视频&#xff1a;09_SpringBoot案例演示_哔哩哔哩_bilibili 一、Elastic-Job介绍 Elastic-Job 是一个轻量级、分布式的任务调度框架&#xff0c;旨在解决分布式环境下的定时任务调度问题。 1.1. Elastic-Job 的核心组件 Elastic-Job 是由多个核心组件构成的&#x…

【Linux】设备驱动中的ioctl详解

在Linux设备驱动开发中&#xff0c;ioctl&#xff08;输入输出控制&#xff09;是一个非常重要的接口&#xff0c;用于用户空间应用程序与内核空间设备驱动之间进行通信。通过ioctl&#xff0c;应用程序可以发送命令给设备驱动&#xff0c;控制设备的行为或获取设备的状态信息。…

再次梳理ISP的大致流程

前言&#xff1a; 随着智能手机的普及&#xff0c;相机与我们的生活越来越紧密相关。在日常生活中&#xff0c;我们只需要轻轻按下手机上的拍照按钮&#xff0c;就能记录下美好时刻。那么问题来了&#xff1a;从我们指尖按下拍照按钮到一张色彩丰富的照片呈现在我们面前&#x…

基于R语言森林生态系统的结构、功能与稳定性

在生态学研究中&#xff0c;森林生态系统的结构、功能与稳定性是核心研究内容之一。这些方面不仅关系到森林动态变化和物种多样性&#xff0c;还直接影响森林提供的生态服务功能及其应对环境变化的能力。森林生态系统的结构主要包括物种组成、树种多样性、树木的空间分布与密度…