goaccess(1) 利用者の手引 goaccess(1)

名称

goaccess - 高速なwebログ解析器と対話的な閲覧器

処方

goaccess [ファイル名] [オプション...] [-c][-M][-H][-q][-d][...]

説明

goaccessはオープンソースであり、実時間ログ解析器かつ*nixシステム上の端末ないしお手元のブラウザで直接実行する対話的な閲覧器です。 システム管理者、DevOps技術者、セキュリティ専門家を念頭に設計され、高速で、実行可能なHTTPの統計と可視化されたサーバーの報告情報を実行時に届けます。 GoAccessはウェブサーバーのログを実時間に解析して端末に直接ないし実況のHTMLダッシュボードを介してデータを提示し、通信量の監視、異常性の検知、問題の障害対応を即座に容易にします。

一般的な統計:
このパネルにはいくつかの指標の概要があります。 妥当ないし不当なリクエストの数、 データセットの解析所要時間、 正味訪問者数、 リクエストされたファイル、 静的ファイル(CSS、ICO、JPGなど)のHTTPリファラ、 404、 そして解析されたログファイルの大きさ、 さらに帯域幅の消費量といったものです。
正味訪問者
このパネルにはヒット数、正味訪問者、日次累積帯域幅といった指標が示されます。
おまけとして日付での指定は--date-spec=hrを使って時単位に設定することにより、 05/Jun/2016:16のような日付を表示できます。 もしくは分単位にすることで05/Jun/2016:16:59になります。 時単位ないし分単位で日次トラフィックを把握したいときは威力を発揮します。
リクエストされたファイル
このパネルにはwebサーバーにリクエストされた(静的でない)ファイルのほとんどが表示されます。 ヒット数、正味訪問者、比率と共に、使用された累積帯域幅、プロトコル、リクエストメソッドが示されます。
リクエストされた静的ファイル
JPG、CSS、SWF、JS、GIF、PNGファイル種のような頻出の静的ファイルを一覧にしつつ、 上のリクエストされたファイルのパネルと同じ指標も備わります。 静的ファイルの種類を設定ファイルに加えることができます。
404ないしNot Found
前述のリクエストパネルと同じ指標を表示します。 ただしこちらはサーバーで見当たらなかったり、 一般に404状態コードとして知られているデータが含まれます。
ホスト
このパネルにはホスト自体についての詳細情報が載っています。 これにより容易に攻撃的なクローラーに焦点を当てたり、 帯域幅を貪るホストを同定することができます。

パネルを拡大することでホストのリバースDNS探知結果や身元の国家や、 市といった追加情報を表示できます。 -a引数が有効であれば所望のIPアドレスを選択してエンターを打つことで、 ユーザーエージェントを表示させられます。

オペレーティングシステム
このパネルではサーバーをヒットするときにホストがどのオペレーティングシステムを用いたかが報告されます。 それぞれのオペレーティングシステムの可能な限り最も細かいバージョンが呈示されます。
ブラウザ
このパネルにはサーバーをヒットした際にホストがどのブラウザを用いたかを報告します。 それぞれのブラウザの可能な限り最も細かいバージョンが呈示されます。
訪問時刻
このパネルには時単位のレポートが表示されます。 このオプションでは24個のデータ点が表示され、1つにつき1日のうちの各1時間が充てられます。
おまけとして、時指定は--hour-spec=minを使うことで時単位の10分の1に設定することができ、 時間は16:4として表示されます。 これはサーバーのトラフィックのピークに焦点を当てたいときに効果を発揮します。
仮想ホスト
このパネルにはアクセスログから解析された全ての各仮想ホストが表示されます。 このパネルはログ書式文字列中に%vが使われたときに表示されます。
リファラのURL
問題のホストが他のリソースを介してアクセスされた場合、 もしくは別のホストからリンクないし転換された場合、 このパネル中に参照元のURLが呈示されます。 有効にするには設定ファイル中の`--ignore-panel`を参照してください。 既定では無効になっています。
参照サイト
このパネルにはURL全体ではなくホスト部分のみが表示されます。 このURLはリクエストの出自です。
キーフレーズ
サーバーに導いたGoogle検索、Googleキャッシュ、 Google翻訳で使われたキーフレーズが報告されます。 現時点ではHTTPを介したGoogle検索問い合せのみに対応しています。 有効にするには設定ファイル中の`--ignore-panel`を参照してください。 既定では無効になっています。
地理的位置
IPアドレスが地理的にどこに位置しているかを定めます。 統計は大陸と国家により細分化され、都市水準のGeoIP情報が使えるときはヒットそれぞれについて個々の都市も列挙します。 GeoLocation対応とともにコンパイルする必要があります。
HTTPリクエストに対する数値的な状態コードの値です。
このパネルにはGeoIP2と旧式のデータベース用にASN (Autonomous System Numbers) のデータが表示されます。 悪意のあるトラフィックを検知しそれに伴ってブロックするのに優れています。
遠隔の利用者(HTTP認証)
HTTP認証により定められるような、文書をリクエストする人物の利用者IDがこれです。 文書がパスワードで保護されていなければ前のものと同様にこの部分は"-"になります。 このパネルはログ書式変数中に%eが与えられていなければ有効になりません。
キャッシュ状態
サーバーでキャッシュを使っているとき、 リクエストがキャッシュされたりキャッシュからリクエストに応答したりしているかどうかを、 知りたくなるときがくるかもしれません。 このパネルはサーバーが供したオブジェクトのキャッシュ状態を示します。 このパネルはログ書式変数中で%Cが与えられない限り有効にはされません。 状態は`MISS`、`BYPASS`、`EXPIRED`、`STALE`、`UPDATING`、`REVALIDATED`、`HIT`のいずれかです。
このパネルには割り当てられたメディア種別(正式にはMIME種別として知られます)とメディア副種別が指定されており、 その下に一覧になっています。 このパネルはログ書式変数中に%Mが与えられていない限り有効になりません。 詳細は https://www.iana.org/assignments/media-types/media-types.xhtml を参照してください。
暗号化設定
このパネルには暗号スート間で使用されたSSL/TLSプロトコルが示されます。 このパネルはログ書式変数中で%Kが与えられていない限り有効ではありません。

GoAccessのパネルは端末のインターフェースから並び換えたり副項目を展開ないし折り畳むことができ、最重要の指標を前面かつ中央に留められます。 表の指標と縮尺もまた後述する対話的なメニューを介して実行時に調節可能です。

補足:おまけで、設定された際には、 全てのパネルへリクエストに対応するのに掛かった平均時間を表示することができます。

容量

GoAccessで使うことができる容量オプションは3つあります。 環境と要件により選択は変わってきます。

既定のハッシュテーブル
インメモリ容量はデータセットの大きさを利用できる物理記憶容量に制限するコストと引き換えに、 よりよいパフォーマンスが得られます。 GoAccessはインメモリハッシュテーブルを使用します。 とても多いメモリ使用でかなり良いパフォーマンスを発揮します。 この容量はディスク上の永続性に対応します。

コンパイル時の設定

GoAccessのコンパイル時の設定ではいくつかのオプションを使うことができます。 完全な最新の設定オプションの一覧については./configure --helpを走らせてください。

デバッグシンボル有りでコンパイルし、 コンパイラの最適化を切ります。
全角文字対応有りでコンパイルします。 Ncurseswが必要です。
GeoLocation対応有りでコンパイルします。 MaxMindのGeoIPが必要です。 legacyは元来のGeoIPデータベースを使用します。 mmdbは改善されたGeoIP2データベースを使用します。
4096の固定大バッファを使う代わりに、フルラインリクエストを解析するために動的にラインバッファを拡張します。
gzipされたログを読むためにzlib対応つきでビルドします。 既定で無効化されています。
WebSocketサーバのためにOpenSSL対応つきでGoAccessをコンパイルします。 --with-zlib 随意でzlib対応を有効にして手動の脱圧縮なしに直接圧縮されたログファイル(例:.gz)の解析を許容します。

オプション

以下のオプションはコマンドに与えたり設定ファイルで指定したりできます。 設定ファイルで指定された場合、長いオプション名は--を前に付けず、等号=を使わずに使用する必要があります。

ログ、日付、時刻の書式

時刻書式変数は空白1つ分に続いて、定義済み書式名(後述のオプションを参照)ないし通常の文字と特殊書式指定子のあらゆる組み合わせのいずれかを含むログ書式時刻を指定します。
全てパーセント符号 (%) から始まります。 `man strftime`を参照してください。 %Tや%H:%M:%Sといったものです。
なお、タイムスタンプがマイクロ秒で与えられているならば%fは時刻書式として用いられねばなりません。 タイムスタンプがミリ秒で与えられているならば%*は時刻書式として用いられねばなりません。
日付書式変数は空白1つに続き、定義済み書式名(後述のオプションを参照)ないし通常の文字と特殊な書式指定子のあらゆる組合せを含むログ書式時刻を指定します。
全てパーセント (%) 符号から始まります。 `man strftime`を参照してください。 %Y-%m-%dといったものです。
タイムスタンプがマイクロ秒で与えられているならば%fが日付書式として使われなければなりません。 タイムスタンプがミリ秒で与えられているならば%*が日付書式として使われなければなりません。
日付と時刻の書式について、 2つの変数が単一のオプションに組み合わさったものです。 これによりリクエストから時間帯を取得し、 出力用に他の時間帯に変換することができます。 --tz=<時間帯>を参照してください。
全てパーセント (%) 符号から始まります。 `man strftime`を参照してください。 例として%d/%b/%Y:%H:%M:%S %zを挙げます。
なお--datetime-formatが使われている場合、日付と時刻のフィールドを表現するためにログ書式変数に%xが渡されなければなりません。
ログ書式変数は空白1つないしタブ区切り用の\etに続いてログ書式文字列を指定します。

なお書式中に空白があった場合、文字列は単一ないし二重引用符で囲まれていなくてはなりません。 内部の引用符はエスケープされている必要があります。

生のログ、日付、時刻書式を指定するのに加えて、 便宜上以下の定義済みログ書式名から、 どれでもログ、日付、時刻書式変数に与えることができます。 GoAccessでは、 ある変数にある定義済みの名前を、 別の変数に別の定義済みの名前を、 というように扱うこともできます。

COMBINED - Combined Log Format
VCOMBINED - 仮想ホスト付きCombined Log Format
COMMON - Common Log Format
VCOMMON - 仮想ホスト付きCommon Log Format
W3C - W3C Extended Log File Format
SQUID - Native Squid Log Format
CLOUDFRONT - Amazon CloudFront Web Distribution
CLOUDSTORAGE - Google Cloud Storage
AWSELB - Amazon Elastic Load Balancing
AWSS3 - Amazon Simple Storage Service (S3)
AWSALB - Amazon Application Load Balancer
CADDY - CaddyのJSON構造形式(local/info形式)
TRAEFIKCLF - TraefikのCLFフレーバー
補足:一般に、空白文字、コンマ、パイプ、引用符、中括弧を含む値は、引用符で囲む必要があります。内部の引用符はエスケープしなければなりません。
補足:データをGoAccessにパイプで流し込むときはログ、日付、時刻設定ダイアログは質問されないので、予め設定ファイルかコマンドラインで定義しておく必要があります。
補足:GoAccessでの既定のCADDYの形式は、「local/info」形式です。それでも、必要であれば、独自のGoAccessのログ形式を活用して、特定の構成に合致するようにする選択肢があります。

利用者用対話的オプション

-c --config-dialog
プログラムの開始時にログ、日付、時刻の設定窓を開きます。 cursesが初期化されているとき限定です。
活性化された端末パネルを色付けします。
-m --with-mouse
主な端末ダッシュボードでマウス対応を有効にします。
端末出力用の独自の色を指定します。

Color Syntax
定義 空白またはタブ 前景色#:背景色# [属性,パネル]


FG# = 前景色 [-1...255](-1 = 端末既定の色)
BG# = 背景色 [-1...255](-1 = 端末既定の色)

おまけとして色属性を適用することができます(複数の属性はコンマ区切になります)。 例えばboldunderlinenormalreverseblinkです。

必要に応じてパネル毎に独自の色を適用することができます。 つまりリクエストパネルの指標は色Aのものにしつつ、 ブラウザパネルの同じ指標は色Bのものにする、といったことができます。

利用できる色の定義:
COLOR_MTRC_HITS
COLOR_MTRC_VISITORS
COLOR_MTRC_DATA
COLOR_MTRC_BW
COLOR_MTRC_AVGTS
COLOR_MTRC_CUMTS
COLOR_MTRC_MAXTS
COLOR_MTRC_PROT
COLOR_MTRC_MTHD
COLOR_MTRC_HITS_PERC
COLOR_MTRC_HITS_PERC_MAX
COLOR_MTRC_VISITORS_PERC
COLOR_MTRC_VISITORS_PERC_MAX
COLOR_PANEL_COLS
COLOR_BARS
COLOR_ERROR
COLOR_SELECTED
COLOR_PANEL_ACTIVE
COLOR_PANEL_HEADER
COLOR_PANEL_DESC
COLOR_OVERALL_LBLS
COLOR_OVERALL_VALS
COLOR_OVERALL_PATH
COLOR_ACTIVE_LABEL
COLOR_BG
COLOR_DEFAULT
COLOR_PROGRESS

