1. 首页 > ElasticSearch教程 > 正文

ElasticSearch教程FG022-ElasticSearch日志收集分析实战

内容简介:本文档风哥主要介绍ElasticSearch日志收集分析的完整流程,包括日志收集工具的配置、数据处理、索引设计以及可视化分析。通过学习本文,您将掌握如何构建一个完整的ELK Stack日志收集分析系统,实现对应用日志和系统日志的实时收集、分析和监控。风哥教程参考ElasticSearch官方文档Logging部分。

Part01-基础概念与理论知识

1.1 日志收集分析概述

日志收集分析是现代IT运维中的重要环节,它可以:

  • 帮助排查系统故障和应用问题
  • 提供系统性能和运行状态的实时监控
  • 支持安全事件的检测和响应
  • 为业务决策提供数据支持

1.2 ELK Stack架构

ELK Stack是一套完整的日志收集分析解决方案,由以下组件组成:

  • ElasticSearch:存储和索引日志数据
  • Logstash:处理和转换日志数据
  • Kibana:可视化和分析日志数据
  • Beats:轻量级日志收集工具,如Filebeat、Metricbeat等

1.3 日志收集工具

常用的日志收集工具包括:

  • Filebeat:轻量级日志文件收集器,适合收集服务器日志
  • Metricbeat:收集系统和服务的指标数据
  • Packetbeat:收集网络流量数据
  • Winlogbeat:收集Windows事件日志
  • Heartbeat:监控服务可用性

Part02-生产环境规划与建议

2.1 日志收集架构设计

生产环境中,日志收集架构建议:

  • 分层架构:采集层(Beats)→ 处理层(Logstash)→ 存储层(ElasticSearch)→ 可视化层(Kibana)
  • 高可用性:部署多个Logstash实例和ElasticSearch集群,确保系统可靠性
  • 扩展性:设计可扩展的架构,支持日志量的增长
  • 安全性:配置适当的访问控制和数据加密

2.2 系统资源规划

系统资源规划建议:

  • ElasticSearch:根据日志量和保留时间,配置足够的内存和磁盘空间
  • Logstash:根据日志处理量,配置足够的CPU和内存
  • Kibana:配置足够的内存和CPU,确保可视化性能
  • Beats:资源消耗较低,一般不需要特殊配置

2.3 日志存储策略

日志存储策略建议:

  • 索引策略:使用时间戳创建索引,如fgedu-logs-2024.01.01
  • 生命周期管理:配置索引生命周期,自动老化和删除过期日志
  • 分片策略:根据日志量和节点数,合理设置分片数
  • 备份策略:定期备份重要的日志数据

Part03-生产环境项目实施方案

3.1 Filebeat配置与部署

Filebeat的配置与部署步骤:

# 下载Filebeat
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.10.0-linux-x86_64.tar.gz

# 解压Filebeat
tar -xzf filebeat-8.10.0-linux-x86_64.tar.gz
mv filebeat-8.10.0-linux-x86_64 /es/app/filebeat-8.10.0

# 配置Filebeat
vi /es/app/filebeat-8.10.0/filebeat.yml

