Grafana 사용시 Slack를 이용한 alert를 걸어두는 경우가 종종 있습니다. alert는 기본적으로 텍스트 메세지 템플릿을 사용하기에 이미지를 포함하지 않고 있습니다.
하여 alert를 받고 grafana에 접속해서 일일이 차트를 확인하는 일이 귀찮아 slack에 차트를 싫어 보내는 방법을 찾아보던중 grafana에 plugin이 있어 이를 이용하여 아래와 같이 slack에 차트 전송을 구성해봤습니다.
Grafana Image Renderer
Install plugin Downgrade Upgrade Remove plugin Are you sure? Cancel Confirm delete
grafana.com
Grafana 에 Image Renderer Plugin 설치하기
이미지 렌더링을 사용하기 위해서는 우선 grafana lab에서 제작한 Grafana Image Renderer 플러그인을 설치해줘야 합니다. 플러그인을 설치 하기 위해서는 우선 Grafana가 설치되어 있는 서버에서 grafana-cli를 이용해 플러그인을 다운 받습니다.
$ sudo grafana-cli plugins install grafana-image-renderer
installing grafana-image-renderer @ 3.0.1
from: https://grafana.com/api/plugins/grafana-image-renderer/versions/3.0.1/download
into: /var/lib/grafana/plugins
✔ Installed grafana-image-renderer successfully
Restart grafana after installing plugins . <service grafana-server restart>
플러그인을 설치 후 Grafana를 재기동해주면 Grafana Image Renderer 플러그인 설치가 완료됩니다.
차트를 랜더링 하여 이미지 파일 만들기
플러그인 설치후 Grafana 재기동을 완료했으면 정상동작여부를 아래와 같이 시험해 보시면 됩니다.
각 차트의 toggle 버튼을 누르면 팝업 메뉴에서 "Share" 메뉴를 찾을수 있습니다. 이 버튼을 누르면 나오는 "Share Pannel"에서 "Direct link rendered image" 버튼을 누르면 이미지가 정상적으로 나와야 합니다.



grafana에서 렌더링된 이미지는 rpm으로 설치 하셨을 경우 일반적으로 아래 위치에 생성됩니다.
/var/lib/grafana/png
External_image_Storage 구성 (Webdav)
자 여기까지 되셨으면 이제 Slack에서 차트를 받아 볼수 있도록 설정을 해줄 차례입니다.
Grafana에서 Slack에 엑세스 하는 방식은 Incoming Webhook 입니다. 이방식은 이미지 업로드를 제공하지 않아 텍스트 메세지만 전송만 가능 합니다.
그래서 Slack bot이 이미지를 직접 가져갈수 있도록 external_image_storage 를 활용하여 구성을 해주셔야 합니다.
이미지 스토리지로는 s3, webdav, gcs, azure_blob, local등을 사용할수 있으며 여기에서는 Nginx를 활용한 webdav를 사용하도록 하겠습니다.
Nginx에 webdav를 사용하기 위한 설정을 추가하고 nginx를 실행하고 grafana.ini 파일에 아래와 같이 설정을 추가후 Grafana를 재기동 합니다.
[external_image_storage]
# Used for uploading images to public servers so they can be included in slack/email messages.
# you can choose between (s3, webdav, gcs, azure_blob, local)
provider = webdav
[external_image_storage.webdav]
url = http://{webdav 설정 url}
username = {webdav 아이디}
password = {webdav 패스워드}
public_url = http://{ Slack bot이 접근한 이미지 주소}
설정이 완료되셨으면 아래와 같이 curl로 이미지가 정상적으로 업로드 되는지 확인해주세요
curl -u {webdav 아이디}:{webdav 패스워드} -T {filename} http://{webdav URL}/{filename}
Grafana alert 설정 (Slack)
Slack 설정은 기존과 동일하며 "Include image" 만 체크 해주시면됩니다.

설정 후 테스트를 해보시면 정상적으로 세팅되셨다면 아래와 같은 Alert를 받아 보실수 있습니다.

혹시 안되시면 댓글 남겨주세요
'Monitoring > Grafana' 카테고리의 다른 글
| Grafana + Zabbix 연동하기 (0) | 2021.06.21 |
|---|---|
| Grafana 설치 (0) | 2021.06.18 |