如果我有文字:
test: firstString, blah: anotherString, blah:lastString
Run Code Online (Sandbox Code Playgroud)
如何获取文本"firstString"
我的正则表达式是:
test:(.*),
Run Code Online (Sandbox Code Playgroud)
编辑
带回来firstString, blah: anotherString,但我只需要带回'firstString'文本?
我有一个格式的JSON:
{
"SOURCE":"Source A",
"Model":"ModelABC",
"Qty":"3"
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用logstash解析此JSON.基本上我希望logstash输出是一个key:value对的列表,我可以使用kibana进行分析.我认为这可以开箱即用.从很多阅读中,我明白我必须使用grok插件(我仍然不确定json插件的用途).但我无法获得所有领域的活动.我得到多个事件(甚至对于我的JSON的每个属性都有一个).像这样:
{
"message" => " \"SOURCE\": \"Source A\",",
"@version" => "1",
"@timestamp" => "2014-08-31T01:26:23.432Z",
"type" => "my-json",
"tags" => [
[0] "tag-json"
],
"host" => "myserver.example.com",
"path" => "/opt/mount/ELK/json/mytestjson.json"
}
{
"message" => " \"Model\": \"ModelABC\",",
"@version" => "1",
"@timestamp" => "2014-08-31T01:26:23.438Z",
"type" => "my-json",
"tags" => [
[0] "tag-json"
],
"host" => "myserver.example.com",
"path" => "/opt/mount/ELK/json/mytestjson.json"
}
{
"message" => " \"Qty\": \"3\",",
"@version" => "1",
"@timestamp" => "2014-08-31T01:26:23.438Z",
"type" => "my-json", …Run Code Online (Sandbox Code Playgroud) 我有一个固定的位置(列)文件,其中没有分隔字段的分隔符.每个字段都有自己的起始位置和长度.以下是数据示例:
520140914191193386---------7661705508623855646---1595852965---133437--the lazy fox jumping over-----------------------212.75.12.85---
Run Code Online (Sandbox Code Playgroud)
虽然我使用破折号( - )来显示上面数据的示例,但如果实际字段比模式中允许的短,则实际文件包含空格.
这种情况下的架构是:
UsedID (start position 1, length 27)
SystemID (start position 28, length 22)
SampleID (start position 50, length 13)
LineID (start position 63, length 8)
Text (start position 71, length 48)
IP (start position119, length 15)
Run Code Online (Sandbox Code Playgroud)
理想情况下,我会在logstash中获得以下字段值(没有尾随空格)
UsedID:520140914191193386
SystemID:7661705508623855646
SampleID:1595852965
LineID:133437
Text:the lazy fox jumping over
IP:212.75.12.85
Run Code Online (Sandbox Code Playgroud)
如何用grok解析这种文件?
我正在尝试调整路径名称,以便它不再将时间戳附加到末尾.我输入了许多不同的日志,因此为每个可能的日志编写条件过滤器是不切实际的.如果可能的话,我只想修剪值的最后九个字符.
例如"random.log-20140827"会成为"random.log".
我正在尝试为我的日志文件编写grok模式,该日志文件有三种不同类型的日志,我想在类型名称(TYPE1,TYPE2,TYPE3)上放置一个过滤器,然后为这一个日志文件写入三种不同的grok模式.此外,我的日志文件是一个csv分隔文件.
日志文件:
TYPE1,word,word,word,num
TYPE2,word,word,word,word
TYPE3,num,word,num,word
这是我到目前为止所尝试的:
filter {
if [message] =~ /TYPE1/ {
grok {
match => [ "message", "%{WORD:type},%{WORD:a1"},%{WORD:a2"},%{WORD:a3"},%{POSINT:a4"}]
}
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用.另外,在这个配置文件中,我为其他文件(运行良好)编写了grok模式,如:
filter {
if [type] == "sometype1" or [type] == "sometype2" {
grok {
match => [ "message", "%{POSINT:moduleid}%{SPACE}%{NUMBER:date}"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且给我问题的日志文件有type = sometype3,我没有在任何地方提到过.
谢谢
我正在使用Logstash及其Grok过滤器解析代理日志.日志包含带引号的字符串:
1438120705 [.....] "SEF-EDP8" - "C"
"/GPM/1023/5745-7/456V/"
Run Code Online (Sandbox Code Playgroud)
使用Grok Debugger,以下模式就像魅力:
%{NUMBER:ts} [......] (-|"%{USERNAME:token1}") (-|%{DATA:token2}) (-|"%{WORD:token3}") (-|"%{DATA:token4}")
Run Code Online (Sandbox Code Playgroud)
这不适用于Logstash的Grok,因为grok模式中有双引号.Logstash错误日志:
Error: Expected one of #, {, } at line 9, column 204 (byte 374) after
filter {
grok {
match => { "message" => "%{NUMBER:ts} [......] ("
Run Code Online (Sandbox Code Playgroud)
所以我使用QuotedString grok模式代替:
%{NUMBER:ts} [......] (-|%{QS:token1}) (-|%{DATA:token2}) (-|%{QS:token3}) (-|%{QS:token4})
Run Code Online (Sandbox Code Playgroud)
这也适用于Grok调试器,但引号是用带引号的字符串提取的.它也不适用于Logstash:
token1 : ""SEF-EDP8"" token2 : null token3 : ""C"" token4 :
""/GPM/1023/5745-7/456V/""
Run Code Online (Sandbox Code Playgroud)
如何使其与Logstash一起使用?如何删除这些不需要的额外双引号?
我正在使用Logstash将JSON消息输出到API。我正在使用“映射”属性来映射我的消息。请参阅以下我的托运人配置。
output {
stdout { }
http {
url => "http://localhost:8087/messages"
http_method => "post"
format => "json"
mapping => ["MessageId","654656","TimeStamp","2001-12-31T12:00:00","CorrelationId","986565","MessageType","%{log_MessageType}" ,"MessageTitle","%{log_MessageTitle}","Message","%{log_Message}"]
}
}
Run Code Online (Sandbox Code Playgroud)
此配置工作正常,并产生以下输出:
{
"MessageId": "654656",
"TimeStamp": "2001-12-31T12:00:00",
"CorrelationId": "986565",
"MessageType": "INFO",
"MessageTitle": "TestTittle",
"Message": "Sample Message"
}
Run Code Online (Sandbox Code Playgroud)
输入日志条目:
TID: [0] [ESB] [2016-05-30 23:02:02,602] INFO {org.wso2.carbon.registry.core.jdbc.EmbeddedRegistryService} - Configured Registry in 572ms {org.wso2.carbon.registry.core.jdbc.EmbeddedRegistryService}
Run Code Online (Sandbox Code Playgroud)
模式:
TID:%{SPACE}\[%{INT:log_SourceSystemId}\]%{SPACE}\[%{DATA:log_ProcessName}\]%{SPACE}\[%{TIMESTAMP_ISO8601:log_TimeStamp}\]%{SPACE}%{LOGLEVEL:log_MessageType}%{SPACE}{%{JAVACLASS:log_MessageTitle}}%{SPACE}-%{SPACE}%{GREEDYDATA:log_Message}
Run Code Online (Sandbox Code Playgroud)
问题陈述:
我想通过HTTP映射跟踪输出。我想在消息中使用嵌套的JSON类型,如何在映射标记中添加它。
预期产量:
{
"MessageId": "654656",
"TimeStamp": "2001-12-31T12:00:00",
"CorrelationId": "986565",
"MessageType": "INFO",
"MessageTitle": "TestTittle",
"Message": "Sample Message",
"MessageDetail": {
"FieldA": "65656",
"FieldB": "192.168.1.1",
"FieldC": "sample …Run Code Online (Sandbox Code Playgroud) json logstash logstash-grok logstash-file logstash-configuration
嗨如何为下面的日志写一个grok表达式
[2017-03-25T00:00:07,137][WARN ]
match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}/]/[%{LOGLEVEL:log-level}\s*\]" }
Run Code Online (Sandbox Code Playgroud)
这是正确的,如何在grok中写空间?谢谢
这是我第一次使用 grok 和 elasticsearch。我正在尝试编写一个 grok 文件来解析以下行。
2017-07-25 10:48:23,477 [[api-my-app-v1-20.0.0].apiHttpListenerConfig.worker.58] INFO esb.api-my-app-v1.get-blah.http.response - transactionID=f61b8053-70d2-11e7-b274-3639cc5335d0 creationTime=2017-07-25T10:48:23.254+10:00 txnState=END timeTaken=11
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经写了这个 grok...
%{TIMESTAMP_ISO8601:timestamp}\s+%{DATA:thread}\s+%{LOGLEVEL:loglevel}\s+%{JAVACLASS:category}\s+-\s+%{GREEDYDATA:msgbody}
Run Code Online (Sandbox Code Playgroud)
它给了我这个......
{
"timestamp": [
[
"2017-07-25 10:48:23,477"
]
],
"YEAR": [
[
"2017"
]
],
"MONTHNUM": [
[
"07"
]
],
"MONTHDAY": [
[
"25"
]
],
"HOUR": [
[
"10",
null
]
],
"MINUTE": [
[
"48",
null
]
],
"SECOND": [
[
"23,477"
]
],
"ISO8601_TIMEZONE": [
[
null
]
],
"thread": [
[
"[[api-my-app-v1-20.0.0].apiHttpListenerConfig.worker.58]"
]
],
"loglevel": [ …Run Code Online (Sandbox Code Playgroud) 我是胶水新手,我正在尝试让爬虫功能从一些日志文件中提取数据库表。问题是文件的第一行不同。我定义了一个自定义 Grok 分类器,只要删除第一行,它就可以正常工作,但是当我使用原始日志文件时,它会停止工作并使用默认的粘合分类器(这显然对我不起作用)。我尝试将 'skip.header.line.count'=1 添加到表属性(并将爬网程序设置为不更新架构),但这也不起作用。有没有办法在 grok 模式中写“跳过第一行”?
amazon-web-services logstash-grok aws-glue aws-glue-data-catalog