食洗機かけ終わったかわからなくなる問題を RaspberryPI + BlueButton + LINE Notify + Google Home で解決した話
子供の笑顔と笑い声を聞く為に ffmpeg + Nginx + RTMP on RaspberryPI
Raspberry PI3 Model B に docker-compose で Nginx で認証かけて Prometheus + Node Exporter + Grafana + cAdvisor構築

Raspberry PI3 Model B に docker-compose で Nginx で認証かけて Prometheus + Node Exporter + Grafana + cAdvisor構築

概要

Raspi3 に docker-compose で Prometheus による監視機構を作成しました。

環境

  • Raspberry Pi 3 Model B (Raspbian GNU/Linux 8) arm7l
  • Docker version 17.04.0-ce, build 4845c56
  • docker-compose version 1.9.0, build 2585387

Raspi に docker インストール

1
2
3
raspi%$ wget -qO- https://get.docker.com/ | sh
raspi%$ sudo usermod -aG docker pi
raspi%$ sudo gpasswd -a $USER docker

Raspi に docker-compose インストール

1
2
3
4
5
6
raspi%$ sudo apt-get update
raspi%$ sudo apt-get install -y apt-transport-https
raspi%$ echo "deb https://packagecloud.io/Hypriot/Schatzkiste/debian/ jessie main" | raspi%sudo tee /etc/apt/sources.list.d/hypriot.list
raspi%$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 37BBEE3F7AD95B3F
raspi%$ sudo apt-get update
raspi%$ sudo apt-get install docker-compose
  • version 確認
1
2
raspi%$ docker-compose --version
docker-compose version 1.9.0, build 2585387

docker-compose のプロジェクト設定

1
2
3
raspi%$ cd ~
raspi%$ git clone https://github.com/kenzo0107/vagrant-docker
raspi%$ cd vagrant-docker/docker/prometheus-grafana-on-raspi3

Nginx Basic 認証設定

1
.htpasswd 作成時のユーザ/パス == GF_SECURITY_ADMIN_USER/GF_SECURITY_ADMIN_PASSWORD

である必要があります。

Grafana の認証機能により設定した Basic 認証でログインできる仕組みがあり、
一致しない場合、ログインできず、失敗します。

  • grafana/env
1
2
GF_SECURITY_ADMIN_USER=admin-user
GF_SECURITY_ADMIN_PASSWORD=admin-pass
  • .htpasswd
1
2
3
4
5
6
7
raspi%$ htpasswd -c nginx/conf/conf.d/.htpasswd admin-user
New password: (「admin-pass」と入力しEnter)
Re-type new password: (「admin-pass」と入力しEnter)
Adding password for user admin-user

raspi%$ cat nginx/conf/conf.d/.htpasswd
admin-user:$apr1$JLxC83lt$uO7aEn9Z59fZtba4EA7C6/

Cron 設定

Raspi の温度や電圧を定期取得し Prometheus に読み込ませるファイル(*.prom)作成します。

1
*/5 * * * * <home/to/path>/vagrant-docker/docker/prometheus-grafana-on-raspi3/node-exporter/collector/raspi.sh

docker-compose により Docker 起動

1
raspi%$ docker-compose up -d

Grafana にアクセスしてみる

http://<your_server_ip>:13000 にアクセスすると .htpasswd で指定したユーザ/パスを求められるので入力します

その後、Grafana のページが表示されれば成功です。

「Add data Source」をクリックします。

Data Source 設定

以下の様に設定し「Save & Test」をクリックしし Success することを確認します。

Dashboard.json インポート

左上のアイコンから Dashboards > Import 選択し DockerDashboard.json をインポートします。

Dashboard 表示

ポイント !

セキュリティ上の観点から外から直接 Grafana を参照させない様にしました。

nginx/conf/conf.d/default.conf

1
2
3
4
5
6
7
8
9
10
server {
listen 80;

location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;

proxy_pass http://grafana:3000/;
}
}

image 選びは慎重に。

以下の点で非常にハマりました。

  1. Raspberry Pi3 Model B (今回は arm7l)上で動作するか
  2. Nginx で Proxy 機能が正しく動作するか

nginx の proxy 機能で grafana に繋げても 以下の様に表示されてしまうケースにぶつかりまくりました。

1
{{alert.title}}

総評

イメージ探しについ時間取ってしまいましたが
自作した方が早かったかもと反省。

今回は自身を監視するという仕組みにしましたが外部から監視し相互に監視し合う体制が必要です。
家庭内稟議が通ればもう一台 get しよう!

そして、家庭の為になるものを作ろう!

Raspberry Pi 3 B に Raspberry Jessie セットアップ

概要

Amazon Prime 会員の無料体験版で
Raspberry Pi 3 B 買いました♪

開発 Ready な状態を作るべく
そのセットアップ方法をまとめました。

環境

  • MacBook Pro : MacOSX 10.11.5
  • Wifi 環境

買ったもの

以下最低限必要なものです。

計 8,459円

  • Raspberry Pi 3 Model B (ケース付き): 5,980円
  • SD カード (32GB) : 1,080円
  • 電源 (2.5A対応): 1,399円

電源はPCのUSBポートからでも良いかな、と思ってましたが
Pi3Bの推奨電流が 2.5 A となった為、2.5 A 対応電源が必要になりました。

その他

