如何利用categraf的exec插件實現對Linux主機系統用戶及密碼有效期進行監控及告警?

需求描述

Categraf作為夜鶯監控平臺的數據采集工具,為了保障Linux主機的安全,需要實現對系統用戶密碼有效期的監控,并在密碼即將到期時及時告警,以提醒運維人員更改密碼。本章將詳細介紹如何利用Categraf的exec插件來實現這一功能,并確保告警信息能夠通過企業微信、飛書等渠道準確地推送給相關運維人員。

exec插件exec.toml文件配置

這個配置文件定義了exec插件定期執行/opt/categraf/scripts/check_password_expiry.shjiao腳本文件,并且輸出的數據格式為influx格式。

# # collect interval
# interval = 15[[instances]]
# # commands, support glob
commands = ["/opt/categraf/scripts/check_password_expiry.sh"
]# # timeout for each command to complete
# timeout = 5# # interval = global.interval * interval_times
# interval_times = 1# # choices: influx prometheus falcon
# # influx stdout example: mesurement,labelkey1=labelval1,labelkey2=labelval2 field1=1.2,field2=2.3data_format = "influx"

influx格式及格式說明:

mesurement,labelkey1=labelval1,labelkey2=labelval2 field1=1.2,field2=2.3
  • mesurement,定義指標名稱(或者前綴),比如 connections;
  • mesurement后面是逗號,逗號后面是標簽,如果沒有標簽,則mesurement后面不需要逗號
  • 標簽是k=v的格式,多個標簽用逗號分隔,比如region=beijing,env=test
  • 標簽之后是空格
  • 空格之后是屬性字段,多個屬性字段用逗號分隔
  • 屬性字段是字段名=值的格式,在categraf里只能是數字

最終,mesurement和各個屬性字段名稱拼接成metric名字

監控Shell腳本check_password_expiry.sh

#!/bin/bash# 定義需要檢查的用戶名數組
users=("app" "root" "weihu" "mysql" "nginx")# 循環處理每個用戶名
for user in "${users[@]}"
do# 設置 LANG 環境變量以確保 chage -l 的輸出為英文export LANG=en_US.UTF-8# 獲取密碼過期時間,并去除前后空格EXPIRY_DATE_RAW=$(chage -l $user | grep "Password expires")EXPIRY_DATE=$(echo "$EXPIRY_DATE_RAW" | awk -F: '{print $2}' | awk '{$1=$1};1')# 檢查是否密碼永不過期if [[ "$EXPIRY_DATE" =~ ^(never|從不)$ ]]; thenEXPIRY_DATE_TS=99999 # 使用一個很大的數字表示永遠不會過期的時間戳EXPIRY_DATE_FORMATTED="99999" # 使用一個很大的日期來表示永不過期DAYS_LEFT=99999 # 表示永不過期else# 將過期日期轉換為時間戳EXPIRY_DATE_TS=$(date --date="$EXPIRY_DATE" +%s 2>/dev/null)# 獲取今天的日期時間戳TODAY_TS=$(date +%s)# 計算剩余過期天數DAYS_LEFT=$(( (EXPIRY_DATE_TS - TODAY_TS) / 86400 ))# 將過期日期轉換為 yyyymmdd 格式EXPIRY_DATE_FORMATTED=$(date --date="$EXPIRY_DATE" "+%Y%m%d" 2>/dev/null)fi# 清除 LANG 環境變量以恢復之前的設置unset LANG# 輸出符合 InfluxDB line protocol 的格式echo "password_expiry,account=$user,password_expires_time=$EXPIRY_DATE_FORMATTED days_until_expiry=$DAYS_LEFT"
done

注意:

腳本執行輸出結果一定要滿足前面exec.toml配置文件中定義的data_format = "influx"數據格式,這樣categraf截獲的stdout內容,才能成功解析并傳給服務端,上述腳本執行輸出如下:

[root@localhost categraf]# ./categraf --test --inputs exec
......
18:44:10 password_expiry_days_until_expiry account=app agent_hostname=localhost password_expires_time=20241026 6
18:44:10 password_expiry_days_until_expiry account=root agent_hostname=localhost password_expires_time=99999 99999
18:44:10 password_expiry_days_until_expiry account=weihu agent_hostname=localhost password_expires_time=99999 99999
18:44:10 password_expiry_days_until_expiry account=mysql agent_hostname=localhost password_expires_time=99999 99999
18:44:10 password_expiry_days_until_expiry account=nginx agent_hostname=localhost password_expires_time=99999 99999
......

