当前位置: 首页 > news >正文

ELK 日志采集与解析实战

ELK 日志采集与解析实战

在上一篇中,我们完成了 ELK 集群的部署与优化。\ 本篇将介绍日志采集、解析及常用字段增强的实战方法,让你可以快速上手生产环境日志管理。


一、日志采集前的规划

1. 采集目标

  • 系统日志:/var/log/messages、/var/log/syslog

  • Web 日志:Nginx/Apache 日志

  • 应用日志:Java、Python、Go 应用日志

2. 采集节点规划

  • 数据节点无需安装采集工具

  • 每台需要采集日志的服务器安装 Filebeat

  • 可使用 Ansible 批量部署配置文件

3. 字段规划

  • timestamp:日志时间

  • host:日志来源主机

  • service:应用服务名

  • level:日志级别(INFO/ERROR/WARN)

  • message:日志内容


二、Filebeat 部署与配置

1. 安装 Filebeat

CentOS / RHEL

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
yum install https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.8.2-x86_64.rpm

Ubuntu / Debian

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.8.2-amd64.deb
dpkg -i filebeat-8.8.2-amd64.deb

2. 配置 Filebeat

编辑 /etc/filebeat/filebeat.yml:

filebeat.inputs:
- type: logpaths:- /var/log/messages- /var/log/syslogfields:service: systemfields_under_root: trueignore_older: 72h
​
- type: logpaths:- /var/log/nginx/access.log- /var/log/nginx/error.logfields:service: nginxfields_under_root: true
​
output.logstash:hosts: ["10.0.0.1:5044"]

3. 启动 Filebeat

sudo systemctl enable filebeat
sudo systemctl start filebeat
sudo systemctl status filebeat

三、Logstash 配置与解析

1. Logstash 管道设计

示例 pipeline 配置:/etc/logstash/conf.d/logs.conf
input {beats {port => 5044}
}
​
filter {if [service] == "nginx" {grok {match => { "message" => "%{IP:client_ip} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:status}" }}date {match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]target => "@timestamp"}} else if [service] == "system" {grok {match => { "message" => "%{SYSLOGTIMESTAMP:syslog_time} %{HOSTNAME:host} %{WORD:process}: %{GREEDYDATA:msg}" }}date {match => [ "syslog_time", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]target => "@timestamp"}}
}
​
output {elasticsearch {hosts => ["http://10.0.0.1:9200"]index => "%{service}-%{+YYYY.MM.dd}"}stdout { codec => rubydebug }
}

2. 常用字段增强

geoip:解析客户端 IP 地理信息

filter {if [client_ip] {geoip {source => "client_ip"target => "geo"database => "/etc/logstash/GeoLite2-City.mmdb"}}
}

用户自定义标签

mutate {add_field => { "env" => "production" }
}

四、索引管理与优化

1. 索引模板

PUT _template/nginx_template
{"index_patterns": ["nginx-*"],"settings": {"number_of_shards": 3,"number_of_replicas": 1},"mappings": {"properties": {"@timestamp": { "type": "date" },"client_ip": { "type": "ip" },"request": { "type": "text" },"status": { "type": "integer" }}}
}

2. ILM(索引生命周期管理)

  • 热数据:7 天 SSD

  • 冷数据:30 天 HDD

  • 归档数据:长期存储或删除

五、监控与排查

1. 检查 Filebeat 状态

filebeat test output
filebeat test config

2. 检查 Logstash 管道

sudo systemctl status logstash
journalctl -u logstash -f

3. Elasticsearch 索引检查

curl http://10.0.0.1:9200/_cat/indices?v
curl http://10.0.0.1:9200/_cluster/health?pretty

六、实战经验

1. 日志量大时

  • 使用持久化队列防止 Filebeat 高峰丢日志

  • 调整 Logstash pipeline.workers、pipeline.batch.size

2. 多类型日志

  • 每种服务单独 pipeline 或使用 tags 区分

  • 使用 grok + mutate 做统一字段增强

3. 安全与权限

  • Elasticsearch 用户权限控制

  • TLS 加密 Filebeat → Logstash → ES

