使用GoAccess的Nginx和Apache日志监控

本文概述

使用开源实时日志分析器监视和分析Web服务器日志– GoAccess

Web故障排除很有趣, 如果你没有使用正确的工具, 可能会令人沮丧。

如果你正在支持繁忙的网站, 那么通常需要分析和监视Web服务器日志以进行性能和容量规划。这对于Web工程师至关重要。

可以手动检查较小的日志大小是可以的, 但是如果文件较大, 那么遍历数百万行以找到指标并不是一件有趣的事情。

因此, 你需要使用工具来简化管理员的工作并提高工作效率。

GoAccess是一种轻量级的开源日志分析器, 它支持多种日志格式, 并且可以与以下任何一种一起使用。

  • Nginx的
  • Apache HTTP
  • AWS ELB, S3, CloudFront
  • 谷歌云存储

你可以使用GoAccess分析哪些指标?

你几乎在日志中捕获的所有内容。给你一个想法:

  • 需要时间来处理请求
  • 访客IP, DNS, 主机
  • 访客的浏览器和操作系统详细信息
  • 404未找到详细信息
  • 最高要求/访客
  • 带宽
  • 静态文件
  • 地理位置
  • 状态码
  • 和更多..

寻找要监控你站点的这些指标吗?

好!

你可以在哪个操作系统上安装?

GoAccess只有一个依赖项-ncurses。如果可以安装, 则可以在任何操作系统上使用它。

可在分发包中用于:

  • 的Ubuntu
  • Debian
  • 软呢帽
  • CentOS的
  • FreeBSD/OpenBSD
  • 松弛软件
  • Arch Linux
  • Gentoo
  • MacOS的
  • Windows通过Cygwin

但是, 你也可以从源代码构建或与Docker一起使用。

如果你是Docker的新手, 我建议你学习此Docker Mastery课程。

使用GoAccess的Nginx和Apache日志监控2

在Ubuntu上安装GoAccess

  • 以root特权登录到Ubuntu服务器
  • 使用apt-get如下安装
apt-get install goaccess

简单。

在CentOS上安装

登录服务器并执行yumcommand

yum install goaccess

在CentOS/Ubuntu上使用Source进行安装

喜欢从源头编译吗?

步骤如下。

  • 如果使用CentOS, 请安装以下依赖项
yum install gcc ncurses-devel glib2-devel geoip-devel tokyocabinet-devel
  • 如果使用Ubuntu
apt-get install libncursesw5-dev libgeoip-dev make
  • 使用wget下载最新软件包
wget http://tar.goaccess.io/goaccess-1.2.tar.gz
  • 解压缩下载的文件
gunzip –c goaccess-1.2.tar.gz | tar xvf –
  • 转到新创建的文件夹, 该文件夹是在提取后获得的
cd goaccess-1.2
  • 用下面的命令编译
./configure --enable-geoip=legacy --enable-utf8
make
make install

做得好, 你已经安装了GoAccess, 并且已全部设置好以分析日志。

验证安装

安装完成后, 只需在命令提示符下执行goaccess, 它就会打印出如下用法。

[[email protected] goaccess-1.2]# goaccess 
GoAccess - 1.2
Usage: goaccess [filename] [ options ... ] [-c][-M][-H][-q][-d][...]
The following options can also be supplied to the command:
Log & Date Format Options
  --date-format=<dateformat>      - Specify log date format. e.g., %d/%b/%Y
  --log-format=<logformat>        - Specify log format. Inner quotes need to be
                                    escaped, or use single quotes.
  --time-format=<timeformat>      - Specify log time format. e.g., %H:%M:%S
User Interface Options
  -c --config-dialog              - Prompt log/date/time configuration window.
  -i --hl-header                  - Color highlight active panel.
  -m --with-mouse                 - Enable mouse support on main dashboard.
  --color=<fg:bg[attrs, PANEL]>   - Specify custom colors. See manpage for more
                                    details and options.
  --color-scheme=<1|2|3>          - Schemes: 1 => Grey, 2 => Green, 3 => Monokai.
  --html-custom-css=<path.css>    - Specify a custom CSS file in the HTML report.
  --html-custom-js=<path.js>      - Specify a custom JS file in the HTML report.
  --html-prefs=<json_obj>         - Set default HTML report preferences.
  --html-report-title=<title>     - Set HTML report page title and header.
  --json-pretty-print             - Format JSON output w/ tabs & newlines.
  --max-items                     - Maximum number of items to show per panel.
                                    See man page for limits.
  --no-color                      - Disable colored output.
  --no-column-names               - Don't write column names in term output.
  --no-csv-summary                - Disable summary metrics on the CSV output.
  --no-progress                   - Disable progress metrics.
  --no-tab-scroll                 - Disable scrolling through panels on TAB.
  --no-html-last-updated          - Hide HTML last updated field.
Server Options
  --addr=<addr>                   - Specify IP address to bind server to.
  --daemonize                     - Run as daemon (if --real-time-html enabled).
  --fifo-in=<path>                - Path to read named pipe (FIFO).
  --fifo-out=<path>               - Path to write named pipe (FIFO).
  --origin=<addr>                 - Ensure clients send the specified origin header
                                    upon the WebSocket handshake.
  --port=<port>                   - Specify the port to use.
  --real-time-html                - Enable real-time HTML output.
  --ssl-cert=<cert.crt>           - Path to TLS/SSL certificate.
  --ssl-key=<priv.key>            - Path to TLS/SSL private key.
  --ws-url=<url>                  - URL to which the WebSocket server responds.