監控策略規則usermanager.json

上述測試確認數據及格式無誤后在夜鶯監控平臺配置關于Linux系統用戶密碼有效期的監控大盤,直接導入如下json內容,完成監控策略配置。

{"name": "LInux系統賬號密碼有效期檢查","tags": "usermanager","ident": "","configs": {"var": [{"name": "prom","label": "數據源","type": "datasource","definition": "prometheus","defaultValue": ""},{"name": "user","label": "用戶","type": "query","datasource": {"cate": "prometheus","value": 1},"definition": "label_values(account)"}],"panels": [{"type": "table","id": "2d96fa01-57a2-4ba1-b1a2-8369c3bf34f2","layout": {"h": 12,"w": 24,"x": 0,"y": 0,"i": "2d96fa01-57a2-4ba1-b1a2-8369c3bf34f2","isResizable": true},"version": "3.0.0","datasourceCate": "prometheus","datasourceValue": 1,"targets": [{"refId": "A","expr": "password_expiry_days_until_expiry","legend": "","time": {"start": "now-1m","end": "now"},"instant": false}],"transformations": [{"id": "organize","options": {"excludeByName": {"__name__": true,"value": false,"password_expires_on": true,"password_expires_time": false,"account": false,"ident": false},"renameByName": {"account": "系統用戶","ident": "主機節點","password_expires_on": "","value": "密碼過期剩余天數","password_expires_time": "密碼過期時間"},"indexByName": {"ident": 0,"account": 1,"password_expires_time": 2,"value": 3}}}],"name": "系統用戶密碼過期檢查","maxPerRow": 4,"custom": {"showHeader": true,"colorMode": "value","calc": "last","displayMode": "labelsOfSeriesToRows","columns": ["ident","account","password_expires_time","value"],"sortColumn": "value","sortOrder": "ascend","linkMode": "appendLinkColumn"},"options": {"valueMappings": [{"type": "special","result": {"color": "#000000","text": "never"},"match": {"special": 99999}},{"type": "range","result": {"color": "rgba(253, 0, 0, 1)"},"match": {"from": -1000,"to": 15}}],"standardOptions": {"util": "none"}},"overrides": [{"matcher": {"id": "byName","value": "password_expires_time"},"properties": {"valueMappings": [{"type": "special","result": {"color": "#000000","text": "never"},"match": {"special": 99999}}],"standardOptions": {"util": "none"}}}]}],"version": "3.0.0","graphTooltip": "default","graphZoom": "default"}
}

告警策略規則alertrule.json

在夜鶯監控平臺配置關于Linux系統用戶密碼有效期的告警策略(在密碼過期前7天通過企業微信、飛書渠道每24小時推送告警提醒信息),直接導入如下json內容,完成告警策略配置。

[{"cate": "prometheus","datasource_ids": [0],"name": "Linux系統賬號過期告警提醒","note": "你的主機系統賬號  {{$labels.account}}  即將過期,請及時修改密碼!!!","prod": "metric","algorithm": "","algo_params": null,"delay": 0,"severity": 0,"severities": [3],"disabled": 0,"prom_for_duration": 60,"prom_ql": "","rule_config": {"queries": [{"keys": {"labelKey": "","valueKey": ""},"prom_ql": "password_expiry_days_until_expiry<7","severity": 3}]},"prom_eval_interval": 30,"enable_stime": "00:00","enable_stimes": ["00:00"],"enable_etime": "00:00","enable_etimes": ["00:00"],"enable_days_of_week": ["0","1","2","3","4","5","6"],"enable_days_of_weeks": [["0","1","2","3","4","5","6"]],"enable_in_bg": 0,"notify_recovered": 1,"notify_channels": ["wecom","feishu"],"notify_repeat_step": 1440,"notify_max_number": 0,"recover_duration": 0,"callbacks": [],"runbook_url": "","append_tags": [],"annotations": {},"extra_config": null}
]

效果展示

監控結果展示
在這里插入圖片描述
告警推送結果展示

【?測試平臺-告警?】
級別狀態: S3 
規則名稱: Linux系統賬號不足7天過期告警提醒
規則備注: 你的主機系統賬號  app  即將過期,請及時修改密碼!!!
告警主機: localhost
觸發時間: 2024-10-19 14:17:34
觸發時值: 7
發送時間: 2024-10-19 14:17:35

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/82755.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/82755.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/82755.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RV1126-OPENCV 交叉編譯

