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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM