概要

仮想マシンに Grafana をインストールして公開する手順。

【注意】
 この記事で作成している構成はVM(Grafana)自体のスケールにも、SSL通信にも対応していない。
 これらを考慮する場合の構成は、Azure VM上のGrafanaをカスタムドメインで公開 を参照。

目次

TODO

 ・仮想マシン
  ・docker
   ・InfluxDB
    ・マウント設定(データディレクトリ)
   ・Grafana
    ・マウント設定(ローカルDB)
    ・マウント設定(pluginsディレクトリ)

作成する環境

下図のような環境を構築する。

TODO:

リソースの作成

いつも通りシェル化しておく。(最終的には ARM に移行)

#!/bin/bash

PREFIX=リソース名の頭に付ける接頭文字
subscriptionId=サブスクリプションID
region=japanwest

# リソースグループ
resourceGroup=${PREFIX}Resources

# 仮想ネットワーク
vnetName=${PREFIX}VNet
vnetPrefix=10.1.0.0/16

# セキュリティグループ名
nsgName=${vnetName}SecGrp
nsgPubRuleName=${nsgName}PubRule

# 仮想マシンを配置するサブネット
vmSubnetName=${PREFIX}VmSubnet
vmSubnetPrefix=10.1.1.0/24

# 仮想マシンの情報
vmName=${PREFIX}Vm
vmImage=UbuntuLTS
vmIpAddress=10.1.1.5
vmUser=sample
#!/bin/bash

# 設定の読み込み
source 0_env.sh

# リソース作成
if [ "$1" == "--create" ]; then

  # リソースグループの作成
  echo az group create
  az group create --name $resourceGroup --location $region

  # NSG(ネットワークセキュリティグループの)作成
  echo az network nsg create
  az network nsg create --resource-group $resourceGroup --name $nsgName

  # 仮想ネットワーク 及び サブネット作成
  echo az network vnet create
  az network vnet create \
    --name $vnetName --resource-group $resourceGroup \
    --address-prefixes $vnetPrefix --network-security-group $nsgName \
    --subnet-name $vmSubnetName --subnet-prefixes $vmSubnetPrefix

  # 仮想マシンの作成
  rm -rf  ~/.ssh/id_rsa
  rm -rf  ~/.ssh/id_rsa.pub
  echo az vm create
  az vm create \
    --resource-group $resourceGroup --name $vmName --image $vmImage --generate-ssh-keys \
    --vnet-name $vnetName --subnet $vmSubnetName \
    --private-ip-address $vmIpAddress --admin-username $vmUser \
    --public-ip-address-dns-name `echo $vmName | tr '[A-Z]' '[a-z]'` \
    --custom-data 2_vm_setup.sh

  # ポート開放
  az vm open-port --resource-group $resourceGroup --name $vmName --port 3000

  # 生成されたSSH鍵を退避しておく
  mkdir -p pem
  if [ -e ~/.ssh/id_rsa ]; then
    mv ~/.ssh/id_rsa     ./pem/id_rsa_${vmName}
    mv ~/.ssh/id_rsa.pub ./pem/id_rsa_${vmName}.pub
  fi

fi

# リソース削除
if [ "$1" == "--delete" ]; then
  echo az group delete
  az group delete --name $resourceGroup
fi
#!/bin/bash

apt-get update
apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io

curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

mkdir /tmp/influx_docker && cd /tmp/influx_docker

cat <<_EOCONF_ >influxdb.conf
[meta]
  dir = "/var/lib/influxdb/meta"

[data]
  dir = "/var/lib/influxdb/data"
  engine = "tsm1"
  wal-dir = "/var/lib/influxdb/wal"

[http]
  enabled = true
  flux-enabled = true
_EOCONF_

cat <<_EOYML_>docker-compose.yml
version: "3" 
services:
  influxdb:
    image: influxdb:1.8
    hostname: influxdb_for_grafana
    container_name: influxdb_for_grafana
    volumes:
      - ./data/influxdb:/var/lib/influxdb
      - ./influxdb.conf:/etc/influxdb/influxdb.conf
    ports:
      - "8086:8086"
  grafana:
    image: grafana/grafana:7.1.1
    hostname: grafana_sample
    container_name: grafana_sample
    ports:
      - "3000:3000"
    volumes:
      - ./data/grafana:/var/lib/grafana
    environment:
      GF_SECURITY_ADMIN_PASSWORD: admin

_EOYML_

mkdir -p data/influxdb && chmod 777 data/influxdb
mkdir -p data/grafana && chmod 777 data/grafana

# start influxdb
docker-compose up -d

# wait until influxdb starts
while [ true ]; do
  sleep 10
  x=`sudo docker exec -i influxdb_sample influx --execute "show databases" 2>&1`
  if [ "$?" == "0" ]; then
    break
  fi  
done

# create sample database and sample user.
docker exec -i influxdb_sample influx --execute "create database sampledb"
docker exec -i influxdb_sample influx --execute "create user sample with password 'sample' WITH ALL PRIVILEGES"

リソースを作成

./1_vm_resources.sh --create

リソースを削除

./1_vm_resources.sh --delete

動作確認

VMのIPアドレスを確認

az vm list-ip-addresses -o table

あとは http://確認したアドレス:3000 にアクセスして動作を確認するだけ。


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS