neogenia-jp / EzGate

Simple docker container that make it easy to set up a reverse proxy.
Apache License 2.0
2 stars 0 forks source link

GoAccessなどのログ解析ツールの導入 #36

Open lobin-z0x50 opened 3 months ago

lobin-z0x50 commented 3 months ago

GoAccess

公式 https://gigazine.net/news/20200613-goaccess/ https://brandonrozek.com/blog/goaccess/ https://qiita.com/tetsuoMikami/items/5ec750558460b4c78098

利用イメージ

CUI案

/var/scripts/goaccess.sh

ブラウザ案1(EzGate組み込み)

domain 'goaccess.example.com' {
  goaccess from: '10.0.0.1'  # 接続元IPを指定するイメージ
}

としておいて、そのドメインにアクセスするとログファイルが一覧表示されて、ファイルをクリックすると goaccess の Web版が起動する。 SSH接続不要。ただし from の部分を毎回セットしないといけないので、SSH接続は結局必要になりそう。 basic認証を導入すれば from を書かなくてもいいかも。

ブラウザ案2(EzGateとはポートを分ける)

local_goaccess_server port: 8099

としておいて、ポート番号を分けてしまう。Web画面を見る場合は、ローカルPCからSSHポートフォワードなどを使う。 よりセキュア。 SSH接続が必須だが、nologinでポートフォワードだけすればよいので、すこしセキュアで手軽。公開鍵認証にしておいて、専用sshコマンドさえ作っておけばいつでも接続できる。

別コンテナ案

上記を別コンテナで提供する。 ログファイルさえ見えれば goaccess を処理できるので、ログディレクトリを Docker volume やホストディレクトリで共有し、マウントさせればよい。 クラウド側に goaccess コンテナを起動して、ブラウザ案2の構成を使うのも考えられる。 またはローカルに goaccess クライアントコンテナを置いといて、以下のようにSSHでリモートのログを流し込む方法も考えられる。

ssh user@remote_server tail -f ~/ezgate/logs/access.log \
 | docker run -p 7890:7890 --rm -i -e LANG=$LANG allinurl/goaccess -a -o html --log-format COMBINED --real-time-html - > report.html

https://hub.docker.com/r/allinurl/goaccess https://github.com/xavier-hernandez/goaccess-for-nginxproxymanager これなら何も導入しなくても使える。

ngxtop

公式GitHub python製 CUIツール。 シンプルなので、とりあえずこれをインストールしておくのでもよい。