前言
随着信息技术的飞速发展,主机环境业务越来越复杂,产生的日志数据也呈爆炸式增长。日志数据作为记录系统运行状态、用户行为以及异常事件的重要信息,对于业务分析、故障排查和安全审计等方面具有不可替代的作用。然而,传统的主机日志查询分析方式往往存在数据割裂、查询效率低下等问题,难以满足现代主机环境业务的需求。
本文旨在结合当前主机环境业务的特点,通过观测云采集主机环境业务日志的最佳实践,实现统一的日志查询分析效果。帮助用户了解如何有效地采集、存储、分析这些分散的日志数据,为提升故障定位的效率提供有力支持。
接入方案
1、安装采集器 DataKit
- 登录观测云控制台,点击「集成」 > 「DataKit」
- 复制安装命令并执行
- 安装成功后,可在观测云控制台的「基础设施」中查看该主机的对象和指标数据
2、配置主机日志文件采集
- 进入 DataKit 安装目录下的
/usr/local/datakit/conf.d/log
目录,复制logging.conf.sample
并命名为logging.conf
。示例如下:
- 修改
logging.conf
文件中的日志文件路径,并自定义编写一个容易区分的source
名称。示例如下:
- 重启 DataKit 后,即可在观测云控制台的「日志」查看器中查看相关日志。(注意:DataKit 启动后,
logfiles
中配置的日志文件有新的日志产生才会采集上来,老的日志数据是不会采集的。即只会采集 tail -f 看到的新日志内容。)
# Linux/Mac 可能需加上 sudo
datakit service -T # stop
datakit service -S # start
datakit service -R # restart
3、配置采集多个主机日志文件
- 如果需要采集多个主机日志文件,且需要区分日志来源时,可以在 DataKit 安装目录下的
/usr/local/datakit/conf.d/log
目录,复制logging.conf
并命名为logging2.conf
。示例如下:
- 修改
logging2.conf
文件中的日志文件路径,并自定义编写一个容易区分的 source 名称。示例如下:
- 重启 DataKit ,即可在观测云控制台看到采集上来的两个日志源数据。(注意:DataKit 启动后,
logfiles
中配置的日志文件有新的日志产生才会采集上来,老的日志数据是不会采集的。即只会采集 tail -f 看到的新日志内容。)
# 重启DataKit
datakit service -R # restart
glob 规则简述
DataKit 采集器还支持使用 glob 规则更方便地指定日志文件,以及自动发现和文件过滤。
通配符 | 描述 | 正则示例 | 匹配示例 | 不匹配 |
---|---|---|---|---|
* | 匹配任意数量的任何字符,包括无 | Law* | Law, Laws, Lawyer | GrokLaw, La, aw |
? | 匹配任何单个字符 | ?at | Cat, cat, Bat, bat | at |
[abc] | 匹配括号中给出的一个字符 | [CB]at | Cat, Bat | cat, bat |
[a-z] | 匹配括号中给出的范围中的一个字符 | Letter[0-9] | Letter0, Letter1, Letter9 | Letters, Letter, Letter10 |
[!abc] | 匹配括号中未给出的一个字符 | [!C]at | Bat, bat, cat | Cat |
[!a-z] | 匹配不在括号内给定范围内的一个字符 | Letter[!3-5] | Letter1… | Letter3 … Letter5, Letterxx |
除上述 glob 标准规则外,采集器也支持 **
进行递归地文件遍历、多行日志匹配、特殊字节码处理等高级操作。
日志查询
观测云支持通过多种操作对日志数据进行查询和分析:
文本搜索
日志查看器支持关键词查询、通配符查询,*
表示匹配 0 或多个任意字符,?
表示匹配 1 个任意字符;若要将多个术语组合到一个复杂查询中,可以使用布尔运算符(AND/OR/NOT)连接。
术语可以是单词或者短语。比如:
- 单个单词:guance;
- 多个单词:guance test;(等同于 guance AND test)
- 短语:"guance test"; (使用双引号可以将一组单词转换为短语)
搜索查询示例:
JSON搜索
查看器原生支持对 JSON 格式 message
内容进行精确检索,搜索格式为: @key:value
,若为多层级 JSON 可用 “.” 承接,即 @key1.key2:value
,如图所示:
日志解析
Pipeline 支持对不同格式的日志数据进行文本解析,通过编写 Pipeline 脚本,可以自定义切割出符合要求的结构化日志,并把切割出来的字段作为属性使用。通过属性字段,我们可以快速筛选相关日志、进行数据关联分析,帮助我们快速去定位问题并解决问题。
下面是一条日志原文和对应的 pipeline 脚本示例:
# 日志原文
2024-03-29 11:54:54,535 WARN http-nio-8081-exec-1 (org.jasig.cas.web.view.CasReloadableMessageBundle:76) - The code [screen.logout.security] cannot be found in the language bundle for the locale [zh_CN]
# pipeline脚本
grok(_, "%{TIMESTAMP_ISO8601:time} %{LOGLEVEL:status} %{NOTSPACE:thread_name} \\(%{NOTSPACE:class_name}\\:%{NUMBER:line}\\) - %{GREEDYDATA:msg}")
default_time(time,"Asia/Shanghai")
成功解析出 class_name、line、status、thread_name 等字段,方便后续的搜索统计等;效果如下:
日志可视化分析
场景图表
观测云内置多种数据监控视图模版,用户可导入模板创建仪表板和查看器,并进行自定义编辑配置;或选择自定义创建方式,通过一系列设置构建数据洞察场景。
比如,根据前面解析出来的 status 字段,统计一下 info、warning 状态的日志分别有多少,可以通过以下步骤来创建可视化仪表板。
第一步:在场景 > 仪表板中,选择自己想要的视图类型
第二步:选择日志数据源,设置过滤条件和分组,点击创建即可
强大的关联能力
1、视图配置跳转链接
观测云提供链接功能,可以平滑跳转仪表板 & 查看器,实现数据联动分析、系统全面可观测。只需在视图设置页面,配置链接地址。
再点击视图中的数据,即可跳转到对应的日志查看器,快速实现视图与查看器联动分析。
2、绑定内置视图
观测云还支持将视图保存为内置视图,并绑定到查看器中,方便在查看日志数据的同时,分析其他维度的数据。
查看日志详情时,即可查看上面绑定的内置视图,也可以绑定其他维度的视图,比如主机的指标视图等等。
日志告警
观测云提供开箱即用的监控模板来新建监控器;也支持自定义新建监控器,通过阈值检测、日志检测、突变检测、区间检测等十余种检测规则来设置检测规则和触发条件。开启监控器后,即可接收到由检测规则触发的相关异常事件告警。
其中,日志检测用于监控工作空间内基于日志采集器产生的的全部日志数据。支持基于日志的关键字设置告警,及时发现不符合预估行为的异常模式(如:日志文本数据中存在异常的标签),多适用于 IT 监控场景下的代码异常或任务调度检测等。
第一步:在监控 > 新建日志检测监控器
第二步:设置检测规则和触发条件
这里以日志内容包含"WARN"为例,设置超过 100 条时就触发告警。
第三步:编辑事件通知内容和告警策略,点击创建即可
日志备份
观测云提供日志数据转发到观测云的对象存储及转发到外部存储的功能(包含观测云备份日志、AWS S3、华为云 OBS、阿里云 OSS 和 Kafka 消息队列)。用户可以自由选择存储对象,灵活管理日志备份数据。
第一步:点击日志 > 数据转发
第二步:点击转发规则 > 新建规则
第三步:设置需要备份的数据源,和相关筛选条件,点击确定即可
注意:该规则下的日志数据最低存储默认为 180 天,可以前往管理 > 设置 > 变更数据存储策略中修改数据转发存储策略。
查看备份数据
第一步:点击日志 > 数据转发,在下拉框选定规则
第二步:自定义时间范围查询,可选择多个日期及定义开始时间和结束时间,时间会精确到小时,即可查询到备份数据
更多日志备份相关操作,也可以阅读官方文档的详细介绍。
总结
通过以上方式,可以快速将主机环境各个业务系统的日志采集到观测云平台,实现统一的日志查询和分析的诉求。