🚨

Raspberry PiにUbuntu Serverを入れてNew Relicで監視する

2021/03/20に公開

手間なくRaspberry Piで動くUbuntu Serverを監視したいのでNew Relic Infrastructureを入れる[1]事にしました

  • Raspberry Piの設定
  • New Relic Infrastrucutre導入
  • New Relic UI上で動作確認

何が実現できるのか

  • ヘッドレスで動いているRaspberry Piを監視できます
  • RPiで動かしている何かしらに問題があれば、ありそうであればSlack通知ができたりします
  • APMの研究が手元でできます
  • こんなカンジでRPiの状況を監視できます!

前提とか

Raspberry Pi

今回利用するRPiは3B(ARMv8 64bit)です
Wi-Fiも内蔵しているのでケーブル1本でNew Relicで観測できそうです

必要なハードウェア/アカウントなど

  • ARMv8 64bitで動いているRPi[2]と電源[3]
  • 4GB以上のSDカードとリーダライタ
  • Keyboard / HDMIモニタ (初期設定用)
  • ログイン可能で自由に使えるNew Relicアカウント

OSイメージ

今回は一度構築したら放置する可能性が高いので2024年くらいまで安心できそうなUbuntu Server LTS 20.04 64bitを使います

Raspberry Piの設定

OSイメージの書き込み

Raspberry Pi Imagerのインストール

2021年3月現在とても簡単になっていますね
公式サイトからRaspberry Pi Imagerをダウンロードしてインストールするだけで下準備はOKです

OSの選択

[Operating System] から [Other general purpose OS] - [Ubuntu] - [Ubuntu Server 20.04.2 LTS]を選択します

SDカードリーダーにSDカードを入れてポチっとしたらイメージ焼き込み完了です いい時代です(SDの中身は消えるので注意しましょう)

この画面になったらいよいよSDをRPiに入れて電源を入れましょう、キーボード/HDMIの接続をお忘れなく

初期設定

まずは何より初期パスワードとWiFi設定

デフォルトアカウントのパスワード設定

公式を確認し初期パスワードを入力、自分のものに変更します

無線LAN設定

ここはお好みですが今回は私の環境的にIP固定にしたいので以下のようにしました

  • デフォルトゲートウェイ/ルーターアドレス : 192.168.1.1
  • 希望する固定IP : 192.168.1.25
    wlanを設定します
ubuntu@ubuntu:~$ sudo vi /etc/netplan/50-cloud-init.yaml
50-cloud-init.yaml
# This file is generated from information provided by the datasource.  Changes
# to it will not persist across an instance reboot.  To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    version: 2
# ここから追記
        wifis:
            wlan0:
                    optional: true
                    dhcp4: false
                    addresses: [192.168.1.25/24]
                    gateway4: 192.168.1.1
                    nameservers:
                            addresses: [192.168.1.1, 8.8.8.8]
                    access-points:
                            “あくせすぽいんと名”:
                                    password: “ぱすわーど”

アクセスポイントとパスワードを書いたら適用し、結果を確認します

ubuntu@ubuntu:~$ sudo netplan apply
ubuntu@ubuntu:~$ ip a
(略)
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether b8:27:eb:67:de:d1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.25/24 brd 192.168.1.255 scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 fe80::ba27:ebff:fe67:ded1/64 scope link 
       valid_lft forever preferred_lft forever

無事 192.168.1.25になってますね
Macが好きすぎるのでここからはterminalから作業します

rootで作業開始

ssh 192.168.1.25 -l ubuntu

ログインし、インストール作業用にroot用パスワードを一時的に設定します

ubuntu@ubuntu:~$ sudo passwd root
New password: 
Retype new password: 
passwd: password updated successfully

ubuntu@ubuntu:~$ su

New Relic Infrastrucutre導入

New Relicでおおまかな手順を確認

公式Docを見るとどうやらLicense Keyを作成しておく必要がありそうです、 作りましょう

License Keyの作成

New RelicにログインしKey作成画面にいきます

