提到Skywalking相比并不陌生,或多或少地听到过这个名词,如果你是JAVA开发者,那么可能就更为了解。
作为国内甚至国际上热度比较高、社区比较活跃的APM(Application Performance Monitoring System)系统,它拥有众多的使用者,从传统Java服务,到云原生架构下的服务,甚至框架。
人们对于日志价值的挖掘也是源源不断,从打日志、存日志、同步日志到解析日志,更期望从规范的日志中提取有效的消息,用于检测或告警。
那么今天要介绍的Skywalking中的LAL(Log Analysis Language)模块,就是协助用户从有效的日志数据中,结合自定义的pattern,抽离出有效的字段,用于应用的监控或告警。
全文概览
LAL 的背景知识
SkyWalking中的LAL的语法就能够实现,通过正则等形式,结合groovy语法,匹配出指定字段进行提取,实现从文本中摘出所需要的字段进行聚合统计。
处理的这个数据来源主要就是各类日志,比如Nginx日志、数据库日志、应用日志,由于应用日志是人为写入的,那么对于这个监控就有无限可能。
其实这个功能有很多类似的业内实现,比如说:
Filebeat:轻量级日志文件 shipper,用于转发和集中日志数据到 Elasticsearch 或 Logstash。 同样支持json和正则的形式,分为input/processors/output 。
filebeat.inputs:
- type: stdin
processors:
- dissect:
tokenizer: "%{logDate} %{logTime} %{logLevel} %{pid} --- [%{thread}] %{logger} : %{message}"
field: "message"
target_prefix: "dissect"
output.console:
enabled: true
pretty: true
filebeat.inputs:
- type: log
paths:
- "/data/logs/*/error.log"
document_type: json
json.message_key: log
json.keys.under_root: true
json.overwrite_keys: true
fields:
logType: errJson
fields_under_root: true
Fluentd / Fluent Bit:高可用、高性能的日志采集器,支持多种输入输出插件,适用于多种数据源和目标。区分为input/parser/filter/output 。
<parse>
@type regexp
expression /^\[(?<logtime>[^\]]*)\] (?<name>[^ ]*) (?<title>[^ ]*) (?<id>\d*)$/
time_key logtime
time_format %Y-%m-%d %H:%M:%S %z
types id:integer
</parse>
Logstash:Elastic Stack 的一部分,强大的数据处理管道,能够从多个来源收集数据,转换并输出到像 Elasticsearch 这样的存储系统。区分为 input/filter/output。
input {
stdin {
}

最低0.47元/天 解锁文章
8116

被折叠的 条评论
为什么被折叠?