# 配置内容
filebeat.inputs:
– type: log
enabled: true
paths:
– /var/log/*.log
– /es/app/logs/*.log
tags: [“system”]
fields:
service: “system”
environment: “production”

output.logstash:
hosts: [“192.168.1.10:5044”]

# 启动Filebeat
/es/app/filebeat-8.10.0/filebeat -e -c /es/app/filebeat-8.10.0/filebeat.yml

# 作为系统服务启动
# 创建systemd服务文件
vi /etc/systemd/system/filebeat.service

[Unit]
Description=Filebeat
After=network.target

[Service]
Type=simple
User=root
ExecStart=/es/app/filebeat-8.10.0/filebeat -c /es/app/filebeat-8.10.0/filebeat.yml
Restart=always

[Install]
WantedBy=multi-user.target

# 启动服务
systemctl daemon-reload
systemctl start filebeat.service
systemctl enable filebeat.service

3.2 Logstash配置与部署

Logstash的配置与部署步骤:

# 下载Logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-8.10.0-linux-x86_64.tar.gz

# 解压Logstash
tar -xzf logstash-8.10.0-linux-x86_64.tar.gz
mv logstash-8.10.0-linux-x86_64 /es/app/logstash-8.10.0

# 创建Logstash配置文件
vi /es/app/logstash-8.10.0/config/logstash.conf

# 配置内容
input {
beats {
port => 5044
}
}

filter {
grok {
match => { “message” => “%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} \[%{DATA:service}\] %{GREEDYDATA:message}” }
}
date {
match => [ “timestamp”, “yyyy-MM-dd HH:mm:ss.SSS” ]
target => “@timestamp”
}
}

output {
elasticsearch {
hosts => [“http://192.168.1.10:9200”, “http://192.168.1.11:9200”, “http://192.168.1.12:9200”]
index => “fgedu-logs-%{+YYYY.MM.dd}”
}
stdout {
codec => rubydebug
}
}

# 启动Logstash
/es/app/logstash-8.10.0/bin/logstash -f /es/app/logstash-8.10.0/config/logstash.conf

# 作为系统服务启动
# 创建systemd服务文件
vi /etc/systemd/system/logstash.service

[Unit]
Description=Logstash
After=network.target

[Service]
Type=simple
User=root
ExecStart=/es/app/logstash-8.10.0/bin/logstash -f /es/app/logstash-8.10.0/config/logstash.conf
Restart=always

[Install]
WantedBy=multi-user.target

# 启动服务
systemctl daemon-reload
systemctl start logstash.service
systemctl enable logstash.service

3.3 ElasticSearch索引设计

ElasticSearch索引设计建议:

# 创建索引模板
curl -X PUT “http://192.168.1.10:9200/_index_template/fgedu-logs-template” -H “Content-Type: application/json” -d ‘{
“index_patterns”: [“fgedu-logs-*”],
“priority”: 100,
“template”: {
“settings”: {
“number_of_shards”: 3,
“number_of_replicas”: 1,
“refresh_interval”: “30s”,
“index.lifecycle.name”: “fgedu-logs-policy”,
“index.lifecycle.rollover_alias”: “fgedu-logs”
},
“mappings”: {
“properties”: {
“@timestamp”: {
“type”: “date”
},
“level”: {
“type”: “keyword”
},
“message”: {
“type”: “text”,
“analyzer”: “ik_max_word”
},
“service”: {
“type”: “keyword”
},
“host”: {
“type”: “keyword”
},
“environment”: {
“type”: “keyword”
}
}
}
}
}’

# 创建索引生命周期策略
curl -X PUT “http://192.168.1.10:9200/_ilm/policy/fgedu-logs-policy” -H “Content-Type: application/json” -d ‘{
“policy”: {
“phases”: {
“hot”: {
“actions”: {
“rollover”: {
“max_size”: “30gb”,
“max_age”: “7d”
}
}
},
“warm”: {
“min_age”: “30d”,
“actions”: {
“allocate”: {
“number_of_replicas”: 0
}
}
},
“delete”: {
“min_age”: “90d”,
“actions”: {
“delete”: {}
}
}
}
}
}’

3.4 Kibana可视化配置

Kibana可视化配置步骤:

  1. 访问Kibana界面:http://192.168.1.10:5601
  2. 点击左侧菜单中的”管理” → “索引模式”
  3. 点击”创建索引模式”,输入”fgedu-logs-*”
  4. 选择时间字段”@timestamp”
  5. 点击”创建索引模式”
  6. 点击左侧菜单中的”可视化”,创建各种可视化图表
  7. 点击左侧菜单中的”仪表盘”,创建日志分析仪表盘

Part04-生产案例与实战讲解

4.1 应用日志收集实战

收集应用日志:

# 配置Filebeat收集应用日志
vi /es/app/filebeat-8.10.0/filebeat.yml

# 添加应用日志输入
filebeat.inputs:
– type: log
enabled: true
paths:
– /es/app/app1/logs/*.log
tags: [“app1”]
fields:
service: “app1”
environment: “production”

– type: log
enabled: true
paths:
– /es/app/app2/logs/*.log
tags: [“app2”]
fields:
service: “app2”
environment: “production”

output.logstash:
hosts: [“192.168.1.10:5044”]

# 重启Filebeat
systemctl restart filebeat.service

4.2 系统日志收集实战

收集系统日志:

# 配置Filebeat收集系统日志
vi /es/app/filebeat-8.10.0/filebeat.yml

# 添加系统日志输入
filebeat.inputs:
– type: log
enabled: true
paths:
– /var/log/messages
– /var/log/secure
– /var/log/cron
tags: [“system”]
fields:
service: “system”
environment: “production”

output.logstash:
hosts: [“192.168.1.10:5044”]

# 重启Filebeat
systemctl restart filebeat.service

4.3 日志分析与可视化实战

使用Kibana进行日志分析与可视化:

  1. 在Kibana中创建”fgedu-logs-*”索引模式
  2. 点击左侧菜单中的”Discover”,查看日志数据
  3. 使用搜索框搜索特定日志,如”ERROR”或”Exception”
  4. 使用过滤器过滤特定服务或环境的日志
  5. 点击左侧菜单中的”可视化”,创建以下可视化:
    • 日志级别分布饼图
    • 按服务分组的日志数量柱状图
    • 日志数量随时间变化的折线图
  6. 点击左侧菜单中的”仪表盘”,创建日志分析仪表盘

4.4 日志告警配置实战

配置日志告警:

# 配置ElasticSearch告警
# 首先安装Alerting插件(如果未安装)
/es/app/elasticsearch-8.10.0/bin/elasticsearch-plugin install x-pack

# 在Kibana中配置告警:
# 1. 点击左侧菜单中的”Stack Management” → “Alerts and Insights” → “Rules”
# 2. 点击”Create rule”
# 3. 选择”Elasticsearch query”作为规则类型
# 4. 配置查询条件,如:
# – 索引模式:fgedu-logs-*
# – 时间范围:Last 5 minutes
# – 查询:level:ERROR
# 5. 配置触发条件,如:
# – When count of events is greater than 5
# 6. 配置通知方式,如:
# – Email
# – Webhook
# 7. 点击”Save”保存规则

Part05-风哥经验总结与分享

5.1 日志收集最佳实践

  • 标准化日志格式:统一日志格式,便于解析和分析
  • 合理设置索引策略:使用时间戳创建索引,便于管理和查询
  • 配置生命周期管理:自动老化和删除过期日志,节省存储空间
  • 优化Logstash配置:合理设置过滤器,提高处理效率
  • 使用模板和映射:为日志数据创建合适的映射,提高查询性能
  • 定期备份重要日志:确保关键日志数据的安全性

5.2 常见问题与解决方案

  • 日志收集不完整:检查Filebeat配置和文件权限,确保日志文件可访问
  • Logstash处理速度慢:增加Logstash实例,优化过滤器配置
  • ElasticSearch索引过大:调整索引策略,配置生命周期管理
  • Kibana可视化加载缓慢:优化查询语句,增加ElasticSearch缓存
  • 告警误报:调整告警触发条件,减少误报

5.3 性能优化建议

  • Filebeat优化:调整harvester数量和批处理大小
  • Logstash优化:增加JVM内存,调整pipeline工作线程数
  • ElasticSearch优化:合理设置分片数和副本数,调整缓存大小
  • 存储优化:使用SSD存储,配置合适的磁盘阵列
  • 网络优化:确保各组件之间的网络连接稳定,带宽足够
  • 查询优化:使用过滤查询,减少聚合操作的复杂度

更多视频教程www.fgedu.net.cn

学习交流加群风哥微信: itpux-com

学习交流加群风哥QQ113257174

风哥提示:构建一个高效的日志收集分析系统可以大大提高运维效率和问题排查能力

更多学习教程公众号风哥教程itpux_com

from ElasticSearch视频:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息