linux下日誌系統詳解

2021-10-12 02:49:47 字數 2493 閱讀 6714

syslog是一種工業標準的協議,可用來記錄裝置的日誌。在unix系統,路由器、交換機等網路裝置中,系統日誌(system log)記錄系統中任何時間發生的大小事件。管理者可以通過檢視系統記錄,隨時掌握系統狀況。unix的系統日誌是通過syslogd這個程序記錄系統有關事件記錄,也可以記錄應用程式運作事件。通過適當的配置,我們還可以實現執行syslog協議的機器間通訊,通過分析這些網路行為日誌,藉以追蹤掌握與裝置和網路有關的狀況。

syslogd是linux下的乙個記錄日誌檔案服務。從結構來說,可以理解為這個服務下面有一系列的子服務,例如mail、auth、cron、kern等等,這些子服務對外提供日誌記錄的功能,而當其它的程式或服務需要記錄日誌的時候,就可以直接呼叫這些子服務將日誌記錄到設定的地方。而配置這整個守護程序以及其子服務的地方就是/etc/syslog.conf這個檔案。

而目前不少的linux發行版已經用rsyslogd將syslogd代替了。rsyslogd是syslogd的公升級版,其配置語法與syslogd的配置檔案一致。ubuntu-gnome-16.04使用的是rsyslogd。

注:在使用者空間有專門用於記錄系統日誌的程式,統稱為「syslog守護程序」。早期及現在的大部分嵌入式系統使用的是klogd+syslogd組合,現在大多數發行版都使用rsyslogd或者syslogd-ng。

如果需要修改系統日誌配置,修改以下兩個檔案。

1)/etc/rsyslog.conf

2)/etc/rsyslog.d/50-default.conf 日誌檔案的記錄規則和路徑

(1)dmesg

printk()列印的日誌會寫到kernel ring buffer(環緩衝區)中,dmesg是從kernel ring buffer中讀取核心日誌資訊。

(2)/var/log/

系統所有日誌(包括使用者日誌和系統核心日誌)均記錄在/var/log/目錄下。

rsyslogd守護程序根據/etc/rsyslog.conf和/etc/rsyslog.d/50-default.conf,將不同的服務產生的log記錄到不同的檔案中。

(3)/proc/kmsg

通過讀取/proc/kmsg也可以得到ring buffer(環緩衝區)的日誌,但是對/proc/kmsg進行讀操作後,ring buffer中被讀取的資料將被清空。

(1)核心空間:printk()

可以使用dmesg命令來檢視,使用printk()列印的日誌同時也會記錄在/var/log/kern.log和/var/log/syslog。當然也可以關閉rsyslogd服務,通過讀取/proc/kmsg來檢視。

(2)使用者空間:syslog()函式和logger(logger可在命令列中直接執行)

void syslog(int priority, char*format,……);

列印的日誌記錄在 /var/log/syslog檔案中。

(1) 核心:許多核心例程呼叫log函式產生log訊息,另外klogd守護程序能夠監聽並得到核心訊息,並傳送給syslogd程序。

(2) 許多使用者程序直接呼叫syslog函式產生日誌訊息。

(3) 來自於tcp/ip網路連線的日誌訊息。該訊息可能來自於自身的某個使用者程序或者其它網路主機上的乙個使用者程序。埠是514.

printk的臨時快取printk_buf只有1k,所有一次printk函式只能記錄<1k的資訊到log buffer

在標準的linux系統上,使用者空間的守護程序klogd從紀錄緩衝區中獲取核心訊息,再通過syslogd守護程序把這些訊息儲存在系統日誌檔案中。klogd程序既可以從/proc/kmsg檔案中,也可以通過syslog()系統呼叫讀取這些訊息。預設情況下,它選擇讀取/proc方式實現。klogd守護程序在訊息緩衝區有新的訊息之前,一直處於阻塞狀態。一旦有新的核心訊息,klogd被喚醒,讀出核心訊息並進行處理。預設情況下,處理例程就是把核心訊息傳給syslogd守護程序。syslogd守護程序一般把接收到的訊息寫入/var/log/messages檔案中。不過,還是可以通過/etc/syslog.conf檔案來進行配置,可以選擇其他的輸出檔案。

dmesg 命令也可用於列印和控制核心環緩衝區。這個命令使用 klogctl 系統呼叫來讀取核心環緩衝區,並將它**到標準輸出(stdout)。這個命令也可以用來清除核心環緩衝區(使用 -c 選項),設定控制台日誌級別(-n 選項),以及定義用於讀取核心日誌訊息的緩衝區大小(-s 選項)。注意,如果沒有指定緩衝區大小,那麼 dmesg 會使用 klogctl 的syslog_action_size_buffer 操作確定緩衝區大小。

linux系統下日誌的管理

rsyslogd 系統專職日誌程式。處理絕大部分日誌記錄,系統操作有關的資訊,如登入資訊,程式啟動關閉資訊,錯誤資訊 hpptd nginx mysql 各類應用程式,可以以自己的方式記錄日誌。rsyslogd程式的程序 root localhost ps aux grep rsyslogd roo...

linux下刪除oracle歸檔日誌(詳解)

1 進入linux伺服器,停止oracle的監聽和服務 2 刪除日誌 3 開啟oracle的服務和監聽 如果刪日誌之前沒成功停掉監聽和服務,最好reboot一下伺服器,不然會出一些問題 su oracle 記得橫槓左右加空格 lsnrctl stop 停止資料庫監聽 注意一定不要在sql下執行此命令...

Linux系統下proc目錄詳解

1,proc 乙個虛擬檔案系統 proc 檔案系統是一種核心和核心模組用來向程序 process 傳送資訊的機制 所以叫做 proc 這個偽檔案系統讓你可以和核心內部資料結構進行互動,獲取 有關程序的有用資訊,在執行中 on the fly 改變設定 通過改變核心引數 與其他檔案系統不同,proc ...