InfluxDB & Grafana 연결 문제 해결 (Bad Gateway, Bad Request, Error reading InfluxDB)
필자는 사내에서 InfluxDB로 시계열 데이터를 수집하고, Grafana로 해당 대쉬보드를 만드는 업무를 맡게 되었다.
그 과정에서 자연스럽게 InfluxDB와 Grafana를 연결하는 태스크가 있었는데, 해당 업무를 진행하던 중 겪었던 어이없던 이슈를 소개하고자 한다.
독자 여러분을 위해 빠른 체크리스트를 작성해봤다. 시간이 없으신 분들은 이것부터 빠르게 훑어보자.
InfluxDB와 Grafana를 연동하다 보면 종종 발생하는 문제이다.
보통 Bad Gateway는 해당 리소스를 찾을 수 없어 아예 접근하지 못하는 상황에서 발생한다.
따라서 이 문제가 발생했다면, 무조건 네트워크 상으로 연결이 되는지 여부를 확인해야 한다.
특히, InfluxDB의 default port는 8086
임을 기억하자.
(필자는 8806인 줄 알고 삽질하다 1시간을 날렸다...)
이렇게 해서 잘 연결되었는가? 아주 손쉽게 에러를 해결했다! 축하한다!!
이렇게 했는데 Bad Request
혹은 Error reading InfluxDB
라는 오류를 만났는가? 아래로 가보자!
InfluxDB에 연동 시도를 할 때 흔하게 만날 수 있는 문제이다.
특히 2.0으로 올라간지 얼마 안 된 지금 상황에서 더더욱 그렇다.
1.x 버전까지는 InfluxQL을 지원하지만, 2.0+부터는 InfluxQL을 지원하지 않는다!
따라서 만약 본인의 InfluxDB가 2.0+를 사용하고 있다면, Flux 방식을 선택해야 한다.
아래와 같이 InfluxQL이 아닌 Flux를 선택하게 되면 연결해야 하는 정보부터 달라지는 것을 볼 수 있다.
해당 부분에 Organization과 Token을 넣어주도록 하자.
사실 위의 문제들이 아니라면 이 문제가 최종 보스처럼 등장한다.
이럴 때는 Organization 이름이나 Token 값이 잘못되었을 가능성이 일차적으로 높다.
특히 Token 값은 값이 보이지 않기 때문에 틀렸을 가능성이 훨씬 높다.
두 가지를 한 번 확인해보도록 하자.
또한 http인지 https인지 잘 확인하도록 하자.
만약 ssl 설정을 influxdb에서 해 두었다면 괜찮겠지만, 아니라면 오류가 발생한다!
(이걸로도 한 시간을 날렸다...)
Error Reading InfluxDB 혹은 Bad Gateway가 발생할 확률이 굉장히 높다(특히 전자)
특히 InfluxDB와 Grafana를 둘 다 각각 다른 컨테이너에 띄우는 경우라면 네트워크를 신경써야"만" 한다.
그럴 때는 Docker Network를 이용해보자.
1. 도커 네트워크 생성
# Docker Network 생성 명령어
# 네트워크의 이름이 influx-grafana이다.
$ docker network create influx-grafana
2. 컨테이너를 실행할 때 —network 옵션을 통해 네트워크 설정을 해주자.
# Grafana Latest 이미지로 컨테이너 실행
$ docker run -d -p 3000:3000 --name grafana --network influx-grafana grafana/grafana
# influxdb Latest 이미지로 컨테이너 실행
$ docker run -d -p 8086:8086 --name influx --network influx-grafana influxdb
3. 아래의 명령어를 통해 네트워크 설정이 잘 되어 있나 확인하고,
# Grafana Latest 이미지로 컨테이너 실행
# influx-grafana는 위에서 network 만들 때 쓴 이름이다.
$ docker network inspect influx-grafana
4. 그라파나 URL에 컨테이너 이름을 적어주자! => http://influx:8086/
(단, 포트 넘버는 docker run할 때 expose 하는 포트 넘버가 아니라 컨테이너 내부 포트 넘버이다.)
# 만약,
$ docker run -d -p 8087:8086 --name influx-master --network influx-grafana influxdb
# 라고 실행했다면
# http://influx-master:8086/
# 을 적는다는 것이다.
5. 나머지 InfluxDB Details는 Organization과 Token을 잘 넣어주기만 하면 된다.
아주 쉬워보이지만, 필자는 삽질을 엄청나게 했다. (심지어 리서치도 잘 안 된다ㅠㅠ)
독자 여러분은 빠른 체크리스트를 통해 해당 문제들을 쉽게 해결하길 기원한다 😉
5분 59초만에 InfluxDB + Grafana를 EC2 Instance 위에서 연동하기 (0) | 2021.07.01 |
---|---|
9분 59초 만에 Github Action + AWS Elastic Beanstalk로 TS 프로젝트 CI/CD 파이프라인 구축하기 (4) | 2021.06.30 |
[Kubernetes] 4. LivenessProbe, ReplicationController, ReplicaSet, DaemonSet, Job, CronJob (0) | 2021.03.29 |
[Kubernetes] 3. Pod(파드) (0) | 2021.03.24 |
[Kubernetes] 1&2. Basic of Docker & K8S (0) | 2021.03.24 |
댓글 영역