カラースキームの例は設定ファイルを参照してください。

カラースキームから選択します。 1は既定の灰色のスキームです。 2は緑色のスキームです。 3はMonokaiのスキームです(端末が256色に対応しているときのみ現れます)。
クローラー(ボット)のみ解析と表示を行います。
HTMLレポートで読み込まれる自前のCSSファイルパスを指定します。
HTMLレポートで読み込まれる自前のJSファイルパスを指定します。
HTMLレポートページに題名とヘッダを設定します。
HTMLレポートをX秒毎に再描画します。 値は1から60秒の間でなくてはなりません。 既定ではHTMLレポートを1秒毎に再描画するように設定されています。
HTMLレポートの既定の設定を加えます。 HTML設定を含む妥当なJSONオブジェクトを与えてください。 それぞれのパネルプロットを自前のものにすることができます。 以下の例をご覽ください。
補足:渡すJSONオブジェクトは1行のJSON文字列である必要があります。 例えば次の通りです。
--html-prefs='{"theme":"bright","perPage":5,"layout":"horizontal","showTables":true,"visitors":{"plot":{"chartType":"bar"}}}'
タブと改行を使ってJSON出力の書式を整えます。
補足:WebSocketのペイロードが遥かに増大するため、 実時間HTMLレポートを出力する際は推奨されません。
パネル毎に表示する項目の最大数。 最大値は1からnまでの間にできます。
補足:CSV及びJSON出力のみでパネル毎の既定値の366 (実時間HTMLレポートでは50)項目より大きい最大数が許されます。
色付きの出力にします。 これは彩色に対応していない端末では既定の出力です。
CSVの出力で指標の概要を無効にします。
進行中の指標 [リクエスト合計/毎秒リクエスト] を無効にします。
タブが押下されていたり、 パネルが数字のキーを使って選択されていたりするときは パネルを通じてのスクロールを無効にします。
HTMLの生成されたレポート中に表示される最後に更新されたフィールドが現れないようにします。
進行中の指標とスピナーの解析を表示しません。
レポートの日付、時刻データを与えられた時間帯で出力します。 正統な時間帯名を使うことに注意してください。 例えばEurope/BerlinAmerica/ChicagoAfrica/Cairoといったようにです。 不正な時間帯名が与えられると出力はGMTになります。 日付、時刻書式で適切に時間帯を指定するには--datetime-formatを参照してください。

サーバーオプション

補足: 生の実時間データがもたらされるのはWebSocketサーバーだけです。 WebServer自体ではありません。 レポートのHTMLファイルにアクセスするには、やっぱり自前のHTTPサーバーが必要になります。 生成されたレポートをドキュメントルートディレクトリに置いてブラウザでHTMLファイルを開いてください。 ブラウザはここでセットアップできるws-serverへの別のWebSocket接続を開いて、 ダッシュボードを更新された状態に保つことができます。

サーバーに束縛するIPアドレスを指定します。 指定しなければ0.0.0.0に束縛します。
大抵はアドレスを指定する必要はないのですが、 意図的にサーバー内で異なるアドレスにサーバーを束縛したいときはその限りではありません。
GoAccessをデーモンとして走らせます(--real-time-htmlが有効になっているときのみ)。
補足:GoAccessの設定全体を通じて絶対パスを使うことは大切です。
GoAccessを特定のユーザーとして走らせます。
補足:ユーザーないしユーザーのグループが、 入出力ファイルやその他に必要なファイルにアクセスできることを確かめておくことは大事です。 ユーザーが属する他のグループは無視されます。 そういったわけで、 ユーザーがSSL証明書にアクセスできることはそうそうないでしょうから、 GoAccessはSSLプロキシの背後で走らせることをお勧めします。
クライアントがWebSocketハンドシェイクで必ず指定されたオリジンヘッダーを送るようにします。
--daemonizeオプションと一緒に使ったときにデーモンのPIDをファイルに書き込みます。
使うポートを指定します。 既定ではGoAccessのWebSocketサーバーは7890ポートで待ち受けます。
実時間HTML出力を有効にします。
GoAccessは自前のWebSocketサーバーを使ってサーバーからクライエントへのデータを送信します。 WebSocketサーバーの仕組みの詳細については http://gwsocket.io を参照してください。

JSON Web Token (JWT) を使って、WebSocket認証を有効にします。 このオプションは、JSONがローカルで生成されるものと、外部から取得して検証されたものの、2つの形式に対応しています。
<jwt[:シークレット]>:WebSocket認証の静的JWTを指定します。 ローカル生成または検証のためのシークレットを付けられますが、省けます。 「jwt」だけ与えられるとき(例: --ws-auth=jwt )、環境変数 GOACCESS_WSAUTH_SECRET をソースとするシークレット、またはシークレットが未設定であればHS256互換の既定のシークレットを使って、JWTを生成します。 シークレットが含まれるとき(例: --ws-auth=jwt:mysecret )、直接HS256署名キーとして使われるか、その値が有効なパスであればファイルから読まれます(例: --ws-auth=jwt:/path/to/secret.key )。
jwt:verify:secret: (例えば --ws-auth-url を介して)外部から取得されるJWTの検証を有効にします。 「verify」キーワードにより、JWTが外部のソースから与えられることが示されており、検証用にシークレットを指定しなければなりません。 シークレットは直接的なHS256キー(例えば --ws-auth=jwt:verify:自分のシークレット です)、ファイルパス(例えば --ws-auth=jwt:verify:シークレットキーへのパス です)、環境変数名(例えば --ws-auth=jwt:verify:$JWT_SECRET です)にできます。 この形式は、 --ws-auth-url を使うときは必須で、 --ws-auth-refresh-url を使って外部エンドポイントからJWTを取得して検証するときは省けます。
このオプションが使われているとき、HTML報告書は最初に解析されたデータでブートスラップされません。 その代わり、認証が成功したときにのみ報告書を表示し、実時間データへの安全なアクセスを担保します。
システムはこのオプションを以下のように処理します。
<jwt[:シークレット]>の場合:シークレットが与えられていなければ、 GOACCESS_WSAUTH_SECRET 環境変数または既定のシークレットを使ってローカルでJWTが生成されます。 (直接またはファイルで)シークレットが指定されているとき、それがJWTの署名に使われます。
jwt:verify:シークレット の場合:シークレットは必須で、外部から取得したJWTを検証するために使われます。 (例えば --ws-auth-url にある)外部認証サーバで使われる署名キーと合致しなければなりません。
GoAccessをビルドするときに --with-openssl を付ける必要があります。
JWTが期限切れになるまでの時間を設定します。 指定されなければ既定で8時間(28800秒)です。
ローカルで生成されるJWT のみ で使えます。
利用者は期限が切れる時間を様々な形式で指定できます。 値はJWTの期限の検証用に秒数に変換されます。 対応している形式は次の通りです。
  • "3600" -> 3600秒
  • "120s" -> 2分
  • "24h" -> 24時間 = 86,400秒
  • "10m" -> 10分 = 600秒
  • "10d" -> 10日 = 864,000秒
期限切れまでの時間は、JWTが発行されてからどの程度有効であり続けるかを制御します。 これにより、安全なWebSocket接続が担保されます。
WebSocket接続を認証するために、最初のJWTを取得するURLを指定します。
このオプションが使われたとき、GoAccessから指定されたURLに対してGET要求が送られ、最初のJWTが取得されます。 応答はJSONオブジェクトでなければならず、フィールドは statusaccess_tokenrefresh_tokenexpires_in がなければなりません。
例: --ws-auth-url=https://site.com/api/get-auth-token
トークンを取得するとき、要求の一部に { credentials: 'include' } が使われますが、これはシステム内にある利用者の既存の認証セッションに基づき、アクセストークンを安全に取得するためです。 これにより、利用者が認証している限り、トークンの取得は安全であることが担保されます。
このオプションにより、トークン取得エンドポイントを使って、既存の認証システムをGoAccessのダッシュボードに統合できます。
現在のJWTトークンが間もなく期限切れしそうになったときに、新しいJWTが取得されるURLを取得します。
GoAccessは先制的に、期限切れになる60秒前に、このURLへ refresh_token 付きのPOST要求を送って、JWTをリフレッシュします。 与えられていなければ、既定で --ws-auth-url と同じURLです。
例: --ws-auth-refresh-url=https://site.com/api/refresh-token
要求形式は最初の認証URLのものと合致させてください。

GoAccessは柔軟な認証オプションを供しており、状態なしと状態ありの手法の両方に対応しています。 状態なしの手法では、クッキーやCSRF保護なしにリフレッシュトークンが取得されます。 バックエンドがリフレッシュトークンの署名を検証し新しいアクセストークンを払出します。 代えて、状態ありの手法では初回の取得で`csrf_token`を伴うJWTを払出すことができ、これがセッションに保管されます。 後続のリフレッシュ要求 (POST) からはCSRFの検査が実施され、セッションのトークンに合致する`X-CSRF-TOKEN`ヘッダを要求します。
初回の認証:
  • --ws-auth-url=<url>で開始した場合、GoAccessは初回のJWTを取得するためのGET要求を送ります。
  • 期待される正常な応答形式:

{
"status" : "success",
"access_token" : "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"csrf_token" : "3RRjNeR4RTXHmrV1cECkyUmmKeRxm4lzkI0eq41o",
"refresh_token" : "refresh123xyz",
"expires_in" : 3600
}
認証が失敗なら、エンドポイントは以下を返すべきです:

{
"status": "error",
"message": "User not authenticated"
}
トークンのリフレッシュ:
GoAccessは指定されたURLにPOST要求を送ることで期限切れの60秒前にJWTをリフレッシュします(--ws-auth-refresh-urlが設定されていなければ既定で--ws-auth-urlになります)。

{ "refresh_token": "refresh123xyz" }
GoAccessは状態なしと状態ありの両方のん印象に対応しています。 状態なしについては、クッキーやCSRFは要求されません。 バックエンドでリフレッシュトークンの署名を検証します。 状態ありについては、初回の要求にcsrf_tokenを含めます。 GoAccessはそれをリフレッシュ要求の中のX-CSRF-TOKENとして送り、これをバックエンドではセッションに対して検証しなければなりません。
周期的なトークンの検証:
リフレッシュ後、GoAccessは以下を送ることによりWebSocketサーバーと共に更新されたJWTの妥当性を確認します。

{ "action": "validate_token", "token": "current-jwt" }
  • WebSocketサーバは検証されたJWTのexpの主張を追い、それが期限切れになるとき接続を閉じますが、これはクライアントが別で伝文を送っていないにしてもです。
  • トークンのリフレッシュが失敗するか使えないトークンを返すとき、ブラウザはクレデンシャルを消去し認証されたWebSocket接続を閉じます。
重要事項:これらのオプションが機能するためには、<機密情報>が以下をとりうる--ws-auth=jwt:verify:<機密情報>を指定しなければなりません。
  • 機密情報のキーを含むファイルへのパス(例:/path/to/secret.key)
  • 機密情報を保持する環境変数名(例:$JWT_SECRET)
  • 文字列としての実際のHS256の機密情報のキー(例:mysecretkey123)
例:--ws-auth=jwt:verify:/path/to/secret.key
WebSocketサーバーが応答するURLです。 これはクライアント側でWebSocket構築子に与えられるURLです。
おまけとしてWebSocketのURIスキームを指定することができます。 暗号化されていなかったりされていたりするws://wss://といったものです。 例:wss://goaccess.io
GoAccessがプロキシの背後で走っている場合、 ホストにコロンとポートを続けて指定することによって、 クライアント側で異なるポートに接続するように設定することができます。 例えばgoaccess.io:9999です。
既定では生成されたレポートのホスト名に接続を試みます。 GoAccessが遠隔サーバーで走っている場合、遠隔サーバーのホストはここで指定されるべきです。 また、妥当なホストになっていてHTTPアドレスになって「いない」ことを必ず確認してください。
指定された秒数の間隔でWebSocketの死活監視を有効にします。 これにより切断されて放置されたままの接続を防ぐことができます。
名前付きパイプ (FIFO) を作り、与えられたファイルパスから読むようにします。
名前付きパイプ (FIFO) を作り、与えられたファイルパスに書き込むようにします。
TLS/SSL証明書へのパスです。 GoAccessでTLS/SSL対応を有効にするためには--ssl-certと--ssl-keyが使用されていることが必要です。

--with-opensslを使ってconfigureしたときに限定されます。

TLS/SSL秘密鍵へのパスです。 GoAccessでTLS/SSL対応を有効にするためには、--ssl-certと--ssl-keyが使用されていることが必要です。

--with-opensslを使ってconfigureしたときに限定されます。

ファイルオプション

