zoukankan      html  css  js  c++  java
  • grok语法定义

    grok默认表达式

    Logstash 内置了120种默认表达式,可以查看patterns,里面对表达式做了分组,每个文件为一组,文件内部有对应的表达式模式。下面只是部分常用的。

    常用表达式

    表达式标识

    名称

    详情

    匹配例子

    USERNAME 或 USER

    用户名

    由数字、大小写及特殊字符(._-)组成的字符串

    1234、Bob、Alex.Wong

    EMAILLOCALPART

    用户名

    首位由大小写字母组成,其他位由数字、大小写及特殊字符(_.+-=:)组成的字符串。注意,国内的QQ纯数字邮箱账号是无法匹配的,需要修改正则

    windcoder、windcoder_com、abc-123

    EMAILADDRESS

    电子邮件

     

    windcoder@abc.com、windcoder_com@gmail.com、abc-123@163.com

    HTTPDUSER

    Apache服务器的用户

    可以是EMAILADDRESS或USERNAME

     

    INT

    整数

    包括0和正负整数

    0、-123、43987

    BASE10NUM 或 NUMBER

    十进制数字

    包括整数和小数

    0、18、5.23

    BASE16NUM

    十六进制数字

    整数

    0x0045fa2d、-0x3F8709

    WORD

    字符串

    包括数字和大小写字母

    String、3529345、ILoveYou

    NOTSPACE

    不带任何空格的字符串

       

    SPACE

    空格字符串

       

    QUOTEDSTRING 或 QS

    带引号的字符串

     

    "This is an apple"、'What is your name?'

    UUID

    标准UUID

     

    550E8400-E29B-11D4-A716-446655440000

    MAC

    MAC地址

    可以是Cisco设备里的MAC地址,也可以是通用或者Windows系统的MAC地址

     

    IP

    IP地址

    IPv4或IPv6地址

    127.0.0.1、FE80:0000:0000:0000:AAAA:0000:00C2:0002

    HOSTNAME

    IP或者主机名称

       

    HOSTPORT

    主机名(IP)+端口

     

    127.0.0.1:3306、api.windcoder.com:8000

    PATH

    路径

    Unix系统或者Windows系统里的路径格式

    /usr/local/nginx/sbin/nginx、c:windowssystem32clr.exe

    URIPROTO

    URI协议

     

    http、ftp

    URIHOST

    URI主机

     

    windcoder.com、10.0.0.1:22

    URIPATH

    URI路径

     

    //windcoder.com/abc/、/api.php

    URIPARAM

    URI里的GET参数

     

    ?a=1&b=2&c=3

    URIPATHPARAM

    URI路径+GET参数

    /windcoder.com/abc/api.php?a=1&b=2&c=3

     

    URI

    完整的URI

     

    https://windcoder.com/abc/api.php?a=1&b=2&c=3

    LOGLEVEL

    Log表达式

    Log表达式

    Alert、alert、ALERT、Error

    日期时间表达式

    表达式标识

    名称

    匹配例子

    MONTH

    月份名称

    Jan、January

    MONTHNUM

    月份数字

    03、9、12

    MONTHDAY

    日期数字

    03、9、31

    DAY

    星期几名称

    Mon、Monday

    YEAR

    年份数字

     

    HOUR

    小时数字

     

    MINUTE

    分钟数字

     

    SECOND

    秒数字

     

    TIME

    时间

    00:01:23

    DATE_US

    美国时间

    10-01-1892、10/01/1892/

    DATE_EU

    欧洲日期格式

    01-10-1892、01/10/1882、01.10.1892

    ISO8601_TIMEZONE

    ISO8601时间格式

    +10:23、-1023

    TIMESTAMP_ISO8601

    ISO8601时间戳格式

    2016-07-03T00:34:06+08:00

    DATE

    日期

    美国日期%{DATE_US}或者欧洲日期%{DATE_EU} |

    DATESTAMP

    完整日期+时间

    07-03-2016 00:34:06

    HTTPDATE

    http默认日期格式

    03/Jul/2016:00:36:53 +0800

    自定义grok表达式

    语法解释:
    %{HOSTNAME},匹配请求的主机名
    %{TIMESTAMP_ISO8601:time},代表时间戳
    %{LOGLEVEL},代表日志级别
    %{URIPATHPARAM},代表请求路径
    %{INT},代表字符串整数数字大小
    %{NUMBER}, 可以匹配整数或者小数

    %{UUID}匹配类似091ece39-5444-44a1-9f1e-019a17286b48
    %{IP}, 匹配ip
    %{WORD}, 匹配请求的方式
    %{GREEDYDATA},匹配所有剩余的数据
    (?([S+]*)),自定义正则
    s*或者s+,代表多个空格
    S+或者S*,代表多个字符
    大括号里面:xxx,相当于起别名

    (?<class_info>([S+]*)), 自定义正则匹配多个字符

    举例操作如下:

    列1:
    [2019-08-22 12:25:51.441] [TSC_IHU] [ERROR] [c.e.c.t.i.t.s.IhuTsaUplinkServiceImpl] Activation/Bind uplink, query UserSession by Token failure!

    grok调试如下:
    [%{TIMESTAMP_ISO8601:time}]s*%{DATA:thread}s*[%{LOGLEVEL:level}]s*%{GREEDYDATA:data}

    列2:

    2019-09-12 14:16:36.320+08:00 INFO 930856f7-c78f-4f12-a0f1-83a2610b2dfc DispatcherConnector ip-192-168-114-244 [Mqtt-Device-1883-worker-18-1] com.ericsson.sep.dispatcher.api.transformer.v1.MessageTransformer {"TraceID":"930856f7-c78f-4f12-a0f1-83a2610b2dfc","clientId":"5120916600003466K4GA1059","username":"LB37622Z3KX609880"}

    %{TIMESTAMP_ISO8601:access_time}s*%{LOGLEVEL:level}s*%{UUID:uuid}s*%{WORD:word}s*%{HOSTNAME:hostname}s*[%{DATA:work}]s*(?<api>([S+]*))s*(?<TraceID>([S+]*))s*%{GREEDYDATA:message_data}

     列3:

    192.168.125.138 - - [12/Sep/2019:14:10:58 +0800] "GET /backend/services/ticketRemind/query?cid=&msgType=1&pageSize=100&pageIndex=1&langCode=zh HTTP/1.1" 200 91

    grok调试如下:

     %{IP:ip}s*%{DATA:a}s*[%{HTTPDATE:access_time}]s*%{DATA:b}%{WORD:method}s*%{URIPATH:url}%{URIPARAM:param}s*%{URIPROTO:uri}%{DATA:c}%{NUMBER:treaty}%{DATA:d}s*%{NUMBER:status}s*%{NUMBER:latency_millis}

     列4:

    [08/Nov/2019:11:40:24 +0800] tc-com.g-netlink.net - - 192.168.122.58 192.168.122.58 192.168.125.135 80 GET 200 /geelyTCAccess/tcservices/capability/L6T7944Z0JN427155 ?pageIndex=1&pageSize=2000&vehicleType=0 21067 17

     grok调试如下:

    [%{HTTPDATE:access_time}] %{DATA:hostname} %{DATA:username} %{DATA:fwd_for} %{DATA:remote_hostname} %{IP:remote_ip} %{IP:local_ip} %{NUMBER:local_port} %{DATA:method} %{DATA:status} %{DATA:uri} %{DATA:query} %{NUMBER:bytes} %{NUMBER:latency_ms}

     

  • 相关阅读:
    搭建Git服务器
    shell脚本的使用
    谈谈递归和回溯算法的运用
    给 Qt 添加模块
    QtQuick 中的 qml 与 Qt 的 C++
    QT 中使用 c++ 的指针
    QT 的使用及编写代码遇到的问题和解决方法
    Centos 7 上安装使用 vscode
    PHP 数组转json格式,key的保存问题
    PHP compact
  • 原文地址:https://www.cnblogs.com/zhangan/p/11395056.html
Copyright © 2011-2022 走看看