ELK 企业日志分析系统核心总结

ELK 企业日志分析系统核心

一、ELK 基础认知

ELK 是Elasticsearch、Logstash、Kibana三大开源工具组成的集中式日志分析平台,用于解决分散日志收集、检索、统计、可视化难题,适用于日志分析、APM、安全监控、业务指标分析等场景。

ELK工作原理展示图:

【APPServer集群】→→【logstash Agent 采集器】→→【ElasticSearch Cluster】→→【KibanaServer】→→【Browser】

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

简单来说,进行日志处理分析,一般需要经过以下几个步骤:

  1. 将日志进行集中化管理(beats)
  2. 将日志格式化(logstash)
  3. 对格式化后的数据进行索引和存储(elasticsearch)
  4. 前端数据的展示(kibana)

二、三大组件核心作用

  1. Elasticsearch(ES)

    • 定位:分布式搜索引擎,负责存储、索引、高速检索、聚合分析日志数据
    • 特点:分布式高可用、毫秒级实时搜索、倒排索引、RESTful API、强大聚合能力
  2. Logstash

    • 定位:数据处理管道,负责收集、过滤、格式化、转发日志
    • 流程:Input(采集)→ Filter(解析 / 清洗)→ Output(输出)
    • 轻量替代:Beats(Filebeat/Metricbeat),资源占用更低
  3. Kibana

    • 定位:可视化平台,提供 Web 界面做数据查询、图表展示、仪表盘、集群管理

三、核心工作流程

日志源 → Logstash/Beats(采集处理) → Elasticsearch(存储索引) → Kibana(可视化分析)


四、实验环境与部署步骤

1. 实验拓扑

  • 2 台 ES 节点(node1/192.168.108.41、node2/192.168.108.42):部署 ES+head 插件,node1 额外装 Kibana
  • 1 台 Apache 节点(192.168.108.43):部署 Apache+Logstash,采集系统与 Web 日志
  • 系统:CentOS 7.9,依赖 JDK 1.8

