利用Python上傳日志并監(jiān)控告警的方法詳解
在我們的日常生活工作中,經(jīng)常會遇到需要上傳日志的場景,比如多臺機(jī)器運(yùn)行同一個(gè)程序,并且需要記錄每臺機(jī)器程序產(chǎn)生的日志,根據(jù)相關(guān)關(guān)鍵詞告警,或者進(jìn)行無數(shù)據(jù)告警,如果自己搭建這套系統(tǒng)需要耗費(fèi)不少時(shí)間,因此如果能使用市面上現(xiàn)成的系統(tǒng)會很方便。
本文將教你如何通過阿里云日志服務(wù)搭建一套通過Python上傳日志、配置日志告警的監(jiān)控服務(wù)。
1.準(zhǔn)備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細(xì)Python安裝指南 進(jìn)行安裝。
(可選1) 如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda,它內(nèi)置了Python和pip.
(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn)
請選擇以下任一種方式輸入命令安裝依賴:
1. Windows 環(huán)境 打開 Cmd (開始-運(yùn)行-CMD)。
2. MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal)。
3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install aliyun-log-python-sdk
接下來,登陸阿里云控制臺,進(jìn)入日志應(yīng)用,通過下面的步驟創(chuàng)建日志Project和Logstore:

點(diǎn)擊Python - SDK 寫入,再根據(jù)你的需要創(chuàng)建Project和Logstore:


隨后會進(jìn)入這個(gè)頁面,直接點(diǎn)擊確定即可:

2.使用阿里云SDK上傳Python日志
為了使用阿里云SDK上傳日志,我們需要先獲取Access Token, 將鼠標(biāo)移動到右上角頭像上點(diǎn)擊AccessKey管理:

然后點(diǎn)擊創(chuàng)建AccessKey,輸入相關(guān)驗(yàn)證信息就能獲取 accessKeyId 和 accessKey:

編寫Python代碼,配置AccessKey和你在第一步驟創(chuàng)建的Project及l(fā)ogstore名稱:
from?aliyun.log?import?LogClient, PutLogsRequest, LogItem, GetLogsRequest, IndexConfig import?time # 配置AccessKey、服務(wù)入口、Project名稱、Logstore名稱等相關(guān)信息。 # 阿里云訪問密鑰AccessKey。更多信息,請參見訪問密鑰。 # 阿里云賬號AccessKey擁有所有API的訪問權(quán)限,風(fēng)險(xiǎn)很高。強(qiáng)烈建議您創(chuàng)建并使用RAM用戶進(jìn)行API訪問或日常運(yùn)維。 accessKeyId =?"你的AccessKey ID" accessKey =?"你的AccessKey" # 日志服務(wù)的域名。更多信息,請參見服務(wù)入口。此處以廣州為例,其它地域請根據(jù)實(shí)際情況填寫。 endpoint =?"cn-guangzhou.log.aliyuncs.com" # 創(chuàng)建日志服務(wù)Client。 client = LogClient(endpoint, accessKeyId, accessKey) # Project名稱。 project_name =?"aliyun-test-project" #Logstore名稱 logstore_name =?"aliyun-test-logstore" # 查詢語句。 query =?"*| select dev,id from "?+ logstore_name # from_time和to_time表示查詢?nèi)罩镜臅r(shí)間范圍,Unix時(shí)間戳格式。 from_time = int(time.time()) -?3600 to_time = time.time() +?3600
然后我們就可以編寫Python代碼創(chuàng)建索引(日志的索引可以理解為MySQL中的數(shù)據(jù)庫)和插入日志了:
# 向Logstore寫入數(shù)據(jù)。
def?put_logs():
????print("ready to put logs for %s"?% logstore_name)
????log_group = []
????for?i?in?range(0,?100):
????????log_item = LogItem()
????????contents = [
????????????('dev',?'test_put'),
????????????('id', str(i))
????????]
????????log_item.set_contents(contents)
????????log_group.append(log_item)
????request = PutLogsRequest(project_name, logstore_name,?"",?"", log_group, compress=False)
????client.put_logs(request)
????print("put logs for %s success "?% logstore_name)
????time.sleep(5)
if?__name__ ==?'__main__':
????# 向Logstore寫入數(shù)據(jù)。
????put_logs()運(yùn)行程序后出現(xiàn)對應(yīng)的提示,說明日志上傳成功:
python test.py # ready to put logs for tradingview # put logs for tradingview success
進(jìn)入控制臺對應(yīng)的Project,你會看到剛剛上傳的日志已經(jīng)顯示在上面:

3.配置日志告警
日志告警的配置也非常簡單,輸入你的查詢條件,獲得輸出后點(diǎn)擊上方另存為告警:

在查詢統(tǒng)計(jì)中添加你需要監(jiān)控并觸發(fā)告警的條件,比如我設(shè)置出現(xiàn)一次該日志的時(shí)候觸發(fā)告警:

效果如下,我這里文本配置得太簡單了,你也可以在標(biāo)注中配置復(fù)雜一點(diǎn)的文本:

用起來挺方便的,如果你有類似的多機(jī)器日志監(jiān)控服務(wù),比如分布式模型訓(xùn)練監(jiān)控、交易服務(wù)監(jiān)控等等,可以考慮使用這個(gè)日志服務(wù)。
到此這篇關(guān)于利用Python上傳日志并監(jiān)控告警的方法詳解的文章就介紹到這了,更多相關(guān)Python日志上傳 監(jiān)控內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家
相關(guān)文章
Python Pandas 如何shuffle(打亂)數(shù)據(jù)
這篇文章主要介紹了Python Pandas 如何shuffle(打亂)數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
python多進(jìn)程中的內(nèi)存復(fù)制(實(shí)例講解)
下面小編就為大家分享一篇python多進(jìn)程中的內(nèi)存復(fù)制(實(shí)例講解),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01
詳解Python在使用JSON時(shí)需要注意的編碼問題
這篇文章主要介紹了詳解Python在使用JSON時(shí)需要注意的編碼問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Python真題案例之錯(cuò)位鍵盤?單詞長度?字母重排詳解
這篇文章主要介紹了python實(shí)操案例練習(xí),本文給大家分享的案例中主要任務(wù)有錯(cuò)位鍵盤、單詞長度、字母重排,需要的小伙伴可以參考一下2022-03-03
淺談Matplotlib簡介和pyplot的簡單使用——文本標(biāo)注和箭頭
這篇文章主要介紹了淺談Matplotlib簡介和pyplot的簡單使用——文本標(biāo)注和箭頭,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
python實(shí)現(xiàn)程序重啟和系統(tǒng)重啟方式
這篇文章主要介紹了python實(shí)現(xiàn)程序重啟和系統(tǒng)重啟方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
python實(shí)現(xiàn)多線程采集的2個(gè)代碼例子
這篇文章主要介紹了python多線程采集代碼例子,使用了Threading、Queue、MySQLdb等模塊,需要的朋友可以參考下2014-07-07
python實(shí)現(xiàn)在windows下操作word的方法
這篇文章主要介紹了python實(shí)現(xiàn)在windows下操作word的方法,涉及Python操作word實(shí)現(xiàn)打開、插入、轉(zhuǎn)換、打印等操作的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04

