Linux伺服器上創建日誌伺服器和FTP伺服器

来源:https://www.cnblogs.com/markcoven/archive/2019/07/24/11201549.html
-Advertisement-
Play Games

參考地址: http://www.111cn.net/sys/CentOS/81133.htm https://www.cnblogs.com/laoxiajiadeyun/p/9943742.html https://blog.51cto.com/liqingbiao/2119953 https: ...


參考地址:

      http://www.111cn.net/sys/CentOS/81133.htm

      https://www.cnblogs.com/laoxiajiadeyun/p/9943742.html

      https://blog.51cto.com/liqingbiao/2119953

      https://www.cnblogs.com/hasayaki/archive/2013/01/24/2874889.html

在 Linux 上配置一個 syslog 伺服器

syslog伺服器可以用作一個網路中的日誌監控中心,所有能夠通過網路來發送日誌的設施(包含了Linux或Windows伺服器,路由器,交換機以及其他主機)都可以把日誌發送給它。 通過設置一個syslog伺服器,可以將不同設施/主機發送的日誌,過濾和合併到一個獨立的位置,這樣使得你更容易地查看和獲取重要的日誌消息。

rsyslog 作為標準的syslog守護進程,預裝在了大多數的Linux發行版中。在客戶端/伺服器架構的配置下,rsyslog同時扮演了兩種角色:1.作為一個syslog伺服器,rsyslog可以收集來自其他設施的日誌信息;2.作為一個syslog客戶端,rsyslog可以將其內部的日誌信息傳輸到遠程的syslog伺服器。

在此,我們演示了在linux上如何通過rsyslog來配置一個中心化syslog伺服器。 在進入詳解之前,先溫習一下syslog標準。

syslog標準基礎

當通過syslog機制來收集日誌時,有3個必須要考慮到的重要事情:

  設施層級: 監聽何種類型的進程

  嚴重性 (優先) 級別: 收集何種級別的日誌消息

  目標: 發送或記錄日誌消息到何處

現在我們更加深入地瞭解一下配置是如何定義的。

設施層級定義了一種用來對內部系統進程進行分類的方法,linux中的一些常見的設施包括:

  auth: 身份驗證相關的消息(登錄時)

  cron: 進程或應用調度相關的消息

  daemon: 守護進程相關的消息(內部伺服器)

  kernel: 內核相關的消息

  mail: 內部郵件伺服器相關的消息

  syslog: syslog 守護進程本身相關的消息

  lpr: 列印服務相關的消息

  local0 - local7: 用戶自定義的消息 (local7 通常被Cisco 和 Windows 伺服器 使用)

嚴重性(優先)級別有固定的標準縮寫和指代的值,其中的數字7具有最高的級別,這些級別包含了:

  emerg: Emergency(緊急)- 0

  alert: Alerts (報警)- 1
  crit: Critical (關鍵)- 2
  err: Errors (錯誤)- 3

  warn: Warnings (警告)- 4

  notice: Notification (通知)- 5

  info: Information (消息)- 6

  debug: Debugging (調試)- 7

最後,目標語句會讓一個syslog客戶端來執行以下三個任務之一:

保存日誌消息到一個本地文件;

通過TCP/UDP將消息路由到遠程的syslog伺服器中;

將其發送到一個標準輸出中,例如控制台。

在 rsyslog里, syslog的配置是基於以下模式進行結構化的。

[facility-level].[severity-level] [destination]

 

在我們理解syslog之後,現在可以通過rsyslog來將一個Linux伺服器配置為一個中心syslog伺服器了

第1步: 初始化系統需求

  要將linux主機設置為一個中央日誌伺服器, 我們需要創建一個分離的 /var 分區,並分配足夠大的磁碟空間或者創建一個特殊的LVM捲組。這樣就會使得syslog伺服器能夠承擔在日積月累收集日誌所帶來的潛在增長。

第2步: 讓rsyslog 後臺進程生效

 1 $ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
 2 $ModLoad imjournal # provides access to the systemd journal
 3 
 4  #####開啟udp接收日誌
 5 $ModLoad imudp
 6 $UDPServerRun 514
 7 $template RemoteHost,"/data/syslog/%$YEAR%-%$MONTH%-%$DAY%/%FROMHOST-IP%.log"   ##Remotehost是用戶自定義模版的名稱,後面是日誌路徑
 8 *.*  ?RemoteHost                                       ##啟用自定義的模板,可以是*.* ,也可以是不同的日誌類別加級別,
                                                  ##例如
