2. 대시보드 설치하기

아이펀 대시보드 와 연관 패키지인 Graphite 를 설치하는 방법을 설명합니다. 아이펀 대시보드는 Ubuntu 14.04 LTS or Ubuntu 16.04 LTSCentOS 7 버전을 지원합니다. 아이펀 대시보드가 동작하기 위해서는 Docker 가 필요합니다. 엔진으로 작성하지 않은 서버를 모니터링 하기 위해서는 Python 2.7 이 필요합니다.

Docker 를 설치하고 대시보드를 실행하는 부분을 설명합니다. 만약 funapi-dashboard-agent 를 사용해서 엔진으로 만들지 않은 서버의 모니터링을 하려는 경우 뒷 부분의 “대시보드 에이전트 설치하기” 를 참고해주시기 바랍니다.

2.1. 데이터베이스 설치하기

아이펀 대시보드 를 사용하기 위해서는 MySQL 이 필요합니다. 해당 데이터베이스 서버에 대시보드에서 사용할 데이터베이스를 생성해주시기 바랍니다.

2.1.1. MySQL 설치하기

CentOS 7

CentOS 7 에서는 MySQL 대신 MariaDB를 설치하겠습니다. 설치하기 위해 아래와 같이 입력합니다.

$ sudo yum install mariadb-server
$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb

# 기본 비밀번호 등을 설정하기 위해 실행합니다.
$ mysql_secure_installation

Ubuntu

MySQL을 설치하기 위해 아래와 같이 입력합니다.

$ sudo apt-get install mysql-server
$ sudo service mysql start

Warning

설치가 과정에서 입력한 root 계정 비밀번호를 기억하셔야합니다.

설치가 되었다면 아래와 같이 입력하여 계정을 추가하고 권한을 설정하겠습니다.

$ mysql -u root -p
# 이후 설정한 root 계정 패스워드를 입력합니다.

이제 MySQL 에 데이터베이스 접속 계정과, 사용할 데이터베이스를 생성해주세요.

Tip

MySQL 설치와 관련된 더 자세한 내용은 Installing MariaDB 10 on CentOS 7 / RHEL 7 을 참고해주세요.

2.2. Docker 설치하기

Docker CE를 설치합니다. 이 부분은 각 OS마다 조금씩 다르니 아래 설명을 참고해주시기 바랍니다.

CentOS 7

자세한 사항은 CentOS 에 Docker CE 설치하기 를 참고해주세요.

아래 명령으로 docker를 설치합니다.

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum-config-manager --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install -y docker-ce
$ sudo systemctl enable docker
$ sudo systemctl start docker

Ubuntu

자세한 사항은 Ubuntu에 Docker CE 설치하기 를 참고해주세요.

Note

Ubuntu 14.04 (trusty) 의 경우 다음 단계를 먼저 실행해야 합니다.

$ sudo apt-get update
$ sudo apt-get install -y \
    linux-image-extra-$(uname -r) \
    linux-image-extra-virtual

해당 명령 실행 후 서버 재시작이 필요합니다.

아래 명령으로 docker를 설치합니다.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce

# Ubuntu 16.04
$ sudo systemctl enable docker
$ sudo systemctl start docker

# Ubuntu 14.04
$ sudo service docker start

2.3. 대시보드 이미지 설치

아이펀 대시보드 이미지를 가져옵니다.

$ sudo docker pull ifunfactory/funapi-dashboard

2.4. 서비스 설정 파일 설치

2.4.1. CentOS 7, Ubuntu 16.04

서비스 설정 파일을 생성합니다. /lib/systemd/system/funapi-dashboard.service 파일을 만들고 다음 내용을 추가합니다. 각 항목의 내용은 Funapi Dashboard 설정 에서 설명합니다.

[Unit]
Description=iFunEngine Dashboard
After=syslog.target network-online.target
Requires=docker.service

[Service]
Type=simple
Restart=Always
RestartSec=10s
User=root
Group=root