大体持ち合わせてるのでは、と思います。
会社のゴミ山に捨ててあるのではないでしょうか。

  • HDMI ケーブル : 691円
  • USBキーボード : 530円
  • USBマウス : 698円

その他含めても 10,378円。こりゃやるっきゃない。

早速セットアップ手順へ

SDカード フォーマット

SD カードフォーマットアプリ インストール

以下サイトからSDカードフォーマッターアプリをダウンロードしフォーマットします。

SD Memory Card Formatter

Macであれば for Mac を選択し
同意してダウンロードします。

ファイルシステム確認

フォーマットするSDカードがどれか知る必要がある為、
SDカードを差し込む前にターミナルから以下実行

1
$ df -h

SDカードをMacに差し込む

※MacBook AirではSDカード差し込み口がないのでカードリーダで読込みます。

もう一度 df -h すると
新たに追加されたのが SDカード のファイルシステムです。

SDFormatter でフォーマット

※ 自分は名前を「RASP3B」としました。

もう一度 df -h

ディスクイメージ名が変更されているのがわかります。

以上でSDカードフォーマット完了です。

ディスクイメージに Raspbian Jessie (Latest OS) を書き込み

Raspbian Jessie ダウンロード

オフィシャルサイトから最新 Raspbian OS をインストールします。
数分掛かります。

Raspbian

1
2
3
4
5
$ cd ~/Downloads
$ unzip 2016-05-27-raspbian-jessie.zip
$ ls -al 2016-05-27-raspbian-jessie.*
-rw-r--r--@ 1 kenzo staff 4019191808 5 27 20:50 2016-05-27-raspbian-jessie.img
-rw-r--r--@ 1 kenzo staff 1393896178 7 10 19:27 2016-05-27-raspbian-jessie.zip

アンマウント

先ほど確認した ファイルシステム名 /dev/disk2s1 から s1 を取り除いた、
イメージ対象をアンマウントする

1
$ diskutil umountDisk /dev/disk2

ダウンロードしたイメージを書き込み

1
$ sudo dd if=/Users/<User>/Downloads/2016-05-27-raspbian-jessie.img of=/dev/rdisk2 bs=1m
  • disk2r を頭に足すとアンバッファモードで実行し速度アップします。
  • bs=1m … 1度に書き込むサイズ

257 秒かかった 汗

以上で Raspberry Pi に挿す SDカード が作成できました。

SDカード取り出し

1
$ diskutil eject /dev/disk2

Raspberry PI 3 に 各種接続

全て接続し終わるまでRaspberry Pi に電流を流さないでください。

SDカード挿入

USBキーボード・マウス、SDカード、電源 接続

全てが深く刺さっているのを確認した後
いよいよ電源を電源アダプタに接続します。

ついた!

なにやら読み込みが始まった!

※我が家はテレビがディスプレイ代わりです。

おぉ〜GUIのトップ画面がでてきた!

まず成功♪

Raspberry Pi 各種設定

Menu > Preferences > Raspberry Pi Configuration クリック

SDカードの全容量を利用可能にする

  • System タブの Expand Filesystem ボタンクリック

以上でSDカードの全容量を利用可能になります。

Locale設定

  • Localisation タブの Set Locale ボタンをクリックします。
  • Language : ja (Japanese) 選択
  • Country : JP (Japan) 選択
  • Character Set : UTF-8 選択

上記選択し OK ボタンクリック

Timezone設定

  • Localisation タブ > Set Timezone ボタン クリック

再度 Set Timezone ボタンをクリックすると Asia/Tokyo が選択されています。

キーボード設定

  • Localisation タブの Set Keyboard ボタンをクリック

  • Country : Japan 選択

  • Variant : Japanese 選択

以上選択しOK ボタンクリック

Wifi 設定

  • Wifi 選択しパスフレーズ入力し Wifi接続
  • Wifi 接続が確認できます

MacOS → Raspberry Pi SSH 接続

  • Raspberry Pi で Terminal 起動
1
$ ifconfig
  • Mac から raspberry pi に SSH接続
1
2
3
4
5
6
7
8
9
10
[MacOSX local]$ ssh pi@192.168.xxx.xxx
pi@192.168.11.18's password: <デフォルトパスワードは "raspberry">

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Jul 11 23:08:51 2016

SSH ログインが確認できました!

追記 (2016-07-08)

あとあと気づいたのだけど
わざわざ画面をiPhoneで撮影せずとも
Remote Desktop して綺麗なものを取ればよかった。。

ということで
SSH ついでに Remote Desktop 機能を要する tightvncserver インストール

1
2
3
4
5
$ sudo apt-get install tightvncserver
$ vncserver

// 起動
$ vncserver :1
  • 設定したホスト名を指定してRemote Desktop し画面共有
1
vnc://raspberrypi.local:5901

ブラウザを開いてみる

インターネットに接続されているのがわかります。

ただし
日本語がもれなく豆腐。。

Zabbix でも以前日本語フォントがなくて同様の事象がありました。。

日本語フォントをインストールする必要があります。

Raspberry Pi に日本語フォントインストール

1
2
3
4
5
6
$ sudo apt-get update
$ sudo apt-get install fonts-vlgothic
$ sudo apt-get install ibus-mozc

// 再起動
$ sudo shutdown -r now

もう一度ブラウザを開いてみる

  • 日本語がちゃんと表示されています。
  • 日本語入力できるよう、日本語 - Mozc 選択

以上でセットアップ完了です。

ご清聴ありがとうございました。