반응형
[포스팅을 작성하게 된 배경]
올해 팀 타겟 중 CI/CD 로그 시각화 관련된 타겟이 있었다는 것을 인지는 하고 있었지만, 어떻게 구현해야 할 지에 대한 생각은 전혀 없었던 상태였습니다.
다른 팀과 완전히 다른 이야기를 하다가 시스템 관련 로그들은 ELK 연동이 되어 있다고 해서 헛... 그렇다면 거기에 로깅 설정만 좀 변경하고 탑승해서 날로 먹어볼까? 라는 마음으로 발을 들였다가 결국 완전 분리된 별개의 프로젝트를 시작하게 되었습니다.
지금도 아직 지표 도출 및 온보딩까지는 많은 단계가 남았지만, 이는 통계나 다른 인프라 측면의 문제이지 구현 방식은 별다른 차이가 없을 것이라 보여집니다. (이렇게 말 해 놓고 온갖 삽질을 하면서 긴 시간을 때려 부을 것으로 예상되기는 함)
Jenkins 로그를 좀 더 상세하게, 예쁘게 까 보고 싶은데 번거로운 건 싫은 분들을 위해 정리한 내용을 공유합니다.
ELK Stack?
- ELK stack은 Elasticsearch, Logstash, Kibana 이 세 가지 오픈소스의 이니셜을 딴 말입니다. Elasticsearch는 검색&분석 엔진이고, Logstash는 서버 사이드 데이터 처리 파이프라인입니다. Kibana는 이 Elasticsearch로부터 전송받은 데이터를 보기 좋게 만들어 주는 시각화 툴입니다. 자세한 내용은 ELK란 무엇인가 페이지에서 확인하실 수 있습니다.
- 각 오픈소스에 대한 설명은 구글에 쳐 보기만 해도 수천 페이지는 나오므로, 여기에서는 간단하게, Logstash로 데이터를 잘 프로세싱해서 Elasticsearch로 보내고, Elasticsearch에서는 데이터를 저장하고 인덱싱하여 Kibana에서 사용하게 해 주고, Kibana는 이 수집된 데이터들을 사용자가 보기 쉽게 시각화 해 준다는 정도로만 이해해 주시면 될 듯 합니다.
Prerequisite
선결조건으로, Jenkins가 어떤 역할을 하는 툴인지에 대한 이해는 있으셔야 합니다 !!!
- 1.8 이상 버전 Java
- 설치된 Jenkins
- Jenkins 설치는 모르시면 구글링하시면 정말 많은 자료가 나와 있습니다. 플러그인 설치를 위해 외부 통신이 되는 상태의 젠킨스를 준비해 주시면 됩니다. 외부 통신이 안 되더라도 뭐... 수동으로 파일 끌고와서 설치 원하시면 그렇게 하셔도.. 😉
- Jenkins, Logstash, Elasticsearch, Kibana 가 각각 혹은 하나의 서버에서 상호 통신 가능한 상태
- 이 포스팅에서는 저 4종을 각각 별도의 서버에 설치하였습니다. 서버 한 대에 하시거나 로컬에 하시는 건 상관 없는데, 이 포스팅에서처럼 여러 대로 돌리실 거라면 방화벽이 막혀 있지 않은 상태인지 먼저 확인해 주시면 됩니다.
- 윈도우 환경에 대해서는 저는 모릅니다.. 🥰
Expected outcome
- Jenkins build log를 아래와 같은 JSON 형태의 데이터 셋으로 전달받을 수 있습니다.
- 전달받은 데이터에서 유의미한 지표를 발굴하여 아래와 같은 방식으로 시각화할 수 있습니다.
Jenkins Plugin 설치 및 설정
- 젠킨스 > 플러그인 관리 > 설치 가능한 플러그인에서 Logstash 플러그인과 Statistics Gatherer 플러그인을 설치합니다. 왜 두 가지를 설치하냐면, 인덱스 타입을 두 가지로 해서 보여드리고 둘 중 마음에 드는 걸로 골라 쓰시라고 두 가지를 일단 안내 드립니다. 포스팅 쭉 보시고 둘 중 결과가 마음에 드는 한 쪽만 선택하셔서 설치하셔도 됩니다. (statistics gatherer 플러그인 관련해서는 두 포스팅을 참고하였습니다.
https://towardsdatascience.com/jenkins-events-logs-and-metrics-7c3e8b28962b https://gintrie.tistory.com/45?category=389204) - 두 플러그인 모두 http request 날리는 방식으로 데이터를 전달하도록 할 예정입니다. 이 방식 때문에 이후 다른 툴에서도 http 관련 플러그인을 설치해야 하여, 기억해 주시면 됩니다.
- 제 환경 같은 경우, 외부 통신을 위해 Plugin manager에서 proxy 설정을 먼저 해 주었습니다. 다이렉트로 외부 연결이 어려운 경우, 플러그인이 설치되지 않는다면 프록시 설정을 먼저 보시기 바랍니다.
여기까지 쓰고 티스토리 에디터때문에 성질뻗쳐서 나머지는 aws 인강보고 다시 돌아오는걸로ㅜ
반응형
'DevOps' 카테고리의 다른 글
Nginx Basics - Reverse proxy, load balancing, static content deploy (1) | 2021.05.24 |
---|---|
[이럴땐이렇게] 리눅스 서버 disk full인데 지울거 없을때 임시조치 / linux disk full (0) | 2021.05.15 |
Load Balancing : L2, L3, L4, L7의 차이 (0) | 2021.05.09 |
Nexus 구성 - Proxy Central Repository 외에 추가로 Local 의존성 추가하기 (0) | 2020.12.06 |
[이럴땐이렇게] Eclipse - Tomcat 이 사용 중이라고 나올 때 (1) | 2020.06.25 |