[Grafana] #2.Docker기반 Grafana 설치 및 설정 가이드
Grafana/Prometheus Architecture
- 아래 그림에서 prometheus에 해당하는 부분에 해당함
- Grafana는 시각화 도구로서 대시보드를 만드는 데 매우 유용하다. 사용자는 간단한 드래그 앤 드롭 인터페이스를 통해 차트, 그래프, 테이블 등 다양한 형태의 데이터를 대시보드에 추가할 수 있고, 모바일 장치에서도 편리하게 볼 수 있도록 반응형으로 디자인되어 있다.
테스트 수행한 환경
- 인터넷가능한 환경, Rocky Linux 8.6, Docker가 구성된 환경
1. Grafana docker-compose 구동을 위한 스크립트 준비
전체파일 구성
tree
├── create.sh
├── delete.sh
├── docker-compose.yml
├── log.sh
├── grafana
│ └── provisioning
│ ├── dashboards
│ │ ├── apache_rev7.json
│ │ ├── cadvisor-exporter_rev1.json
│ │ ├── dashboard.yml
│ │ ├── docker_containers.json
│ │ ├── docker_host.json
│ │ ├── monitor_services.json
│ │ ├── nginx_container.json
│ │ ├── node-exporter-full_rev31.json
│ │ └── windows-exporter-dashboard_rev2.json
│ └── datasources
│ └── datasource.yml
├── start.sh
└── stop.sh
1) docker-compose.yml 샘플
주요설정 설명
- GF_SECURITY_ADMIN_USER, GF_SECURITY_ADMIN_PASSWORD : admin 계정 정보 설정
- grafana 최초 구동시 datasources, dashboards 등을 설정하고 싶은경우 해당파일 작성후 /etc/grafana/provisioning 로 연결한다.
vi docker-compose.yml
version: '3.7'
# monitor-net이름으로 이미 구성한 경우에는 networks부분은 주석처리
networks:
monitor-net:
driver: bridge
volumes:
grafana_data: {}
services:
grafana:
#image: grafana/grafana:6.7.2
image: grafana/grafana:latest
container_name: grafana
user: root
volumes:
- grafana_data:/var/lib/grafana
- ./grafana/provisioning:/etc/grafana/provisioning
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
# restart: unless-stopped
ports:
- 3000:3000
networks:
- monitor-net
2) datasource.yml 샘플
- grafana/provisioning/datasources 폴더에 생성
- 이전에 생성하였던 prometheus와 이후 소개할 loki 를 datasource에 추가하는 설정으로 작성
mkdir prometheus;cd prometheus
vi datasource.yml
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
access: proxy
orgId: 1
url: http://prometheus:9090
basicAuth: false
isDefault: true
editable: true
- name: Loki
type: loki
access: proxy
url: http://loki:3100
version: 1
editable: true
isDefault: false
3) 대시보드 샘플
- grafana/provisioning/dashboards 폴더에 생성
- https://grafana.com/grafana/dashboards/ URL에서 검색하거나 미리 만들어 놓은 dashboard가 있으면 json파일을 복사해두면 컨테이너 구동시 바로가져올 수 있다
4) 기타 docker 컨테이너 생성,삭제,구동,중지,로그조회 등 스크립트 작성
cat > create.sh <<EOF
#!/usr/bin/bash
docker-compose -f docker-compose.yml up -d
docker-compose -f docker-compose.yml logs -f
EOF
cat > delete.sh <<EOF
#!/usr/bin/bash
docker-compose -f docker-compose.yml down -v
EOF
cat > start.sh <<EOF
#!/usr/bin/bash
docker-compose -f docker-compose.yml start
EOF
cat > stop.sh <<EOF
#!/usr/bin/bash
docker-compose -f docker-compose.yml stop
EOF
cat > log.sh <<EOF
#!/usr/bin/bash
docker-compose -f docker-compose.yml logs -f
EOF
chmod +x *.sh
2. Grafana 정상구동여부 확인
### 구동하기
./create.sh
### 도커컨테이너 정상구동여부 확인
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b0856bb90234 grafana/grafana:latest "/run.sh" 3 days ago Up 32 minutes 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp grafana
### 도커컨테이너 로그 조회
./logs.sh
생략..
logger=grafanaStorageLogger t=2023-04-16T12:01:18.10951092Z level=info msg="storage starting"
logger=ngalert.state.manager t=2023-04-16T12:01:18.110542921Z level=info msg="Warming state cache for startup"
logger=http.server t=2023-04-16T12:01:18.111439193Z level=info msg="HTTP Server Listen" address=[::]:3000 protocol=http subUrl= socket=
logger=ngalert.state.manager t=2023-04-16T12:01:18.123873884Z level=info msg="State cache has been initialized" states=0 duration=13.324712ms
3. Grafana 대시보드 조회
- 접속URL: http://서버IP:3000/
- Granafa 대시보드 사용법 및 설정방법등은 추후 작성 예정
댓글남기기