ExecStart=/usr/bin/docker run --rm \
    --name=funapi_dashboard \
    --dns=1.1.1.1 \
    --publish=0.0.0.0:8000:8000 \
    --publish=0.0.0.0:2003:2003 \
    --publish=0.0.0.0:2004:2004 \
    -v /path/to/override:/etc/funapi_dashboard/override \
    -v /path/to/whisper:/var/lib/graphite/whisper \
    ifunfactory/funapi-dashboard:latest

ExecStop=/usr/bin/docker stop funapi_dashboard
ExecReload=/usr/bin/docker restart funapi_dashboard

해당 파일에서,

  • dns={DNS 서버 주소}: 사용 중인 DNS 서버 주소
  • /path/to/override: 서버 설정 디렉터리
  • /path/to/whisper: 통계 데이터를 저장할 디렉터리

부분을 사용하는 환경에 맞게 지정해야 합니다.

2.4.2. Ubuntu 14.04

서비스 설정 파일을 생성합니다. /etc/init/funapi_dashboard.conf 파일을 만들고 다음 내용을 추가합니다. 각 항목의 내용은 Funapi Dashboard 설정 에서 설명합니다.

  description "iFunEngine Dashboard"

  start on (filesystem and net-device-up IFACE!=lo)
  stop on runlevel [!2345]

  kill timeout 30

  respawn
  respawn limit 50 600

  script
    exec /usr/bin/docker run --rm \
      --name=funapi_dashboard \
      --dns=1.1.1.1 \
      --publish=0.0.0.0:8000:8000 \
      --publish=0.0.0.0:2003:2003 \
      --publish=0.0.0.0:2004:2004 \
      -v /path/to/override:/etc/funapi_dashboard/override \
      -v /path/to/whisper:/var/lib/graphite/whisper \
      ifunfactory/funapi-dashboard:latest
  end script

  pre-stop exec /usr/bin/docker stop funapi_dashboard

해당 파일에서,

  • dns={DNS 서버 주소}: 사용 중인 DNS 서버 주소
  • /path/to/override: 서버 설정 디렉터리
  • /path/to/whisper: 통계 데이터를 저장할 디렉터리

부분을 사용하는 환경에 맞게 지정해야 합니다.

2.5. 설정 파일 지정하기

/path/to/override 디렉터리에 다음과 같은 내용을 포함한 settings.py 파일이 필요합니다. 여기에 아래 설정을 추가해주시기 바랍니다.

  • 데이터베이스 연결 설정
  • APP_SECRET_KEY
  • (선택 사항) Google Gmail 인증 설정
  • (선택 사항) Slack webhook 설정
# 1. MySQL
URI_TEMPLATE = 'mysql+mysqldb://{USER}:{PASSWORD}@{HOST}/{NAME}?charset=utf8'

SQLALCHEMY_DATABASE_URI = URI_TEMPLATE.format(USER='user',
                                              PASSWORD='passwd',
                                              HOST='host-address',
                                              NAME='database-name')


# 2. Redis (DO NOT MODIFY)
REDIS_PORT = 6379
REDIS_HOST = "localhost"
REDIS_PASS = None


# 3. 앱 시크릿키는 설정해서 사용하셔야 합니다.
# openssl rand 48 -hex 같은 명령 이용. (문자열로 지정)
APP_SECRET_KEY = None

# 4. Graphite API (DO NOT MODIFY)
GRAPHITE_WEB_URL = "http://localhost:8888"
SQLALCHEMY_TRACK_MODIFICATIONS = False


# 5. 경고 알림과 관련된 설정입니다.
# 알림을 다시 받을 주기입니다. 기본은 300초(5분) 입니다.
ALERT_BLOCKING_SECONDS = 300

# Gmail OAuth 2.0 Client 인증과 관련 설정입니다.
# 보다 자세한 내용은
# https://developers.google.com/gmail/api/auth/about-auth 을 참고해주세요

# gmail oauth credential 이 저장 될 이름입니다.
CREDENTIAL_NAME = 'funapi-dashboard.json'

