使用python指令碼捕獲分布式環境日誌資訊

2021-08-27 16:25:08 字數 2113 閱讀 4325

【使用場景】

有時候一些分布式伺服器上的問題,日誌獲取是需要兩段聯動,比如:客戶端出現了報錯,這時候要去伺服器上看伺服器的原因,手工開啟日誌等等。人為在伺服器等待守護不現實,比較好的方法就是寫乙個可以通訊的指令碼,客戶端發現了報錯,通知服務端,服務端側進行日誌收集

客戶端**

主要邏輯:

迴圈執行某乙個命令,如果出現成功,則發訊息給服務端,cmdstr寫客戶端需要捕獲的日誌的命令

time.sleep(5)服務端**

主要邏輯

啟動監聽,收到客戶端訊息後,執行cmdstr上面配置的命令,可以是dump資訊,可以是列印堆疊,可以是日誌開啟並收集等等

# -*- coding: utf-8 -*-

# created: huashan

import os #python的標準庫中的os模組包含普遍的作業系統功能

import re #引入正規表示式物件

import urllib #用於對url進行編譯碼

from basehttpserver import httpserver, basehttprequesthandler #匯入http處理相關的模組

import commands

cmdstr = "server -dump ***x"

listenport = 8000

#自定義處理程式,用於處理http請求

#處理get請求

def do_get(self):

#獲取url

print 'url=',self.path

#頁面輸出模板字串

templatestr = '''receive

''' self.protocal_version = 'http/1.1' #設定協議版本

self.send_response(200) #設定響應狀態碼

self.send_header("welcome", "contect") #設定響應頭

self.end_headers()

self.wfile.write(templatestr) #輸出響應內容

status,output=commands.getstatusoutput(cmdstr)

#啟動服務函式

http_server.serve_forever() #設定一直監聽並接收請求

start_server(listenport) #啟動服務,監聽8000埠

python分布式架構 分布式架構

1.分布式架構 採用centos mongodb windows2012 python redis進行分布式架構搭建,mongodb的框架最核心的設計就是 mongodb和mapreduce。mongodb為海量的資料提供了儲存,則mapreduce為海量的資料提供了計算,windows2012作為...

分布式 分布式鎖

本質是利用redis的setnx 方法的特性來加鎖,setnx 即key不存在則設定key,否則直接返回false,要求在分布式系統中使用同乙個redis服務,以下提供兩種解決方案 1 直接使用redistemplate 這其實並不能完全保證高併發下的安全問題,因為可能在鎖過期之後該執行緒尚未執行完...

分布式 分布式事務

是資料庫執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。事務的acid四大特性 原子性 atomicity 事務作為乙個整體被執行。一致性 consistency 從乙個一致的狀態轉換到另乙個一致的狀態。隔離性 isolation 多個事務併發執行時,併發事務之間互相影響的程度。永續性 d...