-
[Jenkins] Elasticsearch-Kibana를 이용한 로그 모니터링 (2)IT 발자취.../서버운영 2020. 4. 9. 15:28
https://gintrie.tistory.com/45?category=389204
1번에서 한 젠킨스 설정이 끝나면 플러그인이 Build가 발생할 때, Logstash 서버로 http 메세지를 전송한다.
Logstash 설정
9600번 포트로 받는 데이터 입력을 정제 (filter) 하여 표준 입출력과 elasticsearch 서버로 전송
정제 ( filter )
- builds.artifactors 는 다양한 결과물이 다량으로 생길 수 있으므로 필드를 제거한다. ( 7번 라인 )
- header.request_path에서 위에서 설정한 DataSet을 추출 한다. ( 10번 라인 )
- logstash의 grok 필터를 사용함
- http header에서 request_path 값을 사용 ( request_path 입력 값 예시 > "request_path" => "/jenkins-build/", )
- reg_exp를 사용하여 원하는 데이터를 추출 한다. (?<field_name>reg_exp) : Logstash 문법
- jenkins-queue type을 가진 데이터셋중 queueCauses라는 필드는 array로 되어있음
"queueCauses" => [ [0] { "exitTime" => nil, "entryTime" => 1585797986822, "reasonForWaiting" => "Waiting for next available executor on ‘RND_Innovation_Team’", "type" => "buildable" } ]
-
array 형식의 데이터는 split 필터를 이용하여 처리해준다. 이때, 다른 데이터셋에는 queueCauses라는 필드가 없기 때문에 오류가 발생한다.
-
그러므로 type field 가 jenkins-queue와 일치할 경우, split 필터를 사용하도록 한다.
jenkins_log.conf
input { http { port => 9600 } } filter { mutate { remove_field => [ "[builds][artifactors]" ] } grok { match => ["[headers][request_path]", "(?<type>\b[\w\-]+\b)"] } if [type] =~ "jenkins-queue" { split { field => "[queueCauses]" } } } output { stdout { codec => rubydebug } elasticsearch { hosts => "http://127.0.0.1:9200" index => "jbuilds_log-%{+YYYY.MM.dd}" codec => "json" timeout => 120 } }
Kibana 설정 ( 시각화 )
logstash가 엘라스틱 서치에 jbuilds_log-<date> 형식으로 인텍스를 생성
생성된 인덱스의 데이터를 활용하여 의미 있는 데이터를 시각화 ( 단순 노동 첨가 )
데이터 잘 쌓이는지 확인
kibana > Discover 에서 데이터가 정상적으로 들어오고 있는지 확인
인덱스가 정상적으로 생성되고 있더라도 해당 인덱스를 사용하려면 Index pattern을 설정해 주어야 한다.
Kibana > Management > Index Patterns
이미 생성된 index를 사용하여 index pattern을 생성해 준다.
같은 형식의 index들이 많다면 <index_name>-*로 전체 지정을 해준다.
Next step > Time filter를 지정해주면 index pattern이 생성된다.
Index pattern을 생성하면 다음과 같이 들어온 데이터를 확인할 수 있다.
Discover 설정
의미 있는 데이터를 추출하기 위해 필요한 필드를 볼 수 있도록 설정
저장된 추출된 데이터를 jenkins-*_log로 저장
'IT 발자취... > 서버운영' 카테고리의 다른 글
[Jenkins] Elasticsearch-Kibana를 이용한 로그 모니터링 (1) (0) 2020.04.01 [Docker] CentOS 7 Docker 설치 (0) 2020.04.01 댓글