다음과 같이 그라파나에 대쉬보드 하나를 생성하였다고 가정하자. 필자는 Mysql로 테스트쿼리를 연결하여 진행하였다.
그리고 자신이 그린 대시보드 혹은 그래프를 어드민 페이지가 아닌 일반 사용자에게 보여주고 싶다고 가정을 해보자. 필자는 해당 그래프 렌더 이미지 혹은 대시보드를 <iframe>에 embed한다고 가정하고 포스트를 진행한다.
대시보드를 sharing하기 위해서는 우선 dashboard 페이지에서 그래프 제목부분을 클릭해서 sharing 부분을 들어가 주어야 한다.
여기서 보면 http://localhost~~ 라는 문구 옆에 copy라는 버튼이 있다. 이 버튼을 클릭하게 되면해당 대쉬보드링크가 복사되게 된다. 만약 그래프 렌더 이미지를 가져와서 iframe에 넣고 싶다면 그 밑에 Direct link rendered image 부분을 클릭하여 주소를 src에 넣어주자. 단 주의할 점은 Current time range 체크를 해제해 주어야 그래프의 시간축(x축)이 자동으로 변경된다.
이제 iframe 부분에 이 링크를 넣어서 dashboard가 잘 나오는지 확인하자
iframe 으로 넣어주고 확인해보니 다음과 같이 오류가 난다.
'Refused to display 'http://localhost:3000/login' in a frame because it set 'X-Frame-Options' to 'deny'.'
https://grafana.com/docs/grafana/latest/installation/configuration/#allow-embedding
해당 링크를 보면 이러한 문구가 있다.
When false, the HTTP header X-Frame-Options: deny will be set in Grafana HTTP responses which will instruct browsers to not allow rendering Grafana in a <frame>, <iframe>, <embed> or <object>. The main goal is to mitigate the risk of Clickjacking. Default is false.
이 부분을 해결해 주기 위해서는 전 포스트에서 다루어 주었던 grafana.ini파일을 수정해 주어야한다. 만약 자신이 사용하고 있는 서비스에서 Ha-Proxy 를 사용하고 있다면 Ha-proxy 설정도 따로 해주어야한다.
grafana.ini파일을 들어가서 좀 내리다 보면 다음과 같은 부분이 있다.
# set to true if you want to allow browsers to render Grafana in a <frame>, <iframe>, <embed> or <object>. default is false.
;allow_embedding = false
이 부분을 위의 사진과같이 allow_embedding = true로 변경시켜주면 된다. 또 하나 해야할것은 이 dashboard나 그래프 렌더 이미지를 익명의 사용자가 볼수 있게끔 해주어야 하므로 auth.anonymous부분을 true로 변경해주어야한다. 만약 변경해주지 않게 되면 다음과 같이 로그인 창만 뜨게된다.
아래와 같이 auth.anonymous부분도 true로 바꿔 주고 restart를 해주자.
혹시나를 위해 적어놓지만 vi 에디터에서 수정모드로 들어가기 위해서는 i를 누르면 되고 수정이 다 끝난 뒤에는 esc, :wq! 순서로 나와주면된다. 변경사항이 저장이 되었으면 앞 포스트에서 언급했듯이 변경사항을 적용하기 위해서는 컨테이너를 restart 해주어야 한다. ini파일이 추후 초기화 되지 않게 도커 볼륨도 넣어주는게 좋다.
restart까지 해주었다면 다음과 같이 그래프가 잘 나오는것을 볼 수 있다. 해당 방법은 Client Page에서 그래프를 보여줄 수 있지만 추후 보안성에 관해서는 문제가 있을수 있다는점 참조하길 바란다.
'Grafana with Docker' 카테고리의 다른 글
Grafana를 도커컨테이너로 실행하는 방법 (0) | 2020.01.06 |
---|