*.info;mail.none;authpriv.none;cron.none ?RemoteHost
                                                  ##利用特殊的模板讓自己自定義不同的類型  
                                                  ##%%之間的就是自變參數
內容格式如下:
:屬性, 比較操作符, "值" 保存位置
屬性包括以下內容
fromhost 哪個主機名發過來的
fromhost-ip 哪個ip發過來的
msg 從日誌信息里的內容判斷
hostname 從日誌中的主機名判斷
比較操作符包括以下內容
contains 包含
isequal 等於
startswith 以...開頭
 9 & ~                                             ##重定向規則,被用來告知rsyslog守護進程停止對日誌消息的進一步處理,並且不要在本地寫入。如果沒有使用該重定向規則,
                                                 ##那麼所有的遠程消息都會在寫入上述描述的日誌文件之外同時被寫入到本地日誌文件,這就意味著日誌消息實際上被寫了兩次。
                                                 ##使用該規則的另外一個結果就是syslog伺服器本身的日誌消息只會被以該機器主機名命名的專有文件中
####開啟tcp協議接受日誌 11 $ModLoad imtcp 12 $InputTCPServerRun 514 13 14 $WorkDirectory /var/lib/rsyslog 15 $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat 16 17 #######啟用/etc/rsyslog.d/*.conf目錄下所有以.conf結尾的配置文件 18 $IncludeConfig /etc/rsyslog.d/*.conf ##這裡可以自己去定義自己需要主要監控的機器的IP系統日誌,不用每次都全部下載下來例如/etc/rsyslog.d/192.168.0.31.conf,
                           ##這樣進程就會先載入此總配置文件,如果沒有配置則執行從此命令去執行對應的配置
19

這裡是isequal等於,也可以是非本機日誌,採用 !isequal, "127.0.0.1",這樣就排除本機計算日誌了
20 $OmitLocalLogging on 21 $IMJournalStateFile imjournal.state 22 *.info;mail.none;authpriv.none;cron.none /var/log/messages 23 authpriv.* /var/log/secure 24 mail.* -/var/log/maillog 25 cron.* /var/log/cron 26 *.emerg :omusrmsg:* 27 uucp,news.crit /var/log/spooler 28 local7.* /var/log/boot.log 29 local0.* /etc/keepalived/keepalived.log

 

  rsyslog守護進程來自於當前的linux發佈版本的預裝模塊,但是預設並沒有啟動。為了能夠讓rsyslog守護進程能夠接受外部的消息,需要編輯其配置文件/etc/rsyslog.conf

打開文件進行編輯,查找到下麵的兩行所在的位置,通過刪除其行首的#字元來取消註釋。

  $ModLoad imudp

  $UDPServerRun 514

這會使得rsysolog守護進程能夠在UDP埠514上接受日誌消息了---UDP是一種比TCP速度快,但是並不具有TCP一樣的數據流的可靠性。所以如果你需要使用可靠的傳送機制,就可以通過取消以下行的註釋。

  $ModLoad imtcp

  $InputTCPServerRun 514

  註意: TCP和UDP可以被同時生效來監聽TCP/UDP 連接

第3步:創建日誌接收模板

接下來的這步,是rsyslogd進程接受到外部客戶端日誌信息時,按照什麼樣的日誌格式來記錄在磁碟上,這裡提供介面供使用者自定義使用

打開 /etc/rsyslog.conf,然後在GLOBAL DIRECTIVE塊前追加以下的模板。

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *

*.* ?RemoteLogs

& ~

在此對該模板進行簡單解釋,$template RemoteLogs(這裡“RemoteLogs” 字元串可以為任何其他的描述性的名稱)指令使rsyslog後臺進程將日誌消息寫到/var/log下的單獨的本地日誌文件中,其中日誌文件的名稱是基於遠程日誌發送機器的主機名以及生成該日誌的應用程式名進行定義的。其中第二行提示了我們將RemoteLogs模板應用到所有接收到的日誌上。

符號"& ~"表示了一個重定向規則,被用來告知rsyslog守護進程停止對日誌消息的進一步處理,並且不要在本地寫入。如果沒有使用該重定向規則,那麼所有的遠程消息都會在寫入上述描述的日誌文件之外同時被寫入到本地日誌文件,這就意味著日誌消息實際上被寫了兩次

使用該規則就是syslog伺服器本身日誌信息除了寫入上述配置文件同時也會寫一份到本地日誌文件中,並且按照的是本機名作為信息頭,這樣等於是浪費磁碟空間和對不熟悉的人配置混淆;

