Window에서 Docker를 사용하여 Grafana와 MySQL 연동

짱구·2023년 4월 20일
2

monitoring

목록 보기
1/2

Grafana

Grafana란?

Grafana는 오픈소스 대시보드 및 분석 도구입니다. Grafana를 사용하면 다양한 데이터 소스에서 데이터를 시각화하고 대시보드를 만들 수 있습니다.

Grafana 장점

  1. 시각화: Grafana는 다양한 데이터 소스에서 데이터를 시각적으로 표시할 수 있습니다. 그래프, 차트, 대시보드 등을 사용하여 데이터의 변화를 쉽게 이해할 수 있습니다.
  1. 대시보드: Grafana의 대시보드는 매우 유연합니다. 사용자는 필요한 모든 정보를 보기 좋게 표시할 수 있으며, 그래프, 차트, 테이블, 경고, 링크 등을 사용하여 완전한 대시보드를 작성할 수 있습니다.
  1. 다양한 데이터 소스: Grafana는 다양한 데이터 소스를 지원합니다. Prometheus, Elasticsearch, InfluxDB, MySQL, PostgreSQL, CloudWatch 등과 같은 다양한 소스에서 데이터를 추출할 수 있습니다.
  1. 알람: Grafana는 경고를 생성하여 문제를 신속하게 식별할 수 있습니다. 사용자는 특정 조건이 충족되었을 때 경고를 받을 수 있습니다.
  1. 오픈소스: Grafana는 오픈소스로 라이선스가 발급되어 있으므로 사용자는 무료로 사용할 수 있습니다.
  1. 확장성: Grafana는 API와 플러그인을 사용하여 기능을 확장할 수 있습니다. 사용자는 필요한 모든 기능을 구현할 수 있습니다.
  1. 커뮤니티: Grafana는 전 세계적으로 활발한 사용자 커뮤니티가 존재합니다. 사용자는 문제를 해결하거나 기능을 구현하는 데 도움을 받을 수 있습니다.
  1. 사용자 편의성: Grafana는 사용자 편의성에 초점을 맞추어 개발되었습니다. 사용자는 쉽게 데이터를 시각화하고 대시보드를 구성할 수 있습니다.
  1. 분석: Grafana는 데이터를 분석할 수 있는 기능을 제공합니다. 사용자는 데이터의 경향성, 패턴 등을 식별하여 조치를 취할 수 있습니다.
  1. 다양한 통합: Grafana는 다양한 통합 기능을 제공합니다. Slack, PagerDuty, Hipchat 등의 다른 서비스와 통합하여 알림을 받을 수 있습니다.

Grafana 실습

docker로 Grafana image를 받고 Mysql과 연동 실습을 하고 있었습니다.

Grafana Install

$ docker run -d -p 1111:3000 grafana/grafana 

Grafana image를 받고 Grafana에 접속

Grafana(localhost:1111)에 접속

처음 접속시 username과 password는 기본 값으로 admin/admin 입니다.

좌측 하단 Data sources에 들어가서 데이터베이스를 연동해줍니다.

Add data source에서 MySQL을 찾아서 추가해줍니다.

여기서부터 커넥션을 연결해줍니다.

Name, Host, Database, User, Password, skip TLS Verify만 설정해주고 Save&Test를 하겠습니다.

Host에는 내 로컬의 Ip주소:Databas Port 번호를 입력하고 database에는 database 이름과 user, password에는 데이터베이스 user 정보, 비밀번호를 넣어주고 실행해보겠습니다.

실행을 하니 에러가 발생했습니다.
로그를 확인해봤고 순차적으로 에러처리를 해줬습니다.
에러의 원인으로는 방화벽 이슈, Mysql Database 권한 이슈, 로컬 세팅 이슈 등 여러개가 있었습니다.

가장 먼저 Host 명을 로컬 PC의 Ip 주소로 변경을 해줬습니다.

MySQL의 기본정보 확인

MySQL의 워크벤치나 서버로 접속을 해서 MySQL의 입력정보가 틀린지 먼저 확인을 했습니다.

Test Connection을 실행해서 지금까지의 입력정보가 일치하는지 확인해봤습니다.
다행히 입력정보에는 문제가 없었습니다.

윈도우 방화벽 설정

  • 필자의 port 번호는 3500

방화벽이 MySQL 접근을 제어하여 접속이 되지않았었습니다.
방화벽 설정을 확인하기 위해 제어판 -> 방화벽 -> 고급 설정 -> 인바운드 규칙에 들어가서 MySQL 규칙을 찾아줍니다. MySQL 규칙이 존재한다면 수정을 해줘야합니다.
프로토콜 및 포트에 들어가서 프로토콜 종류 -> TCP, 로컬 포트 -> 특정 포트 -> 포트 번호 (필자는 3500, Default 값은 3306)을 입력해주고 수정해주면 됩니다.

필자는 규칙이 존재하지 않았기에 새 규칙을 만들어줬습니다.
하나하나 수동으로 만들어줘도 됬지만 간단하게 아래 명령어를 사용하여 빠르게 MySQL의 규칙을 만들고 방화벽을 설정해줬습니다.

New-NetFirewallRule -DisplayName "MySQL Rule" -Direction Inbound -Protocol TCP -LocalPort 3500 -Action Allow

Mysql 권한 설정

위 에러를 해결하고 다음 로그를 확인해보니 'host.docker.internal'가 MySQL 접근 권한이 존재하지 않는다는 에러였습니다.
그래서 MySQL에 사용자 접근 권한을 만들어줬습니다.

CREATE USER 'root'@'host.docker.internal' IDENTIFIED BY '비밀번호 입력';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'host.docker.internal';
FLUSH PRIVILEGES;

위 요구사항을 전부 충족하니 Database Connection을 연결했습니다.

profile
코드를 거의 아트의 경지로 끌어올려서 내가 코드고 코드가 나인 물아일체의 경지

0개의 댓글