그라파나는 모니터링 대시보드로 많이 쓰이는 웹 애플리케이션입니다. 다양한 기능을 제공하는데 그 중 하나는 Alert기능이 있습니다. 이 기능에는 graph이미지를 추가로 전송할 수 있는데, slack, email 등에 noti를 보낼때 매우 유용하게 사용할 수 있습니다.
이미지를 전달하기 위한 Redering은 grafana의 Grafana Image Renderer플러그인이 chromium(headless browser)을 통해서 수행합니다. Grafana Image Renderer을 사용하기 위해서는 몇가지 제한사항과 이슈에 대해 확인해야하는데 이 부분에 대해 정리하고자 합니다.
Grafana Image Renderer 플러그인 사용 방법
1) grafana-cli로 설치
$ grafana-cli plugins install grafana-image-renderer
grafana-cli로 설치하는 것이 가장 깔끔하지만 외부인터넷망과 연결되지 않는 곳에서는 쉽게 적용 불가합니다. 이 때는 grafana-image-renderer github에서 package를 다운받아서 설치하는 것이 좋습니다.
github package url : https://github.com/grafana/grafana-image-renderer/releases
2) docker로 띄우기
$ docker pull grafana/grafana-image-renderer
docker에 이미 grafana-image-renderer 이미지가 준비되어 있으므로 이 docker image를 띄우면 됩니다.
3) standalone node.js application 띄우기
gitub에서 source를 다운받아서 아래와 같이 디펜던시를 빌드하고 실행하는 방법도 있습니다.
$ yarn install --pure-lockfile
$ yarn run build
$ node build/app.js server --port=8081
위 2), 3) 방식으로 사용할 때 반드시 grafana configuration에서 아래와 같이 external rendering server에 대해 설정하고 재시작 해야합니다.
[rendering]
server_url = http://localhost:8081/render
callback_url = http://localhost:3000/
grafana-cli 및 standalone application 사용시 주의사항
Docker를 사용할 경우 container가 디펜던시를 모두 가지고 있으므로 렌더링하는데 큰 문제가 생기지 않지만 plugin이나 standalone application을 사용할 때는 디펜던시에 대해 확인하고 사용해야 합니다.
plugin의 rendering engine은 chromium browser을 사용하는데 이 browser는 다수의 library dependency를 가지고 있습니다. 제대로 설치하지 않았을 경우 아래와 같은 에러가 발생하고, 이미지가 생성되지않음을 확인할 수 있습니다.
Rendering failed: Error: Failed to launch chrome!/var/lib/grafana/plugins/grafana-image-renderer/chrome-linux/chrome:
error while loading shared libraries: libX11.so.6:
cannot open shared object file: No such file or directory\n\n\nTROUBLESHOOTING:https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
OS마다 요구되는 library는 다르지만 아래와 같은 library를 기본적으로 요구합니다.
Ubuntu:
libx11-6 libx11-xcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrender1 libxtst6 libglib2.0-0 libnss3 libcups2 libdbus-1-3 libxss1 libxrandr2 libgtk-3-0 libgtk-3-0 libasound2
Centos:
libXcomposite libXdamage libXtst cups libXScrnSaver pango atk adwaita-cursor-theme adwaita-icon-theme at at-spi2-atk at-spi2-core cairo-gobject colord-libs dconf desktop-file-utils ed emacs-filesystem gdk-pixbuf2 glib-networking gnutls gsettings-desktop-schemas gtk-update-icon-cache gtk3 hicolor-icon-theme jasper-libs json-glib libappindicator-gtk3 libdbusmenu libdbusmenu-gtk3 libepoxy liberation-fonts liberation-narrow-fonts liberation-sans-fonts liberation-serif-fonts libgusb libindicator-gtk3 libmodman libproxy libsoup libwayland-cursor libwayland-egl libxkbcommon m4 mailx nettle patch psmisc redhat-lsb-core redhat-lsb-submod-security rest spax time trousers xdg-utils xkeyboard-config
무엇이 문제인가?
Chromium browser는 더이상 centos 6를 지원하지 않습니다. 이로인해서 만약 grafana가 설치되어있고, rendering engine을 실행하려는 OS가 CentOS 6일 경우 정상적으로 동작하지 않습니다.
라이브러리를 추가해보려고 했으나 몇 라이브러리는 CentOS 7 전용 library이기 때문에 설치가 불가능했습니다.
그러므로 만약 CentOS에서 Grafana 그리고 Rendering engine을 사용할 경우 반드시 CentOS 7 이상에서 운영하는 것을 권장합니다.
관련 링크
- https://grafana.com/docs/grafana/latest/administration/image_rendering
- https://grafana.com/docs/grafana/latest/alerting/notifications/
'DevOps' 카테고리의 다른 글
aws centos6에서 grafana 빌드하기 (0) | 2020.08.20 |
---|---|
Grafana와 엘라스틱서치 사용시 각종 query 조건 사용 방법(and, or, regex 등) (0) | 2019.10.11 |
넷플릭스에서 리눅스 퍼포먼스 체크하기(in 60초) (0) | 2019.08.27 |
Telegraf에서 system metric 수집하여 elasticsearch에 적재하기 (286) | 2019.08.09 |
Slack으로 process가 정상적으로 시작되었는지 나타내는 이쁜 메시지 만들기(Incoming webhook과 Attachment message 활용) (266) | 2019.06.21 |