使用GoAccess的Nginx和Apache日志监控

本文概述

  • 你可以使用GoAccess分析哪些指标?
  • 你可以在哪个操作系统上安装?
  • 在Ubuntu上安装GoAccess
  • 在CentOS上安装
  • 在CentOS/Ubuntu上使用Source进行安装
  • 验证安装
  • 使用GoAccess分析Nginx和Apache
  • 通过HTTP实时监控
使用开源实时日志分析器监视和分析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日志监控

文章图片
在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日志监控

文章图片
如果所选文件正在实时更新, 则你会注意到指标在终端上已更新。在这里, 你可以浏览需要分析的指标。
通过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日志监控

文章图片
漂亮的仪表板!
但是, 我不建议在生产中采用这种方式。我确定你不希望有人阅读你的网络服务器日志, 并且你可能希望应用以下限制。
  • 用用户名和密码保护文件
  • 只允许从你的IP访问
  • 使用具有自定义端口的其他URL并将其放在防火墙之后, 以便仅允许的IP /用户可以访问
GoAccess看起来是功能强大的开源日志分析器。它是轻量级且免费的, 请继续尝试。
【使用GoAccess的Nginx和Apache日志监控】你可能也有兴趣签出基于云的日志分析器。

    推荐阅读