HTML 로그와 함께 Logstash 사용

부르기

저는 Logstash를 처음 사용하여 HTML 로그 파일을 구문 분석하는 데 사용하려고합니다. 로그 행만 출력해야합니다. 즉, 파일에도 포함 된 선행 JS, CSS 및 HTML을 무시합니다. 파일의 로그 행은 다음과 같습니다.

<tr bgcolor="tomato"><td>Jan 28<br>13:52:25.692</td><td>Jan 28<br>13:52:23.950</td><td>qtp114615276-1648 [POST] [call_id:-8009072655119858507]</td><td>REST</td><td>sa</td><td>0.0.0.0</td><td>ERR</td><td>ProjectValidator.validate(36)</td><td>Project does not exist</td></tr>

모든 줄을 얻는 데 문제가 없지만 HTML 태그없이 관련 항목 만 포함하고 다음과 같이 보이는 출력을 갖고 싶습니다.

{
  "db_timestamp": "2015-01-28 13:52:25.692",
  "server_timestamp": "2015-01-28 13:52:25.950",
  "node": "qtp114615276-1648 [POST] [call_id:-8009072655119858507]",
  "thread": "REST",
  "user": "sa",
  "ip": "0.0.0.0",
  "level": "ERR",
  "method": "ProjectValidator.validate(36)",
  "message": "Project does not exist"
}

내 Logstash 구성은 다음과 같습니다.

input {
  file {
    type => "request"
    path => "<some path>/*.log"
    start_position => "beginning"
  }
  file {
    type => "log"
    path => "<some path>/*.html"
    start_position => "beginning"
  }
}
filter {
  if [type] == "log" {
    grok {
        match => [ WHAT SHOULD I PUT HERE??? ]  
    }
  }
}
output {
  stdout {}
  if [type] == "request" {
    http {
        http_method => "post"
        url => "http://<some url>"
        mapping =>  ["type", "request", "host" ,"%{host}", "timestamp", "%{@timestamp}", "message", "%{message}"]
    }
  }
  if [type] == "log" {
    http {
        http_method => "post"
        url => "http://<some url>"
        mapping =>  [ ALSO WHAT SHOULD I PUT HERE??? ]
    }
  }
}

그렇게하는 방법이 있습니까? 지금까지 관련 문서 나 샘플을 찾지 못했습니다.

감사!

부르기

마침내 답을 찾았습니다.

이것이 최고이거나 가장 우아한 솔루션인지 확실하지 않지만 작동합니다.

http 출력 형식을 "message"로 변경하여 매핑을 사용하는 대신 전체 메시지를 JSON으로 재정의하고 형식을 지정할 수있었습니다. 또한 grok 필터에서 매개 변수 이름을 지정하고 출력에 사용하는 방법을 알아 냈습니다.

다음은 새로운 Logstash 구성 파일입니다.

input {
  file {
    type => "request"
    path => "<some path>/*.log"
    start_position => "beginning"
  }
  file {
    type => "log"
    path => "<some path>/*.html"
    start_position => "beginning"
  }
}

filter {
  if [type] == "log" {
    grok {
            match => { "message" => "<tr bgcolor=.*><td>%{MONTH:db_date}%{SPACE}%{MONTHDAY:db_date}<br>%{TIME:db_date}</td><td>%{MONTH:alm_date}%{SPACE}%{MONTHDAY:alm_date}<br>%{TIME:alm_date}</td><td>%{DATA:thread}</td><td>%{DATA:req_type}</td><td>%{DATA:username}</td><td>%{IP:ip}</td><td>%{DATA:level}</td><td>%{DATA:method}</td><td>%{DATA:err_message}</td></tr>" }
    }
  }
}

output { stdout { codec => rubydebug }
  if [type] == "request" {
    http {
        http_method => "post"
        url => "http://<some URL>"
        mapping =>  ["type", "request", "host" ,"%{host}", "timestamp", "%{@timestamp}", "message", "%{message}"]
    }
  }
  if [type] == "log" {
    http {
        format => "message"
        content_type => "application/json"
        http_method => "post"
        url => "http://<some URL>"
        message=> '{
            "db_date":"%{db_date}", 
            "alm_date":"%{alm_date}", 
            "thread": "%{thread}", 
            "req_type": "%{req_type}", 
            "username": "%{username}", 
            "ip": "%{ip}",
            "level": "%{level}",
            "method": "%{method}",
            "message": "%{err_message}"         
        }'
    }
  }
}

http 메시지 블록의 경우 작은 따옴표와이 블록의 매개 변수에 대한 큰 따옴표에 유의하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Logstash와 함께 RabbitMQ를 사용할 때 메시지 손실

분류에서Dev

'FastAPI'와 함께 'requests_html'사용

분류에서Dev

? : 연산자와 함께 html 사용

분류에서Dev

ActionLink와 함께 Html 확장 사용

분류에서Dev

Akka와 함께 로그 백 사용

분류에서Dev

django와 함께 사용되는 그리스어 강조 문자와 함께 pisa html to pdf 문제

분류에서Dev

Umbraco : HTML 태그와 함께 작동하도록 RTE 사용자 정의

분류에서Dev

Swift와 함께 {% include example.html %} Stencil 태그를 사용하는 방법

분류에서Dev

AngularJS와 함께 HTML에서 변수로 URL 매개 변수 사용

분류에서Dev

부트 스트랩 4 : HTML-Navbar와 함께 Div 사용

분류에서Dev

html 및 css와 함께 flexbox를 사용하는 방법

분류에서Dev

fs를 사용하여 이미지와 함께 html 표시

분류에서Dev

xml.etree.ElementTree와 함께 html5lib 사용

분류에서Dev

HTML 5보기와 함께 Jquery Mobile Navbar 사용

분류에서Dev

PHP Simple HTML DOM Parser와 함께 프록시 사용

분류에서Dev

React와 함께 <image> svg 태그 사용

분류에서Dev

그리드 CSS와 함께 * ngFor를 효과적으로 사용

분류에서Dev

saxon9he와 함께 카탈로그 파일 사용

분류에서Dev

RegExp와 함께 Regex 사용

분류에서Dev

@Spy와 @Autowired 함께 사용

분류에서Dev

jsPDf와 함께 Zapfdingbats 사용

분류에서Dev

parametrize와 함께 사용

분류에서Dev

mypy와 함께 pydantic 사용

분류에서Dev

nativebase와 함께 SafeAreaView 사용

분류에서Dev

UserManager와 함께 ExecuteInTransaction 사용

분류에서Dev

UICollectionView와 함께 UIImagePickerController 사용

분류에서Dev

ScrollView와 함께 GeometryReader 사용

분류에서Dev

vuetify와 함께 vuelidate 사용

분류에서Dev

Nextjs와 함께 SurveyJS 사용

Related 관련 기사

뜨겁다태그

보관