Help us understand the problem. What is going on with this article?

4GPiでもMackerelでモニタしてみる

概要

Mechatrax社slee-Pi2に続いて、4GPiを入手。以前開発したslee-Pi2向けのansible playbookを拡張してみた。

手順

先ずは、4GPi向けのansible playbookをREADMEに従って実行します。

このplaybookにより、Mackerel.ioに、通常のシステム・メトリックスに加えて、CPU温度とslee-Pi2のVOLTAGE(電源電圧)WiFi/4GPiの電波強度をカスタム・メトリックスとして投稿するようになります。

mackerel-raspberry-sleepi.png

mackerel-4GPi-tweak.png

これで問題となったのは、Mackerelではマイナス値を描画できないことでした。そこで、マイナス値になるであろうWiFi_SignalLevel 4GPi(RSQR RSRP SSNI)に関しては、+150した値をプロットするグラフをcustom.mechtrax.tweakに表示するようにしました。
これは/opt/mechtrax/sbin/customMechatrax.shのADJUST変数で処理しているので、必要に応じて手入れしてください。
また、4GPiのモデム・インデックスはINDEX変数で処理しています。

~# ansible-playbook -i hosts 4gpi.yml

これで4GPiのインストール・セットアップそしてSORACOMのSIMの設定まで行います。他社SIMを使う場合は、playbookの’nmcli'コマンドの編集もしくは、手動でnmcliを投入します。

ansible playbookで設定できたという事は、該当Raspberry piはip reachableであることが前提になります。

4GPiがつながり、IPアドレスが付与されたか確認するには、以下のコマンドをraspberry piのshellで投入します。

コネクション確認

# ~# ip a show dev wwan0
4: wwan0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/none 
    inet 10.134.47.129/30 brd 10.134.47.131 scope global noprefixroute wwan0
       valid_lft forever preferred_lft forever

これが確認できたら、ルーティングの確認をします。

ルーティング

~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.3.1     0.0.0.0         UG    303    0        0 wlan0
default         10.134.47.130   0.0.0.0         UG    700    0        0 wwan0
10.134.47.128   0.0.0.0         255.255.255.252 U     700    0        0 wwan0
192.168.3.0     0.0.0.0         255.255.255.0   U     303    0        0 wlan0

これから分かる事は、wlan0(Wi-Fi)とwwan0(SORACOM 4G)の経路があり、
metricが小さいwlan0(Wi-Fi)が優先的なdefault routeになることです。

つまり、このままではSORACOMからパケットは出ていかないことになります。

~# curl ifconfig.io
116.94.139.122

このIPアドレスをnslookup・whoisしてみると、LANのWi-Fiルーターに付与されたIPアドレスであり、SORACOMのIPアドレスではないことが分かります。

そこでwwan0のmetricを小さくして、SORACOM 4Gを優先的なdefault routeにします。
一旦、delしてaddします。

~# route del default gw 10.134.47.130
~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.3.1     0.0.0.0         UG    303    0        0 wlan0
10.134.47.128   0.0.0.0         255.255.255.252 U     700    0        0 wwan0
192.168.3.0     0.0.0.0         255.255.255.0   U     303    0        0 wlan0
~# route add default gw 10.134.47.130 metric 100 netmask 0.0.0.0  wwan0 
~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.134.47.130   0.0.0.0         UG    100    0        0 wwan0
default         192.168.3.1     0.0.0.0         UG    303    0        0 wlan0
10.134.47.128   0.0.0.0         255.255.255.252 U     700    0        0 wwan0
192.168.3.0     0.0.0.0         255.255.255.0   U     303    0        0 wlan0
~# curl ifconfig.io
103.67.223.47
~# 

これで、SORACOM 4Gへの経路がmetric 100でdefault routeになり、ifconfig.ioへのアクセスは別のIPアドレスになっているのが分かります。このIPアドレスをnslookup・whoisするとSORACOMのIPアドレスになっています。

ルーティング設定固定

以上の設定をpermanentにするには、nmcliコマンドでも行うことができます。

~# nmcli device
DEVICE    TYPE      STATE      CONNECTION       
cdc-wdm0  gsm       connected  gsm-4gpi-soracom 
eth0      ethernet  unmanaged  --               
lo        loopback  unmanaged  --               
wlan0     wifi      unmanaged  --
~# nmcli connection show
NAME              UUID                                  TYPE  DEVICE   
gsm-4gpi-soracom  8ab4fd5c-42e9-41f5-b8d5-504a0a3c9b45  gsm   cdc-wdm0 
~# nmcli c modify gsm-4gpi-soracom ipv4.route-metric 100
~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.134.47.130   0.0.0.0         UG    100    0        0 wwan0
default         192.168.3.1     0.0.0.0         UG    303    0        0 wlan0
10.134.47.128   0.0.0.0         255.255.255.252 U     100    0        0 wwan0
192.168.3.0     0.0.0.0         255.255.255.0   U     303    0        0 wlan0

備考

wlan0

ここまでは、SORACOM経路のmetricを小さくして対応したが、逆にWiFiの経路のmetricを700より大きくする方法もありますが、その際にはdhcpcd.confにWiFiのmetricを指定することでparmanentします。

/etc/dhcpcd.conf
interface wlan0
metric 800

を追加します。

ansible-playbook

ansible playbookのインベントリで、nmoptに"ipv4.route-metric 100"などのように指定すると、playbook実行時にmetricを指定することができます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした