日志管理

日志管理學習筆記

日志管理

日志:

歷史事件:時間,地點,人物,事件

日志級別:事件的關鍵性程度,loglevel

系統日志服務:

Sysklogd:centos5之前版本

Klogd:linux kernel記錄內核日志

時間記錄格式:

日期時間 ??主機 ?進程[pid] ??事件內容

C/S 架構:通過TCP或udp協議的服務完成日志記錄傳送,將分布在不同主機的日志實現集中管理

Rsyslog特性:centos6和7

多線程

Udp,tcp,ssl,tlc,relp

Mysql,pgsql,oracle實現日志存儲

強大的過濾器,可實現過濾記錄日志信息中任意部分

自定義輸出格式

ELK:elasticsearch,logstash,kibana

非關系型分布式數據庫

基于Apache軟件基金會jakarta項目lucene

Elasticsearch是個開源分布式搜索引擎

Logstash對日志進行收集、分析,并將其存儲供以后使用

Kibana 可以提供的日志分期友好的web界面

術語,參見man logger

Facility:設施,從功能或程序上對日志進行歸類

Auth ,authpriv,cron,daemon,ftp,kern,lpr,mail,news,security,user,uucp,local0-7,syslog

Priority 優先級別,從低到高排序

Debug,info,notice,warn,err,crit,alert,emerg

程序包:rsyslog

主程序:/usr/sbin/rsyslogd

Centos6 :service rsyslog{start|stop|restart|status}

Centos7 :/usr/lib/systemd/system/rsyslog.service

配置文件:/etc/rsyslog.conf, /etc/rsyslog.d/*.conf

庫文件:/lib/64/rsyslog/*.so

配置文件格式:由三部分組成

MODULES:相關模塊配置

GLOBAL DIRECTIVES:全局配置

RULES:日志記錄相關的規則配置

 

RULES配置格式:facility.priority; facility.priority… ??target

Facility:

*:所有的facility

Facility1,facility2,facility3,..指定的facility

Priority:

*:所有級別

None:沒有級別,即不記錄

PRIORITY:指定級別以上的所有級別

=PRIORITY:僅記錄指定級別的日志信息

Target:

 

文件路徑:通常在在/var/log/,文件路徑前的-表示異步寫入用戶:將日志時間通知給指定的用戶,*表示登錄的所有用戶

日志服務器:@host,把日志送往至指定的遠程服務器記錄

管道:|COMMAND,轉發給其他命令處理

通常的日志格式:

事件產生的日期時間 主機 進程 :事件內容

如:/var/log/messages,cron,secure

配置rsyslog成為日志服務器

###MODULES####

#Provides UDP syslog reception

$ModLoad imudp

$UDPServerRun 514

#Provides TCP syslog reception

$ModLoad imudp

$TCPServerRun 514

其它的日志文件

/var/log/secure:系統安裝日志,文本格式,應周期性分析

/var/log/btmp:當前系統上,用戶的失敗嘗試登錄相關的日志信息,二進制格式,lastb命令進行查看

/var/log/wrmp:當前系統上,用戶正常登錄系統的相關日志信息,二進制格式,last命令可以查看

/var/log/dmesg:系統引導過程中的日志信息,文本格式

文本查看工具查看

專用命令dmesg查看

/var/log/messages:系統中大部分的信息

/var/log/anaconda:anaconda的日志

 

Systemd統一管理所有unit的啟動日志。帶來的好處就是,可以只用journalctl一個命令,查看所有日志(內核日志和應用日志)。日志的配置文件/erc/systemd/journald.conf

Journalctl用法

查看所有日志(默認情況下,只保存本次啟動的日志)

Journalctl

查看內核日志(不顯示應用日志)

Journalctl -k

查看系統本次啟動的日志

Journalctl -b

Journalctl -b -0

查看上一次啟動的日志(需要更改設置)

Journalctl -b -1

查看指定服務的日志

Journalctl /usr/lib/systemd/systemd

查看指定進程的日志

Journalctl _PID=1

查看某個指定用戶的日志

Journalctl _UID=33 –since today

查看某個路徑的腳本的日志

Journalctl /usr/bin/bash

查看某個unit的日志

Journalctl-u nginx.service

Journalctl -u nginx.service -since today

實時滾動某個unit的最新日志

Journalctl -u nginx.service -f

合并顯示多個unit的日志

Journalctl -u nginx.service -u php-fpm.service –since today

查看指定優先級的日志,共有8級

0:emerg

1:alert

2:crit

3:err

4:warning

5:notice

6:info

7:debug

Journalctl -p err ?-b

日志默認分頁輸出,–no-pager改為正常的標準輸出

Journalctl –no-pager

以JSON格式(單行)輸出

Journalctl -b -u nginx.service -o json

以JSON格式(多行)輸出,可讀性更好

Journalctl -b -u nginx.serviceqq -o json -pretty

顯示日志占據的硬盤空間

Journalctl –disk-usage

指定日志文件占據的最大空間

Journalctl –vacuum-size=1G

指定日志文件保存多久

Journalctl ?–vacuum-time=1yesrs

  • 準備MYSQL Server
  • 在mysql server上授權rsyslog能連接至當前服務器

Mysql > GRANT ALL ON Syslog.* TO ‘USER’@’HOST’

IDENTIFIED BY ‘PASSWLRD’;

  • 在rsyslog服務器上安裝mysql模塊相關的程序包

Yum install rsyslog-mysql

  • 為rsyslog創建數據庫及表

Mysql -uUSERNAME -hHOST -pPASSWORD<

/usr/share/doc/rsyslog-7.4.7/mysql-createDB.sql

  • 配置rsyslog將日志保存到mysql中

###MODULES####

$ModLoad ommysql

###RULES####

Facility.priority ??:ommysql:DBHOST,DBNAME,DBUSER,PASSWORD

 

 

 

示例:通過loganalyzer 展示數據庫中的日志

  • 在rsyslog服務器上準備amp或nmp組合

Yum install httpd php php-mysql hph-gd

(2)安裝loganalyer

Tar xf loganalyzer-4.1.5.tar.gz

Cp -a loganalyzer-4.1.5/src

/var/www/html/loganalyzer

Touch config.php

Chmod 666 config.php

  • 配置loganalyzer

Systemctl start httpd

http://HOST/loganalyzer

  • 安全加強

Cd /var/www/html/loganalyzer

Chmod 644 config.php

Logrotate日志存儲

Logrotate程序是一個日志文件管理工具。用來把舊的日志文件刪除,并創建新的文件,稱為日志轉儲或滾動??梢愿鶕罩疚募拇笮。部梢愿鶕涮鞌祦磙D儲,這時過程一般通過cron程序來執行

配置文件時/etc/logrotate.conf

主要參數如下

Compress通過gzip壓縮轉儲以后的日志

Nocompress不需要壓縮時,用這個參數

Copytruncate用于還在打開中的日志文件,把當前日志備份并截斷

Nocopytruncate備份日志文件但是不截斷

Create mode ownergroup 轉儲文件,使用指定的文件模式創建新的日志文件

Nocreate 不建立新的日志文件

Delaycompress和compress一起使用時,轉儲的日志文件到下一次轉儲時才壓縮

Nodelaycompress覆蓋delaycompress選項,轉儲并壓縮

Error addres 轉儲時的錯誤信息發送到指定的Email地址

Ifempty 即使是空文件也轉儲,是缺省項

Notifempty如果是空文件的話,不轉儲

Mail address 把轉儲的日志文件發送到指定的Email地址

Nomail轉儲時不發送日志文件

Olddir directory 轉儲后的日志文件放入指定的目錄,必須和當前日志文件在同一個文件系統

Noolddir 轉儲后的日志文件和當前日志文件放在同一個目錄下

Prerotate/endscript在轉儲以前需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行

Postrotate/endscript在轉儲以后需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行

Daily指定轉儲周期為每天

Weekly指定轉儲周期為每周

Monthly指定轉儲周期為每月

Size大小 指定日志文件刪除之前轉儲的次數,0指沒有備份,5指保留5個備份

Missingok 如果日志不存在,提示錯誤

Nomissingo如果日志不存在,繼續下一次日志,不提示錯誤

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/91496

(0)
sunchunjiangsunchunjiang
上一篇 2018-02-07 16:29
下一篇 2018-02-08 12:01

相關推薦

  • mount中-o的選項利用

        Mount下—-o 選項的各項用處  mount-o 選項 sync,async 同步模式,異步模式(defaults)         此選項的默認模式為異步模式。在同步模式下,內存的任何修改都會實時的同步到硬盤當中,這種模式的…

    2017-08-19
  • 啟動和內核管理

    一、Linux組成     Linux: kernel+rootfs         kernel: 進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能       &nb…

    Linux干貨 2016-09-18
  • 文件相關操作練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限: 2、編輯/etc/group文件,添加組hadoop: 3、手動編輯/etc/passwd文件新增一行,添加用戶hadoop,其基本組ID為hadoop組的id號;其家目錄為/home/hadoop: 4、復制/etc/sk…

    2017-11-17
  • 高可用keepalived

    21.高可用之keepalived                keepalived實現wrrp熱網關備份:        配置網關上的keepalived,配置文件如下         …

    2017-05-15
  • Linux基礎命令語法

    Linux基礎命令語法

    Linux干貨 2018-03-11
  • Linux開班典禮

    心得體會和近一周學習計劃

    2018-03-26
欧美性久久久久