• Goaccess的简单使用


    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.126.com                          
    
    port 25                                         //不同的邮箱的smtp端口可能不一样,自行去邮箱官网查询
    
    from marility@126.com          //发件人的邮箱
    
    auth login                                    //授权选择login就可以
    
    tls off
    
    user marility@126.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@126.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`" 85362119@qq.com -a /tmp/nginx-log-2016-11-21-14-59-32.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`" 85362119@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
    
    1 0 * * * /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.126.com
    port 25
    from marility@126.com
    auth login
    tls off
    user marility@126.com
    passwordeval gpg2 --no-tty --passphrase=chunlanyy -q -d msmpasswd.gpg ##此处为passwordeval,并非为password
  • 相关阅读:
    Java快速开发框架LML功能菜单管理
    性能测试知多少性能需求分析
    C++学习的方法以及四大名著
    .NET Micro Framework官方库+Controller Area Network
    PostgreSQL学习笔记
    幻风阁|kent.zhu'sBlog对google阅读器共享设计的再讨论
    【数据库事务日志碎片原理分析与方案】分析篇
    Windows 8 RC升级到RTM很顺利
    http://www.cnblogs.com/oneday/archive/2012/08/16/2643039.html
    Visual Studio 2012 Ultimate RTM 体验
  • 原文地址:https://www.cnblogs.com/marility/p/7280061.html
Copyright © 2020-2023  润新知