一.下載opencv-3.4.16.zip到自己想裝的目錄下 二.解壓并且打開 opencv 目錄 先用 unzip opencv-3.4.16.zip 來解壓 opencv 的壓縮包&#xff0c;并且進入 opencv 目錄(cd opencv-3.4.16) 三. 修改 opencv 的 cmake 腳本的內容 先 cd platforms/linux 然后修改 arm-gnueabi.to…

如何加載私鑰為 SecKeyRef

本文介紹如何在 iOS/macOS 下將私鑰加載為 SecKeyRef&#xff0c;涵蓋 PEM 格式的 ECC 密鑰讀取、X9.63 數據構建、以及與 Keychain 的集成。 1. 使用 SecKeyCreateWithData 加載私鑰 Apple 提供的 SecKeyCreateWithData 方法可以直接將密鑰數據加載為 SecKeyRef 對象。 SecK…

Missashe考研日記—Day44-Day50

Missashe考研日記—Day44-Day50 寫在面前 本系列博客用于記錄博主一周的學習進度&#xff0c;具體知識總結在目前已有的筆記中&#xff1a;1.高數強化學習筆記2.計網復習筆記3.新增&#xff1a;線代題型總結 專業課408 這周先是把計網第三章數據鏈路層剩下的局域網以及之后…

Windows下安裝并使用kubectl查看K8S日志

【1】安裝kubectl 官網文檔&#xff1a;https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-windows/ 下載后得到 kubectl.exe&#xff0c;放到一個目錄下&#xff0c;然后配置環境變量。 此時CMD 進入DOS命令窗口 kubectl version【2】配置config文件 其實就是…

攻防世界János-the-Ripper

打開壓縮包是一個文件&#xff0c;用010Editor打開可以發現里面有隱藏文件flag.txt 此時想到分離文件&#xff0c;利用binwalk工具 利用binwalk生成出的是一個壓縮包&#xff0c;解壓縮但是發現竟然解壓需要密碼 這里就可以開始暴力破解密碼了&#xff0c;這里我用的是ARCHPR工…

XPlifeapp:高效打印,便捷生活

在數字化時代&#xff0c;雖然電子設備的使用越來越普遍&#xff0c;但打印的需求依然存在。無論是學生需要打印課表、資料&#xff0c;還是職場人士需要打印名片、報告&#xff0c;一個高效便捷的打印軟件都能大大提高工作效率。XPlifeapp就是這樣一款超級好用的手機打印軟件&…

【計算機網絡】第2章:應用層—Web and HTTP

目錄 一、Web 與 HTTP 二、總結 &#xff08;一&#xff09;Web 的定義與功能 &#xff08;二&#xff09;HTTP 協議的定義與功能 &#xff08;三&#xff09;HTTP 協議的核心機制 1. HTTP 請求與響應流程 2. HTTP 的連接類型 3. HTTP 的狀態碼 &#xff08;四&#xf…

如何實現 LRU 緩存:基于LinkedHashMap?

全文目錄&#xff1a; 開篇語前言1. LinkedHashMap 簡介1.1 LinkedHashMap 的構造方法 2. 基于 LinkedHashMap 實現 LRU 緩存2.1 設計思路2.2 實現步驟2.3 代碼說明2.4 測試案例2.5 解釋 3. LRU 緩存優化3.1 removeEldestEntry() 方法的靈活性3.2 內存管理 4. 總結文末 開篇語 …

Spring Boot測試框架全面解析

Spring Boot測試框架基礎 Spring Boot通過增強Spring測試框架的能力,為開發者提供了一系列簡化測試流程的新注解和特性。該框架建立在成熟的Spring測試基礎之上,通過自動化配置和專用注解顯著提升了測試效率。 核心依賴配置 要使用Spring Boot的全部測試功能,只需在項目中…

Spring Boot 整合 Spring Data JPA、strategy 的策略區別、什么是 Spring Data JPA

DAY29.2 Java核心基礎 Spring Boot 整合 Spring Data JPA Spring Data JPA根據具體的數據庫分為不同的子模塊&#xff0c;無論是關系型數據庫和非關系型數據庫&#xff0c;Spring Data都提供了支持 Mysql&#xff1a;Spring Data JPA Redis&#xff1a;Spring Data Redis …

