如何部署网络日志分析工具GoAccess?

Linux基础

1 基础知识

1.1 简介

GoAccess是一个开源的实时网络日志分析器和交互式查看器,可在Linux终端或浏览器中运行。

1.2 软件功能

– 为系统管理员提供可视化的服务器报告
– 为系统管理员提供快速且有价值的HTTP统计

1.3 软件特征

– 快速、实时(由于基于C语言编写,可在毫秒或秒内完成更新)
– 只依赖于ncurses
– 兼容几乎所有的Web日志格式(Apache、Nginx、Amazon S3、Elastic Load Balancing、CloudFront等)
– 只需要配置日志格式即可运行
– 美丽的终端和引导仪表板(可自定义色彩方案)

2 实践部分

2.1 环境配置

2.1.1 系统环境信息

OS = CentOS 7.4 x86_64
IP Address =10.168.0.85

2.1.2 Web环境配置

LNMP环境配置请参阅(本章以该环境作为例子),
https://www.cmdschool.org/archives/1
LAMP环境配置请参阅,
https://www.cmdschool.org/archives/361

2.2 编译的安装

2.2.1 安装编译工具

yum -y install gcc gcc-c++ make expat-devel

2.2.2 下载软件包

cd ~;
wget http://tar.goaccess.io/goaccess-1.2.tar.gz

2.2.3 加压软件包

tar -xzvf goaccess-1.2.tar.gz

2.2.4 预编译软件包

cd goaccess-1.2/
./configure --bindir=/usr/sbin/ \
            --sbindir=/usr/sbin/ \
            --sysconfdir=/etc/ \
            --libdir=/usr/lib64/  \
            --mandir=/usr/share/man/ \
            --includedir=/usr/include/ \
            --enable-utf8 \
            --enable-geoip=legacy

根据错误提示解决依赖关系:

configure: error:
    *** Missing development files for the GeoIP library

安装需要的软件包:

yum install -y GeoIP-devel

再次运行预编译命令并根据错误提示解决依赖关系:

configure: error:
    *** Missing development libraries for ncursesw

直到见到如下提示,

安装需要的软件包:

yum install -y ncurses-devel

2.2.5 编译软件包

make

2.2.6 安装软件包

make install | tee install.log

2.2.7 验证部署

goaccess -V

信息显示如下:

GoAccess - 1.2.
For more details visit: http://goaccess.io
Copyright (C) 2009-2016 by Gerardo Orellana

2.3 yum安装

2.3.1 配置yum源

yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

2.3.2 安装软件包

yum install -y goaccess

2.3.3 验证部署

goaccess -V

2.4 使用范例

2.4.1 终端输出

goaccess /var/log/nginx/access.log -c

选择数据格式,

如上图所示:
按下回车进入仪表板界面,

2.4.2 静态HTML输出

goaccess /var/log/nginx/access.log -o /var/www/www.cmdschool.org/report.html --log-format=COMMON

访问如下链接你将看到如下页面,

注:以上页面不会实时刷新

2.4.3 实时HTML输出

goaccess /var/log/nginx/access.log -o /var/www/www.cmdschool.org/report.html --log-format=COMMON --real-time-html

注:以上只是命令行范例,如果要实时更新,请继续往下配置。

2.5 配置自动更新环境

2.5.1 发布自动更新的主机名称

goaccess /var/log/nginx/access.log -o /var/www/www.cmdschool.org/report.html --log-format=COMMON --real-time-html --ws-url=www.cmdschool.org

注:
– 我们使用“ws-url”选项发布自动更新的主机名称
– 客户端打开浏览器后会主动与该主机特定端口建立连接自动更新数据
– 如果没有特别定义端口,默认端口是7890

2.5.2 确认命令监听的端口

netstat -antp | grep goaccess

可见如下提示:

tcp        0      0 0.0.0.0:7890            0.0.0.0:*               LISTEN      1506/goaccess

2.5.3 开启端口所需的防火墙

firewall-cmd --permanent --add-port 7890/tcp
firewall-cmd --reload
firewall-cmd --list-all

2.5.4 测试访问

http://www.cmdschool.org/report.html
注:该页面会主动联系www.cmdschool.org的7890端口进行自动更新

参阅文档:
===================
官方首页:
——————-
https://goaccess.io/

官方手册:
——————-
https://goaccess.io/man

安装方法:
——————-
https://goaccess.io/download#distro

使用向导:
——————-
https://goaccess.io/get-started

下载页面:
——————-
https://github.com/allinurl/goaccess/releases

其他日志工具请参阅:
——————-
https://www.keycdn.com/blog/log-analysis-tools/#3-GoAccess
注:可能国内无法访问该页面

没有评论

发表回复

Linux基础
如何配置RHEL 8.x OpenSSH客户端登录自动过期?

1 前言 一个问题,一篇文章,一出故事。 基于服务器安全,笔者需要让OpenSSH客户端在10分钟内 …

Linux基础
如何安装部署SentinelOne EDR?

1 基础知识 1.1 软件公司介绍 SentinelOne,Inc.是一家在纽约证券交易所上市的美国 …

Linux基础
如何配置Ext4的磁盘配额?

1 基础知识 1.1 Disk Quota的概念 Disk Quota用于合理分配有限的磁盘使用空间 …