-
[Jenkins] Elasticsearch-Kibana를 이용한 로그 모니터링 (1)IT 발자취.../서버운영 2020. 4. 1. 15:43
https://towardsdatascience.com/jenkins-events-logs-and-metrics-7c3e8b28962b
이 문서에는 Jenkins의 로그를 Elasticsearch를 이용하여 모니터링하는 방법을 제시한다.
해당 설정을 하면 Jenkins 마스터에서 일어나는 아래와 같은 이벤트를 로깅할 수 있다.
- 프로젝트 생성 ( job이 생성, 삭제, 수정되었을 때 )
- Job 실행 ( build가 시작되거나 끝났을 경우 )
- Job step execution ( job에서 각 스탭이 시작, 끝날 경우 )
- Job queue ( job에 진입 또는 job queue에서 상태 변경이 일어날 경우 )
- SCM Checkout ( job이 소스 관리 툴에서 부터 파일을 체크아웃 받을 때 )
Elasticsearch로 데이터를 보내는데 몇가지 방법이 있다.
- Logstash HTTP input plugin -> Logstash Elasticsearch output plugin
- FluentD HTTP input plugin -> FluentD Elasticsearch output plugin
- Confluent REST Proxy -> Kafka -> Logstash Kafka input plugin -> Logstash Elasticsearch output plugin
해당 예시는 간단한 방법으로 Logstash와 elasticsearch를 사용한다.
실제 운영 환경에서는 Kafka를 사용해서 운영하려고한다.
( 추후에 만약 블로깅한다면 그때 내용 참조 ... 할수있을지 @.@ 화이팅!)
---
먼저 아래에서 플러그인을 다운 받아 젠킨스 플러그인 매니저에서 플러그인을 수동으로 설치해준다.
Jenkins Statistics Gatherer plugin
플러그인 설치가 완료되면, Jenkins 관리 > 환경 설정에서 다음과 같이 설정할 수 있는 창을 볼 수 있다.
위 캡처화면에 보이는 설정은 Statistics Gatherer plugin이 Logstash HTTP 입력 플러그인으로 HTTP 메세지를 보낼 수 있도록 설정 한 것이다.
Logstash 주소는 http://logstash.yourcompany.com/ 로 로그스테시 서버주소를 넣어 준다.
중요사항
- "Enable HTTP publishing?" 옵션은 메세지를 전송하기 위하여 반드시 선택되어야 한다 ( Advanced Option )
- /jenkins-<msg>/ 의 마지막 <msg>는 선택사항이지만, 무슨 이벤트 타입의 정보가 Logstash 필터로 전송되게 하는지 추가적인 정보를 제공한다. 이 Logstash 필터는 request_path 정보에서 정의된다.
- 아티팩트를 배포하는 빌드들은 유니크한 JSON 필트를 각 아티팩트에 제공할 수있다. 이것은 엘라스틱서치 인덱스가 허용하는 필드의 갯수를 초과할 수 있다. 이를 피하기 위하여, Logstash 필터는 원하지 않는 필드의 값을 제거하는 설정을 한다. :
filter { mutate { remove_field => [ "[build][artifacts]" ] } }
젠킨스는 Jenkins scripting console 또는 REST endpoint로 플러그인의 설정을 자동화 할 수 있다.
Groovy script 는 아래와 같이 설정 가능하다. ( 선택 )
그냥 설정 페이지가서 설정하면된다. 자동화 할 경우 아래와 같이 하면 된다.
import org.jenkins.plugins.statistics.gatherer.StatisticsConfiguration; import jenkins.model.*; String baseUrl = "http://logstash.yourcompany.com"; StatisticsConfiguration descriptor = Jenkins.getInstance() .getDescriptorByType(StatisticsConfiguration.class); descriptor.setQueueUrl("${baseUrl}/jenkins-queue/"); descriptor.setBuildUrl("${baseUrl}/jenkins-build/"); descriptor.setProjectUrl("${baseUrl}/jenkins-project/"); descriptor.setBuildStepUrl("${baseUrl}/jenkins-step/"); descriptor.setScmCheckoutUrl("${baseUrl}/jenkins-scm/"); descriptor.setQueueInfo(Boolean.TRUE); descriptor.setBuildInfo(Boolean.TRUE); descriptor.setProjectInfo(Boolean.TRUE); descriptor.setBuildStepInfo(Boolean.TRUE); descriptor.setScmCheckoutInfo(Boolean.TRUE); descriptor.setShouldSendApiHttpRequests(Boolean.TRUE);
키바나를 통해 엘라스틱서치에 들어오는 젠킨스의 이벤트 메세지를 대시보드를 통해 빌드 성능, 실패율 등 다양한 데이터를 시각화 하면 된다.
설정이 끝나면 플러그인이 Build가 발생할 때, Logstash 서버로 http 메세지를 전송한다.
https://gintrie.tistory.com/50
'IT 발자취... > 서버운영' 카테고리의 다른 글
[Jenkins] Elasticsearch-Kibana를 이용한 로그 모니터링 (2) (0) 2020.04.09 [Docker] CentOS 7 Docker 설치 (0) 2020.04.01 댓글