杭州公司网站建设,建筑施工企业有哪些,网站案例欣赏,著名办公室装修公司目录
ELK工作原理展示图
一、ElasticSearch介绍#xff08;数据搜索和分析#xff09;
1.1、特点
1.2、数据组织方式
1.3、特点和优势
1.3.1、分布式架构
1.3.2、强大的搜索功能
1.3.3、数据处理与分析
1.3.4、多数据类型支持
1.3.5、易用性与生态系统
1.3.6、高性…
目录
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、ElasticsearchES部署配置Version: 8.17.0
4.1.1、ElasticsearchES下载安装
4.1.2、Elasticsearch(ES)配置
4.1.3、Elasticsearch配置参数解释
4.1.4、jvm堆大小配置
4.1.5、系统优化
4.1.6、启动ES elk:日志搜集平台
Elastic StackELK由ElasticSearch、Logstash和Kibana三个开源工具组成
ELK工作原理展示图 Logstash收集Appserver产生的log并存放到ElasticSearch集群中而Kibana则从ES集群中查询数据生成图标再返回给Browser
一、ElasticSearch介绍数据搜索和分析
ElasticSearch是一个基于Lucene的开源分布式搜索服务。用于处理大规模数据的快速检索和分析并具有高可扩展性、高性能和强大的全文搜索能力。
1.1、特点
分布式零配置自动发现索引自动分片索引副本机制等。它提供了一个分布式多用户能力的全文搜索引擎。Elasticsearch是用Java开发的并作为Apache许可条款下的开放源码发布是第二流行的企业搜索引擎。设计用于云计算中能够达到实时搜索稳定可靠快速安装使用方便。 在elasticsearch中所有节点的数据是均等的。
1.2、数据组织方式
索引库--类型表--文档记录
1.3、特点和优势
综合来说就是搜索很快支持多类型数据可以监控可视化并且有丰富插件还有就是能够数据冗余高可用
1.3.1、分布式架构
可扩展性Elasticsearch采用分布式架构数据存储在多个节点上。可以通过添加新节点轻松扩展集群处理PB级别的数据。数据冗余与高可用性支持数据分片和副本机制。当某个节点出现故障时副本分片可以立即接管工作确保数据的可用性和搜索服务的正常运行。
1.3.2、强大的搜索功能
全文搜索基于Lucene构建提供了非常强大的全文搜索能力。能够理解文本的语义对文档中的文本内容进行深度分析。实时搜索能够实时索引新数据并立即用于搜索。复杂查询支持支持多种复杂的查询类型如布尔查询、范围查询、模糊查询等。
1.3.3、数据处理与分析
聚合功能提供强大的聚合功能可以对数据进行分组、统计和分析。数据关联与嵌套查询支持处理具有复杂结构的数据包括数据的嵌套和关联关系。
1.3.4、多数据类型支持
通用数据类型支持可以处理各种类型的数据包括文本、数字、日期、地理位置等。非结构化数据处理尤其擅长处理非结构化数据如日志文件、文档内容等。
1.3.5、易用性与生态系统
简单的API与RESTful接口提供了简单易用的API通过RESTful接口与外部应用进行交互。丰富的插件与集成拥有丰富的插件生态系统可以与其他工具和技术进行集成。
1.3.6、高性能
快速搜索Elasticsearch 优化了搜索速度能够快速返回搜索结果即使是在大规模数据集上。高效索引Elasticsearch 优化了数据索引过程可以高效地处理大量数据的索引。
1.3.7、灵活的数据模型
无模式Schema-lessElasticsearch 是无模式的这意味着你可以存储结构化、半结构化或非结构化的数据无需预先定义数据结构。动态映射Elasticsearch 可以自动检测并映射新的字段使得数据索引和搜索更加灵活。
1.3.8、可视化和监控
KibanaElasticsearch 的可视化工具 Kibana 可以轻松创建图表和仪表板帮助用户直观地理解数据。Elasticsearch 监控提供了监控工具可以监控集群状态、性能指标等。
1.4、Elasticsearch核心概念
Cluster集群包含多个节点每个节点属于哪个集群是通过一个配置来决定的对于中小型企业刚开始集群就一个节点很正常Node节点集群中的一个节点节点也要一个名称默认是随机分配的节点的名称很重要在执行运维管理的时候方便故障排查默认的节点会加入一个名称为“elasticsearch”的集群如果直接启动一堆节点那么它们会自动组成一个“elasticsearch”的集群当然一个节点也可以组成一个集群。Document文档ES中最小的数据单元一个document可以是一条客户数据一条商品分类数据一条订单数据通常用JSON数据结构表示每个index下的type中都可以存储多个documentIndex索引包含一堆相似结构的文档数据比如可以有一个客户索引商品分类索引订单索引索引有一个名称。Type类型每个索引里面都可以有一个或多个typetype是index的一个逻辑数据分类一个type下的document有相同的filed。比如博客系统有一个索引一个用户数据type博客数据type评论数据type。shard单机服务器无法存储大量数据ES可以将一个索引中的数据分割为多个shard分布在多台机器上存储有了shard就可以横向扩展存储更多的数据让搜索和分析操作分布到多台机器上执行提高吞吐量和性能。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、ElasticsearchES部署配置Version: 8.17.0
4.1.1、ElasticsearchES下载安装
新增repo配置yum源以下载
[elasticsearch]
nameElasticsearch repository for 8.x packages
baseurlhttps://artifacts.elastic.co/packages/8.x/yum
gpgcheck1
gpgkeyhttps://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled0
autorefresh1
typerpm-md
[rootES ~]# yum install --enablerepoelasticsearch elasticsearchjdk下载对应芯片及服务器版本的。Version: 8.17.0的ES需要17以上
[rootES ~]# 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
[rootES ~]# 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.1311-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-17.0.13.0.11-1) (build 17.0.1311-LTS, mixed mode, sharing)
4.1.2、Elasticsearch(ES)配置
#创建运行ES的普通用户
[rootES ~]# useradd users
[rootES ~]# 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/21 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%
[rootES ~]# vim /etc/elasticsearch/jvm.options
## -Xms4g
## -Xmx4g
4.1.5、系统优化
重新登录/重启才生效
[rootES ~]# 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为前面创建的普通用户添加访问权限[rootES ~]# usermod -aG elasticsearch useres[rootES ~]# id useres uid1001(useres) gid1001(useres) groups1001(useres),979(elasticsearch)切换为普通用户[rootES ~]# su - useres [useresES ~]$ systemctl start elasticsearch.service AUTHENTICATING FOR org.freedesktop.systemd1.manage-units Authentication is required to start elasticsearch.service.Authenticating as: adminPassword: AUTHENTICATION COMPLETE