ELK 线上事故处理:Filebeat 如何跳过积压日志
引言在维护 ELK (Elasticsearch, Logstash, Kibana) 日志系统时,一个常见的线上事故是下游的 Elasticsearch 因磁盘空间耗尽而无法接收新的日志。这会导致上游的 Filebeat 和 Logstash 出现数据积压。当磁盘问题解决后,我们通常不希望重新处理这些积压的、可能已经失去时效性的日志,而是希望从当前时间点开始恢复日志采集。本文将详细介绍如何处理此类事故,核心在于让 Filebeat 跳过积压的日志。 事故场景:Elasticsearch 磁盘写满导致日志积压问题描述: 日志系统链路为 Filebeat -> Logstash -> Elasticsearch。Elasticsearch 因磁盘满了,导致服务中断两小时。现在磁盘空间已清理,服务恢复,但 Filebeat 开始从两小时前中断的位置重新发送日志。我们希望丢弃这两个小时的积压日志,直接从当前时间开始采集。 核心解决方案:重置 Filebeat 的读取位置问题的关键在于 Filebeat 会持久化记录每个日志文件的读取进度(offset)。即使下游服务中断,F...
ELK 配置 SSL【Docker 下操作】
介绍Elasticsearch 程序中提供 elasticsearch-certutil 命令来简化生成证书的过程。 该命令共有 3 种模式: CA 模式:用于生成一个新的证书颁发机构 CERT 模式:用于生成 X.509 证书和私钥 CSR 模式:用于生成证书签名请求,该请求指向受信任的证书颁发机构以获取签名的证书。签名证书必须为 PEM 或 PKCS#12 格式,才能与 Elasticsearch 安全功能一起使用 生成证书certutil 官方文档 如果集群部署,想为每个 node 都配置 SSL,就改 instance.yml 和 extra_hosts 参考:https://www.elastic.co/cn/blog/configuring-ssl-tls-and-https-to-secure-elasticsearch-kibana-beats-and-logstash 注意:证书位置必须写绝对路径 新建 instance.yml 以创建各容器的自签名证书123456789# name会对应到生成证书文件的路径名称# dns可以多个,对应其匹配域名in...
Kibana 用法
Kibana 查询语法 要搜索一个确切的字符串,即精确搜索,需要使用双引号引起来:path:"/app/logs/nginx/access.log" 如果不带引号,将会匹配每个单词:uid token 模糊搜索:path:"/app/~" * 匹配 0 到多个字符:*oken ? 匹配单个字符:tok?n 匹配是否包含的条件: +:搜索结果中必须包含此项 -:不能含有此项 什么都没有则可有可无:+token -appVersion appCode 运算符 AND/OR/NOT 必须大写:token AND uid;token OR uid;NOT uid 允许一个字段值在某个区间([] 包含该值,{} 不包含):@version:[1 TO 3] 组合查询:(uid OR token) AND version 转义特殊字符 + – && || ! ( ) { } [ ] ^ " ~ * ? : \:转义特殊字符只需在字符前加上符号 \ 查询样例简单查...
日志生命周期处理
日志生命周期处理脚本方式查出 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...
Filebeat 多实例部署(守护进程方式 systemd)
安装好 Filebeat1站内搜索:记录日志系统的安装-部署-配置-使用文档(1) 复制两个子文件夹12cp -r /etc/filebeat{,1}cp -r /etc/filebeat{,2} 修改各自的 filebeat.yml1234...(省略 inputs 之类的)logging.files: # 这里修改文件夹路径 path: /var/log/filebeat1/2 查看机器 systemd 的 path 我这里是 /usr/lib/systemd/system 添加两份配置文件 vi /usr/lib/systemd/system/filebeat1.service 1234567891011121314151617[Unit]Description=Filebeat sends log files to Logstash or directly to Elasticsearch.Documentation=https://www.elastic.co/bea...
Kibana Dashboard 结合 Filebeat 的使用
利用 Filebeat Module 监听/传输数据到 ES 并通过 Kibana 的面板显示要记得将 modules 功能打开 filebeat 安装完默认会在 /etc/filebeat/modules.d 下放着许多模块的 yml,需要哪个,就执行 filebeat modules enable xxx filebeat.yml 配置: 1234567891011121314151617181920212223filebeat.config: modules: enabled: true path: modules.d/*.yml reload.enabled: true reload.period: 10s# ------------------------------ Kibana Output -------------------------------output.elasticsearch: hosts: ["10.0.2.15:9200"] username: "elastic"...
记录日志系统的安装-部署-配置-使用文档(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: ...
记录日志系统的安装-部署-配置-使用文档(2)
日志系统配置(长期补充)elastic 各产品配置/学习手册 注意:所有的 IP 不要写本地 IP filebeat.yml 如果同时指定了 exclude_lines 和 include_lines,Filebeat 将会先校验 include_lines,再校验 exclude_lines 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150#...
记录日志系统的安装-部署-配置-使用文档(3)
日志系统使用文档(长期完善)登录输入对应用户密码 索引模式(管理级操作)默认初始进来是这个页面,建立匹配的索引模式方可进行日志查询。 创建索引模式先创建匹配模式,例如我这里创建的索引模式名称为 sopei-dev02*,则代表可查看以 sopei-dev02 开头的索引下的日志(备注:下面可以看到匹配到了 8 月 9 日的 debug 日志和 error 日志)。 选择全局时间筛选字段,创建模式完成 创建及分配用户和角色(管理级操作)目前先以查看日志者和创建索引模式者及管理者区分。 例如:设置一个 log-view 角色,仅可对 dev 机器上的日志进行读取操作,然后赋予 xiaowu 用户。 创建用户 日志查看日志流模式查看 例如:查看 module 为 xxx,trace-id 为 xiaowu-12345673453463 并且是 error 类型的日志。 discover 查看查询方式和流模式一样,看到的内容是以 ES(_source)实际存储格式展示的。
记录日志系统的安装-部署-配置-使用文档(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...
