利用 pprof 分析 Filebeat 的 CPU 使用率过高
通过 pprof 调试 Filebeat因为 Filebeat 是用 Go 语言实现的,而 Go 语言本身的基础库里面就包含 pprof 这个功能极其强大的性能分析工具,因此,在 7.x 版本中,Beats 家族的工具,都提供了以下参数,方便用户在出现问题的时候,对应用进行调试: 12345678--cpuprofile FILE Writes CPU profile data to the specified file. This option is useful for troubleshooting Filebeat.-h, --help Shows help for the run command.--httpprof [HOST]:PORT Starts an http server for profiling. This option is useful for troubleshooting and profiling Filebeat.--memprofile FILE Writes memory profile data to the s...
Filebeat 采集 JSON 日志到 ES
需求描述使用 Filebeat 从 log 文件中采集 JSON 格式的日志,发送到 ES 中,并在 ES 中显示 JSON 日志的各字段和数据。 问题一:如何采集 JSON 格式的日志在 filebeat.yml 文件中进行相应的配置: 12345678910111213141516171819202122232425262728293031323334- type: log enabled: true paths: - E:\testjson.log processors: - script: lang: javascript source: > function process(event) { var message = event.Get("message"); message = message.replace(/\\x22/g,'"'); message = message.replace...
ELK 线上事故处理:Filebeat 如何跳过积压日志
引言在维护 ELK (Elasticsearch, Logstash, Kibana) 日志系统时,一个常见的线上事故是下游的 Elasticsearch 因磁盘空间耗尽而无法接收新的日志。这会导致上游的 Filebeat 和 Logstash 出现数据积压。当磁盘问题解决后,我们通常不希望重新处理这些积压的、可能已经失去时效性的日志,而是希望从当前时间点开始恢复日志采集。本文将详细介绍如何处理此类事故,核心在于让 Filebeat 跳过积压的日志。 事故场景:Elasticsearch 磁盘写满导致日志积压问题描述: 日志系统链路为 Filebeat -> Logstash -> Elasticsearch。Elasticsearch 因磁盘满了,导致服务中断两小时。现在磁盘空间已清理,服务恢复,但 Filebeat 开始从两小时前中断的位置重新发送日志。我们希望丢弃这两个小时的积压日志,直接从当前时间开始采集。 核心解决方案:重置 Filebeat 的读取位置问题的关键在于 Filebeat 会持久化记录每个日志文件的读取进度(offset)。即使下游服务中断,F...
日志生命周期处理
日志生命周期处理脚本方式查出 30 天以前的索引并删除: 123456789101112#!/bin/shcurl -H'Content-Type:application/json' -d'{ "query": { "range": { "pt": { "lt": "now-30d", "format": "epoch_millis" } } }}' -XPOST -H "Authorization:Basic ZWxhc3RpYzpTb3BlaU1HcjA5M0AkJV5FTEs=" "https://ip:9200/dev02-*/_delete_b...
记录下 Logstash 的配置加解释
Logstash 配置说明logstash.conf(完整配置加注释)12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091input { beats { port => 5044 #ssl => true #ssl_certificate => "/etc/logstash/logstash.crt" #ssl_key => "/etc/logstash/logstash.key" # 1. SSL 详情可参考相关文档 }}# filter 模块主要是数据预处理,提取一些信息,方便 Elasticsearch 好归类存储。# 2. grok 正则捕获# 3...
日志系统 - 背景
背景目前项目查看日志的方式较为朴素,人工线上查看 log 的方式也较为麻烦。一套能查看全链路日志的系统,对每位开发来说无疑是雪中送炭的。 其次,目前的业务日志中的数据是可供二次利用和开发的,而非目前仅是排查问题使用。 目标 打造全员可实时查看生产日志,并能提取调用链日志 应用到后续的业务发展中(BI) APM 价值为 BI 业务(other/计算)做准备 夯实服务架构 便利开发查看日志,不仅是业务日志,Filebeat 提供了各种 module 以支持监控各种中间件的日志 初步设想架构图 改动点 服务 保持原有日志格式 各日志加字段 ['traceId', 'localIp', 'module'] - 以便有问题可以确定到某台机器上的某个服务 各模块 traceId 通过 REST 接口传递 header(Rest 插件改造) 由(网关生成 traceid)orange 向下传递 traceId(uuid/snowflake) ELK(单点) Filebeat 和服务部署在同台机器上 ES index 格...
记录日志系统的安装-部署-配置-使用文档(1)
日志系统使用文档地址 站内搜索 [记录日志系统的安装->部署->配置->使用文档(3)] 服务器ES, Logstash, Kibana内存: 8G磁盘: 500G处理器: 4/8核带宽: 2m 以上配置是原来写的,在之后的线上环境很快就得到了验证,结果就是直接崩溃。 建议每天产生 20-30GB 日志的环境至少需要以下配置: 内存:16G 磁盘:500GB-1TB(硬盘不值钱) 处理器:4/8 核 带宽:5M Filebeat(被抓取服务所在机器)略... 端口 ELK 服务器对外开放 5601 ELK 服务器对 Filebeat 所在服务器内网开放 5044 安装(单点) 安装完 Filebeat 之后,需要给 inputs 下配置文件基于 root 权限或者 go+w 权限:chown root /etc/filebeat/inputs/* 或者 chown go+w /etc/filebeat/inputs/* Filebeat(基于 Docker)12345678910111213141516171819version: ...
记录日志系统的安装-部署-配置-使用文档(3)
日志系统使用文档(长期完善)登录输入对应用户密码 索引模式(管理级操作)默认初始进来是这个页面,建立匹配的索引模式方可进行日志查询。 创建索引模式先创建匹配模式,例如我这里创建的索引模式名称为 sopei-dev02*,则代表可查看以 sopei-dev02 开头的索引下的日志(备注:下面可以看到匹配到了 8 月 9 日的 debug 日志和 error 日志)。 选择全局时间筛选字段,创建模式完成 创建及分配用户和角色(管理级操作)目前先以查看日志者和创建索引模式者及管理者区分。 例如:设置一个 log-view 角色,仅可对 dev 机器上的日志进行读取操作,然后赋予 xiaowu 用户。 创建用户 日志查看日志流模式查看 例如:查看 module 为 xxx,trace-id 为 xiaowu-12345673453463 并且是 error 类型的日志。 discover 查看查询方式和流模式一样,看到的内容是以 ES(_source)实际存储格式展示的。
记录日志系统的安装-部署-配置-使用文档(2)
日志系统配置(长期补充)elastic 各产品配置/学习手册 注意:所有的 IP 不要写本地 IP filebeat.yml 如果同时指定了 exclude_lines 和 include_lines,Filebeat 将会先校验 include_lines,再校验 exclude_lines 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150#...
记录日志系统的安装-部署-配置-使用文档(5)
ELK-ALERTING - 告警功能前提:使用告警功能必须配置 SSL,配置安全性可以站内搜索 [记录日志系统的安装-部署-配置-使用文档(4)] Kibana 本身提供了告警功能,左菜单位位置(7.14.0),但是免费支持的告警操作只有写入索引和写入 Kibana 日志,其他功能需要收费(19 美元一个月)。网上提到一个方案 sentinl,但是似乎截止到 2021-08-20 仅支持到 Kibana 7.6.1 的版本。 创建连接器(以邮件和 webhook 举例)邮件 企业微信邮箱发送方主机: IP:smtp.exmail.qq.com Port:465 QQ 邮箱发送方主机: IP:smtp.qq.com Port:465 / 587 记得在账户那里开启 SMTP,然后密码是授权码 测试,可以有多个接收方 Webhook 飞书 webhook 企业微信群机器人 发个测试 123456789{ "msg_type": "text", "content&qu...
