ELK日志分析系统

发布于:2025-06-15 ⋅ 阅读:(15) ⋅ 点赞:(0)

目录

ELK平台介绍

ELK概述

Elasticsearch

ElasticSearch概述

Elasticsearch核心概念

Logstash

logstash介绍

Logstash工作的三个阶段

Kibana

Kibana介绍

Kibana主要功能

部署ES群集

基本配置

在俩台ES主机上设置hosts文件

关闭所有节点的防火墙

创建es运行用户

安装java环境

为用户设置资源访问限制

安装Elasticsearch

更改Elasticsearch主配置文件

创建数据存放路径并授权

启动es

查看节点信息

安装logstash

logstash服务器上安装logstash

测试安装结果

logstash配置文件

Filbeat

在产生日志的客户端服务器上安装filebeat(本案例为elk2主机)

安装filebeat

配置web01服务器filebeat的输出

修改logstash的配置文件,使日志输出到

运行1ogstash并验证

安装Kibana

在elkl上安装Kibana

修改Kibana主配置文件

启动Kibana服务

验证Kibana


ELK平台介绍

在数字化时代,海量数据如潮水般涌来,尤其是日志数据,它记录着系统运行的每一个细节,蕴含着巨大的价值。然而,如何高效地收集、存储、分析和可视化这些日志数据,成为众多企业和技术人员面临的挑战。ELK 平台应运而生,为日志管理和数据分析提供了一套强大而完整的解决方案

ELK概述

ELK 并非单一的软件,而是由 Elasticsearch、Logstash 和 Kibana 三个开源软件组成的技术栈,它们相互协作,形成了一个强大的日志处理和分析平台。在实际应用中,无论是排查系统故障、监控应用性能,还是挖掘用户行为数据,ELK 都能发挥关键作用,帮助企业从繁杂的日志中提取有价值的信息

Elasticsearch

ElasticSearch概述

Elasticsearch 是一个基于 Lucene 的分布式搜索和分析引擎,具有高扩展性、高可用性和实时处理能力。它采用分布式架构,能够轻松应对 PB 级别的数据量,通过将数据分散存储在多个节点上,实现数据的水平扩展。同时,Elasticsearch 支持实时索引和搜索,能够快速响应用户的查询请求,为数据分析提供了强大的支持。

Elasticsearch核心概念

索引(Index):可以理解为一个数据库,是具有相同特征的文档的集合。每个索引都有自己的映射(Mapping),定义了文档中字段的类型和属性。​

文档(Document):是 Elasticsearch 中最小的数据单元,类似于关系型数据库中的一行记录。一个文档由多个字段组成,每个字段都有自己的值。​

类型(Type):在早期版本中,类型用于对文档进行分类,但在 Elasticsearch 7.0 及以上版本中,已逐步弃用该概念,推荐使用单一类型。​

分片(Shard):为了提高数据处理能力和存储容量,Elasticsearch 将索引划分为多个分片,每个分片都是一个独立的 Lucene 索引,可以分布在不同的节点上。​

副本(Replica):为了提高数据的可用性和查询性能,每个分片可以有多个副本。副本是分片的拷贝,分布在不同的节点上,当主分片出现故障时,副本可以自动切换为主分片。

Logstash

logstash介绍

Logstash 是一个开源的数据收集引擎,具有高度的灵活性和可扩展性。它能够从各种数据源(如文件、系统日志、网络端口等)收集数据,对数据进行过滤、转换和丰富,然后将处理后的数据输出到各种目标(如 Elasticsearch、数据库、文件等)。Logstash 通过插件机制实现了对多种数据源和输出目标的支持,用户可以根据实际需求选择和安装相应的插件

Logstash工作的三个阶段

输入(Input):Logstash 通过输入插件从各种数据源收集数据。常见的输入插件包括file(从文件读取数据)、syslog(接收系统日志)、beats(接收 Beats 发送的数据)等。​

过滤(Filter):在过滤阶段,Logstash 可以对收集到的数据进行各种处理,如数据清洗、字段提取、数据转换等。通过使用过滤插件,用户可以灵活地定制数据处理逻辑,满足不同的业务需求。常见的过滤插件包括grok(用于解析非结构化数据)、mutate(用于数据转换和字段操作)、drop(用于丢弃不符合条件的数据)等。​

输出(Output):经过过滤处理后的数据,Logstash 通过输出插件将其发送到目标存储或系统中。常见的输出插件包括elasticsearch(将数据发送到 Elasticsearch)、file(将数据写入文件)、jdbc(将数据写入数据库)等

Kibana

Kibana介绍

