开发一个系统,大家第一时间应该想到的就是日志。这也是很多架构师要考虑的事情。
比如,我有上万台机器的话,每台机器都会产生日志。如果其中有 10 台机器中的程序报了一个 error,你不可能在登录上去看吧。而且,登录系统都是需要临时审批权限的。所以,我们要有更高效的日志管理办法。
有人可能会想到 ELK,是的,ELK 确实牛。但是对于一些小公司来说 ELK 就太笨重了。而且针对 Nginx 或者 Apache,我们需要其他的日志可视化显示和监控系统,那么 GoAccess 就是一个不错的选择!
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 日志文件详情并监控它。
: » GoAccess 实现 Nginx access 日志可视化显示和实时监控
原创文章,作者:bd101bd101,如若转载,请注明出处:https://blog.ytso.com/252826.html