;을 구분자로 사용한 데이터 분리.
- script: lang: javascript source: > function process(evt) var str = evt.Get('message').split(';') evt.Put('result', str) }
{ "@timestamp": "2025-02-27T03:49:19.802Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "8.17.0" }, "message": "type: 5 crl.root-x1.letsencrypt.org.edgekey.net;type: 5 e8652.dscx.akamaiedge.net;::ffff:23.207.177.83;", "type: 5 crl.root-x1.letsencrypt.org.edgekey.net", "type: 5 e8652.dscx.akamaiedge.net", "::ffff:23.207.177.83", "" ]}
마지막 구분자 때문에 빈 값이 추출된다. 정규표현식으로 구분자만 제외.
- script: lang: javascript source: > function process(evt) { var str = evt.Get('message').match(/[^;]+/); evt.Put('result', str) }
{ "@timestamp": "2025-02-27T03:53:10.537Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "8.17.0" }, "message": "type: 5 crl.root-x1.letsencrypt.org.edgekey.net;type: 5 e8652.dscx.akamaiedge.net;::ffff:23.207.177.83;", "result": [ "type: 5 crl.root-x1.letsencrypt.org.edgekey.net" ]}
첫 번째 데이터만 추출된다. 정규표현식은 최초 검사 성공 후 중지되기 때문. 모든 데이터를 검사하도록 글로벌(g) 수정자 추가.
- script: lang: javascript source: > function process(evt) { var str = evt.Get('message').match(/[^;]+/g); evt.Put('result', str) }
{ "@timestamp": "2025-02-27T03:54:35.866Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "8.17.0" }, "message": "type: 5 crl.root-x1.letsencrypt.org.edgekey.net;type: 5 e8652.dscx.akamaiedge.net;::ffff:23.207.177.83;", "result": [ "type: 5 crl.root-x1.letsencrypt.org.edgekey.net", "type: 5 e8652.dscx.akamaiedge.net", "::ffff:23.207.177.83" ]}
원하는 구조가 나왔으니 정규표현식만 좀 더 깔끔하게 수정.
- script: lang: javascript source: > function process(evt) { var str = evt.Get('message').match(/[^ :;]+\.[^;]+/g); evt.Put('result', str) }
{ "@timestamp": "2025-02-27T03:56:28.797Z", "@metadata": { "beat": "filebeat", "type": "_doc", "version": "8.17.0" }, "message": "type: 5 crl.root-x1.letsencrypt.org.edgekey.net;type: 5 e8652.dscx.akamaiedge.net;::ffff:23.207.177.83;", "result": [ "crl.root-x1.letsencrypt.org.edgekey.net", "e8652.dscx.akamaiedge.net", "23.207.177.83" ]}
댓글 없음:
댓글 쓰기