ELK日志分析组件介绍+部署详解
目录
一、Elasticsearch
1.1、概述
es数据库的英文全称为ElsticSearch,是位于Elastic Stack核心的分布式搜索和分析引擎。是一个由Apache开源的高扩展、全文检索和分析引擎(NoSQL数据库功能)的系统,它可以准实地快速存储、搜索、分析海量的数据。
1.2、特点
-
基于java/lucene构建,支持实时搜索
-
分布式部署,可横向集群扩展
-
支持百万级数据
-
支持多条件查询,如聚合查询
-
高可用,数据源进行切片备份
-
支持Restful风格的api调用
1.3、应用场景
-
监控。对日志类数据进行存储、分析、可视化。对日志数据,ES给出了ELK的解决方案。其中logstash采集日志,ES进行复杂的数据分析,转换你的日志,并将他们存储在es中,kibana进行可视化展示。
-
线上商城系统,用户需要搜索购物系统网站上的商品信息。es可以存储所有的商品信息和一些库存信息,用户通过搜索引擎可以查询到自己需要的商品信息。
-
json文档数据库。用于存放json格式的文档。
二、Logstash
Logstash是一个开源的数据收集引擎,它具有强大的数据处理能力。主要功能是从多种数据源获取数据,对数据进行转换和过滤,然后将其输出到目标存储或分析系统。
作用
Logstash 是一个数据收集引擎,它可以从多个数据源(如文件、数据库、消息队列等)收集数据,对数据进行转换和过滤,然后将其发送到其他存储或分析工具(如 Elasticsearch)。例如,它可以从各种服务器上的日志文件中收集日志,对日志进行解析,提取出有用的信息(如时间戳、日志级别、消息内容等),还可以对数据进行清洗,去除不需要的信息或者对敏感信息进行脱敏处理。
Logstash的配置文件是基于JSON样式的配置语言编写的,主要由三个部分组成:input(输入)、filter(过滤)和output(输出)。
input部分:
定义了数据的来源。
filter部分:
用于对输入的数据进行处理。
output部分:
确定了数据的输出目标。
三、Filebeat
作用
Filebeat 是一个轻量级的数据收集器,主要用于收集和发送日志文件。它占用资源少,适合在各种服务器上部署,用于实时地将日志数据发送到 Logstash 或 Elasticsearch。与 Logstash 相比,它更专注于日志文件的收集,并且在性能上更适合大量日志的收集场景。例如,在一个拥有大量服务器的企业环境中,Filebeat 可以安装在每台服务器上,负责收集服务器上的各种日志(如系统日志、应用程序日志等),并将其发送到中央的 Logstash 或 Elasticsearch 进行进一步处理。
四、kibana
作用
Kibana 是一个用于数据可视化和探索的工具,它与 Elasticsearch 紧密配合。用户可以通过 Kibana 创建各种可视化图表(如柱状图、折线图、饼图等)和仪表盘,用于直观地展示存储在 Elasticsearch 中的数据。例如,在日志分析场景中,用户可以通过 Kibana 查看日志的分布情况、错误率的变化趋势等;在业务数据分析场景中,可以展示销售数据的增长趋势、用户行为的统计等。
五、 Elasticsearch安装与配置
安装JAVA8
[root@proxy1 ~]# yun install -y java
将elasticsearch软件包拷贝至elk主机执行安装
[root@proxy1 ~]# ls
anaconda-ks.cfg elasticsearch-7.17.3-x86_64.rpm kibana-7.17.3-x86_64.rpm
[root@proxy1 ~]# rpm -ivh elasticsearch-7.17.3-x86_64.rpm
配置elasticsearch
[root@proxy1 ~]# cd /etc/elasticsearch/
[root@proxy1 elasticsearch]# ls
elasticsearch.keystore elasticsearch.yml jvm.options.d role_mapping.yml users
elasticsearch-plugins.example.yml jvm.options log4j2.properties roles.yml users_roles
[root@proxy1 elasticsearch]# vim elasticsearch.yml
cluster.name: es-cluster
node.name: node-1
network.host: 192.168.150.43
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
http.cors.enabled: true
http.cors.allow-origin: "*"
启动elasticsearch服务
[root@proxy1 elasticsearch]# systemctl start elasticsearch.service
六、 logstash安装与配置
将logstash软件包拷贝至elk主机执行安装
[root@proxy2 ~]# ls
anaconda-ks.cfg logstash-7.17.3-x86_64.rpm
[root@proxy2 ~]# rpm -ivh logstash-7.17.3-x86_64.rpm
优化logstash命令
[root@proxy2 ~]# ln -s /usr/share/logstash/bin/logstash /usr/bin/
配置logstash
[root@proxy2 logstash]# vim logstash.yml
api.http.host: 192.168.150.40
api.http.port: 9600-9700
测试logstash服务的数据传输
##标准输入与输出
[root@proxy2 ~]# logstash 'input{ stdin{} }output { stdout{} }'
[INFO ] 2025-11-05 15:54:00.919 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600, :ssl_enabled=>false}
1
{
"@version" => "1",
"host" => "proxy2",
"message" => "1",
"@timestamp" => 2025-11-05T07:54:22.058Z
}
##使用rubydebug解码
[root@proxy2 ~]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug }}'
[INFO ] 2025-11-05 15:57:16.574 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600, :ssl_enabled=>false}
##输出到elasticsearch
[root@proxy2 ~]# logstash -e 'input { stdin{} } output { elasticsearch{ hosts=>["192.168.150.43:9200"]} }'
[INFO ] 2025-11-05 15:58:46.401 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600, :ssl_enabled=>false}
查看所有索引
http://192.168.150.43:9200/_cat/indices?v