如果你想要的話,也可以使用下麵的模式對特定的設備或嚴重性級別使用新的模板直接來記錄日誌消息。

[facility-level].[severity-level] ?RemoteLogs

例如:

將全部優先順序別的所有內部用戶驗證消息指定為RemoteLogs模板:

authpriv.* ?RemoteLogs

將所有系統進程中除開mail、用戶驗證和cron消息之外的進程產生的消息級別的日誌指定為RemoteLogs模板:

*.info,mail.none,authpriv.none,cron.none ?RemoteLogs

如果我們想要將所有從遠程客戶端接受到的消息寫入到一個以它們的IP地址命名的單個文件中,可以使用以下的模板。在此我們為該模板賦予了“IpTemplate”名稱。

$template IpTemplate,"/var/log/%FROMHOST-IP%.log"

*.* ?IpTemplate

& ~

在我們啟用rsyslog守護進程並編輯好配置文件之後,需要重啟該守護進程。

 

發送Windows日誌到一個遠程的rsyslog伺服器

要將一個Windows客戶端的日誌消息轉發到我們的rsyslog伺服器,需要一個安裝 Windows syslog 代理。當然,有許多的syslog代理可以在windows上運行,在此我們可以使用一個自由軟體程式 Datagram SyslogAgent.

在下載安裝該syslog代理後,需要將其配置為作為服務運行。指定使用何種協議來發送數據,以及遠程rsyslog伺服器的IP地址和埠,最後指定應該傳輸的事件日誌類型,如下所示。

Linux配置syslog伺服器及CentOS配置rsyslog客戶端遠程記錄日誌

在我們完成所有的這些配置之後,我們就可以啟動該服務並且在中央rsyslog伺服器中使用命令行工具tail -f來查看日誌文件了。

總結

通過創建一個可以收集本地和遠程主機的中央rsyslog伺服器,我們可以更好地瞭解在這些系統內部究竟發生著什麼,而且可以更加容易地調試它們的問題,是否在它們之間有任何延遲或崩潰存在。

CentOS上配置rsyslog客戶端用以遠程記錄日誌

rsyslog是一個開源工具,被廣泛用於Linux系統以通過TCP/UDP協議轉發或接收日誌消息。rsyslog守護進程可以被配置成兩種環境,一種是配置成日誌收集伺服器,rsyslog進程可以從網路中收集其它主機上的日誌數據,這些主機會將日誌配置為發送到另外的遠程伺服器。rsyslog的另外一個用法,就是可以配置為客戶端,用來過濾和發送內部日誌消息到本地文件夾(如/var/log)或一臺可以路由到的遠程rsyslog伺服器上。

假定你的網路中已經有一臺已經配置好並啟動的rsyslog伺服器,本指南將為你展示如何來設置CentOS系統將其內部日誌消息路由到一臺遠程rsyslog伺服器上。這將大大改善你的系統磁碟空間的使用,尤其是當你還沒有一個用於/var目錄的獨立的大分區。

Linux配置syslog伺服器及CentOS配置rsyslog客戶端遠程記錄日誌

步驟一: 安裝Rsyslog守護進程

在CentOS 6和7上,rsyslog守護進程已經預先安裝了。要驗證rsyslog是否已經安裝到你的CentOS系統上,請執行如下命令:

# rpm -qa | grep rsyslog

# rsyslogd -v

Linux配置syslog伺服器及CentOS配置rsyslog客戶端遠程記錄日誌

如果處於某種原因,rsyslog守護進程沒有出現在你的系統中,請使用以下命令來安裝:

# yum install rsyslog

步驟二: 配置Rsyslog守護進程為客戶端

接下來的步驟,是要將你的CentOS機器轉變成rsyslog客戶端,將其所有內部日誌消息發送到遠程中央日誌伺服器上。

要實現該功能,請使用你喜愛的文本編輯器打開位於/etc路徑下的rsyslog主配置文件:

# nano /etc/rsyslog.conf

開啟文件用於編輯後,你需要添加以下聲明到文件底部。將IP地址替換為你的遠程rsyslog伺服器的IP地址。

*.* @192.168.1.25:514

上面的聲明告訴rsyslog守護進程,將系統上各個設備的各種日誌消息路由到遠程rsyslog伺服器(192.168.1.25)的UDP埠514。

如果出於某種原因,你需要更為可靠的協議,如TCP,而rsyslog伺服器也被配置為監聽TCP連接,你必須在遠程主機的IP地址前添加一個額外的@字元,像下麵這樣:

*.* @@192.168.1.25:514

註意,你也可以將rsyslog伺服器的IP地址替換成它的主機名(FQDN)。

如果你只想要轉發伺服器上的指定設備的日誌消息,比如說內核設備,那麼你可以在rsyslog配置文件中使用以下聲明。

kern.* @192.168.1.25:514

修改配置文件後,你需要重啟進程以激活修改:

CentOS 7:

# systemctl restart rsyslog.service

CentOS 6:

# service rsyslog restart

非 syslog 日誌的轉發

在另外一種環境中,讓我們假定你已經在機器上安裝了一個名為“foobar”的應用程式,它會在/var/log下生成foobar.log日誌文件。現在,你想要將它的日誌定向到rsyslog伺服器,這可以通過像下麵這樣在rsyslog配置文件中載入imfile模塊來實現

首先,載入imfile模塊,這隻需做一次。

module(load="imfile" PollingInterval="5")

然後,指定日誌文件的路徑以便imfile模塊可以檢測到:

input(type="imfile"

File="/var/log/foobar.log"

Tag="foobar"

Severity="error"

Facility="local7")

最後,定向local7設備到遠程rsyslog伺服器:

local7.* @192.168.1.25:514

別忘了重啟rsyslog進程哦!

步驟三: 讓Rsyslog進程自動啟動

要讓rsyslog客戶端在每次系統重啟後自動啟動,請運行以下命令:

CentOS 7:

# systemctl enable rsyslog.service

CentOS 6:

# chkconfig rsyslog on

小結

在本教程中,我演示瞭如何將CentOS系統轉變成rsyslog客戶端以強制它發送日誌消息到遠程rsyslog伺服器。這裡我假定rsyslog客戶端和伺服器之間的連接是安全的(如,在有防火牆保護的公司網路中)。不管在任何情況下,都不要配置rsyslog客戶端將日誌消息通過不安全的網路轉發,或者,特別是通過互聯網轉發,因為syslog協議是一個明文協議。要進行安全傳輸,可以考慮使用TLS/SSL來加密日誌消息的傳輸。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、RabbitMQ介紹1、RabbitMQ簡介RabbitMQ是一個消息代理:它接受和轉發消息。你可以把它想象成一個郵局:當你把你想要發佈的郵件放在郵箱中時,你可以確定郵差先生最終將郵件發送給你的收件人。在這個比喻中,RabbitMQ是郵政信箱,郵局和郵遞員。RabbitMQ和郵局的主要區別在於它 ...
  • C#: 使用緩衝區進行文件下載操作,避免下載超大文件時記憶體占用過大 ...
  • IOCContainer文件: Global.asax: 使用: ...
  • LinuxShell腳本——函數 摘要:本文主要學習了Shell中函數的定義和使用。 函數的定義 Shell函數的本質是一段可以重覆使用的腳本代碼,這段代碼被提前編寫好了,放在了指定的位置,使用時直接調取即可。 函數定義的語法 Shell函數定義的語法格式如下: 對各個部分的說明: 由 {} 包圍的 ...
  • LinuxShell腳本——迴圈結構 摘要:本文主要學習了Shell腳本中的迴圈結構。 while迴圈 基本語法 while迴圈是最簡單的一種迴圈,如果條件滿足則執行迴圈里的語句,如果條件不滿足則退出迴圈: 註意,在迴圈體命令中必須有相應的語句使得條件“不成立”,只有這樣才能最終退出迴圈,否則就成了 ...
  • 由於銀行對網路有控制,連接銀行虛擬桌面,就不能訪問外網,解決如下: route print 能查看目前的活動路由、添加過的永久路由等信息 route add 10.60.4.10 mask 255.255.255.0 -p 10.60.4.1 route add 192.168.16.9 mask2 ...
  • POSIX線程終止相關函數 線程終止方式 單個線程可以通過3種方式退出,可以在不終止整個進程的情況下,停止線程的控制流。 (1)線程可以直接從啟動常式(也就是線程函數)中返回,即執行return語句,返回值是線程的退出碼。 (2)線程可以被同一進程中的其他線程取消。即其他線程調用pthread_ca ...
  • 一、基本操作 Tab鍵: 自動補全ctrl + u: 清空至行首ctrl + k: 清空至行尾 ctrl + l: 清屏 ctrl + c: 取消本次命令編輯重啟:rebootsystemctl rebootshutdown -rinit 6關機:poweroffsystemctl poweroff ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...