goaccess了,它是一个日志分析工具,并不只是为nginx使用的,你也可以用它来分析apache,具有解析速度快,使用简单,能生成json,html,csv等特点。

1.goaccess的基本安装

wget http://tar.goaccess.io/goaccess-1.1.tar.gz

yum install glib2 glib2-devel GeoIP-devel ncurses-devel

tar xvf goaccess-1.1.tar.gz -C /usr/local

cd /usr/local/

cd goaccess-1.1/

./configure --enable-geoip --enable-utf8  --with-openssl

make && make install

goaccess -f /var/log/nginx/access.log -a 

lanmp默认使用common log format日志格式

2.日志分析结果的输出的城市显示

wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

gunzip GeoLiteCity.dat.gz

goaccess -f /var/log/nginx/access.log  --log-format="%h %^[%d:%t %^] \"%r\" %s %b \"%R\" \"%u\"" --date-format="%d/%b/%Y" --time-format=%H:%M:%S -a --geoip-database=/usr/local/goaccess-1.1/GeoLiteCity.dat  > /tmp/nginx-log-`date +%F-%H-%M-%S`.html

其中log format依实际nginx的格式自己设定,如果nginx的log format为默认,可以使用goaccess中推荐的common log format日志格式设置,如果nginx的日志中有使用引号,在命令行中须使用\进行转义

如果nginx格式自己有变动,可以依据https://goaccess.io/man对命令行中的格式进行自定义

goaccess命令中的相关参数命令可以阅读https://github.com/allinurl/goaccess中的详细解释

--geoip-database=/usr/local/goaccess-1.1/GeoLiteCity.dat此条参数为输出时加载GeoLiteCity.dat的数据,goaccess中默认使用的geoip数据不全,只能显示到country,不能显示到city。

3.使用mutt和msmtp将生成的html文件自动发送至邮箱

配置msmtp,只需要在用户根目录下创建.msmtprc 文件添加如下配置文件即可,msmtp主要配置发件的服务器地址,以及认证信息

yum -y install mutt msmtp
[root@iZ25b31bdp0Z tmp]# cat /root/.msmtprc

defaults

tls on

logfile /var/log/msmtp/msmtp.log

account default

host smtp..com                          

port                                          //不同的邮箱的smtp端口可能不一样,自行去邮箱官网查询

from marility@.com          //发件人的邮箱

auth login                                    //授权选择login就可以

tls off

user marility@.com          //邮箱用户

password PASSWORD              //这处PASSWORD密码为邮箱smtp的授权码,不是网页邮件登陆密码,此处密码为明文,也可以使用gpg2进行加密,详细设定可以查看文尾
[root@iZ25b31bdp0Z tmp]# cat /root/.muttrc

set sendmail="/usr/bin/msmtp"            

set use_from=yes

set realname="marility"                                     //邮件发送时显示的用户名

set from=marility@.com                    //发件人的邮箱

set envelope_from=yes

set charset = "utf-8"

set send_charset = "us-ascii:iso-8859-1:gb18030:utf-8"
chmod +x nginxlogsend.sh

echo " " | mutt -s "nginx-log-`date +%F-%H-%M-%S`" @qq.com -a /tmp/nginx-log------.html

echo "邮件内容" | mutt –s "邮件标题" 收件人邮箱 –a 附件的路径

4.自动化发送生成的日志分析文件

写一个脚本,在脚本中执行如上两条命令,然后加入到crontab中

vim /root/nginxlogsend.sh

#!/bin/bash
#
# goaccess -f /var/log/nginx/access.log --log-format="%h %^[%d:%t %^] \"%r\" %s %b \"%R\" \"%u\"" --date-format="%d/%b/%Y" --time-format=%H:%M:%S -a --geoip-database=/usr/local/goaccess-1.1/GeoLiteCity.dat > /data/nginx-log.html echo " " | mutt -s "nginx-log-`date +%F-%H-%M-%S`" @qq.com -a /data/nginx-log.html tar zcf /data/nginx-log-`date +%F-%H-%M-%S`.tar.gz /data/nginx-log.html
crontab –e

  * * * /root/nginxlogsend.sh 

5.msmtp密码加密

因为/root/.msmtprc中用户邮箱的smtp的授权码在上述示例中使用的明文,在此不安全。

在msmtp中除了将密码放置于配置文件中,还可以读取gpg2加密文件

5.1生成密钥对

在主机A.B两边各种生成自己的gpg2密钥对

gen –gen-key

依次选择1>0>4096>输入用户信息及解密密码(解密密码很重要,后期解密文件使用)>o

之后提示移动鼠标键盘,在tty中无法使用,在此可以使用dd命令随机写入

dd if=/dev/zero of=/dev/null bs=10 count=10000

5.2查看密钥对并导出自己的公钥

gen2 –K

其中下图中黑色部分为密钥ID

导出密钥格式为gpg2 –a –o 公钥文件名称 –-export 密钥ID

5.3将A机器(A必须为msmtp主机)公钥传给B机器

5.4在B机器上导入A机器公钥

5.5在B机器上将存有密码的文件进行加密

gpg2 –e –r marility msmpasswd

其中marility为A机器上生成密钥时的用户,msmpasswd为存有密码的文件,

执行之后会生成一个msmpasswd.gpg的文件,使用cat查看得出乱码,到达加密效果

5.6将B机器上的加密文件回传到A主机

5.7对加密文件进行解密测试

使用格式为gpg2 –no-tty –-passphrase=A机器上解密密码 –q –d 加密文件

5.8更改/root/.msmtprc中配置,如下

[root@iZ25b31bdp0Z tmp]# cat /root/.msmtprc
defaults
tls on
logfile /var/log/msmtp/msmtp.log account default
host smtp..com
port
from marility@.com
auth login
tls off
user marility@.com
passwordeval gpg2 --no-tty --passphrase=chunlanyy -q -d msmpasswd.gpg ##此处为passwordeval,并非为password

Goaccess的简单使用的更多相关文章

  1. 使用GoAccess构建简单实时日志分析系统

    很早就知道Nginx日志分析工具GoAccess,但之前由于只能静态分析,感觉不太强大.最近发现它能够实时显示报表而且报表也比之前强大很多能做趋势分析.因此果断下载安装.以下是基于CentOS的安装配 ...

  2. goaccess nginx日志分析工具简单使用

    goaccess 是一个比较方便的支持实时的日志分析工具,比较方便,同时安装&&配置简单 安装 centos yum yum install -y goaccess 运行 我的ngin ...

  3. goaccess的安装和使用

    一.简介1.goaccess用于分析apache和nginx日志的强大工具 2.官网:https://goaccess.io 二.安装1.下载goaccess的安装包wget http://tar.g ...

  4. nginx日志分析利器GoAccess

    面试的时候一定会被面到的问题是:给出web服务器的访问日志,请写一个脚本来统计访问前10的IP有哪些?访问前10的请求有哪些?当你领略过goaccess之后,你就明白,这些问题,除了考验你的脚本背诵记 ...

  5. jboss7访问日志功能及使用goaccess工具分析

    网络上虽然很多文章分别讲到jboss7的访问日志如何配置,goaccess工具怎么分析nginx/tomcat等日志.但将两者放在一起即“通过goaccess分析jboss访问日志”的倒是没搜索到. ...

  6. 编写一个简单的基于jmespath 的prometheus exporter

    目的很简单,因为系统好多监控指标是通过json 暴露的,并不是标准的prometheus metrics 格式,处理方法 实际上很简单,我们可以基于jsonpath 解析json数据,转换为prome ...

  7. GoAccess日志分析工具

    1.1 GoAccess简介 GoAccess是一个非常良心的开源软件,它的良心之处体现在如下方面: 1)安装简单: 2)操作容易: 3)界面酷炫: GoAccess 官网 https://goacc ...

  8. goaccess 通过jsonpath 转换为prometheus metrics

    goaccess 是一个不错的日志分析工具,包含了json 数据同时支持基于websocket 的实时数据处理,当然我们可以通过jsonpath 的exporter 转换为支持promethues 的 ...

  9. goaccess iis w3c 自定义log 格式参考

    goaccess 支持强大的自定义log 格式,比如我们需要分析iis w3c 格式日志 参考iis w3c 字段 date time s-ip cs-method cs-uri-stem cs-ur ...

随机推荐

  1. Python3.5-20190507-廖老师-自我笔记-迭代

    可以使用for x in 数据 的那么 这个数据就是可迭代对象. 通过计算生成下一个值的数据就是生成器 可以使用next(数据) 来计算出下一个值的数据就是迭代器(生成器属于迭代器) -------- ...

  2. select 1 from ... sql语句中的1解读

    摘自:http://blog.csdn.net/zengcong2013/article/details/48224509 select  1 from ..., sql语句中的1代表什么意思?查出来 ...

  3. Idea JAVA項目的导入JAR包和导出jar包

    一.IDea项目中导入jar包 打开菜单project structure,然后选择modules/dependencies下选择右侧的+,选择jar包目录中的jar文件,导入 二.导出jar包 菜单 ...

  4. (Java多线程系列七)Java内存模型和线程的三大特性

    Java内存模型和线程的三大特性 多线程有三大特性:原子性.可见性.有序性 1.Java内存模型 Java内存模型(Java Memory Model ,JMM),决定一个线程对共享变量的写入时,能对 ...

  5. upc组队赛6 Odd Gnome【枚举】

    Odd Gnome 题目描述 According to the legend of Wizardry and Witchcraft, gnomes live in burrows undergroun ...

  6. html5中利用FileReader来读取文件。

    利用FileReader来读取文件的能够来实现即时预览的效果,这个也是在html5中才有的功能. <!DOCTYPE html> <html lang="en"& ...

  7. jquery 条件搜索某个标签下的子标签

    $("li[name='"+name+"']").find("a[value='" + value + "']").pa ...

  8. 【纯净软件】三款照片EXIF信息删除软件 Clear Exif、JPEG & PNG Stripper、Easy Exif Delete 非专业横向对比

    商业软件:需支付费用后方可使用. 共享软件:需支付费用,但可以先免费试用(有使用期限.功能限制). 免费软件:无需支付费用,无使用期限,无功能限制. 纯净软件:无广告.无联网行为的免费软件. 自由软件 ...

  9. Eureka 系列(07)服务注册与主动下线

    Eureka 系列(07)服务注册与主动下线 [TOC] Spring Cloud 系列目录 - Eureka 篇 在上一篇 Eureka 系列(05)消息广播 中对 Eureka 消息广播的源码进行 ...

  10. shell编程:函数的返回值

    函数的返回值两种形式 return 0-255 0表示成功,1-255表示失败-------通常用于判断 echo 返回一个字符串------------通常用于返回一个执行的结果 return.sh ...