데브코스

[20주차 - DAY4] 웹 기반 문서 편집기 제작 프로젝트(8)

미안하다 강림이 좀 늦었다 2024. 7. 11. 12:11

 

 

파이프라인 모니터링

Slack 알림 설정

1. 슬랙 채널을 새로 만든다.

2. 슬랙의 Tools&settings > Manage apps에서 Jenkins CI를 검색하여 Add to Slack을 누른다.

3. 알림을 발행할 채널을 선택하고, Add Jenkins CI integration을 누른다. 그러면 해당 채널에 접근할 때 사용하는 토큰과 팀 서브도메인을 발행해준다.

4. 젠킨스의 Manage Jenkins > Credentials > System > Global credentials에서 새 credentials를 생성한다.Kind는 Secret text, Secret에는 3에서 받은 토큰 값을 입력하고, ID는 slack-key로 지정한다.

5. 젠킨스에서 slack notification 플러그인을 설치한다.

6. Workspace에는 3에서 발행된 팀 서브도메인을 작성하고, Default channel/member id에는 3에서 선택한 채널을 입력한다.

7. 파이프라인 맨 앞에 빌드 및 배포 시작 알림을 주기 위한 스크립트를 추가한다.

stage("Start") {
  steps {
    slackSend(
      message: "Pipeline ${env.JOB_NAME} #${env.BUILD_NUMBER} Start",
      color: "good", tokenCredentialId: "slack-key"
    )
  }
}

8. post > always 안에 맨 끝에 빌드 및 배포가 끝났음을 알리는 알림을 주기 위한 스크립트를 추가한다.

slackSend(
  message: "Pipeline ${env.JOB_NAME} #${env.BUILD_NUMBER} Completed " +
    "with status [${currentBuild.currentResult}]",
  color: "good", tokenCredentialId: "slack-key"
)

9. 메시지에 코드 변경 사항 열람 링크를 포함하기 위해 젠킨스 플러그인인 last changes를 설치한다.

10. post > always의 slackSend를 다음과 같이 수정한다.

slackSend(
  message: "Pipeline ${env.JOB_NAME} #${env.BUILD_NUMBER} Completed " +
    "(<http://localhost:8080/job/${env.JOB_NAME}/" +
    "${BUILD_NUMBER}/last-changes|Check Last Change>) " +
    "with status [${currentBuild.currentResult}]",
  color: "good", tokenCredentialId: "slack-key"
)

11. 위에서 작성한 slackSend 전에 아래의 내용을 추가하여 코드 변경 사항(커밋 정보)을 발행한다.

script {
  def publisher = LastChanges.getLastChangesPublisher "PREVIOUS_REVISION",
    "SIDE", "LINE", true, true, "", "", "", "", ""
  publisher.publishLastChanges()
  def htmlDiff = publisher.getHtmlDiff()
  writeFile file: "deployment-diff-${env.BUILD_NUMBER}.html",
    text: htmlDiff
}

 

 

클러스터 모니터링

1. Helm Repository를 추가한다.

helm repo add prometheus https://prometheus-community.github.io/helm-charts

2. 모니터링 네임스페이스를 생성한다.

bubectl create namespace monitoring

3. helm chart로 prometheus를 모니터링에 설치한다.

helm install prometheus prometheus/kube-prometheus-slack -n monitoring

4. prometheus-grafana와 protheus-kube-prometheus-prometheus의 서비스 타입을 LoadBalancer로 조정한다.

kubectl –n monitoring edit svc prometheus-kube-prometheus-prometheus
kubectl –n monitoring edit svc prometheus-grafana

5. 아래 명령어를 실행하여 나온 admin-password와 admin-user 값을 base64로 디코딩한 값을 기억해둔다.

kubectl -n monitoring get secret prometheus-grafana -o yaml

6. Grafana를 접속하여 5에서 디코딩한 값으로 로그인한다.

7. 다음 url에 접속하여 대시보드를 추가하고, Prometheus를 선택하면 모니터링 정보를 확인할 수 있다.

https://grafana.com/grafana/dashboards/

 

Grafana dashboards | Grafana Labs

No results found. Please clear one or more filters.

grafana.com

 

 

배운 점

  • 젠킨슨과 슬랙을 연동하여 파이프라인 모니터링 알람을 받는 방법을 배웠다.
  • prometheus를 사용하여 모니터링 정보를 시각적으로 확인하는 법을 알게 되었다.