-
解析するログファイルが標準入力から読み込まれます。
入力ログファイルへのパスを指定します。 設定ファイルで指定されている場合はコマンドラインから-fで指定されたものよりも優先されます。
ログの大きさをバイトで指定します。 これはログの大きさを明示的に設定できる処理におけるログからパイプを繋いでくるときに便利です。
-l --debug-file=<デバッグファイル>
全てのデバッグ文言を指定されたファイルに送ります。
-p --config-file=<設定ファイル>
独自に使用する設定ファイルを指定します。 設定されている場合、(もしあっても)大域的な設定ファイルより優先されます。
外部のJS/CSSファイルにHTMLアセットを出力します。 Content Security Policy (CSP) を設定している場合に優れます。 report.htmlファイルと同じディレクトリに2つの分離されたファイルgoaccess.jsgoaccess.cssを作成します。
不正なリクエストを指定されたファイルにログ出力します。
不明なブラウザとOSを指定されたファイルにログ出力します。
大域的な設定ファイルを読み込みません。 --sysconfdir=ディレクトリへのパスと指定されない限り、 このディレクトリは通常/usr/local/etcです。 既定の設定ファイルを見付けるためには--dcfオプションを参照してください。

解析オプション

ホスト毎のユーザーエージェントの一覧を有効にします。 高速な解析の上ではこのフラグを有効にしないでください。
HTMLないしJSON出力におけるIPリゾルバを有効にします。
IPv4やIPv6を計上の対象から除外します。 アクセスログのデータ処理中でのみ適用でき、永続化されたデータは除外されません。 範囲についても、IPの間にダッシュを使う(開始-終了)ことで含められます。
例:
exclude-ip 127.0.0.1
exclude-ip 192.168.0.1-192.168.0.100
exclude-ip ::1
exclude-ip 0:0:0:0:0:ffff:808:804-0:0:0:0:0:ffff:808:808
-j --jobs=<1-6>
これは、プログラムの実行時に使われる並列処理スレッド数を指定します。ログデータを解析するときの並行性の度合いを決定し、複数の作業を同時に並列処理することができるようになります。既定では1スレッドです。利用できるハードウェア資源に基づいてジョブ数を設定するのが一般的です。例えば、CPUコア数です。
HTTPリクエストのプロトコルを設定したり外したりします。 こうすることによりリクエストされたプロトコルと実際のリクエストが含まれたリクエストキーが作られるようになります。
-M --http-method=<yes|no>
HTTPリクエストのメソッドを設定したり外したりします。 これによりリクエストのメソッドと実際のリクエストを含むリクエストキーが作られるようになります。
与えられた以下のファイルと対応する出力形式用の拡張子のうちの1つに標準出力への出力を書き込みます。

/path/file.csv - Comma-separated values (CSV)
/path/file.json - JSON (JavaScript Object Notation)
/path/file.html - HTML
-q --no-query-string
リクエストのクエリ文字列を無視します。 つまり、www.google.com/page.htm?query => www.google.com/page.htm です。
補足:クエリ文字列を削除するとメモリ消費量が大幅に減る可能性があります。 特にタイムスタンプ付きのリクエストではそうです。
-r --no-term-resolver
端末出力でIPリゾルバを無効にします。
--444-as-404
非標準的な状態コードである444を404として扱います。
--4xx-to-unique-count
4xxクライアントエラーを固有訪問者に加えます。
クライアントIPアドレスを匿名化します。 IP匿名化オプションはIPv4利用者IPアドレスの末尾オクテットとIPv6アドレスの末尾80ビットをゼロに設定します。 例:192.168.20.100 => 192.168.20.0 例:2a03:2880:2110:df07:face:b00c::1 => 2a03:2880:2110:df07::
補足:これは -a を非活性にします。
これは、チャンクを構成する行数を決定します。この引数は各スレッドで平行して処理されるデータの大きさに影響し、ファイルの読込と処理のタスクの並列化が可能になります。チャンクの大きさの値は、並列処理の効率性に影響し、システム資源や入力データの特性のような要因に基づいて調整できます。

低い値:チャンクの大きさが低すぎる値に設定されると、非効率な処理となる可能性があります。例えば、各チャンクにごく小数の行が含まれているとき、並列処理の管理と協調に掛かるオーバーヘッドがその利点を打ち消す可能性があります。

大きな値:逆に、チャンクの大きさが高すぎに設定されると、資源の枯渇に繋がりかねません。各チャンクはデータの一部を表し、それをスレッドが平行に処理します。チャンクの大きさを著しく大きい値に設定すると、メモリの問題を引き起こす可能性があります。とりわけ、同時に多くの並列スレッドが走っている場合がそうです。
匿名化水準を指定します。 1 => 既定、2 => 強力、3 => 神経質
隠れるビット数 レベル1 レベル2 レベル3
IPv4 8 16 24
IPv6 64 80 96

クエリ文字列を含む静的ファイルを含めます。 例:/fonts/fontawesome-webfont.woff?v=4.0.3
既定でGoAccessはブラウザとクローラーの「必須ないし基礎的な」厳選された一覧を解析します。 もし追加のブラウザを加える必要があればこのオプションを使ってください。 ブラウザやクローラーやフィードなどの追加の区切られた一覧を含めてください。 例としてはconfig/browsers.listや https://raw.githubusercontent.com/allinurl/goaccess/master/config/browsers.list を参照してください。
日時の厳密さに関して、日付(既定)、何時かを表示する時、 何分かを表示する分、のうちいずれかを日付に設定します。
これは訪問者数パネルで使われます。 時水準で訪問者を把握するのに便利です。 例えば時指定ではトラフィックを18/Dec/2010:19になり、 分指定では18/Dec/2010:19:59が表示されます。
二重に符号化された値を復号化します。 これにはユーザーエージェント、リクエスト、リファラが含まれます。
与えられたパネルについて解析と表示を有効にします。
利用できるパネル:
VISITORS
REQUESTS
REQUESTS_STATIC
NOT_FOUND
HOSTS
OS
BROWSERS
VISIT_TIMES
VIRTUAL_HOSTS
REFERRERS
REFERRING_SITES
KEYPHRASES
STATUS_CODES
REMOTE_USER
CACHE_STATUS
GEO_LOCATION
MIME_TYPE
TLS_TYPE
ログファイル名に仮想ホストを使います。 ファイル名から仮想ホストを抽出するためにPOSIX正規表現が渡されます。 例:--fname-as-vhost='[a-z]*.[a-z]*'はawesome.com.log => awesome.com と抽出するのに使えます。
リファラを隠しつつ計上はします。 探しものの箇所ではワイルドカードが使えます。 つまり *.bing.com です。
時刻指定を時(既定)ないし分のいずれかに設定すると1/10時間が時に追記されて表示されます。
これは時間分布パネルで使われます。 サーバーで特定の時刻でトラフィックのピークを把握するのに役立ちます。
クローラーを計上から外します。
不明なOSとブラウザをクローラーとして分類します。
与えられたパネルについて解析と表示から外します。
利用できるパネル:
VISITORS
REQUESTS
REQUESTS_STATIC
NOT_FOUND
HOSTS
OS
BROWSERS
VISIT_TIMES
VIRTUAL_HOSTS
REFERRERS
REFERRING_SITES
KEYPHRASES
STATUS_CODES
REMOTE_USER
CACHE_STATUS
GEO_LOCATION
MIME_TYPE
TLS_TYPE
リファラを計上から外します。 ワイルドカードが使えます。 例:*.domain.com ww?.domain.*
静的ファイルのリクエストを無視します。

