범용 분석 환경 구축 (준비편)

목적



언제, 몇시, 누구의 도전에서도 받는다. (by 안토니오 이노키)

데이터 사이언티스트인 것, 당연히 이와 같은 교지를 가지고 업무에 해당할 필요가 있다고 생각한다. (거짓말)
실제로 고객을 포함한 다양한 환경에서 다양한 분석을 수행하는 경우가 많기 때문에 편하게 일할 수 있도록 공통 기반이 되는 환경을 만들어 두고 싶습니다.
이번은 베이스가 되는 밑바닥의 환경 구축을 실시.

이 기사의 목표


  • Windows 10에서 Vagrant에서 여러 VM (Ubuntu18.04)을 시작합니다.
  • Ansible을 사용하여 docker 설치
  • 자원 상태를 조사하기 위해 prometheus + grafana로 자원 상태를 시각화한다 (도입은 Ansible)

  • 대상 버전


  • 호스트 OS: Windows10
  • 게스트 OS: Ubuntu18.04.1
  • Virtualbox: 5.2
  • Vagrant: 2.1.5
  • Ansible: 2.7.0
  • prometheus: 2.1.0
  • grafana: 5.3.0

  • 작업 내용



    Vagrant에서 다중 VM 시작



    Vagrant with Virtualbox에서 다음 환경을 만듭니다.



    이 때, Vagrant의 네트워크 설정은 정말 쉽게 할 수 있기 때문에 살아난다. 구체적인 Vagrantfile의 내용은 다음과 같습니다.

    Vagrantfile
    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    
    Vagrant.configure("2") do |config|
      config.vm.box = "ubuntu/bionic64"
    
      config.vm.provider "virtualbox" do |vb|
        # Customize the amount of memory on the VM:
        vb.memory = "1024"
      end
    
      config.vm.define :master do | master |
        master.vm.hostname = "master"
        master.vm.network :private_network, ip: "192.168.32.10"
        master.vm.network :private_network, ip: "192.168.33.10", virtualbox__intnet: "intnet"
      end
    
      config.vm.define :worker001 do | worker001 |
        worker001.vm.hostname = "worker001"
        worker001.vm.network :private_network, ip: "192.168.33.20", virtualbox__intnet: "intnet"
      end
    end
    

    master, worker를 동시에 올리고 싶은 경우는, Vagrantfile과 같은 디렉토리로 이하를 실행.
    λ vagrant up
    

    master, worker 중 하나를 올리고 싶다면 다음을 실행하십시오.
    λ vagrant up master
    もしくは
    λ vagrant up worker001
    

    Ansible로 모니터링 환경 구축



    이후의 작업은 master로부터 Ansible에 의해 실시.
    λ vagrant ssh master
    # 内部通信用の鍵を作成
    vagrant@master:~$ ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/vagrant/.ssh/id_rsa): /home/vagrant/.ssh/ansible-keys
    略
    vagrant@master:~$ cat ~/.ssh/ansible-keys.pub >> ~/.ssh/authorized_keys
    

    마찬가지로 worker001 측에도 vagrant@master:~/.ssh/ansible-keys.pub의 내용을 vagrant@worker001:~/.ssh/authorized_keys에 추가한다. (not 덮어쓰기)

    비밀번호없이 master -> worker001에 SSH 로그인 할 수 있는지 확인하십시오.
    vagrant@master:~$ ssh -i ~/.ssh/ansible-keys [email protected]
    Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-36-generic x86_64)
    
    vagrant@master:~$ ssh -i ~/.ssh/ansible-keys [email protected]
    Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-36-generic x86_64)
    

    리포지토리의 방향을 리켄으로 바꾸면서 pip로 새로운 Ansible을 도입.
    vagrant@master:~$ sudo sed -i.bak -e "s%http://archive.ubuntu.com/ubuntu%http://ftp.riken.go.jp/Linux/ubuntu%g" /etc/apt/sources.list
    vagrant@master:~$ sudo apt update
    vagrant@master:~$ sudo apt install python3-pip
    vagrant@master:~$ sudo pip3 install ansible
    

    ansible-playbook은 이하.
    htps : // 기주 b. 코 m / 켄 223 / 안시 b ぇ도 c 케 r

    Ansible 실행


    vagrant@master:~$ git clone https://github.com/ken223/ansible-docker-analyzer.git
    vagrant@master:~$ cd ansible-docker-analyzer/
    vagrant@master:~/ansible-docker-analyzer$ sh deploy.sh
    

    동작 확인



    호스트 측에서 다음 URL에 액세스
    http://192.168.32.10:3000

    admin/admin으로 로그인 후 데이터 소스 선택 화면에서 다음을 선택



    Dashboard는 이하에서 적당한 것을 선택하게 된다.

    방금 전의 ansible을 실행하면 worker001과 master에 prometheus-node-exporter가 들어 있으므로 "Host Stats - Prometheus Node Exporter - pre 0.16.0"을 선택.

    Dashboard의 "+Import"버튼을 누르면 가져오기 화면이 된다.
    Grafana.com Dashboard에 붙여넣는 내용은 "718"이었다.

    추가한 대시보드를 보면 다음과 같아야 합니다.

    좋은 웹페이지 즐겨찾기