前言
随着資訊技術的飛速發展,主機環境業務越來越複雜,産生的日志資料也呈爆炸式增長。日志資料作為記錄系統運作狀态、使用者行為以及異常事件的重要資訊,對于業務分析、故障排查和安全審計等方面具有不可替代的作用。然而,傳統的主機日志查詢分析方式往往存在資料割裂、查詢效率低下等問題,難以滿足現代主機環境業務的需求。
本文旨在結合目前主機環境業務的特點,通過觀測雲采集主機環境業務日志的最佳實踐,實作統一的日志查詢分析效果。幫助使用者了解如何有效地采集、存儲、分析這些分散的日志資料,為提升故障定位的效率提供有力支援。
接入方案
1、安裝采集器 DataKit
- 登入觀測雲控制台,點選「內建」 > 「DataKit」
- 複制安裝指令并執行
- 安裝成功後,可在觀測雲控制台的「基礎設施」中檢視該主機的對象和名額資料
2、配置主機日志檔案采集
- 進入 DataKit 安裝目錄下的 /usr/local/datakit/conf.d/log 目錄,複制 logging.conf.sample 并命名為 logging.conf 。示例如下:
- 修改 logging.conf 檔案中的日志檔案路徑,并自定義編寫一個容易區分的 source 名稱。示例如下:
- 重新開機 DataKit 後,即可在觀測雲控制台的「日志」檢視器中檢視相關日志。(注意:DataKit 啟動後,logfiles 中配置的日志檔案有新的日志産生才會采集上來,老的日志資料是不會采集的。即隻會采集 tail -f 看到的新日志内容。)
# Linux/Mac 可能需加上 sudo
datakit service -T # stop
datakit service -S # start
datakit service -R # restart
3、配置采集多個主機日志檔案
- 如果需要采集多個主機日志檔案,且需要區分日志來源時,可以在 DataKit 安裝目錄下的 /usr/local/datakit/conf.d/log 目錄,複制 logging.conf 并命名為 logging2.conf。示例如下:
- 修改 logging2.conf 檔案中的日志檔案路徑,并自定義編寫一個容易區分的 source 名稱。示例如下:
- 重新開機 DataKit ,即可在觀測雲控制台看到采集上來的兩個日志源資料。(注意:DataKit 啟動後,logfiles 中配置的日志檔案有新的日志産生才會采集上來,老的日志資料是不會采集的。即隻會采集 tail -f 看到的新日志内容。)
# 重新開機DataKit
datakit service -R # restart
glob 規則簡述
DataKit 采集器還支援使用 glob 規則更友善地指定日志檔案,以及自動發現和檔案過濾。
通配符 | 描述 | 正則示例 | 比對示例 | 不比對 |
* | 比對任意數量的任何字元,包括無 | Law* | Law, Laws, Lawyer | GrokLaw, La, aw |
? | 比對任何單個字元 | ?at | Cat, cat, Bat, bat | at |
[abc] | 比對括号中給出的一個字元 | [CB]at | Cat, Bat | cat, bat |
[a-z] | 比對括号中給出的範圍中的一個字元 | Letter[0-9] | Letter0, Letter1, Letter9 | Letters, Letter, Letter10 |
[!abc] | 比對括号中未給出的一個字元 | [!C]at | Bat, bat, cat | Cat |
[!a-z] | 比對不在括号内給定範圍内的一個字元 | Letter[!3-5] | Letter1… | Letter3 … Letter5, Letterxx |
除上述 glob 标準規則外,采集器也支援 ** 進行遞歸地檔案周遊、多行日志比對、特殊位元組碼處理等進階操作。
日志查詢
觀測雲支援通過多種操作對日志資料進行查詢和分析:
文本搜尋
日志檢視器支援關鍵詞查詢、通配符查詢,* 表示比對 0 或多個任意字元,? 表示比對 1 個任意字元;若要将多個術語組合到一個複雜查詢中,可以使用布爾運算符(AND/OR/NOT)連接配接。
術語可以是單詞或者短語。比如:
- 單個單詞:guance;
- 多個單詞:guance test;(等同于 guance AND test)
- 短語:"guance test"; (使用雙引号可以将一組單詞轉換為短語)
搜尋查詢示例:
JSON搜尋
檢視器原生支援對 JSON 格式 message 内容進行精确檢索,搜尋格式為: @key:value ,若為多層級 JSON 可用 “.” 承接,即 @key1.key2:value ,如圖所示:
日志解析
Pipeline 支援對不同格式的日志資料進行文本解析,通過編寫 Pipeline 腳本,可以自定義切割出符合要求的結構化日志,并把切割出來的字段作為屬性使用。通過屬性字段,我們可以快速篩選相關日志、進行資料關聯分析,幫助我們快速去定位問題并解決問題。
下面是一條日志原文和對應的 pipeline 腳本示例:
# 日志原文
2024-03-29 11:54:54,535 WARN http-nio-8081-exec-1 (org.jasig.cas.web.view.CasReloadableMessageBundle:76) - The code [screen.logout.security] cannot be found in the language bundle for the locale [zh_CN]
# pipeline腳本
grok(_, "%{TIMESTAMP_ISO8601:time} %{LOGLEVEL:status} %{NOTSPACE:thread_name} \\(%{NOTSPACE:class_name}\\:%{NUMBER:line}\\) - %{GREEDYDATA:msg}")
default_time(time,"Asia/Shanghai")
成功解析出 class_name、line、status、thread_name 等字段,友善後續的搜尋統計等;效果如下:
日志可視化分析
場景圖表
觀測雲内置多種資料監控視圖模版,使用者可導入模闆建立儀表闆和檢視器,并進行自定義編輯配置;或選擇自定義建立方式,通過一系列設定建構資料洞察場景。
比如,根據前面解析出來的 status 字段,統計一下 info、warning 狀态的日志分别有多少,可以通過以下步驟來建立可視化儀表闆。
第一步:在場景 > 儀表闆中,選擇自己想要的視圖類型
第二步:選擇日志資料源,設定過濾條件和分組,點選建立即可
強大的關聯能力
1、視圖配置跳轉連結
觀測雲提供連結功能,可以平滑跳轉儀表闆 & 檢視器,實作資料關聯分析、系統全面可觀測。隻需在視圖設定頁面,配置連結位址。
再點選視圖中的資料,即可跳轉到對應的日志檢視器,快速實作視圖與檢視器關聯分析。
2、綁定内置視圖
觀測雲還支援将視圖儲存為内置視圖,并綁定到檢視器中,友善在檢視日志資料的同時,分析其他次元的資料。
檢視日志詳情時,即可檢視上面綁定的内置視圖,也可以綁定其他次元的視圖,比如主機的名額視圖等等。
日志告警
觀測雲提供開箱即用的監控模闆來建立監控器;也支援自定義建立監控器,通過門檻值檢測、日志檢測、突變檢測、區間檢測等十餘種檢測規則來設定檢測規則和觸發條件。開啟監控器後,即可接收到由檢測規則觸發的相關異常事件告警。
其中,日志檢測用于監控工作空間内基于日志采集器産生的的全部日志資料。支援基于日志的關鍵字設定告警,及時發現不符合預估行為的異常模式(如:日志文本資料中存在異常的标簽),多适用于 IT 監控場景下的代碼異常或任務排程檢測等。
第一步:在監控 > 建立日志檢測監控器
第二步:設定檢測規則和觸發條件
這裡以日志内容包含"WARN"為例,設定超過 100 條時就觸發告警。
第三步:編輯事件通知内容和告警政策,點選建立即可
日志備份
觀測雲提供日志資料轉發到觀測雲的對象存儲及轉發到外部存儲的功能(包含觀測雲備份日志、AWS S3、華為雲 OBS、阿裡雲 OSS 和 Kafka 消息隊列)。使用者可以自由選擇存儲對象,靈活管理日志備份資料。
第一步:點選日志 > 資料轉發
第二步:點選轉發規則 > 建立規則
第三步:設定需要備份的資料源,和相關篩選條件,點選确定即可
注意:該規則下的日志資料最低存儲預設為 180 天,可以前往管理 > 設定 > 變更資料存儲政策中修改資料轉發存儲政策。
檢視備份資料
第一步:點選日志 > 資料轉發,在下拉框標明規則
第二步:自定義時間範圍查詢,可選擇多個日期及定義開始時間和結束時間,時間會精确到小時,即可查詢到備份資料
更多日志備份相關操作,也可以閱讀官方文檔的詳細介紹。
總結
通過以上方式,可以快速将主機環境各個業務系統的日志采集到觀測雲平台,實作統一的日志查詢和分析的訴求。