req
妥当なリクエスト由来のリクエストのみ無視します

panels
パネル由来のリクエストを無視します


なおこれらはリクエストの総計に計上されます。

1つ以上の状態コードを解析と表示から外します。 複数の状態コードについては、このオプションを複数回使用してください。
ストレージに指定された日数分保持します。 これによりストレージの周回表が巡回されます。 例:直近7日間のみを保持して表示します。
クライアントのIPの検証を無効化します。 ログ出力される前にIPアドレスが粉飾されている場合に便利です。 それでもログには%hの場所取りがなされている必要があり、大抵は解決されたIPです。 例:ord37s19-in-f14.1e100.net.
HTTP状態コードの検証を無効にします。 対象との接続が確立され対象が応答を送ったときのみにこの値を記録するサーバーもあります。 そうでない場合-として記録されます。
与えられたログ・日付・時刻の書式に照らし合わせるアクセスログからの行数。 既定では解析器は10行に対して検査するように設定されています。 0に設定したときは解析器は一部の行のみの検査ではなくアクセスログ全体を解析します。 <number>に到達するまでに与えられたログ・日付・時刻の書式がその行に照合したら、 解析器はそのログを妥当と判断し、 そうでなければGoAccessはEXIT_FAILUREを返して関係するエラー文言を表示します。
ログを解析しデータ出力することなく終了します。 ファイルや端末に出力することなくディスク上のデータベースに新規データを加えたいだけのときに便利です。
実際のOS名を表示します。 例えばWindows XP、Snow Leopardです。
初期の読込でパネルを整列します。 整列オプションは読点区切りです。 オプションは、パネル,指標,順序、の形式です。
使える指標:
BY_HITS - ヒット数により整列
BY_VISITORS - 正味訪問者で整列
BY_DATA - データで整列
BY_BW - 帯域幅で整列
BY_AVGTS - 平均提供時間で整列
BY_CUMTS - 累積提供時間で整列
BY_MAXTS - 最大提供時間で整列
BY_PROT - HTTPプロトコルで整列
BY_MTHD - HTTPメソッドで整列
使える順番:
ASC
DESC
静的ファイルの拡張子を追加します。 例:.mp3 拡張子は大文字小文字を区別しません。

地理的位置のオプション

-g --std-geoip
メモリ使用量を抑えるため標準的なGeoIPデータベースにします。
GeoLiteCity.datのようなGeoIPデータベースファイルへのパスを指定します。

GeoIP2を使用している場合、 MaxMind.comからGeoLite2ないしCountryのデータベースをダウンロードし、 データベースを指定するために--geoip-databaseオプションを使う必要があるでしょう。 過去のGeoIP用にデータベースファイルを更新することもでき、 そのファイルはMaxMind.comのGeoLite Legacy Databasesにあります。 IPv4とIPv6のファイルも同様に対応済みです。 更新されたDBのURLについては、既定のGoAccess設定ファイルを参照してください。

補足: --geoip-city-dataは--geoip-databaseの別名です。

他のオプション

ヘルプ。
-s --storage
B+木やハッシュのような、現在のストレージメソッドを表示します。
バージョン情報を表示して終了します。
`-p`が使われていない場合既定の設定ファイルのパスを表示します。

永続ストレージオプション

解析されたデータをディスクに永続化します。 データベースファイルが存在するときはファイルは上書きされます。 これは最初のデータベースに対して設定されます。 後述の例を参照してください。
ディスクから以前格納されたデータを読み込みます。 永続化されたデータのみを読む場合、データベースファイルが存在している必要があります。 --persistと後述の例を参照してください。
ディスク上のデータベースファイルが保管されているパスです。 既定値は/tmpディレクトリです。

独自のログ・日付書式

GoAccessは理想的にはどんなwebのログ書式も解析できます。

予め定義されたオプションには Common Log Format (CLF)、 Combined Log Format (XLF/ELF)、 Amazon CloudFront (Download Distribution)、 Google Cloud Storage、 W3C形式 (IIS) が含まれます。 前2者は仮想ホスト付きのものもあります。

GoAccessはどんな独自の書式文字列も受け付けます。

ログ書式を設定するには2つの方法があります。 最も簡単なのはGoAccessを-c付きで走らせて、 設定ウィンドウから指示に随って入力することです。 他に~/.goaccessrcや%sysconfdir%以下で設定することもできます。

time-format変数は空白1つに続いてログの書式の時刻を指定します。 これには通常の文字と特殊な書式指定子の組み合わせが含まれます。 指定子は全てパーセント記号 (%) 始まりです。 `man strftime`を参照してください。 %Tや%H:%M:%Sなどがあります。
補足:タイムスタンプがマイクロ秒で与えられているとき、 %ftime-formatとして使われていなければなりません。 またタイムスタンプがミリ秒で与えられているときは、 %f%*として使われなければなりません。
date-format変数には空白1つが続き、 ログの書式の日付を指定します。 この書式には通常の文字と特殊な書式の指定子のあらゆる組み合わせを含められます。 指定子は全てパーセント記号 (%) 始まりです。 `man strftime`を参照してください。 例えば%Y-%m-%dです。
補足:タイムスタンプがマイクロ秒で与えられているとき、 %fdate-formatとして使われなければなりません。 またタイムスタンプがミリ秒で与えられているときは%f%*として使われなければなりません。
log-format変数には空白1つないし\tが続き、ログ書式の文字列を指定します。
%x
time-formatdate-format変数に照合する日付と時刻のフィールドです。 これは与えられたタイムスタンプや日付と時刻が、 日付と時刻が2つの分離した変数ではなく、 単一の文字列(例:1501647332や20170801235000)として結合されているときに使われます。
%t
time-format変数に照合する時刻フィールドです。
%d
date-format変数に照合する日付フィールドです。
%v
リクエストに応対するサーバー(仮想ホスト)の正統なServer Nameです。
%e
これはHTTP認証により決定された文書を要求した人物のユーザーIDです。
%C
サーバーが提供するオブジェクトのキャッシュ状態です。
%h
ホスト(クライアントIPアドレスで、IPv4ないしIPv6のいずれかです)
%r
クライアントからの要求の行です。 解析できるようにするため要求の周囲の特定の区切文字 (単一引用符、二重引用符、その他諸々)が必要です。 さもなければ%m %U %Hといった特殊な書式指定子の組み合わせを使わねばなりません。
%q
検索文字列です。
%m
リクエストメソッドです。
%U
リクエストされたURLのパスです。

