校園網(wǎng)站頁面設(shè)計(jì)杭州排名優(yōu)化公司
1 日志基本路徑和基礎(chǔ)查看方法
在 Ubuntu 或 Debian 11 系統(tǒng)中,可以通過不同的日志文件來獲取系統(tǒng)日志和內(nèi)核日志。日志常見路徑如下:
- /var/log/syslog:包含系統(tǒng)的整體日志,包括各種系統(tǒng)事件和服務(wù)日志。
- /var/log/auth.log:記錄用戶認(rèn)證和授權(quán)相關(guān)的日志,如登錄、sudo 使用等。
- /var/log/kern.log:內(nèi)核相關(guān)的日志,包括硬件和驅(qū)動(dòng)程序問題。
- /var/log/dmesg:包含內(nèi)核環(huán)緩沖區(qū)的消息,可以用來查看系統(tǒng)啟動(dòng)期間的信息。
說明:這些日志一般都是有多個(gè),這里以kern.log為例,一般從下到上的時(shí)間順序,如下所示:
-rw-r----- 1 syslog adm 1662 2月 6 06:58 kern.log
-rw-r----- 1 syslog adm 366757 2月 3 00:00 kern.log.1
-rw-r----- 1 syslog adm 6504 1月 25 12:24 kern.log.2.gz
-rw-r----- 1 syslog adm 16436 1月 17 21:31 kern.log.3.gz
-rw-r----- 1 syslog adm 51381 1月 11 23:25 kern.log.4.gz
這里可以使用以下命令查看這些日志文件的內(nèi)容,如下所示:
$cat /var/log/syslog
$cat /var/log/auth.log
$cat /var/log/kern.log
$cat /var/log/dmesg
如果想實(shí)時(shí)監(jiān)視日志文件的更新,可以使用 tail 命令加上 -f 參數(shù)如下:
$tail -f /var/log/syslog
$tail -f /var/log/auth.log
$tail -f /var/log/kern.log
$tail -f /var/log/dmesg
2 日志查看和過濾工具
除了直接查看日志文件之外,還有一些常用的工具可以幫助你抓取和分析系統(tǒng)日志和內(nèi)核日志。以下是一些常見的工具:
2.1 journalctl
journalctl是 systemd 系統(tǒng)日志記錄器的命令行工具,用于查看和分析系統(tǒng)日志。它可以以可讀的格式顯示日志,并支持按時(shí)間、單元(服務(wù))、PID 等進(jìn)行過濾和搜索。它提供了許多參數(shù)和選項(xiàng),用于過濾、搜索和格式化日志輸出。以下是 journalctl 常見的參數(shù)和使用示例:
@1 基本用法總結(jié)如下:
#查看最新的系統(tǒng)日志:
$journalctl
#查看指定單位(服務(wù))的日志:
$journalctl -u unit-name.service
#查看指定用戶的日志:
$journalctl -u user-name
#查看指定時(shí)間范圍內(nèi)的日志:
$journalctl --since "2023-12-01 00:00:00" --until "2023-12-02 23:59:59"
@2 過濾和搜索總結(jié)如下:
#根據(jù)優(yōu)先級(jí)過濾日志。其中,priority 可以是數(shù)字(0 至 7)或?qū)?yīng)的名稱(如 emerg、alert、crit、err、warning、notice、info、debug):
$journalctl -p priority
#根據(jù)日志來源過濾日志:
$journalctl -b SYSLOG_IDENTIFIER=source-name
#搜索特定關(guān)鍵字的日志,這將搜索包含關(guān)鍵字的日志消息:
$journalctl -t keyword
@3 輸出格式:
#以可讀的格式顯示日志:
$journalctl -o short
#以 JSON 格式顯示日志:
$journalctl -o json
#以詳細(xì)格式顯示日志:
$journalctl -o verbose
#以特定字段的格式顯示日志:
$journalctl -o field --field=FIELD_NAME
2.2 dmesg
dmesg 是一個(gè)用于讀取和打印內(nèi)核環(huán)緩沖區(qū)消息的命令。它可以查看系統(tǒng)啟動(dòng)信息、硬件設(shè)備和內(nèi)核模塊相關(guān)的日志。以下是 dmesg 常見的參數(shù)和使用示例總結(jié):
#查看系統(tǒng)啟動(dòng)信息:
$dmesg
#以逆序方式查看最新的內(nèi)核日志:
$dmesg -r
#僅顯示指定級(jí)別的內(nèi)核日志(可用級(jí)別:emerg, alert, crit, err, warning, notice, info, debug):
$dmesg --level=LEVEL
#過濾顯示包含指定關(guān)鍵字的內(nèi)核日志:
$dmesg --grep=KEYWORD
#限制輸出的行數(shù):
$dmesg -n NUM_LINES
2.3 syslog-ng
syslog-ng是一個(gè)高度可配置的系統(tǒng)日志守護(hù)進(jìn)程,它可以收集、過濾和轉(zhuǎn)發(fā)系統(tǒng)日志。它支持多種日志源和目標(biāo),并提供靈活的日志處理和存儲(chǔ)功能。
以下是一個(gè)簡單的使用案例:
#安裝 syslog-ng
$sudo apt-get install syslog-ng
#創(chuàng)建一個(gè)自定義的 syslog-ng 配置文件
$sudo vim /etc/syslog-ng/conf.d/myconfig.conf
在 myconfig.conf 文件中,可以定義日志源、過濾規(guī)則和目標(biāo)。以下是一個(gè)簡單的demo示例:
# 定義日志源為本地系統(tǒng)日志
source s_local {system();
};# 過濾規(guī)則:僅保留來自特定設(shè)備的日志
filter f_myfilter {host("192.168.1.100");
};# 定義目標(biāo)為遠(yuǎn)程日志服務(wù)器
destination d_remote {syslog("192.168.2.200" port(514));
};# 配置日志源、過濾規(guī)則和目標(biāo)的關(guān)聯(lián)
log {source(s_local);filter(f_myfilter);destination(d_remote);
};
保存并關(guān)閉文件后,重新啟動(dòng) syslog-ng 服務(wù):
$sudo systemctl restart syslog-ng
這個(gè)示例配置將從本地系統(tǒng)收集日志,然后根據(jù)過濾規(guī)則將特定設(shè)備的日志轉(zhuǎn)發(fā)到遠(yuǎn)程日志服務(wù)器。
2.4 rsyslog
類似于 syslog-ng,rsyslog也是一個(gè)常見的系統(tǒng)日志守護(hù)進(jìn)程。它可以收集、轉(zhuǎn)發(fā)和處理系統(tǒng)日志,并支持各種配置選項(xiàng)和插件。
以下是一個(gè)簡單的使用案例:
#安裝 rsyslog
$sudo apt-get install rsyslog
#創(chuàng)建一個(gè)自定義的 rsyslog 配置文件
$sudo vim /etc/rsyslog.d/myconfig.conf
在 myconfig.conf 文件中,你可以定義日志源、過濾規(guī)則和目標(biāo)。以下是一個(gè)簡單的demo示例:
# 過濾規(guī)則:僅保留來自特定設(shè)備的日志
if $fromhost-ip == '192.168.1.100' then {action(type="omfwd" target="192.168.2.200" port="514" protocol="udp");
}
保存并關(guān)閉文件后,重新啟動(dòng) rsyslog 服務(wù):
$sudo systemctl restart rsyslog
這個(gè)示例配置將根據(jù)過濾規(guī)則將來自特定設(shè)備的日志轉(zhuǎn)發(fā)到遠(yuǎn)程日志服務(wù)器。
2.5 logrotate
logrotate是一個(gè)實(shí)用程序,用于管理日志文件的輪轉(zhuǎn)。它可以自動(dòng)壓縮和歸檔舊的日志文件,以便節(jié)省磁盤空間并確保日志文件不會(huì)無限增長。
以下是一個(gè)簡單的使用案例:
# 創(chuàng)建一個(gè)自定義的 logrotate 配置文件
$sudo vim /etc/logrotate.d/mylog
在 mylog 文件中,你可以指定要輪轉(zhuǎn)的日志文件、輪轉(zhuǎn)頻率、保存的舊日志文件數(shù)量等。以下是一個(gè)簡單的demo示例:
# 輪轉(zhuǎn) /var/log/mylog.log 文件,每天輪轉(zhuǎn)一次,保留最近的 7 個(gè)舊日志文件
/var/log/mylog.log {dailyrotate 7compress
}
保存并關(guān)閉文件后,logrotate 將根據(jù)配置文件的設(shè)置定期輪轉(zhuǎn)日志文件。
2.6 總結(jié)
- 這些工具提供了更靈活和高級(jí)的功能,能夠更方便地查看、分析和管理系統(tǒng)日志和內(nèi)核日志??梢愿鶕?jù)自己的需求選擇適合的工具來使用。
- 注意,可能需要使用 sudo 或以 root 用戶身份運(yùn)行這些命令來訪問一些日志文件,特別是位于 /var/log 目錄下的文件。