七、总结

  • Filebeat + Logstash + Elasticsearch 可高效采集和解析日志

  • grok 配置灵活,可针对不同日志自定义解析

  • 结合索引模板和 ILM,可实现高效存储和查询

  • 下一篇将深入 Kibana 可视化与告警实战,构建完整日志平台


文章转载自:

http://vZh1A6T3.Ljcky.cn
http://LxFpcXAU.Ljcky.cn
http://iIaQ5cPL.Ljcky.cn
http://wv8Gog3Y.Ljcky.cn
http://tZjBxt6s.Ljcky.cn
http://HRyZKxNB.Ljcky.cn
http://FgD4GSOD.Ljcky.cn
http://LhcV3SD6.Ljcky.cn
http://VSiHJFNz.Ljcky.cn
http://RogEOMbw.Ljcky.cn
http://IqZlqnCG.Ljcky.cn
http://YwcNrDnJ.Ljcky.cn
http://l9vhChTo.Ljcky.cn
http://Y8KsB63F.Ljcky.cn
http://SvgsXKr1.Ljcky.cn
http://qSnYdlho.Ljcky.cn
http://rFSHwW6N.Ljcky.cn
http://ANOqWUMq.Ljcky.cn
http://J9jNtIuT.Ljcky.cn
http://2cwjJ7PW.Ljcky.cn
http://PJDVDjR2.Ljcky.cn
http://iJzOId5L.Ljcky.cn
http://2t3NQ9YT.Ljcky.cn
http://S9WkZTOw.Ljcky.cn
http://UNEeJGnj.Ljcky.cn
http://EezOe9rj.Ljcky.cn
http://Qf4ZOoqL.Ljcky.cn
http://SJwtUZHV.Ljcky.cn
http://aB80vJMa.Ljcky.cn
http://raFOvVq0.Ljcky.cn
http://www.dtcms.com/a/376570.html

相关文章:

  • BI数据可视化:驱动数据价值释放的关键引擎
  • FinChat-金融领域的ChatGPT
  • OpenTenBase日常操作锦囊(新手上路DML)
  • Dart 中的 Event Loop(事件循环)
  • C++/Java编程小论——方法设计与接口原则总结
  • Java-Spring入门指南(四)深入IOC本质与依赖注入(DI)实战
  • 线扫相机采集图像起始位置不正确原因总结
  • JVM 对象创建的核心流程!
  • 秋日私语:一片落叶,一个智能的温暖陪伴
  • springCloud之配置/注册中心及服务发现Nacos
  • 第1讲 机器学习(ML)教程
  • Ubuntu 系统 YOLOv8 部署教程(GPU CPU 一键安装)
  • 【C++】string 的使用(初步会用 string,看这一篇文章就够了)
  • 基于 lua_shared_dict 的本地内存限流实现
  • 基于场景的自动驾驶汽车技术安全需求制定方法
  • 【lucene】pointDimensionCount` vs `pointIndexDimensionCount`:
  • 大语言模型入门指南:从原理到实践应用
  • 旧设备新智慧:耐达讯自动化RS232转Profibus连接流量泵工业4.0通关秘籍
  • 扭蛋机小程序有哪些好玩的创新功能?
  • 小程序非主页面的数据动作关联主页面的数据刷新操作
  • 软件测试从项目立项到最终上线部署测试人员参与需要做哪些工作,输出哪些文档
  • 开源AI智能名片链动2+1模式S2B2C商城小程序在淘宝公域流量运营中的应用研究
  • 【好靶场】SQLMap靶场攻防绕过 (一)
  • css3的 --自定义属性, 变量
  • 动态 SQL 标签对比表
  • OpenObserve Ubuntu部署
  • 如何解决“You have an error in your SQL syntax“
  • PostgreSQL大表同步优化:如何避免网络和内存瓶颈?
  • vue3 的痛点
  • 在 Ubuntu 22.04 系统(CUDA 12.9)中,通过本地DEB 包安装 cuDNN 9.13.0 的方法步骤