[라즈베리파이] docker-compose 로 서비스 운영해보기 Computer Tip

라즈베리파이가 최근에는 재고가 없어 난리 입니다.
전 세계적으로 펜데믹에 이어 CPU 등이 품귀인가 봅니다.
시간이 지나면서 풀리기 바랍니다.

이번에는 그동안 라즈베리파이는 무시하고 돌리지 않았던
docker 와 docker-compose를 설치하고 서비스를 돌려보는 것을 해 봅니다.

우선 docker 설치 방법입니다.

sudo apt-get update && sudo apt-get upgrade
curl -sSL https://get.docker.com | sh

위의 두 줄로 간단히 설치 가능합니다.

이제는 기본 pi 계정으로 docker 명령이 잘 돌도록 다음 명령이 필요합니다.

sudo usermod -aG docker ${USER}

다음은 docker-compose 설치 방법입니다.
기존에 다른 것과 달리 pip로 설치하는 것이 차이네요.

우선, 아래와 같이 pip3 를 준비하고,

sudo apt-get install -y libffi-dev libssl-dev
sudo apt install -y python3-dev
sudo apt-get install -y python3 python3-pip

다음 명령으로 설치하면 됩니다.

sudo pip3 install docker-compose

이제는 서비스를 활성화하고 재기동하면 됩니다.

sudo systemctl enable docker

다음 명령으로 간단히 돌려봐서 잘 나오면 docker는 충분히 잘 기동하고 있는 것입니다.

docker run hello-world

이제는 다음 링크에 있는 speedtest 서비스를 돌려보았습니다.

demo에 있는 docker-compose.yaml 을 돌리면 linux/arm/v7 용으로 influxdb 가 없다고 오류 나옵니다.
조금 찾아보니 influxdb 인 경우 1.8 버전을 돌리면 해당 CPU 아키텍쳐도 지원 하더군요.

결국 아래와 같이 수정해서 잘 서비스를 잘 돌렸습니다.
문제는 speedtest 하는 컨테이너의 shell script 가 문제가 생기는 경우가 많더군요.
나중에 시간되면 python 모듈로 간단히 테스트 해 보도록 해야겠습니다.

speedtest 컨테이너가 되었다 안되었다 문제가 많아
하나 만들었습니다.


위에 링크에서 linux/arm/v7 용을 받아 돌리면 됩니다.

version: '3'
services:
  # Tests the current internet connection speed
  # once per hour and writes the results into an
  # InfluxDB instance
  speedtest:
    image: mcchae/speedtest:1.0-arm
    restart: always
    privileged: true   # Needed for 'sleep' in the loop
    depends_on:
      - influxdb
    environment:
      - LOOP_DELAY=60
      - DB_HOST=http://influxdb:8086
      - DB_NAME=speedtest
      - DB_USERNAME=admin
      - DB_PASSWORD=admin_passW0rd

  # Creates an InfluxDB instance to store the
  # speed test results
  influxdb:
    image: influxdb:1.8
    restart: always
    volumes:
      - influxdb:/var/lib/influxdb
    ports:
      - "8083:8083"
      - "8086:8086"
    environment:
      - INFLUXDB_ADMIN_USER=admin
      - INFLUXDB_ADMIN_PASSWORD=admin_passW0rd
      - INFLUXDB_DB=speedtest

  # Displays the results in a Grafana dashborad
  grafana:
    image: grafana/grafana:latest
    restart: always
    depends_on:
      - influxdb
    ports:
      - 3000:3000
    volumes:
      - grafana:/var/lib/grafana

volumes:
  grafana:
  influxdb:


해당 라즈베리파이 IP를 바라보고,

3000번 포트로 해서 웹브라우저를 열면,
Grafana 대시보드가 뜹니다.

admin / admin 으로 로그인하고 암호를 넣어준 다음,
influxdb 를 바라보고 기본 데이터 소스를 추가했습니다.

그 다음 dashboard.json 을 다운받아 import 시키면
아래와 같은 해 분마다 (위에 LOOP_DELAY 에서 조종가능)
스피드 테스트를 진행하여 그것을 InfluxDB 시계열 DB 에 넣고
그것이 자동으로 Grafana 대시보드에 확인 가능합니다.

하나 하나 설정을 쉽게 풀어봅니다.

로그인 화면에서는 admin / admin 을 넣고

새로운 암호를 다시 넣어줍니다.

데이터 소스를 새로 만들기 위해서 왼쪽 설정에서 데이터 소스를 설정하고,

새로운 데이터 소스를 생성합니다

여러 데이터 소스 중에서 "InfluxDB"를 선택합니다

URL에 http://influxdb:8086 을 넣어주었습니다.

Database에 speedtest 를, User와 Password에 docker-compose.yaml 에서 주어진 DB user와 암호를 넣습니다. 여기의 정보는 실제 docker-compose 에서의 influxdb 컨테이너를 가리키게 됩니다.

하단의 "Save and Test"를 눌러 데이터소스가 동작하고 있다고 나오면 추가 된 것입니다.

설정에 데이터소스를 보면 추가된 것을 확인할 수 있습니다.

이제 대시보드를 추가하기 위해서 "+" 메뉴에서 "Import"를 선택하고,

speedtest-dashboard.json 을 다운받아 위와 같이 파일로 올려주면,

Import 를 해 줍니다.

그러면 시간이 흘러 위와 같이 스피드 테스트를 잘 하는 결과가 나옵니다. 재미난 사실은 항상 유사한 다운로드 업로드 속도가 나오는 것이 아니라는 사실입니다.


어느 분께는 도움이 되셨기를 ..






덧글

댓글 입력 영역

구글애드텍스트