ネットワークトラフィックやCPU、Memoryなどを監視できるものが欲しい。候補はGlancesとPrometheus。シンプルさでGlancesを選んだ。
問題と解決
問題1: Wireguardが全トラフィックをルーティングしてCloudflaredと併用できない
解決策はtailscaleか、wireguard内でcloudflaredトンネルを使うこと。ただしWindows Serverにcloudflaredを直接入れても無理だった。理由はトラフィックがwireguard server経由で、serverがVPSにあるため。だからcloudflaredトンネルのセットアップができない。
そこでcloudflaredトンネルをwireguard内に置く案。wireguard serverへNATする。これで10.66.66.66/24(サーバー機)からwireguardに直接ポートし、cloudflared経由で外部に出せる。問題は解決。
問題2: Glancesにpasswordを付けて認証する
最初のglancesは0.0.0.0にbindする。つまりlocalhost:61208相当で、wireguard内のIP 10.66.66.66:61208でアクセスしたら動いた。WireguardでNATするアイデアはここから。
最初はVPSのWAN IP(Wireguard Server)にNATしてテスト。WAN IP:61208にアクセスし、ufw allow 61208/tcp を実行したら動いた。WANVPS:61208でGlancesにアクセスできる。
そこからCloudflaredも可能。しかし公開されるとちょっと怖い。ドメインさえ知っていれば誰でも入れる。IPを常にスキャンされているのと変わらない。
ちょうどgethomepageにGlances widgetのusername/password設定がある。つまりGlancesに基本認証がある。なら使う。
誰でもアクセスできるから。問題は、Glancesがusernameとpasswordを同時に渡せない。
最初はこれを試した
glances -w --bind 10.66.66.66 --port 61208 --disable-autodiscover --username --password
こうすると初期設定が必要
glances -w --bind 10.66.66.66 --port 61208 --disable-autodiscover --username=admin --password
なぜか username=admin をそのままusernameとして認識する
glances -w --bind 10.66.66.66 --port 61208 --disable-autodiscover -u=admin --password
この方法だと admin がusernameとして正しく認識される。あとは一回パスワードを設定して保存すれば、再起動時もこのコマンドだけでOK。
これでGlances完了、最高。
ただ、PrometheusでexportするかGlancesでいくかまだ迷っている。
GethomepageではGlancesはinfo, cpu, memory, disk, networkくらいしか表示できない。しかも表示形式が自分の方向性と合わない。infoだとこうなる。

Memoryが%表示で、正直嫌。
memoryを使うとこうなる

欠点はウィジェット1つ丸ごと占有すること。これは微妙。方向性はこっち

まだ迷う…
とりあえずGlancesを先にやる。
問題3: .envファイルとDocker内のdeclare
https://github.com/gethomepage/homepage/discussions/4886 このissueでやっと解決。
gethomepageでenv変数を使う時は "{{VAR}}" で、${} ではない(GPTが言ったやり方は違った)。
先輩のサンプルでも {{VAR}} だけで “” は使ってない

よく分からないけど、syntax errorだから理解しなくてもOK。
問題4: GlancesとPrometheus
Gethomepageが欲しいGlancesのmetricをサポートしてないから、別の解決策が必要。
方法は2つ。1つはForkして対応。2つ目はPrometheusでquery。たぶん2つ目。Prometheusの知識も増えるし。
問題5: ポートフォワードとmasderaque
各ノードの通信がVPN経由(強制)なので、システムが分散して見える。そのためPrometheus用にポートフォワードが必要(以前はGlancesも同様だがCloudflared Tunnel経由)。ただPythonの制限が目立ち、システムが遅くなりWebサーバーがタイムアウトしてデータが取れない => Golang製のWindows Exporter(Prometheus用)に切り替え。これなら常時稼働で余裕がない環境でもクリーンに動く。
さらにPrometheusの利点は、データを集約できて、現在のData Center全体の力を見せられること。
問題6: Glancesが一定時間後にクラッシュ
理由は不明。APIもWebUIも応答しなくなる。たぶんリソース不足。
なのでGlancesは諦めることにした
Comments
Join the conversation
Leave a comment
No comments yet
Be the first to share your thoughts!