補足:クエリ文字列が%Uにあるとき、 %qを使う必要はありません。 しかしURLパスが何らクエリ文字列を含んでいなければ、 %qを使うことでクエリ文字列をリクエストの後に付けることができます。

%H
リクエストされたプロトコルです。
%s
サーバーがクライアントに送り返す状態コードです。
%b
クライアントに返されるオブジェクトの大きさです。
%R
「リファラ」のHTTPリクエストヘッダです。
%u
ユーザーエージェントのHTTPリクエストヘッダです。
%K
接続に選ばれたTLS暗号設定です(Apache LogFormatでの%{SSL_PROTOCOL}xです)。
%k
接続に選ばれたTLS暗号設定です(Apache LogFormatでの%{SSL_CIPHER}xです)。
%M
リクエストされたリソースのMIME種別です(Apache LogFormatでの%{Content-Type}oです)。
%D
リクエストに応対するまでに掛かった時間であり、10進整数のミリ秒で指定します。
%T
リクエストに応対するのに掛かった時間で、ミリ秒精度の秒単位で指定します。
%L
リクエストに応対するのに掛かった時間で、10進整数のミリ秒で指定します。
%n
リクエストに応対するまでに掛かった時間であり、ミリ秒で指定します。
%^
このフィールドを無視します。
%~
空白でない (!isspace) 文字が見付かるまでログ文字列を読み進めます。
~h
X-Forwarded-For (XFF) フィールド中のホスト (クライアントIPアドレスで、IPv4ないしIPv6のいずれか)です。

ホスト指定子の前にチルダが付いたものとなっている特別な指定子を使います。 XFFフィールドを区切る文字が続きます。 この区切り文字は中括弧で囲まれます。 つまり"~h{, }"のようになります。

例えば"~h{, }"はコンマと空白(二重引用符で囲まれたところ)で区切られた "11.25.11.53, 17.68.33.17"フィールドを解析するために使われます。