[Create Key]をクリックして

  • Account : データ送信先のアカウント(複数運用している場合)
  • Key type : Ingest - License (そのアカウントにデータを送信するためのキー[4])
  • Name : わかりやすい名前をつけましょう
    を入力しCreate Keyをクリック
    最後に作成したキーの ... をクリックしてCopyすればKeyをゲットできます

Newrelic-infra.ymlへの設定

ライセンスキーをnewrelic-infra設定ファイルへ書き込んでおきましょう。

echo "license_key: さっき取得したライセンスキー” | sudo tee -a /etc/newrelic-infra.yml
root@ubuntu: echo "license_key: 〜〜〜” | sudo tee -a /etc/newrelic-infra.yml
license_key: 〜〜〜
ubuntu@ubuntu:~$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.2 LTS"

GPG keyの設定

curl -s https://download.newrelic.com/infrastructure_agent/gpg/newrelic-infra.gpg | sudo apt-key add -
OK

手動なのでいらないかも?とりあえず設定します

New Relic Infrastructure Agentのインストール

Infrastructure AgentのArm64版を探しにNew Relicにいきます
1.15.2がありましたのでURLをコピーしておきます

wget http://download.newrelic.com/infrastructure_agent/binaries/linux/arm64/newrelic-infra_linux_1.15.2_arm64.tar.gz
root@ubuntu: wget http://download.newrelic.com/infrastructure_agent/binaries/linux/arm64/newrelic-infra_linux_1.15.2_arm64.tar.gz
--2021-03-13 15:57:35--  http://download.newrelic.com/infrastructure_agent/binaries/linux/arm64/newrelic-infra_linux_1.15.2_arm64.tar.gz
()
newrelic-infra_linux_1.15.2_arm64.tar.gz         100%[==========================================================================================================>]  19.55M  5.75MB/s    in 3.5s    

2021-03-13 15:57:42 (5.62 MB/s) - ‘newrelic-infra_linux_1.15.2_arm64.tar.gz’ saved [20496095/20496095]

レンチンします

tar xvzf newrelic-infra_linux_1.15.2_arm64.tar.gz
root@ubuntu: tar xvzf newrelic-infra_linux_1.15.2_arm64.tar.gz
newrelic-infra/
newrelic-infra/etc/
()
newrelic-infra/installer.sh

configにライセンスキーを入れます

vi config_defaults.sh
(略)
#   New Relic Infrastructure license key.
#   Corresponding env var: '$NRIA_LICENSE_KEY'
#
license_key="取得したライセンスキー"

コメントアウトを外してNew Relicで取得したライセンスキーを入れます
インストールスクリプトを流します

root@ubuntu: ./install.sh

New Relic UI上で動作確認

New Relic UIでチェック

New Relicにログインし、ExplorerからHostsをみてみます

バッチリ取れています

全てデフォルトの状態で何が取れているかみてみましょう

[Explorer] から [Infrastructure]を選ぶと基本的なメトリクスがみられます

[Events]ではホストに対して行われた構成変更やサービス起動停止イベントなどが見られます
青が濃いほどその時間枠で多くのイベントが発生しています

[Inventory]タブからは構成情報が詳細に見られます

[Network]タブでインターフェース毎の詳細が把握できます

[Processes]タブで「プロセス毎!!」の詳細情報が観測できます

Next Steps

普通にRPiで遊んでいるとなかなか構成状況やリソース、プロセスなど見えなくなりがちなので常に観測できるのは気持ちいいですね
次は実際にアラートを仕込んでみたいと思います
あとUbuntu Server on RPi 3BでNew Relicを入れてもかなりリソースに余裕はありそうです

https://zenn.dev/pekopon/articles/4a81a53551306e

脚注
  1. New Relicの画面手順そのままでは入らないので手動で入れていきます ↩︎

  2. 2021/03時点で3A+, 3B, 3B+, 4 ↩︎

  3. 2.5A以上のUSB電源 ↩︎

  4. これによりアカウントへのデータ転送が認証され、実際に転送された量がカウント・課金対象となる気がします ↩︎

Discussion