파이프라인 모니터링
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/
배운 점
- 젠킨슨과 슬랙을 연동하여 파이프라인 모니터링 알람을 받는 방법을 배웠다.
- prometheus를 사용하여 모니터링 정보를 시각적으로 확인하는 법을 알게 되었다.
'데브코스' 카테고리의 다른 글
[21주차 - DAY2] CS(1) (1) | 2024.07.16 |
---|---|
[20주차 - DAY5] 알고리즘 리뷰 (0) | 2024.07.12 |
[20주차 - DAY3] 웹 기반 문서 편집기 제작 프로젝트(7) (0) | 2024.07.10 |
[20주차 - DAY2] 웹 기반 문서 편집기 제작 프로젝트(6) (0) | 2024.07.09 |
[20주차 - DAY1] 웹 기반 문서 편집기 제작 프로젝트(5) (0) | 2024.07.08 |