ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Jenkins] Elasticsearch-Kibana를 이용한 로그 모니터링 (1)
    IT 발자취.../서버운영 2020. 4. 1. 15:43

    https://towardsdatascience.com/jenkins-events-logs-and-metrics-7c3e8b28962b

     

    Jenkins Events, Logs, and Metrics

    How to collect information about Jenkins for analysis and data visualization

    towardsdatascience.com

    이 문서에는 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 설정

    위 캡처화면에 보이는 설정은 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

     

    [Jenkins] Elasticsearch-Kibana를 이용한 로그 모니터링 (2)

    https://gintrie.tistory.com/45?category=389204 [Jenkins] Elasticsearch-Kibana를 이용한 로그 모니터링 https://towardsdatascience.com/jenkins-events-logs-and-metrics-7c3e8b28962b Jenkins Events, Logs,..

    gintrie.tistory.com

     

    댓글

Designed by Gintire