创建配置文件
使用tags标签
[root@proxy2 conf.d]# vim webs.conf
input {
beats {
port => 5044
}
}
output {
if "web1-access" in [tags] {
elasticsearch {
hosts => ["192.168.150.43:9200"]
index => "web1-access-%{+YYYY.MM.dd}"
}
}
if "web1-error" in [tags] {
elasticsearch {
hosts => ["192.168.150.43:9200"]
index => "web1-error-%{+YYYY.MM.dd}"
}
}
if "web2-access" in [tags] {
elasticsearch {
hosts => ["192.168.150.43:9200"]
index => "web2-access-%{+YYYY.MM.dd}"
}
}
if "web2-error" in [tags] {
elasticsearch {
hosts => ["192.168.150.43:9200"]
index => "web2-error-%{+YYYY.MM.dd}"
}
}
stdout {
codec => rubydebug
}
}
启动logstash服务
[root@proxy2 conf.d]# logstash -f ./webs.conf
[INFO ] 2025-11-05 18:43:31.162 [Api Webserver] agent - Successfully started Logstash API endpoint {:port=>9600, :ssl_enabled=>false}
[INFO ] 2025-11-05 18:43:36.309 [[main]<beats] Server - Starting server on port: 5044
七、 nginx、filebeat安装与配置
[root@web1 ~]# yum install -y install nginx
[root@web1 ~]# ls
anaconda-ks.cfg filebeat-7.17.3-x86_64.rpm
[root@web1 ~]# rpm -ivh filebeat-7.17.3-x86_64.rpm
filebeat配置
filebeat.inputs:
- type: filestream
enabled: true
paths:
- /var/log/nginx/access.log
targs: "web1-access"
- type: filestream
enabled: true
paths:
- /var/log/nginx/error.log
targs: "web1-error"
output.logstash:
hosts: ["192.168.150.40:5044"]
##测试配置文件
[root@web1 filebeat]# filebeat test config
Config OK
启动filebeat
[root@web1 filebeat]# systemctl start filebeat.service
八、 Kibana安装与配置
将logstash软件包拷贝至elk主机执行安装
[root@proxy1 ~]# rpm -ivh kibana-7.17.3-x86_64.rpm
配置kibana
server.port: 5601
server.host: "192.168.150.43"
server.name: "proxy1"
elasticsearch.hosts: ["http://192.168.150.43:9200"]
kibana.index: ".kibana"
i18n.locale: "zh-CN"
访问kibana
创建索引


可视化

更多推荐



所有评论(0)