# gmail oauth credential 이 저장된 패스입니다.
# 해당 경로가 없을시에 정상적으로 메일이 발송되지 않습니다.
# 특별히 수정하지않았다면 아래 경로에 저장됩니다.
# /home/user/.credentials/...
# /home/ 하위에 credential 파일이 있다면 정상적으로 읽지 못하니
# 반드시 파일위치를 옮겨주세요.
# 예: CREDENTIAL_PATH = "/etc/funapi_dashboard/override/funapi-dashboard.json"
CREDENTIAL_PATH = None

# 이메일 작성자 계정을 지정합니다.
# 해당 계정은 CLIENT_SECRET 을 발급 받은 계정이여야 합니다.
# 예: SENDER_NAME = "example@ifunfactory.com"
SENDER_NAME = None

# API SCOPE를 지정합니다.
GMAIL_API_SCOPES = 'https://www.googleapis.com/auth/gmail.compose'

# 인증시 발급받은 client_secret...json 파일의 위치를 지정합니다.
# 예: CLIENT_SECRET_PATH = "/etc/funapi_dashboard/client_secret.json"
CLIENT_SECRET_PATH = None

# SLACK을 이용한 알림 전송과 관련된 설정입니다.
# 보다 자세한 내용은
# https://api.slack.com/incoming-webhooks 을 참고해주세요

SLACK_WEBHOOK_URL = 'https://YOUR-COMPANY.slack.com/services/hooks/incoming-webhook?token={YOUR-TOKEN}'

# 메시지를 전송할 슬랙 체널이나 유저를 설정합니다.
# 채널은 #, 유저는 @이 앞에 붙습니다.
SLACK_CHANNELS = ['#alert-channel']
SLACK_BOT = u'DASHBOARD'
SLACK_EMOJI = ':warning:'

2.6. 대시보드 에이전트 설치하기

아이펀 엔진으로 작성하지 않은 서버의 성능 정보를 모으려면 대시보드 에이전트가 필요합니다. 모니터링 하는 서버에 아이펀팩토리 패키지 저장소를 설정하고, 해당 패키지를 설치해야합니다.

2.6.1. 저장소 설정하기

CentOS 저장소 설정

자세한 내용은 아이펀 엔진 설치하기(CentOS) 를 참고해주세요.

$ sudo yum install -y epel-release wget
$ wget https://ifunfactory.com/engine/funapi-yum-setup.rpm
$ sudo rpm -Uvh funapi-yum-setup.rpm

$ sudo funapi_select_repo experimental
$ sudo yum makecache

Ubuntu 설치 및 저장소 설정

자세한 내용은 아이펀 엔진 설치하기(Ubuntu) 를 참고해주세요. 페이지에서 APT 저장소 설정까지만 진행하시면 됩니다.

$ sudo apt-get install wget apt-transport-https
$ wget https://ifunfactory.com/engine/funapi-apt-setup.deb
$ sudo dpkg -i funapi-apt-setup.deb

# 아이펀 대시보드는 현재 experimental 에서만 설치 할 수 있습니다.
$ sudo funapi_select_repo experimental
$ sudo apt-get update

2.6.2. Funapi Dashboard Agent 설치하기

Funapi Dashboard Agent 는 모니터링 할 서버에 설치해야합니다. 또한 해당 서버에서 Graphite Carbon 으로 연결이 가능해야합니다. Graphite Carbon 과 통신이 가능한지 확인하기 위해서는 config_graphite_test 를 참고해주세요. 설치하기 위해서는 다음과 같이 입력합니다.

CentOS 7

$ sudo yum install funapi-dashboard-agent

Ubuntu

$ sudo apt-get install funapi-dashboard-agent

Funapi Dashboard Agentcron 서비스 로 동작합니다. 패키지를 정상적으로 설치했다면 /etc/cron.d/ 폴더에 funapi-dashboard-agent 파일이 생성되고 1분 단위로 동작하게됩니다. cron 서비스 가 동작 중이라면 설치 후 특별한 설정 없이 사용 할 수 있습니다.