Skywalking系列之日志分析语言LAL的配置与解析

提到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 {
   
    } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

c_zyer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值