網站首頁 編程語言 正文
在我們的日常生活工作中,經常會遇到需要上傳日志的場景,比如多臺機器運行同一個程序,并且需要記錄每臺機器程序產生的日志,根據相關關鍵詞告警,或者進行無數據告警,如果自己搭建這套系統需要耗費不少時間,因此如果能使用市面上現成的系統會很方便。
本文將教你如何通過阿里云日志服務搭建一套通過Python上傳日志、配置日志告警的監控服務。
1.準備
開始之前,你要確保Python和pip已經成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細Python安裝指南?進行安裝。
(可選1)?如果你用Python的目的是數據分析,可以直接安裝Anaconda,它內置了Python和pip.
(可選2)?此外,推薦大家用VSCode編輯器,它有許多的優點
請選擇以下任一種方式輸入命令安裝依賴:
1. Windows 環境 打開 Cmd (開始-運行-CMD)。
2. MacOS 環境 打開 Terminal (command+空格輸入Terminal)。
3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install aliyun-log-python-sdk
接下來,登陸阿里云控制臺,進入日志應用,通過下面的步驟創建日志Project和Logstore:
點擊Python - SDK 寫入,再根據你的需要創建Project和Logstore:
隨后會進入這個頁面,直接點擊確定即可:
2.使用阿里云SDK上傳Python日志
為了使用阿里云SDK上傳日志,我們需要先獲取Access Token, 將鼠標移動到右上角頭像上點擊AccessKey管理:
然后點擊創建AccessKey,輸入相關驗證信息就能獲取 accessKeyId 和 accessKey:
編寫Python代碼,配置AccessKey和你在第一步驟創建的Project及logstore名稱:
from?aliyun.log?import?LogClient, PutLogsRequest, LogItem, GetLogsRequest, IndexConfig
import?time
# 配置AccessKey、服務入口、Project名稱、Logstore名稱等相關信息。
# 阿里云訪問密鑰AccessKey。更多信息,請參見訪問密鑰。
# 阿里云賬號AccessKey擁有所有API的訪問權限,風險很高。強烈建議您創建并使用RAM用戶進行API訪問或日常運維。
accessKeyId =?"你的AccessKey ID"
accessKey =?"你的AccessKey"
# 日志服務的域名。更多信息,請參見服務入口。此處以廣州為例,其它地域請根據實際情況填寫。
endpoint =?"cn-guangzhou.log.aliyuncs.com"
# 創建日志服務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表示查詢日志的時間范圍,Unix時間戳格式。
from_time = int(time.time()) -?3600
to_time = time.time() +?3600
然后我們就可以編寫Python代碼創建索引(日志的索引可以理解為MySQL中的數據庫)和插入日志了:
# 向Logstore寫入數據。
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寫入數據。
????put_logs()
運行程序后出現對應的提示,說明日志上傳成功:
python test.py
# ready to put logs for tradingview
# put logs for tradingview success
進入控制臺對應的Project,你會看到剛剛上傳的日志已經顯示在上面:
3.配置日志告警
日志告警的配置也非常簡單,輸入你的查詢條件,獲得輸出后點擊上方另存為告警:
在查詢統計中添加你需要監控并觸發告警的條件,比如我設置出現一次該日志的時候觸發告警:
效果如下,我這里文本配置得太簡單了,你也可以在標注中配置復雜一點的文本:
用起來挺方便的,如果你有類似的多機器日志監控服務,比如分布式模型訓練監控、交易服務監控等等,可以考慮使用這個日志服務。
原文鏈接:https://mp.weixin.qq.com/s/D8rmXDnICgLK48kNic29TQ
相關推薦
- 2023-02-04 Rust?語言的全鏈路追蹤庫?tracing使用方法_Rust語言
- 2022-04-11 python中pip安裝、升級以及升級固定的包_python
- 2022-12-06 Android?Doze模式下Alarm定時任務實現流程詳解_Android
- 2022-02-18 解決 Syntax Error: Error: PostCSS received undefined
- 2023-07-09 抽象數據結構與表抽象數據結構表
- 2022-06-08 Spring Cloud Alibaba Nacos 客戶端服務注冊心跳和健康監測
- 2022-06-01 一起來學習C++的動態內存管理_C 語言
- 2023-08-28 react:使用 moment 來獲取日期
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支