Java基础、中级、高级、架构面试资料

GoAccess 实现 Nginx access 日志可视化显示和实时监控

NDIS herman 3112浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

开发一个系统,大家第一时间应该想到的就是日志。这也是很多架构师要考虑的事情。

比如,我有上万台机器的话,每台机器都会产生日志。如果其中有 10 台机器中的程序报了一个 error,你不可能在登录上去看吧。而且,登录系统都是需要临时审批权限的。所以,我们要有更高效的日志管理办法。

有人可能会想到 ELK,是的,ELK 确实牛。但是对于一些小公司来说 ELK 就太笨重了。而且针对 Nginx 或者 Apache,我们需要其他的日志可视化显示和监控系统,那么 GoAccess 就是一个不错的选择!

GoAccess 实现 Nginx access 日志可视化显示和实时监控

GoAccess 是什么?

GoAccess 是一个采用c语言开发的来分析统计Web服务器的访问日志的工具,速度非常快,可即时生成自定义的统计报表,基于命令行操作。

GoAccess 的安装

官方给的 GoAccess 安装教程非常的简单,只需下载、提取和编译即可。

wget https://tar.goaccess.io/goaccess-1.3.tar.gz
tar -xzvf goaccess-1.3.tar.gz
cd goaccess-1.3/
./configure --enable-utf8 --enable-geoip=legacy
make
make install

GoAccess 的配置

GoAccess 拥有多个配置选项。获取完整的最新配置选项列表,请运行:./configure —help。

  • –enable-debug:使用调试标志编译且关闭编译器优化。
  • –enable-utf8:宽字符支持。依赖 Ncursesw 模块。
  • –enable-geoip=<legacy|mmdb>:地理位置支持。依赖 MaxMind GeoIP 模块。 legacy 将使用原始 GeoIP 数据库。 mmdb 将使用增强版 GeoIP2 数据库。
  • –enable-tcb=<memhash|btree>:Tokyo Cabinet 存储支持。 memhash 将使用 Tokyo Cabinet 的内存哈希数据库。btree 将使用 Tokyo Cabinet 的磁盘 B+Tree 数据库。
  • –disable-zlib:禁止在 B+Tree 数据库上使用 zlib 压缩。
  • –disable-bzip:禁止在 B+Tree 数据库上使用 bzip2 压缩。
  • –with-getline:使用动态扩展行缓冲区用来解析完整的行请求,否则将使用固定大小(4096)的缓冲区。
  • –with-openssl:使 GoAccess 与其 WebSocket 服务器之间的通信能够支持 OpenSSL。

GoAccess 的使用

安装完成 GoAccess 后,使用它就变得很简单。

goaccess xttblog.access.log -o ../html/report.html --real-time-html --time-format='%H:%M:%S' --date-format='%d/%b/%y' --log-format=COMBINED

执行上面这个指令,就开启了 GoAccess。其中 xttblog.access.log 是我的日志位置,日志文件名。-o ../html/report.html 是将日志文件输出到这个 html 文件中。–real-time-html 就是实时的输出到 html 文件。–time-format 代表时间格式。–date-format 日期格式。–log-format 日志格式。

其中,日志格式共有 10 种:

  • COMBINED     | 联合日志格式
  • VCOMBINED    | 支持虚拟主机的联合日志格式
  • COMMON       | 通用日志格式
  • VCOMMON      | 支持虚拟主机的通用日志格式
  • W3C          | W3C 扩展日志格式
  • SQUID        | Native Squid 日志格式
  • CLOUDFRONT   | 亚马逊 CloudFront Web 分布式系统
  • CLOUDSTORAGE | 谷歌云存储
  • AWSELB       | 亚马逊弹性负载均衡
  • AWSS3        | 亚马逊简单存储服务 (S3)

日志/日期/时间 格式说明如下:

  • –time-format <timeformat>:参数 time-format 后跟随一个空格符,指定日志的时间格式,包含普通字符与特殊格式说明符的任意组合。他们都由百分号 (%)开始。参考 `man strftime`。 %T 或者 %H:%M:%S.
  • –date-format <dateformat>:参数 date-format 后跟随一个空格符,指定日志的日期格式,包含普通字符与特殊格式说明符的任意组合。他们都由百分号 (%)开始。参考 `man strftime`。
  • –log-format <logformat>:参数 log-format 后跟随一个空格符或者制表分隔符(\t),用于指定日志字符串格式。

然后,我们再在 nginx 的配置文件中加入下面的一段配置:

location /report.html {
  alias /usr/local/openresty/nginx/html/report.html;
}

然后,重新加载配置文件后,访问 report.html 即可查看到 nginx 的 access 日志文件详情并监控它。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » GoAccess 实现 Nginx access 日志可视化显示和实时监控