Ubuntu 服務器配置與 Cloudflare Tunnel 部署指南 免費內網穿透家用服務器

Ubuntu 服務器配置與 Cloudflare Tunnel 部署指南 本文檔總結了服務器配置相關內容&#xff0c;包括 Ubuntu 服務器配置、硬盤擴容、靜態 IP 設置以及 Cloudflare Tunnel 的部署步驟。 目錄 硬盤分區與擴容設置靜態 IPCloudflare Tunnel 部署SSH 通過 Cloudflare Tunnel常見…

降低實驗檢測報告編制耗時 質檢LIMS系統的應用策略

在質檢工作流程中&#xff0c;檢測報告編制往往是耗時耗力的關鍵環節。傳統人工編制報告不僅效率低下&#xff0c;還容易出現數據錯誤、格式不統一等問題。質檢 LIMS 系統憑借其強大的自動化、智能化功能&#xff0c;為檢測報告編制帶來革命性變革&#xff0c;能夠將編制時間減…

同為.net/C#的跨平臺運行時的mono和.net Core有什么區別?

Mono 和 .NET Core&#xff08;現已統一為 .NET&#xff09;都是 .NET 生態的跨平臺實現&#xff0c;但它們在設計目標、技術特性和應用場景上有顯著區別。以下是詳細對比&#xff1a; ??1. 歷史背景?? ??項目????誕生時間????開發者????當前狀態????Mo…

Android AIDL Hal最低保證出現的問題

1. AIDL HAL 的“最低保證”特性 &#xff08;1&#xff09;協議層級的強制支持 在 IComposer AIDL 接口定義中&#xff08;如 android.hardware.graphics.composer3&#xff09;&#xff0c;Google 已經將部分功能列為 必須支持的特性&#xff08;MUST&#xff09;。例如&am…

蘋果FINDMY和谷歌FIND HUB增強共享位置功能

近期&#xff0c;蘋果Findmy增強了追蹤和分享丟失物品位置方面的功能&#xff0c;“共享物品位置”&#xff0c;用戶可以安全地與航空a公司等第三方分享丟失物品的位置&#xff0c;以便于行李找回。 iOS 18.2的這一新功能使用戶可以輕松、安全地與航空公司等第三方分享AirTag或…

基于GA遺傳優化的FIR濾波器幅頻相頻均衡補償算法matlab仿真

目錄 1.程序功能描述 2.測試軟件版本以及運行結果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 在數字信號處理領域&#xff0c;有限沖激響應&#xff08;FIR&#xff09;濾波器因其結構簡單、穩定性好且易于實現線性相位等優點被廣泛應用。然而&#xff0c;實…

雙路物理CPU機器上安裝Ubuntu并部署KVM以實現系統多開

在雙路物理CPU機器上安裝Ubuntu并部署KVM以實現系統多開&#xff0c;并追求性能最優&#xff0c;需要從硬件、宿主機系統、KVM配置、虛擬機配置等多個層面進行優化。 以下是詳細的操作指南和優化建議&#xff1a; 階段一&#xff1a;BIOS/UEFI 設置優化 (重啟進入) 啟用虛擬化…

adb查看、設置cpu相關信息

查內存 adb shell dumpsys meminfo查CPU top -m 10打開 system_monitor adb shell am start -n eu.chainfire.perfmon/.LaunchActivity設置CPU的核心數 在/sys/devices/system/cpu目錄下可以看到你的CPU有幾個核心&#xff0c;如果是雙核&#xff0c;就是cpu0和cpu1&#xff0c…

【Unity基礎】Unity新手實戰教程:用ScriptableObject控制Cube顏色

目錄 項目概述&#x1f6e0;? 完整操作步驟&#xff08;10分鐘內完成&#xff09;步驟1&#xff1a;創建ScriptableObject類步驟2&#xff1a;創建顏色配置資產步驟3&#xff1a;創建Cube控制器步驟4&#xff1a;設置場景和Cube步驟5&#xff1a;添加簡單UI提示步驟6&#xff…

One Year~

入局 作為科班學生&#xff0c;沒事就在CSDN閑逛&#xff0c;只作為旁觀者的身份去體會別人的好文。當時也沒想著說去自己寫一些博客記錄學習過程。相信大多數同學和我有一樣的心理。 但在看魚皮哥的課程時&#xff0c;發現他有著寫文檔和博客的習慣&#xff0c;整理自己的思路…