## 一、前言
Logstash 內置了120種默認表達式,可以查看patterns,里面對表達式做了分組,每個文件為一組,文件內部有對應的表達式模式。下面只是部分常用的。
## 二、常用表達式
| 表達式標識 | 名稱 | 詳情 | 匹配例子 |
| --- | --- | --- | --- |
| USERNAME 或 USER | 用戶名 | 由數字、大小寫及特殊字符(.\_-)組成的字符串 | 1234、Bob、Alex.Wong |
| EMAILLOCALPART | 用戶名 | 首位由大小寫字母組成,其他位由數字、大小寫及特殊字符(\_.+-=:)組成的字符串。注意,國內的QQ純數字郵箱賬號是無法匹配的,需要修改正則 | windcoder、windcoder\_com、abc-123 |
| EMAILADDRESS | 電子郵件 | | [windcoder@abc.com](mailto: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](http://api.windcoder.com:8000/) |
| PATH | 路徑 | Unix系統或者Windows系統里的路徑格式 | /usr/local/nginx/sbin/nginx、c:\\windows\\system32\\clr.exe |
| URIPROTO | URI協議 | | http、ftp |
| URIHOST | URI主機 | | [windcoder.com](http://windcoder.com/)、10.0.0.1:22 |
| URIPATH | URI路徑 | | [//windcoder.com/abc/、/api.php](https://windcoder.com/abc/%E3%80%81/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](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 |
## 四、使用例子
### 4.1. 例1
~~~
[2020-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}
~~~
輸出結果如下:
~~~
{
"data": "[c.e.c.t.i.t.s.IhuTsaUplinkServiceImpl] Activation/Bind uplink, query UserSession by Token failure!",
"level": "ERROR",
"time": "2020-08-22 12:25:51.441",
"thread": "[TSC_IHU]"
}
~~~
### 4.2. 例2
~~~
2020-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"}
~~~
grok配置:
~~~
%{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}
~~~
輸出結果如下:
~~~
{
"level": "INFO",
"work": "Mqtt-Device-1883-worker-18-1",
"uuid": "930856f7-c78f-4f12-a0f1-83a2610b2dfc",
"hostname": "ip-192-168-114-244",
"message_data": "",
"TraceID": "{\"TraceID\":\"930856f7-c78f-4f12-a0f1-83a2610b2dfc\",\"clientId\":\"5120916600003466K4GA1059\",\"username\":\"LB37622Z3KX609880\"}",
"api": "com.ericsson.sep.dispatcher.api.transformer.v1.MessageTransformer",
"word": "DispatcherConnector",
"access_time": "2020-09-12 14:16:36.320+08:00"
}
~~~
### 4.3. 例3
~~~
192.168.125.138 - - [12/Sep/2020: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}
~~~
輸出結果如下:
~~~
{
"a": "- -",
"b": "\"",
"c": "/",
"method": "GET",
"d": "\"",
"ip": "192.168.125.138",
"latency_millis": "91",
"uri": "HTTP",
"url": "/backend/services/ticketRemind/query",
"param": "?cid=&msgType=1&pageSize=100&pageIndex=1&langCode=zh",
"treaty": "1.1",
"access_time": "12/Sep/2020:14:10:58 +0800",
"status": "200"
}
~~~
### 4.4. 例4
~~~
[08/Nov/2020: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}
~~~
輸出結果如下:
~~~
{
"method": "GET",
"local_port": "80",
"fwd_for": "-",
"query": "?pageIndex=1&pageSize=2000&vehicleType=0",
"remote_hostname": "192.168.122.58",
"uri": "/geelyTCAccess/tcservices/capability/L6T7944Z0JN427155",
"latency_ms": "17",
"local_ip": "192.168.125.135",
"hostname": "tc-com.g-netlink.net",
"remote_ip": "192.168.122.58",
"bytes": "21067",
"access_time": "08/Nov/2020:11:40:24 +0800",
"username": "-",
"status": "200"
}
~~~
- springcloud
- springcloud的作用
- springboot服務提供者和消費者
- Eureka
- ribbon
- Feign
- feign在微服務中的使用
- feign充當http請求工具
- Hystrix 熔斷器
- Zuul 路由網關
- Spring Cloud Config 分布式配置中心
- config介紹與配置
- Spring Cloud Config 配置實戰
- Spring Cloud Bus
- gateway
- 概念講解
- 實例
- GateWay
- 統一日志追蹤
- 分布式鎖
- 1.redis
- springcloud Alibaba
- 1. Nacos
- 1.1 安裝
- 1.2 特性
- 1.3 實例
- 1. 整合nacos服務發現
- 2. 整合nacos配置功能
- 1.4 生產部署方案
- 環境隔離
- 原理講解
- 1. 服務發現
- 2. sentinel
- 3. Seata事務
- CAP理論
- 3.1 安裝
- 分布式協議
- 4.熔斷和降級
- springcloud與alibba
- oauth
- 1. abstract
- 2. oauth2 in micro-service
- 微服務框架付費
- SkyWalking
- 介紹與相關資料
- APM系統簡單對比(zipkin,pinpoint和skywalking)
- server安裝部署
- agent安裝
- 日志清理
- 統一日志中心
- docker安裝部署
- 安裝部署
- elasticsearch 7.x
- logstash 7.x
- kibana 7.x
- ES索引管理
- 定時清理數據
- index Lifecycle Management
- 沒數據排查思路
- ELK自身組件監控
- 多租戶方案
- 慢查詢sql
- 日志審計
- 開發
- 登錄認證
- 鏈路追蹤
- elk
- Filebeat
- Filebeat基礎
- Filebeat安裝部署
- 多行消息Multiline
- how Filebeat works
- Logstash
- 安裝
- rpm安裝
- docker安裝Logstash
- grok調試
- Grok語法調試
- Grok常用表達式
- 配置中常見判斷
- filter提取器
- elasticsearch
- 安裝
- rpm安裝
- docker安裝es
- 使用
- 概念
- 基礎
- 中文分詞
- 統計
- 排序
- 倒排與正排索引
- 自定義dynamic
- 練習
- nested object
- 父子關系模型
- 高亮
- 搜索提示
- kibana
- 安裝
- docker安裝
- rpm安裝
- 整合
- 收集日志
- 慢sql
- 日志審計s
- 云
- 分布式架構
- 分布式鎖
- Redis實現
- redisson
- 熔斷和降級