2. 部署关键步骤

  1. ES 集群部署

    • 配置 hosts、JDK、数据目录权限
    • 修改 elasticsearch.yml:集群名、节点名、网络绑定、单播发现
    • 启动服务,验证集群健康状态(green 为正常)
    bash 复制代码
    # 最底下加2行
    [root@node1 ~]# vi /etc/hosts
    192.168.108.41 node1
    192.168.108.42 node2
    node2
    [root@node1 ~]# java -version
    openjdk version "1.8.0_262"
    OpenJDK Runtime Environment (build 1.8.0_262-b10)
    OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
    
    [root@node2 ~]# vim /etc/hosts
    192.168.108.41 node1
    192.168.108.42 node2
    [root@node2 ~]# java -version
    openjdk version "1.8.0_262"
    OpenJDK Runtime Environment (build 1.8.0_262-b10)
    OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
    
    #安装elasticsearch rpm包,上传elasticsearch-5.5.0.rpm到/opt目录下
    [root@node1 ~]# cd /opt
    [root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm
    
    
    
    #加载系统服务
    [root@node1 ~]# systemctl daemon-reload 
    [root@node1 ~]# systemctl enable elasticsearch.service
    
    #更改elasticsearch主配置文件
    [root@node1 ~]# cp /etc/elasticsearch/elasticsearch.yml 
    /etc/elasticsearch/elasticsearch.yml.bak
    [root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml
    17 cluster.name: my-elk-cluster #集群名字
    23 node #节点名字
    33 path.data: /data/elk_data #数据存放路径
    37 path.logs: /var/log/elasticsearch/ #日志存放路径
    43 bootstrap.memory_lock: false #不在启动的时候锁定内存:锁定物理内存
    地址,防止es内存被交换出去,也就是避免es使用swap交换分区,频繁的交换,会导致IOPS变高。
    55 network.host: 0 #提供服务绑定的IP地址,0.0.0.0代表
    所有地址
    59 http.port: 9200 #侦听端口为9200
    68 discovery.zen.ping.unicast.hosts: ["node1", "node2" #集群发现通过单播实现
    
    #创建数据存放路径并授权
    [root@node1 opt]# mkdir -p /data/elk_data
    [root@node1 opt]# chown elasticsearch:elasticsearch /data/elk_data/
    
    #启动elasticsearch是否成功开启
    [root@node1 elasticsearch]# systemctl start elasticsearch.service
    [root@node1 elasticsearch]# netstat -antp |grep 9200
    tcp6 0 0
     LISTEN
    64463/java

    查看节点信息 用真机192.168.108.1 的浏览器打开 http://192.168.108.41:9200 有文件打开 下面 是节点的信息

    bash 复制代码
    {
    "name" : "node1",
    "cluster_name" : "my-elk-cluster",
    "cluster_uuid" : "KnVmyqgIRVqNtWVbic3Jbw",
    "version" : {
    "number" : "5.5.0",
    "build_hash" : "260387d",
    "build_date" : "2017-06-30T23:16:05.735Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.0"
    },
    "tagline" : "You Know, for Search"
  2. ES-head 插件安装

    • 依赖 Node.js、PhantomJS,开启 ES 跨域,通过 9100 端口可视化管理集群
  3. Logstash 部署

    • 安装后配置 Input(系统日志 / Apache 日志)、Output(输出到 ES)
    • 按日志类型分索引(system-、apache_access-、apache_error-*)
    bash 复制代码
    [root@apache ~]# cd /opt
    [root@apache opt]# rpm -ivh logstash-5.5.1.rpm # 安装logstash
    [root@apache opt]# systemctl start logstash.service # 启动logstash
    [root@apache opt]# systemctl enable logstash.service
    [root@apache opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/ 
    #建立logstash软连接
  4. Kibana 部署

    • 配置 ES 地址,监听 5601 端口
    • 创建索引模式,在 Discover 查看结构化日志,制作可视化图表
    bash 复制代码
    [root@node1 ~]# cd /usr/local/src/
    [root@node1 src]# rpm -ivh kibana-5.5.1-x86_64.rpm
    [root@node1 src]# cd /etc/kibana/
    [root@node1 kibana]# cp kibana.yml kibana.yml.bak
    [root@node1 kibana]# vim kibana.yml
    2 server.port: 5601 # kibana打开的端口
    7 server.host: "0.0.0.0" #kibana侦听的地址
    21 elasticsearch.url: "http://192.168.108.41:9200" #和elasticsearch建
    立联系
    30 kibana.index: ".kibana" #在elasticsearch中
    添加.kibana索引
    [root@node1 kibana]# systemctl start kibana.service # 启动kibana服务
    [root@node1 kibana]# systemctl enable kibana.service # 开机启动kibana服务
bash 复制代码
[root@apache ~]# cd /etc/logstash/conf.d/
[root@apache conf.d]# touch apache_log.conf
[root@apache conf.d]# vim apache_log.conf 
input {
file{
path => "/etc/httpd/logs/access_log"
type => "access"
start_position => "beginning"
}
file{
path => "/etc/httpd/logs/error_log"
type => "error"
start_position => "beginning"
}
}
output {
if [type] == "access" {
elasticsearch {
hosts => ["192.168.108.41:9200"]
index => "apache_access-%{+YYYY.MM.dd}"
}
}
if [type] == "error" {
elasticsearch {
hosts => ["192.168.108.41:9200"]
index => "apache_error-%{+YYYY.MM.dd}"
}
[root@apache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf

五、核心功能与价值

  • 集中管理分散服务器日志,替代手动 grep 检索
  • 实时解析、存储、查询海量日志
  • 可视化展示系统状态、Web 访问 / 错误日志
相关推荐
我爱学习好爱好爱6 小时前
ELK 7.17.10 收集Docker Compose部署的SpringBoot2+Vue3项目日志(Rockylinux9.6)
elk·docker·容器
我爱学习好爱好爱7 天前
ELK 7.17.10 + Redis 5.0.7 构建高可用 Nginx 日志收集系统(Rocky Linux 9.6 实战)
redis·nginx·elk
我爱学习好爱好爱11 天前
ELK日志分析平台(五):Filebeat 部署与 Nginx 日志采集(输出至 Logstash)(基于Rocky Linux 9.6)
linux·nginx·elk
我爱学习好爱好爱13 天前
ELK日志分析平台(三):Logstash 7.17.10 独立节点部署与基础测试(基于Rocky Linux 9.6)
linux·python·elk
我爱学习好爱好爱13 天前
ELK日志分析平台(四):Kibana 7.17.10 部署与基本配置(与ES01同机,基于Rocky Linux 9.6)
linux·运维·elk
七夜zippoe14 天前
[特殊字符] Python日志系统革命:Loguru结构化日志与ELK Stack集中管理实战指南
大数据·python·elk·loguru·logstash
来一杯龙舌兰15 天前
【ELK】Filebeat+Redis+双Logstash架构解析与部署教程(图文)
redis·elk·架构·日志监控
A 糖醋排骨15 天前
小型项目elk搭建
elk
昱宸星光1 个月前
ELK日志收集平台搭建
elk