XFFフィールド 指定子
"192.1.2.3, 192.68.33.17, 192.1.1.2" "~h{, }"
"192.1.2.12", "192.68.33.17" ~h{", }
192.1.2.12, 192.68.33.17 ~h{, }
192.1.2.14 192.68.33.17 192.1.1.2 ~h{ }

補足:GoAccessで提供時間の累計と最大値の平均を取得するためには、 webサーバーで応答時間のログ出力を開始する必要があります。 Nginxではログ書式に$request_timeを追加でき、 Apacheでは%Dを追加できます。

重要:複数の提供時間の指定子が同時に使われた場合、 書式文字列で指定された最初のオプションが他の指定子よりも優先されます。

GoAccessには以下のフィールドが必須です。

%h 妥当なIPv4ないしIPv6
%d 妥当な日付
%r リクエスト

対話的メニュー

メインのヘルプです。
メインのウィンドウを再描画します。
プログラムまたは現在のウィンドウを終了するか、活性のモジュールを折り畳みます。
選択されたモジュールを展開ないしウィンドウを開きます。
+
モジュールがすでに展開されているとき選択された項目の子を展開します。
-
モジュールがすでに展開されているとき選択された項目の子を折り畳みます。
0-9とShift + 0
選択されたモジュールを活性に設定します
ダッシュボードのパネルを対話的に並び替えます(`p`または`P`を押下)。
展開されたモジュール内でスクロールを下に移動します。
展開されたモジュール内でスクロールを上に移動します。
カラースキームを設定したり変更したりします。
活性モジュールについて表のバーの逆順を切り替えます。
活性モジュール(ヒット、訪問者、帯域)について表の指標を前方に循環します。
活性モジュールについて表の指標を後方へ循環させます。
活性モジュールにおいて表のバーの対数目盛を切り替えます。
タブ
モジュールの巡回を先に進めます。現在の活性なモジュールから開始します。
シフトキーとタブ
モジュールの巡回を後ろに戻します。現在の活性なモジュールから開始します。
^f
活性モジュールの中で1画面スクロールを前に進めます。
^b
活性モジュールの中で1画面スクロールを後ろに戻します。
活性モジュールの並び替えオプションです
/
全てのモジュールを検索します(正規表現が使えます)
全てのモジュールを通じて次の発生位置を見つけ出します。
最初の項目や画面の一番上に移動します。
最後の項目や画面の一番下に移動します。

補足:データをGoAccessにパイプで流し込むときはログ、日付、時刻設定ダイアログは質問されないので、予め設定ファイルかコマンドラインで定義しておく必要があります。

異なる出力

端末に出力して対話的なレポートを生成するには以下のようにします。

# goaccess access.log

HTMLレポートを生成するには以下のようにします。

# goaccess access.log -a -o report.html

JSONでレポートを生成するには以下のようにします。

# goaccess access.log -a -d -o report.json

CSVファイルを生成するには以下のようにします。

# goaccess access.log --no-csv-summary -o report.csv

GoAccessでは標準入力からの実時間の監視もできます。

# tail -f access.log | goaccess -

実時間解析でパイプを開いた状態のまま絞り込むには以下とします。

# tail -f access.log | grep -i --line-buffered 'firefox' | goaccess --log-format=COMBINED -

パイプを維持しつつファイルの始めから解析します。

# tail -f -n +0 access.log | grep -i --line-buffered 'firefox' | goaccess --log-format=COMBINED -o report.html --real-time-html -

ログの日付の時間帯をEurope/Berlinに変換します。

# goaccess access.log --log-format='%h %^[%x] "%r" %s %b "%R" "%u"' --datetime-format='%d/%b/%Y:%H:%M:%S %z' --tz=Europe/Berlin --date-spec=min

複数のログファイル

コマンドラインに渡すことで複数のログを解析:

# goaccess access.log access.log.1

通常のファイルも読みつつパイプから解析します(標準入力のため-を後置)。

# cat access.log.2 | goaccess access.log access.log.1 -

補足となりますが、 単一ダッシュがコマンドラインの後ろに付いていることで、 GoAccessにパイプから読み込むことが伝わります。

すべての圧縮されたログファイルに加えて現在のログを処理します。

# zcat access.log.*.gz | goaccess access.log -

附記:macOSでは、zcatの代わりにgunzip -cを使ってください。 附記:GoAccessが--with-zlibつきでビルドされたなら、外部の脱圧縮なしに直接.gzファイルを解析できます。

# goaccess access.log access.log.1.gz access.log.2.gz

実時間HTML出力

実時間のHTMLレポートを生成するには以下のようにします。

# goaccess access.log -o /usr/share/nginx/html/site/report.html --real-time-html

WebSocketのURLを陽に指定:

# goaccess access.log -o report.html --real-time-html --ws-url=goaccess.io

独自のポートを使用:

# goaccess access.log -o report.html --real-time-html --port=9870

WebSocketを指定アドレスに束縛:

# goaccess access.log -o report.html --real-time-html --addr=127.0.0.1

附記:TLS/SSLの実時間の出力については、--ssl-cert=<cert.crt>および--ssl-key=<priv.key>を使ってください。 GoAccessがリバースプロキシの背後で実行しているとき、以下の例のように、プロキシのパスとポートを含めるためWebSocketのURLを設定してください。

# goaccess access.log -o report.html --real-time-html --ws-url=goaccess.io:8080/ws

日付の扱い

特定の日付からファイルの終わりまでの全要求:

# sed -n '/05Dec2010/,$ p' access.log | goaccess -a -

相対的な日付を使用(1週間前):

# sed -n '/'$(date '+%d%b%Y' -d '1 week ago')'/,$ p' access.log | goaccess -a -

指定の日付の範囲で解析:

# sed -n '/5Nov2010/,/5Dec2010/ p' access.log | goaccess -a -

データの直近5日間のみ残します:

# goaccess access.log --keep-last=5

仮想ホスト

仮想ホストやサーバーブロック (%v) を要求フィールドに前置するには--concat-vhost-reqを使ってください。

仮想ホストを手動で追記:

# awk '$8=$1$8' access.log | goaccess -a -

仮想ホストの一覧を除外:

# grep -v "`cat exclude_vhost_list_file`" vhost_access.log | goaccess -

ファイルと状態コードとボット

指定されたページの種類のみを解析(html、htm、php):

# awk '$7~/.html|.htm|.php/' access.log | goaccess -

拡張子なしのページ閲覧を解析:

# awk '$7!~/..*$/' access.log | goaccess -

単一の状態コードで絞り込み(例:500):

# awk '$9~/500/' access.log | goaccess -

複数の状態コードで絞り込み(3xxないし5xx):

# tail -f -n +0 access.log | awk '$9~/3[0-9]{2}|5[0-9]{2}/' | goaccess -o out.html -

ボットの通信量を推計:

# tail -F -n +0 access.log | grep -i --line-buffered 'bot' | goaccess -

サーバー

GoAccessを低いCPUの優先度で実行:

# nice -n 19 goaccess -f access.log -a

遠隔サーバーからログをパイプ:

# ssh -n root@server 'tail -f /var/log/apache2/access.log' | goaccess -

補足: GoAccessが標準入力から読めるようにするにはSSHに-nが必須です。 認証にはSSH鍵を使ってください。

漸進的ログ処理

GoAccessはデータをディスクに永続化し、それから再び取り出して新しいデータに追記することで、漸進的にログを処理できます。 GoAccessはinode、最後の解析された行、ファイル毎の最後の時間記録を把握しています。

附記:inodeが合致しなければ、全行が構文解析されます。 合致すれば、残りの行が読まれ計数/時間記録が更新されます。 保管された時間記録以下の時間記録を持つ履歴は飛ばされます。 パイプされたデータは読まれた最後の行の時間記録を基準に扱われます。

警告:パイプされたデータは重複する項目を生成するかもしれませんが、これは複数の連続する行が同じ時間記録を共有することがあるためです。 最良慣習は直接GoAccessで解析し、漸次の処理のためパイプしないことです。

先月のログを残置:

# goaccess access.log.1 --persist

先月のログを追記して保持:

# goaccess access.log --restore --persist

永続化されたデータのみ読み取り:

# goaccess --restore

補足

GoAccessは処理対象の全てのファイル(ファイルが同じパーティションにあるものとしています)のiノードを把握しており、 それに加えてログからそれぞれのファイルの解析された最後の行数と、 解析された最後の行のタイムスタンプを含むデータスニペットの抽出を行っています。 例:inode:29627417|line:20012|ts:20171231235059

最初にスニペットが解析されたログと照合するか比較し、 もし合っていればログが劇的に変化していないものとします。 例えば末尾の空行が切り詰められていないといったことです。 iノードが現在のファイルに照合しなければ全ての行を解析します。 現在のファイルがiノードに照合した場合ファイルの残りを読み、 解析済みの行数とタイムスタンプを更新します。 もう1つ注意が必要なのは、 タイムスタンプが格納されているタイムスタンプより若いログの行は解析されないということです。

パイプされたデータは最後に読んだ行のタイムスタンプに基づいて扱われます。 例えばタイムスタンプが格納されているものより古いものを見付けるまで、 入ってくる全てのエントリを解析後に無視します。

例えば、

// 先月のアクセスログ
# goaccess access.log.1 --persist

として、次のように読み込みます。

// この月のアクセスログを追記し新しいデータを保存します。
# goaccess access.log --restore --persist

(新しいデータを解析することなく)永続化されたデータのみを読むには次のようにします。

# goaccess --restore

補足

実時間HTMLレポートのそれぞれの活性パネルには合計360個ないし50個の項目が含まれます。 項目数はmax-itemsを使って調節できます。 HTML、CSV、JSON出力については1パネルにつき、 366項目の既定値より大きい最大値を入れることができます。

ヒットとはリクエストのことで、 例えば10リクエストは10ヒットと同じです。 特にIP、日付、ユーザーエージェントが同じHTTPリクエストは1つの正味の訪問者と見なします。

ヂュアルスタック対応を有効にしたい場合は、既定の--addr=0.0.0.0の代わりに--addr=::を使ってください。

生成されたレポートはWebSocketサーバーへの再接続を試み、 最初は1秒後でその後は指数関数的な間隔で試行されます。 20回試行は繰り返されます。

バグ

バグを発見したと思ったら goaccess@prosoftcorp.com まで私にEメールを送るか、 https://github.com/allinurl/goaccess/issues のイシュートラッカーを使ってください。

作者

Gerardo Orellana <hello@goaccess.io> 詳細や新しいリリースについては https://goaccess.io にお越しください。

GNU+Linux 2026年7月 goaccess(1)