File Options
  -                               - The log file to parse is read from stdin.
  -f --log-file=<filename>        - Path to input log file.
  -l --debug-file=<filename>      - Send all debug messages to the specified
                                    file.
  -p --config-file=<filename>     - Custom configuration file.
  --invalid-requests=<filename>   - Log invalid requests to the specified file.
  --no-global-config              - Don't load global configuration file.
Parse Options
  -a --agent-list                 - Enable a list of user-agents by host.
  -d --with-output-resolver       - Enable IP resolver on HTML|JSON output.
  -e --exclude-ip=<IP>            - Exclude one or multiple IPv4/6. Allows IP
                                    ranges e.g. 192.168.0.1-192.168.0.10
  -H --http-protocol=<yes|no>     - Set/unset HTTP request protocol if found.
  -M --http-method=<yes|no>       - Set/unser HTTP request method if found.
  -o --output=file.html|json|csv  - Output either an HTML, JSON or a CSV file.
  -q --no-query-string            - Ignore request's query string. Removing the
                                    query string can greatly decrease memory
                                    consumption.
  -r --no-term-resolver           - Disable IP resolver on terminal output.
  --444-as-404                    - Treat non-standard status code 444 as 404.
  --4xx-to-unique-count           - Add 4xx client errors to the unique visitors
                                    count.
  --all-static-files              - Include static files with a query string.
  --crawlers-only                 - Parse and display only crawlers.
  --date-spec=<date|hr>           - Date specificity. Possible values: `date`
                                    (default), or `hr`.
  --double-decode                 - Decode double-encoded values.
  --enable-panel=<PANEL>          - Enable parsing/displaying the given panel.
  --hour-spec=<hr|min>            - Hour specificity. Possible values: `hr`
                                    (default), or `min` (tenth of a min).
  --ignore-crawlers               - Ignore crawlers.
  --ignore-panel=<PANEL>          - Ignore parsing/displaying the given panel.
  --ignore-referer=<NEEDLE>       - Ignore a referer from being counted. Wild cards
                                    are allowed. i.e., *.bing.com
  --ignore-status=<CODE>          - Ignore parsing the given status code.
  --num-tests=<number>            - Number of lines to test. >= 0 (10 default)
  --process-and-exit              - Parse log and exit without outputting data.
  --real-os                       - Display real OS names. e.g, Windows XP, Snow
                                    Leopard.
  --sort-panel=PANEL, METRIC, ORDER - Sort panel on initial load. For example:
                                    --sort-panel=VISITORS, BY_HITS, ASC. See
                                    manpage for a list of panels/fields.
  --static-file=<extension>       - Add static file extension. e.g.: .mp3.
                                    Extensions are case sensitive.
GeoIP Options
  -g --std-geoip                  - Standard GeoIP database for less memory
                                   consumption.
  --geoip-database=<path>         - Specify path to GeoIP database file. i.e.,                                     GeoLiteCity.dat, GeoIPv6.dat ...
Other Options
  -h --help                       - This help.
  -V --version                    - Display version information and exit.
  -s --storage                    - Display current storage method. e.g., B+
                                    Tree, Hash.
  --dcf                           - Display the path of the default config
                                    file when `-p` is not used.
Examples can be found by running `man goaccess`.
For more details visit: http://goaccess.io
GoAccess Copyright (C) 2009-2016 by Gerardo Orellana
[[email protected] goaccess-1.2]#

使用GoAccess分析Nginx和Apache

分析access.log的最快方法之一是使用-fparameter。

例如:

goaccess -f access.log

上面, 我指示打开文件access.log。这将向你显示整个仪表板和以下15个部分。

  • 每天的不重复访客
  • 要求的档案
  • 静态请求(字体, 图像, pdf等)
  • 找不到(404)请求
  • 访客的IP /主机详细信息
  • 访客的作业系统
  • 浏览器详细资料
  • 时间分配
  • 推荐人
  • HTTP状态码
  • 地理位置
使用GoAccess的Nginx和Apache日志监控4

如果所选文件正在实时更新, 则你会注意到指标在终端上已更新。在这里, 你可以浏览需要分析的指标。

通过HTTP实时监控

GoAccess使你可以将输出重定向到HTML文件, 你可以将其用作实时监视。当你不想每次需要验证某些指标时都登录到服务器时, 这非常方便。

goaccess /var/log/nginx/access.log -o /var/www/geekflare.com/htdocs/real-time.html --log-format=COMBINED --real-time-html

上面, 我将输出重定向到htdocs下可用的real-time.html文件。由于是htdocs, 因此只要需要查看指标, 我都可以从https://geekflare.com/real-time.html访问此文件。

使用GoAccess的Nginx和Apache日志监控6

漂亮的仪表板!

但是, 我不建议在生产中采用这种方式。我确定你不希望有人阅读你的网络服务器日志, 并且你可能希望应用以下限制。

  • 用用户名和密码保护文件
  • 只允许从你的IP访问
  • 使用具有自定义端口的其他URL并将其放在防火墙之后, 以便仅允许的IP /用户可以访问

GoAccess看起来是功能强大的开源日志分析器。它是轻量级且免费的, 请继续尝试。

你可能也有兴趣签出基于云的日志分析器。

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?