프로메테우스 얼럿룰을 추가하거나, 웹훅 URL을 변경하는 등 프로메테우스 설정을 변경해야할 경우가 생긴다.
이때, helm 으로 설치한 운영중인 프로메테우스를 삭제 후 재설치 하지않고 설정파일을 업데이트 하는 방법을 찾아본다.
공식문서에 따르면 프로메테우스는 런타임중에 설정을 reload 할 수 있다.
Prometheus can reload its configuration at runtime. If the new configuration is not well-formed, the changes will not be applied. A configuration reload is triggered by sending a SIGHUP to the Prometheus process or sending a HTTP POST request to the /-/reload endpoint (when the --web.enable-lifecycle flag is enabled). This will also reload any configured rule files.
프로메테우스 컨피그맵을 수정후 재배포하면 된다.
kubectl get configmap ## configmap name 확인
kubectl get configmap -o yaml prometheus-alertmanager > prometheus_config.yaml
vi prometheus_config.yaml ### 수정할 부분 수정
기존 컨피그맵이다.
receivers.slack_configs.text를 변경 후 재배포 해본다.
변경 후 apply
⚡ root@ip-10-0-3-181 ~/prometheus k apply -f prometheus_config.yml
configmap/prometheus-alertmanager configured
configmap describ로 확인
⚡ root@ip-10-0-3-181 ~/prometheus k describe configmap prometheus-alertmanager
Name: prometheus-alertmanager
Namespace: default
Labels: app=prometheus
app.kubernetes.io/managed-by=Helm
chart=prometheus-16.0.0
component=alertmanager
heritage=Helm
release=prometheus
Annotations: meta.helm.sh/release-name: prometheus
meta.helm.sh/release-namespace: default
Data
====
allow-snippet-annotations:
----
false
alertmanager.yml:
----
global:
slack_api_url: https://hooks.slack.com/services/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
receivers:
- name: slack-notifier
slack_configs:
- channel: '#k8s-monitoring'
send_resolved: true
text: For reload Test.Node has been down for more than 1 minute.
route:
group_interval: 1m
group_wait: 10s
receiver: slack-notifier
repeat_interval: 2m
Events: <none>
logs로 확인
⚡ root@ip-10-0-3-181 ~/prometheus k logs prometheus-alertmanager-585bf69d6d-pmvwg -c prometheus-alertmanager-configmap-reload
2022/11/27 04:25:02 Watching directory: "/etc/config"
2022/11/27 05:19:15 config map updated
2022/11/27 05:19:15 performing webhook request (1/1)
2022/11/27 05:19:15 successfully triggered reload
인스턴스 중지하여 슬랙 알람 테스트를 해본다.
Reference