Kibana 是一个开源的数据分析和可视化平台,与 Elasticsearch 紧密集成。它为用户提供了一个直观、友好的界面,用于搜索、分析和可视化存储在 Elasticsearch 中的数据。通过 Kibana,用户无需编写复杂的查询语句,即可轻松地对数据进行探索和分析,生成各种图表、报表和仪表盘,帮助用户更好地理解数据背后的信息。

Kibana主要功能

数据搜索:Kibana 提供了强大的搜索功能,用户可以通过关键词、字段过滤、时间范围等条件快速检索数据。​

可视化展示:支持多种可视化类型,如柱状图、折线图、饼图、地图等,用户可以根据数据特点选择合适的可视化方式,直观地展示数据的趋势和关系。​

仪表盘创建:用户可以将多个可视化图表组合成一个仪表盘,方便实时监控和分析数据。​

告警设置:根据数据的变化设置告警规则,当数据满足告警条件时,Kibana 可以通过邮件、短信等方式通知用户

部署ES群集

基本配置

在俩台ES主机上设置hosts文件

打开/etc/hosts文件,添加两台主机的 IP 地址和主机名映射,确保两台主机能够通过主机名相互访问

192.168.1.100 elk1

192.168.1.101 elk2

关闭所有节点的防火墙

systemctl stop firewalld

systemctl disable firewalld

创建es运行用户

useradd -M -s /sbin/nologin elasticsearch

安装java环境

yum install -y java-11

为用户设置资源访问限制

elasticsearch soft nofile 65536

elasticsearch hard nofile 131072

elasticsearch soft nproc 4096

elasticsearch hard nproc 4096

安装Elasticsearch

tar -zxvf elasticsearch-7.17.0-linux-x86_64.tar.gz -C /usr/local/

更改Elasticsearch主配置文件

cluster.name: my-elasticsearch-cluster

node.name: elk1

network.host: 0.0.0.0

http.port: 9200

discovery.seed_hosts: ["elk1", "elk2"]

cluster.initial_master_nodes: ["elk1", "elk2"]

创建数据存放路径并授权

mkdir -p /data/elasticsearch

chown -R elasticsearch:elasticsearch /data/elasticsearch

启动es

su - elasticsearch

./elasticsearch -d

查看节点信息

http://192.168.10.103:9200/_cat/nodes?v

安装logstash

logstash服务器上安装logstash

tar -zxvf logstash-7.17.0.tar.gz -C /usr/local/

测试安装结果

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

logstash配置文件

input {
  beats {
    port => 5044
  }
}
filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
}
output {
  elasticsearch {
    hosts => ["http://elk1:9200", "http://elk2:9200"]
    index => "apache-logs-%{+YYYY.MM.dd}"
  }
}

Filbeat

在产生日志的客户端服务器上安装filebeat(本案例为elk2主机)

tar -zxvf filebeat-7.17.0-linux-x86_64.tar.gz -C /usr/local/

安装filebeat

filebeat.inputs:
- type: log
  paths:
    - /var/log/apache2/access.log
output.logstash:
  hosts: ["elk1:5044", "elk2:5044"]

配置web01服务器filebeat的输出

[root@elk2 ^]# cd /usr/local/filebeat/
[root@elk2 filebeat]# mv filebeat. yml filebeat. yml.bak
[root@elk2 filebeat]# vim filebeat. yml

filebeat. inputs:
type: log
paths:
- /var/log/httpd/access_log
output.logstash:
hosts: ["192.168.10.102:5044"]

 [root@elk2 ^]# /usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat, yml &

修改logstash的配置文件,使日志输出到

如果发现logstash属于开启状态,就先关闭掉
可以先查一下logstash的进程,netstat-anpt
grep5044,再杀死这个进程。
如果要把日志提交给ES,可以使用如下内容

[root@elkl ^]# vim /usr/local/logstash/config/beats.conf

input {
beats {
5044
port
codec
json
output {
elasticsearch
hosts
["192.168.10.103:9200"]
index=> "weblog-beat-%{+YYYY.MM.dd}

运行1ogstash并验证

[root@elkl ^]#/usr/local/logstash/bin/logstash -f /usr/local/logstash/config/beats.conf --path.data=/usr/local/logstash/config.d/web01 &

查看索引,发现新增了一个weblog-beat-2025.04.28的索引
[root@elkl*]# curl -XGET "http://localhost:9200/_cat/indices?v"

安装Kibana

在elkl上安装Kibana

tar -zxvf kibana-7.17.0-linux-x86_64.tar.gz -C /usr/local/

修改Kibana主配置文件

server.host: "0.0.0.0"

elasticsearch.hosts: ["http://elk1:9200", "http://elk2:9200"]

启动Kibana服务

[root@localhost~]# su - es
[es@elkl ^]$ nohup /usr/local/kibana/bin/kibana &

验证Kibana

浏览器访问
http://192.168.10.101:5601


网站公告

今日签到

点亮在社区的每一天
去签到