2025년 2월 27일 목요일

Beat processors - 6th

;을 구분자로 사용한 데이터 분리.
- 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;",
  "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(/[^;]+/);
        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"
  ]
}

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스