ELK日志分析系统

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

目录

一:ELK平台介绍

1.ELK概述

2. Elasticsearch

3. Logstash

4. Kibana

二:部署ES群集

1.基本设置

2.安装Elasticsearch

三:安装Logstash

1.在logstash服务器上安装logstash

2.测试安装结果

3. Logstash配置文件

四:Filebeat

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

2.安装filebeat

3.配置web01服务器filebeat的输出

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

5.运行1ogstash并验证

五.安装Kibana

1.在elkl上安装Kibana

2.修改Kibana主配置文件

3. 启动 Kibana 服务

4.验证Kibana


一:ELK平台介绍

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

1.ELK概述

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

2. Elasticsearch

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

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

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

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

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

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

3. Logstash

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

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

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

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

4. Kibana

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

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

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

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

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

二:部署ES群集

1.基本设置

在俩台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

2.安装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

1.在logstash服务器上安装logstash

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

2.测试安装结果

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

3. 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}"
  }
}

四:Filebeat

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

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

2.安装filebeat

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

3.配置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 &

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

如果发现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}

5.运行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

1.在elkl上安装Kibana

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

2.修改Kibana主配置文件

server.host: "0.0.0.0"

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

3. 启动 Kibana 服务

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

4.验证Kibana

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


网站公告

今日签到

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