一、tail命令實時查看日誌
tail命令可以查看文件的末尾內容。如果加上-f參數,則可以實時查看文件的變化。例如:
tail-f/var/log/syslog
這條命令會實時顯示/var/log/syslog的內容變化。可以利用這個命令來查看正在運行的程序的日誌,例如,查看nginx的錯誤日誌:
tail-f/var/log/nginx/error.log
另外,可以使用grep過濾想要查看的內容,例如:
tail-f/var/log/nginx/access.log|grep"192.168.1.1"
這樣就可以實時查看所有訪問192.168.1.1的請求。
二、使用watch命令監控日誌
watch命令可以定時執行一個命令,並實時顯示輸出。這個命令在監控系統狀態、監控日誌變化等方面非常有用。例如,可以使用watch監控系統當前的網路連接情況:
watch-n1"netstat-an|grepESTABLISHED|wc-l"
上面的命令每秒鐘執行一次netstat命令,並顯示當前系統中已建立連接的數量。
同樣的,也可以使用watch來監控日誌變化。例如:
watch-n1"cat/var/log/nginx/access.log|tail-n10"
這條命令每秒鐘執行一次cat命令,顯示nginx的訪問日誌的最後10行。
三、使用inotify-tools監控目錄變化
inotify-tools是一個Linux下的工具集,可以監控目錄變化,並執行一些自定義動作。
例如,可以使用inotifywait命令來監控/var/log目錄下的所有文件變化:
inotifywait-m/var/log
這個命令會實時顯示/var/log目錄下的所有文件的變化。可以利用這個命令實現自定義的文件監控腳本。
四、使用logrotate定時切割日誌
日誌文件會隨著時間的推移越來越大,為了方便管理和減少存儲空間的佔用,需要定時切割日誌。這個任務可以通過logrotate來實現。
可以通過編寫logrotate配置文件來指定需要切割的日誌文件和切割的方式。例如,以下是一個nginx的logrotate配置文件:
/var/log/nginx/*.log{ daily missingok rotate52 compress delaycompress notifempty create640nginxadm sharedscripts postrotate /usr/sbin/nginx-sreopen endscript }
上面的配置文件指定了每天切割一次nginx的日誌文件,保留52箇舊日誌文件。同時會進行壓縮,並在切割後重啟nginx服務。
五、使用ELK實現日誌集中存儲和分析
ELK是Elasticsearch、Logstash和Kibana三個工具的組合。Elasticsearch是一個開源的分散式搜索引擎,可以存儲大量的結構化和非結構化數據;Logstash是一款用來處理日誌、指標等數據的工具,可以將數據從不同的來源搜集過來,並轉化為可查詢的結構;Kibana是一個基於Elasticsearch的開源分析和可視化平台,可以展示通過Logstash搜集過來的數據。
使用ELK可以實現日誌的集中存儲和分析。例如,可以搜集所有伺服器的日誌到Elasticsearch中,然後通過Kibana進行可視化展示和查詢。這樣可以方便快捷地了解系統中出現的問題。
可參考以下代碼來搭建ELK環境:
#安裝Elasticsearch wgethttps://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.0-linux-x86_64.tar.gz tar-xzfelasticsearch-7.4.0-linux-x86_64.tar.gz cdelasticsearch-7.4.0/bin ./elasticsearch #安裝Logstash wgethttps://artifacts.elastic.co/downloads/logstash/logstash-7.4.0.tar.gz tar-xzflogstash-7.4.0.tar.gz cdlogstash-7.4.0/bin ./logstash-e'input{stdin{}}output{elasticsearch{hosts=>["localhost:9200"]}}' #安裝Kibana wgethttps://artifacts.elastic.co/downloads/kibana/kibana-7.4.0-linux-x86_64.tar.gz tar-xzfkibana-7.4.0-linux-x86_64.tar.gz cdkibana-7.4.0/bin ./kibana
然後可以通過訪問http://localhost:5601來打開Kibana的Web界面,進行數據的查詢和可視化展示。
六、使用rsyslog收集日誌
rsyslog是一個高性能的日誌系統,可以將日誌收集到遠程伺服器中,並支持遠程日誌的過濾、處理和轉發。
可以通過修改/etc/rsyslog.conf配置文件來指定日誌的收集方式。例如,以下配置可以將nginx的訪問日誌發送到遠程伺服器上:
module(load="imfile") input(type="imfile" File="/var/log/nginx/access.log" Tag="nginx" Facility="local6") local6.*@@remote_server:514
上面的配置使用imfile模塊來監控/var/log/nginx/access.log文件,並使用local6作為Facility。然後將local6的日誌轉發到遠程伺服器的514埠。
總結
本文介紹了6種實時查看日誌變化的方法。從監控程序日誌、監控系統狀態、監控目錄變化、定時切割日誌、日誌集中存儲和分析、遠程日誌收集等方面進行了詳細的講解。不同的方法適用於不同的場景,選取合適的方法可以提高工作效率和問題的處理速度。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/244459.html