Kubernetesとリバースプロキシのログ・ジャーナル閲覧覚書

おうちKubernetesへ、ぽちぽちとポッドをデプロイして、インターネットからSSLにてアクセスできるように設定しましたが。

KubernetesのWordPressをSSL自動更新のCaddyでホスティングするには
まあ、実はKubernetesではないWordPressでも大丈夫なのですが。 オンプレミスで構築したWebサービス、例えばkuber...

何か不正アクセスなどの攻撃を受けていないか、定期的または自動的に確認したほうが良さそうです。

ポッドの各種ログは、kubectlコマンドで確認できるようです。またSSLホスティングのログは、リバースプロキシサーバのジャーナルで確認できそうです。

そのあたりのコマンドコピペ用の覚書、になります。


Kubernetes、リーバスプロキシのログ確認覚書

Kubernetesのログ確認

ログの確認は、コントロール・プレーンにて行いました。

稼働ポッド確認

# 名前空間確認
kubectl get namespace
# ポッド確認
kubectl get pods -n <名前空間>

そうですか、いつの間にか97日間も動作していましたか。

名前空間を確認後、それぞれの名前空間ごとにポッドを確認しました。


ポッドのログの確認

目的のポッドが見つかりましたら、ログを確認します。

kubectl logs <ポッド名> -n <名前空間名>

こちらはBitwarden互換のパスワード管理システム、Vaultwardenのログになります。

こちらのログファイル、時刻は日本時間ではありませんな。UTCとの違いは、JST-9、9時間遅れた時刻が記録されています。9時間足した時刻、2023年10月15日、3時ではなく12時15分にサービスを起動した記録になります。


Vaultwardenのログ覚書

# リクエスト・レスポンス・APIログ
kubectl logs <ポッド名> -n <名前空間名> | grep INFO | more
# エラーログ
kubectl logs <ポッド名> -n <名前空間名> | grep ERROR
# 接続開始 kubectl logs <ポッド名> -n <名前空間名> | grep connection

リバースプロキシとKubernetesを通してアクセスしている都合上、アクセス元のアドレスは仮想ネットワーク上のIPアドレスが記録されています。

リクエスト・レスポンスとエラーログはこちらで確認できますが、インターネット上のアクセス元情報は、リバースプロキシ側のログを見る必要があることがわかりました。

アクセス頻度や時間帯を確認したところ。とりあえず、自分以外の不正なアクセスは行われていない感じでした。


リバースプロキシ Caddy

Kubernetesのサービスや、おうちLAN内のWebサービスのホスティングは、Caddyを使用させて頂いております。

PPPoE接続したRaspberry PiでSSL証明書自動更新付きWebサーバを構築するには
先日、Raspbery Pi 4にRed Hat Enterprise Linux 9互換のLinuxをインストールしまして。 PPP...

ACMEあくみーにて、SSL証明書が自動更新されるところが選択のポイントです。

こちらのログを確認してみます。いや、ログじゃないジャーナルじゃ。


Caddyのユニット確認

# systemdのユニット確認
systemctl list-unit | grep caddy
# サービスの状態確認
systemctl status caddy.service

昔でしたら、/var/log等のシステムログを参照していると思いますが。

systemdで起動したサービスは、ユニットとごにジャーナルの閲覧が可能です。

まずはユニットを確認してみました。

Caddyに関連するユニットは1つのみ、caddy.serviceのようです。

Caddyのジャーナル確認

# caddy.serviceのジャーナル確認
journalctl -u caddy.service -x
# 最新版、最後尾から
journalctl -u caddy.service -xe
# lessで読む場合 moreと異なり<キーやbキーで戻ることが可能
journalctl -u caddy.service -x | less
# vimで読む場合
journalctl -u caddy.service -x | view -

個人的には、キーボードの右手操作のみで閲覧が可能な、vimと同じviewでログを見る方法が便利かと思います。

「:set nu」にて行番号を付けたり、/キーで文字列検索をしたり、nキーで次の検索候補へ移動したり、100jで100行飛ばしたり、:map @@ 100jで@キーを2回押すと100行飛ばす操作に割り当てたり。

CaddyのジャーナルはJSONで記録されています。

jqのようなJSONパーサーで比較的簡単にジャーナルの加工が可能のようです。

JSONの中の、”level”:”info”を取り出せば情報ログ、”level”:”error”を取り出せばエラーログのように、切り出しも容易かと思います。(ここでは特におこないませんが

アクセス元に関しては、このあたりで抽出できそうです。

# インターネット上のアクセス元情報抽出
journalctl -u caddy.service -x | grep remote_ip

こちらで得られたJSONをパースすれば、インターネットからのアクセスに対して、詳細な情報を取り出すことが可能かと思います。


もしも自動的にジャーナルを確認したい場合ですが。

JSONパーサーを使って、ジャーナルを集計してレポートを作る感じかと思います。アクセス元のIPアドレスや接続時刻などを取り出し、CSV・TSV等に加工したほうが、アクセス件数等の集計もしやすいかと思います。

そちらを毎日か、毎週か、毎月か自動生成して、メールで送ったりなんだり、という感じでしょうか。

いや、その前にCaddyのジャーナルに対応した、GUIビューワ・アプリを探したほうが楽かもしれませんね。

注意が必要なのは、ジャーナルの既定の設定では永遠には残らず、古いジャーナルは自動的に消去されるところでしょうか。

必要があれば、ジャーナルの自動削除設定は変更しておいたほうが良いと思います。消す期間を5年くらい先にするなど。

何か知見が増えましたら、こちらの記事も追記致します。

スポンサーリンク

フォローする

スポンサーリンク