首页 > 编程语言 >Loki Promtail 使用 multiline 对Java 堆栈日志进行多行处理的示例

Loki Promtail 使用 multiline 对Java 堆栈日志进行多行处理的示例

时间:2022-12-28 00:22:06浏览次数:61  
标签:java 示例 NamingProxy nacos util Loki Java naming com

promtail 使用multiline处理 java 多行日志文本的示例

Environment:

promtail_version: v2.7.1

origin Java log content:

log file content stdout-a.log:

2022-Dec-27 08:30:02.501 ERROR [com.alibaba.nacos.naming.beat.sender] [com.alibaba.nacos.client.naming] [CLIENT-BEAT] failed to send beat: {"cluster":"DEFAULT","ip":"10.200.216.51","metadata":{"preserved.register.source":"SPRING_CLOUD"},"period":5000,"port":8268,"scheduled":false,"serviceName":"DEFAULT_GROUP@@open-business-api","stopped":false,"weight":1.0}
java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance/beat after all servers([192.168.1.5:8848]) tried: failed to req API:192.168.1.5:8848/nacos/v1/ns/instance/beat. code:500 msg: java.net.SocketTimeoutException: connect timed out
  at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:464)
  at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:386)
  at com.alibaba.nacos.client.naming.net.NamingProxy.sendBeat(NamingProxy.java:309)
  at com.alibaba.nacos.client.naming.beat.BeatReactor.run(BeatReactor.java:92)
  at java.util.concurrent.Executors.call(Executors.java:511)
  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  at java.util.concurrent.ScheduledThreadPoolExecutor.access01(ScheduledThreadPoolExecutor.java:180)
  at java.util.concurrent.ScheduledThreadPoolExecutor.run(ScheduledThreadPoolExecutor.java:293)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  at java.util.concurrent.ThreadPoolExecutor.run(ThreadPoolExecutor.java:624)
  at java.lang.Thread.run(Thread.java:748)
2022-Dec-27 08:33:05.212 INFO [aaaa] [bbb .....] .......

promtail configure file:

Promtail 配置文件内容 promtail-local-config.yaml

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://localhost:3100/loki/api/v1/push

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      __path__: /var/log/*log
  pipeline_stages:
  - match:
      selector: '{job="varlogs"}'
      stages:
      - multiline:
          firstline: '^\d{4}-\w{2,3}-\d{2} \d{1,2}:\d{2}:\d{2}.\d{3}'
          max_wait_time: 3s
      - regex:
          expression: '(?P<time>^[\w-]+\s[\d:.]+) (?P<LEVEL>[[:upper:]]{4,6}) (?P<msg>(.|\n)*$)'
      - labels:
          LEVEL:
          time:
      - timestamp:
          source: time
          format: '2006-Jan-02 15:04:05.999'
          location: "UTC"
      - output:
          source: msg

其中 pipeline 部分配置值解释如下:

run promtail local test:

本地调试测试:

cat stdout-a.log | ./promtail-linux-amd64 -stdin -inspect --dry-run -log.level=debug --config.file promtail-local-config.yaml

output:

Clients configured:
----------------------
url: http://localhost:3100/loki/api/v1/push
batchwait: 1s
batchsize: 1048576
follow_redirects: false
enable_http2: false
backoff_config:
  min_period: 500ms
  max_period: 5m0s
  max_retries: 10
timeout: 10s
tenant_id: ""
stream_lag_labels: ""

[inspect: regex stage]:
{stages.Entry}.Extracted["LEVEL"]:
        +: ERROR
{stages.Entry}.Extracted["msg"]:
        +: [com.alibaba.nacos.naming.beat.sender] [com.alibaba.nacos.client.naming] [CLIENT-BEAT] failed to send beat: {"cluster":"DEFAULT","ip":"10.200.216.51","metadata":{"preserved.register.source":"SPRING_CLOUD"},"period":5000,"port":8268,"scheduled":false,"serviceName":"DEFAULT_GROUP@@operate-business-api","stopped":false,"weight":1.0}
java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance/beat after all servers([192.168.10.5:8848]) tried: failed to req API:192.168.10.5:8848/nacos/v1/ns/instance/beat. code:500 msg: java.net.SocketTimeoutException: connect timed out
  at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:464)
  at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:386)
  at com.alibaba.nacos.client.naming.net.NamingProxy.sendBeat(NamingProxy.java:309)
  at com.alibaba.nacos.client.naming.beat.BeatReactor.run(BeatReactor.java:92)
  at java.util.concurrent.Executors.call(Executors.java:511)
  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  at java.util.concurrent.ScheduledThreadPoolExecutor.access01(ScheduledThreadPoolExecutor.java:180)
  at java.util.concurrent.ScheduledThreadPoolExecutor.run(ScheduledThreadPoolExecutor.java:293)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  at java.util.concurrent.ThreadPoolExecutor.run(ThreadPoolExecutor.java:624)
  at java.lang.Thread.run(Thread.java:748)
{stages.Entry}.Extracted["time"]:
        +: 2022-Dec-27 08:30:02.501
[inspect: regex stage]:
{stages.Entry}.Extracted["LEVEL"]:
        +: INFO
{stages.Entry}.Extracted["msg"]:
        +: [aaaa sd*f*as*dfas .....] .......
{stages.Entry}.Extracted["time"]:
        +: 2022-Dec-27 08:33:05.212
[inspect: labels stage]:
{stages.Entry}.Entry.Labels:
        -: {__path__="/var/log/*log", job="varlogs"}
        +: {LEVEL="ERROR", __path__="/var/log/*log", job="varlogs", time="2022-Dec-27 08:30:02.501"}
[inspect: labels stage]:
{stages.Entry}.Entry.Labels:
        -: {__path__="/var/log/*log", job="varlogs"}
        +: {LEVEL="INFO", __path__="/var/log/*log", job="varlogs", time="2022-Dec-27 08:33:05.212"}
[inspect: timestamp stage]:
{stages.Entry}.Entry.Entry.Timestamp:
        -: 2022-12-27 21:37:55.565994731 +0800 CST
        +: 2022-12-27 08:30:02.501 +0000 UTC
[inspect: timestamp stage]:
{stages.Entry}.Entry.Entry.Timestamp:
        -: 2022-12-27 21:37:55.568107676 +0800 CST
        +: 2022-12-27 08:33:05.212 +0000 UTC
[inspect: output stage]:
{stages.Entry}.Entry.Entry.Line:
        -: 2022-Dec-27 08:30:02.501 ERROR [com.alibaba.nacos.naming.beat.sender] [com.alibaba.nacos.client.naming] [CLIENT-BEAT] failed to send beat: {"cluster":"DEFAULT","ip":"10.200.216.51","metadata":{"preserved.register.source":"SPRING_CLOUD"},"period":5000,"port":8268,"scheduled":false,"serviceName":"DEFAULT_GROUP@@operate-business-api","stopped":false,"weight":1.0}
java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance/beat after all servers([192.168.10.5:8848]) tried: failed to req API:192.168.10.5:8848/nacos/v1/ns/instance/beat. code:500 msg: java.net.SocketTimeoutException: connect timed out
  at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:464)
  at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:386)
  at com.alibaba.nacos.client.naming.net.NamingProxy.sendBeat(NamingProxy.java:309)
  at com.alibaba.nacos.client.naming.beat.BeatReactor.run(BeatReactor.java:92)
  at java.util.concurrent.Executors.call(Executors.java:511)
  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  at java.util.concurrent.ScheduledThreadPoolExecutor.access01(ScheduledThreadPoolExecutor.java:180)
  at java.util.concurrent.ScheduledThreadPoolExecutor.run(ScheduledThreadPoolExecutor.java:293)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  at java.util.concurrent.ThreadPoolExecutor.run(ThreadPoolExecutor.java:624)
  at java.lang.Thread.run(Thread.java:748)
        +: [com.alibaba.nacos.naming.beat.sender] [com.alibaba.nacos.client.naming] [CLIENT-BEAT] failed to send beat: {"cluster":"DEFAULT","ip":"10.200.216.51","metadata":{"preserved.register.source":"SPRING_CLOUD"},"period":5000,"port":8268,"scheduled":false,"serviceName":"DEFAULT_GROUP@@operate-business-api","stopped":false,"weight":1.0}
java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance/beat after all servers([192.168.10.5:8848]) tried: failed to req API:192.168.10.5:8848/nacos/v1/ns/instance/beat. code:500 msg: java.net.SocketTimeoutException: connect timed out
  at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:464)
  at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:386)
  at com.alibaba.nacos.client.naming.net.NamingProxy.sendBeat(NamingProxy.java:309)
  at com.alibaba.nacos.client.naming.beat.BeatReactor.run(BeatReactor.java:92)
  at java.util.concurrent.Executors.call(Executors.java:511)
  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  at java.util.concurrent.ScheduledThreadPoolExecutor.access01(ScheduledThreadPoolExecutor.java:180)
  at java.util.concurrent.ScheduledThreadPoolExecutor.run(ScheduledThreadPoolExecutor.java:293)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  at java.util.concurrent.ThreadPoolExecutor.run(ThreadPoolExecutor.java:624)
  at java.lang.Thread.run(Thread.java:748)
[inspect: output stage]:
{stages.Entry}.Entry.Entry.Line:
        -: 2022-Dec-27 08:33:05.212 INFO [aaaa sd*f*as*dfas .....] .......
        +: [aaaa sd*f*as*dfas .....] .......
2022-12-27T08:30:02.501+0000    {LEVEL="ERROR", __path__="/var/log/*log", job="varlogs", time="2022-Dec-27 08:30:02.501"}       [com.alibaba.nacos.naming.beat.sender] [com.alibaba.nacos.client.naming] [CLIENT-BEAT] failed to send beat: {"cluster":"DEFAULT","ip":"10.200.216.51","metadata":{"preserved.register.source":"SPRING_CLOUD"},"period":5000,"port":8268,"scheduled":false,"serviceName":"DEFAULT_GROUP@@operate-business-api","stopped":false,"weight":1.0}
java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance/beat after all servers([192.168.10.5:8848]) tried: failed to req API:192.168.10.5:8848/nacos/v1/ns/instance/beat. code:500 msg: java.net.SocketTimeoutException: connect timed out
  at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:464)
  at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:386)
  at com.alibaba.nacos.client.naming.net.NamingProxy.sendBeat(NamingProxy.java:309)
  at com.alibaba.nacos.client.naming.beat.BeatReactor.run(BeatReactor.java:92)
  at java.util.concurrent.Executors.call(Executors.java:511)
  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
  at java.util.concurrent.ScheduledThreadPoolExecutor.access01(ScheduledThreadPoolExecutor.java:180)
  at java.util.concurrent.ScheduledThreadPoolExecutor.run(ScheduledThreadPoolExecutor.java:293)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
  at java.util.concurrent.ThreadPoolExecutor.run(ThreadPoolExecutor.java:624)
  at java.lang.Thread.run(Thread.java:748)
2022-12-27T08:33:05.212+0000    {LEVEL="INFO", __path__="/var/log/*log", job="varlogs", time="2022-Dec-27 08:33:05.212"}        [aaaa sd*f*as*dfas .....] .......

explain output:


PS:

Online regex test: https://regex101.com/

标签:java,示例,NamingProxy,nacos,util,Loki,Java,naming,com
From: https://www.cnblogs.com/TopGear/p/17009293.html

相关文章

  • JavaWeb
    JavaWeb1、基本概念1.1前言静态webhtmlcss动态web技术栈:Servlet/JSP、ASP、php动态web资源开发技术统称为JavaWeb1.2web应用程序:可以提供浏览......
  • Java String类为什么用final修饰
    在Java语言中,使用final修饰符修饰的类是不可以被继承的,也就是说,如果一个类被声明为final,则不能被其他类所继承。因此,当String类被声明为final时,意味着它不能被其他类所继承......
  • Java入门练习2
    1、循环importjava.util.Scanner;publicclassHello{publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);int......
  • Java学习笔记------线程安全问题
    线程的安全问题同步机制解决线程安全问题方式一:同步代码块synchronized(obj){ //需要被同步的代码}synchronized(this){}synchronized(Windows.class){}......
  • Java学习笔记----线程基础
    线程线程,进程可进一步细化为线程,是一个程序内部的一条执行路径线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器,线程切换的开销小线程的创建与启动Java......
  • Java面试题-前端Vue
    Vue的生命周期beforeCreate(创建前)在数据观测和初始化事件还未开始created(创建后)完成数据观测,属性和方法的运算,初始化事件,$el属性还没有显示出来beforeMount(载入前)在......
  • 如何使用Grafana+Loki+Promtail日志聚合系统针对Kubernetes集群中Pods应用日志采集搜
    关注「WeiyiGeek」公众号本章目录:0x00快速入门1.什么是Loki?2.为什么要使用GrafanaLoki?3.GrafanaLoki是如何工作的?4.GrafanaLoki架构简述5.GrafanaLoki参考来......
  • 精心整理Java微服务最全面试题集(含答案)
    微服务架构相关大型网站架构演变过程网站架构演变演变过程传统架构 →分布式架构 → SOA架构 →微服务架构什么是分布式架构分布式架构就是将传统结构按照模块......
  • 泛型(java)
    1.泛型的理解和好处1.1看一个需求1)请编写程序,在ArrayList中,添加3个Dog对象Dog对象含有name和age,并输出name和age(要求使用getXxx())先使用传统的方法来解决->引出......
  • JavaScript普通函数与箭头函数有怎样的区别?
     比较点普通函数箭头函数具体案例简写/箭头函数如果没有参数,同时函数体的返回值只有一句,则{}和return都可以省略。1、函数简写......