前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >带命令行控制台的轻量级日志分析工具-GoAccess

带命令行控制台的轻量级日志分析工具-GoAccess

作者头像
公众号: 云原生生态圈
发布2020-07-28 15:06:11
5740
发布2020-07-28 15:06:11
举报
文章被收录于专栏:云原生生态圈云原生生态圈

使用场景

对于想在短时间内快速的生成小站点访问情况的统计数据,一般会选择使用sedawkgrep三剑客,但是对于要对数据的展示就需要填充到已有开发面板中,比较耗时费力,当然对于也可以使用ELK/EFK专业日志分析平台来做,但搭建缓慢,服务笨重,不是小站点的首选,这里介绍一个使用C语言研发的轻量级日志分析工具GoAccess[1],性能稳定,可作为小站点日志分析统计的首选。

基础功能

GoAccess随着不断地版本迭代,其支持的功能也越来与丰富、越来越能满足基本的需求,下面列举几个基础功能,更多可参见GoAccess Feature[2]

  • 可以实时分析几乎所有的web日志格式,并且还支持自定义日志格式
  • 满足日常需要关注的基础指标
  • 安装和部署简单,只需要依赖一个ncurses
  • 可以在命令行终端试试显示统计报告,也可以输出到静态html页面展示分析统计数据报告。
  • 支持扩展的模块...

实践说明

安装goaccess仅有需要依赖的ncurses库

代码语言:javascript
复制
sudo apt-get install libncursesw5-dev

当需要把Nginx访问日志中的geoip给统计导入到新的文件中时,需要GeoIP库的支持

代码语言:javascript
复制
$ wget https://github.com/maxmind/geoip-api-c/releases/download/v1.6.11/GeoIP-1.6.11.tar.gz
$ tar -xzvf GeoIP-1.6.11.tar.gz
$ cd GeoIP-1.6.11
$ ./configure
$ make
$ make install

完成Goaccess依赖的环境之后,开始构建goacess工具

代码语言:javascript
复制
wget http://tar.goaccess.io/goaccess-1.2.tar.gz
tar xf goaccess-1.2.tar.gz && cd goaccess-1.2/
./configure --enable-utf8 --enable-geoip=legacy --with-openssl
make && make install

我们使用Nginx的日志为例,通过解析nginx访问日志进行数据的展示,为了能准确的获取数据,下面提供一下测试时使用的nginx日志格式,log_format配置在nginx.confhttp配置段中:

代码语言:javascript
复制
# 配置nginx访问日志格式
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$request_body"';

下面配置安装好GoAccess之后的配置文件:

代码语言:javascript
复制
root@master:/webserver/nginx18# cat /etc/goaccess.conf |egrep -v '^$|^#'
time-format %H:%M:%S
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
...
# 上面的三行添加到配置文件中,其余的位置不需要改动

下面对部分的日志格式选项进行说明,更多的选项的使用可以直接参考官方文章自定义日志格式部分[3]

代码语言:javascript
复制
%t  匹配time-format格式的时间字段
%d  匹配date-format格式的日期字段
%h  host(客户端ip地址,包括ipv4和ipv6)
%r  来自客户端的请求行
%m  请求的方法
%U  URL路径
%H  请求协议
%s  服务器响应的状态码
%b  服务器返回的内容大小
%R  HTTP请求头的referer字段
%u  用户代理的HTTP请求报头
%D  请求所花费的时间,单位微秒
%T  请求所花费的时间,单位秒
%^  忽略这一字段

在配置好之后,我们启动一个使用该nginx日志格式的服务proxy.devopsman.cn,配置文件如下:

代码语言:javascript
复制
server {
 server_name proxy.devopsman.cn;
 listen 80;
        access_log logs/proxy.devopsman.cn.log;
 location / {
  proxy_set_header Host $host;
  proxy_set_header X-Real_IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_pass http://192.168.99.1;
 }
}

通过命令行进行访问该服务,并且启动GoAccess的命令行控制台模式

代码语言:javascript
复制
curl http://proxy.devopsman.cn
goaccess -a -d -f ./proxy.devopsman.cn.log -p /etc/goaccess.conf
代码语言:javascript
复制
root@master:/webserver/nginx18/logs# pwd
/webserver/nginx18/logs
goaccess -a -d -f ./proxy.devopsman.cn.log -p /etc/goaccess.conf -o ${proxy.devopsman.cn}/index.html # goaccess分析的文件输出到proxy.devopsman.cn的目录下,通过服务直接访问
goaccess -a -d -f ./proxy.devopsman.cn.log -p /etc/goaccess.conf -o ${proxy.devopsman.cn}/index.html --real-time-html --daemonize
# 也可以通过以上命令实时分析日志文件,渲染到html页面

Reference

[1]

Goaccess: https://goaccess.io/

[2]

GoAccess Feature: http://goaccess.io/features

[3]

GoAccess custom-log: http://goaccess.io/man#custom-log

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生生态圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用场景
  • 基础功能
  • 实践说明
    • Reference
    相关产品与服务
    Elasticsearch Service
    腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档