AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當(dāng)前位置:首頁 > 科技  > 軟件

探索Zabbix API(三):導(dǎo)出主機(jī)組資源使用率

來源: 責(zé)編: 時間:2023-12-20 09:22:49 240觀看
導(dǎo)讀今天我們來講一下探索zabbixAPI的最后一章,結(jié)合前兩章的內(nèi)容,導(dǎo)出指定主機(jī)組的資源使用情況。01、使用場景通過該腳本,系統(tǒng)管理員和運(yùn)維團(tuán)隊可以定期分析系統(tǒng)中特定主機(jī)組的性能數(shù)據(jù),包括主機(jī)的基本信息和 CPU 使用率。這

今天我們來講一下探索zabbixAPI的最后一章,結(jié)合前兩章的內(nèi)容,導(dǎo)出指定主機(jī)組的資源使用情況。

01、使用場景

NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

通過該腳本,系統(tǒng)管理員和運(yùn)維團(tuán)隊可以定期分析系統(tǒng)中特定主機(jī)組的性能數(shù)據(jù),包括主機(jī)的基本信息和 CPU 使用率。這有助于識別系統(tǒng)中的性能瓶頸、監(jiān)測系統(tǒng)資源的使用情況,并及時采取措施進(jìn)行優(yōu)化。NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

02、導(dǎo)出數(shù)據(jù)的方法介紹

NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

1.時間函數(shù),用途取監(jiān)控時間范圍NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

x = (datetime.datetime.now() - datetime.timedelta(hours=12)).strftime("%Y-%m-%d %H:%M:%S")y = (datetime.datetime.now()).strftime("%Y-%m-%d %H:%M:%S")z = (time.strftime('%Y-%m-%d %H-%M-%S'))def timestamp(x, y):    p = time.strptime(x, "%Y-%m-%d %H:%M:%S")    starttime = str(int(time.mktime(p)))    q = time.strptime(y, "%Y-%m-%d %H:%M:%S")    endtime = str(int(time.mktime(q)))    return starttime, endtime

函數(shù)解析:NQb28資訊網(wǎng)——每日最新資訊28at.com

x: 表示當(dāng)前時間減去 12 小時的時間,以字符串形式表示。這一時間字符串的格式為 "%Y-%m-%d %H:%M:%S",即年-月-日 時:分:秒。NQb28資訊網(wǎng)——每日最新資訊28at.com

y: 表示當(dāng)前時間,以字符串形式表示,同樣使用 "%Y-%m-%d %H:%M:%S" 格式。NQb28資訊網(wǎng)——每日最新資訊28at.com

z: 使用 time.strftime 函數(shù)獲取當(dāng)前時間的字符串表示,格式為 "%Y-%m-%d %H-%M-%S",即年-月-日 時-分-秒。NQb28資訊網(wǎng)——每日最新資訊28at.com

timestamp函數(shù)首先使用 time.strptime 函數(shù)將時間字符串轉(zhuǎn)換為結(jié)構(gòu)化的時間元組。然后,通過 time.mktime 函數(shù)將時間元組轉(zhuǎn)換為時間戳,并使用 str 函數(shù)將時間戳轉(zhuǎn)換為字符串。NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

2.獲取指定監(jiān)控項的IDNQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

Cpu_load="system.cpu.util[]"def get_cpu_utilization(host_id, auth):    data = {        "jsonrpc": "2.0",        "method": "item.get",        "params": {            "output": "extend",            "hostids": host_id,            "search": {                "key_": Cpu_load              },            "sortfield": "name"        },        "auth": auth,        "id": 1    }    response = requests.post(url=ApiUrl, headers=header, jsnotallow=data)    result = json.loads(response.content)    items = result["result"]

函數(shù)解析:NQb28資訊網(wǎng)——每日最新資訊28at.com

函數(shù)首先獲取與主機(jī)關(guān)聯(lián)的監(jiān)控項,然后從中找到 CPU 使用率相關(guān)的監(jiān)控項。NQb28資訊網(wǎng)——每日最新資訊28at.com

Cpu_load:表示要獲取的主機(jī)監(jiān)控項的key值(可以在對應(yīng)主機(jī)的監(jiān)控項中查看,這里選的是CPU使用率)NQb28資訊網(wǎng)——每日最新資訊28at.com

get_cpu_utilization(host_id, auth): 這個函數(shù)用于獲取指定主機(jī)的 CPU 使用率。它首先通過 Zabbix API 中的 item.get 方法獲取主機(jī)的監(jiān)控項列表,然后從中找到與 CPU 使用率相關(guān)的監(jiān)控項,并獲取其歷史數(shù)據(jù)。最終,返回一個包含 CPU 使用率歷史數(shù)據(jù)的列表。NQb28資訊網(wǎng)——每日最新資訊28at.com

host_id: 主機(jī)的ID,表示要獲取 CPU 使用率的主機(jī)。NQb28資訊網(wǎng)——每日最新資訊28at.com

auth: 認(rèn)證令牌,用于通過 Zabbix API 進(jìn)行身份驗證。NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

3.獲取歷史數(shù)據(jù)函數(shù)NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

def get_item_history(item_id, auth):    data = {        "jsonrpc": "2.0",        "method": "history.get",        "params": {            "output": "extend",            "itemids": item_id,            "history": 0,  # 0代表數(shù)值型數(shù)據(jù)            "sortfield": "clock",            "sortorder": "DESC",            "limit": 1        },        "auth": auth,        "id": 1    }    response = requests.post(url=ApiUrl, headers=header, jsnotallow=data)    result = json.loads(response.content)    history_data = result["result"]    return history_data

函數(shù)解析:NQb28資訊網(wǎng)——每日最新資訊28at.com

函數(shù)通過 Zabbix API 發(fā)送請求,拿到歷史數(shù)據(jù),然后將其返回供后續(xù)使用。NQb28資訊網(wǎng)——每日最新資訊28at.com

get_item_history(item_id, auth): 這個函數(shù)用于獲取指定監(jiān)控項(item)的歷史數(shù)據(jù)。它構(gòu)建了一個 JSON-RPC 請求,其中包括監(jiān)控項的 item_id,并通過 Zabbix API 中的 history.get 方法獲取歷史數(shù)據(jù)。該函數(shù)返回一個包含歷史數(shù)據(jù)的列表。NQb28資訊網(wǎng)——每日最新資訊28at.com

item_id: 監(jiān)控項的ID,表示要獲取歷史數(shù)據(jù)的監(jiān)控項。NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

4.獲取主機(jī)信息喝資源使用率并導(dǎo)入以主機(jī)組名命名的CSV文件中NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

def export_host_info(token, start, end, group_names, group_name_num2):    filename = f'{group_name_num2}.csv'    with open(filename, 'w', newline='', encoding='utf-8-sig') as f:        writer = csv.DictWriter(f, fieldnames=["Group", "Hostname", "IP", "CPU使用率"])        writer.writeheader()        for group in group_names:            if group['name'] == group_name_num2:                group_id = group['groupid']                group_name = group['name']                hosts = get_hosts_in_group(group_id, token)                for host in hosts:                    hostname = host['name']                    ip = host['interfaces'][0]['ip']                    cpu_utilization = get_cpu_utilization(host['hostid'], token)                    cpu_value = cpu_utilization[0]['value'] if cpu_utilization else "N/A"                    writer.writerow({"Group": group_name, "Hostname": hostname, "IP": ip, "CPU使用率": cpu_value})

函數(shù)解析:NQb28資訊網(wǎng)——每日最新資訊28at.com

filename: 通過使用用戶選擇的主機(jī)組名(group_name_num2)作為文件名的一部分創(chuàng)建 CSV 文件的名稱。打開 CSV 文件,并使用 csv.DictWriter 對象創(chuàng)建一個 CSV 寫入器,定義了列名為 ["Group", "Hostname", "IP", "CPU使用率"]。NQb28資訊網(wǎng)——每日最新資訊28at.com

寫入 CSV 文件的表頭行。遍歷主機(jī)組信息,找到用戶選擇的主機(jī)(group_name_num2)。獲取該主機(jī)組內(nèi)的所有主機(jī)信息,遍歷每個主機(jī)。對于每個主機(jī),獲取主機(jī)名(hostname)、IP地址(ip)和對應(yīng)的 CPU 使用率(cpu_value)。NQb28資訊網(wǎng)——每日最新資訊28at.com

將這些信息寫入主機(jī)組命名的 CSV 文件。NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

5.打印所有主機(jī)組名,根據(jù)用戶輸入模糊匹配列表輸出,供用戶參考輸入。根據(jù)用戶的輸入獲取準(zhǔn)確的主機(jī)組名NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

def get_zabbix_data():    token = get_token()    start, end = timestamp(x, y)    # Get and display the list of host groups    host_group_list = []    group_names = get_group_name(token)    for index, group in enumerate(group_names, start=1):        host_group_list.append(f"{index}.{group['name']}")    print(host_group_list)    # User input and selection    group_name = input("請輸入zabbix主機(jī)組名稱: ")    result = fuzzy_match_list(group_name, host_group_list)    print(result)    group_name_num = input("請輸入要查詢的主機(jī)組序號: ")    # Get user-selected host group information    group_name_num1 = host_group_list[int(group_name_num) - 1]    group_name_num2 = group_name_num1.split(".")[1]    print(group_name_num2)    return token, start, end, group_names, group_name_num2    #調(diào)用 get_zabbix_data 函數(shù)獲取認(rèn)證令牌、時間范圍、主機(jī)組列表和用戶選擇的主機(jī)組名。token, start, end, group_names, group_name_num2 = get_zabbix_data()#調(diào)用 export_host_info 函數(shù),將獲取的信息寫入 CSV 文件。export_host_info(token, start, end, group_names, group_name_num2)

函數(shù)解析:NQb28資訊網(wǎng)——每日最新資訊28at.com

調(diào)用 get_token 獲取 Zabbix API 的認(rèn)證令牌 token。NQb28資訊網(wǎng)——每日最新資訊28at.com

調(diào)用 timestamp(x, y) 獲取時間范圍的起始時間戳 start 和結(jié)束時間戳 end。NQb28資訊網(wǎng)——每日最新資訊28at.com

獲取并輸出主機(jī)組列表,用戶輸入所需的主機(jī)組名稱。NQb28資訊網(wǎng)——每日最新資訊28at.com

使用 fuzzy_match_list 函數(shù)對用戶輸入的主機(jī)組名稱進(jìn)行模糊匹配,輸出匹配結(jié)果。NQb28資訊網(wǎng)——每日最新資訊28at.com

用戶輸入要查詢的主機(jī)組序號,計算用戶想要的主機(jī)組的序號(group_name_num1),然后裁剪掉序號前面的部分得到用戶選擇的主機(jī)組名(group_name_num2)。NQb28資訊網(wǎng)——每日最新資訊28at.com

最后使用兩段代碼完成調(diào)用。NQb28資訊網(wǎng)——每日最新資訊28at.com

token, start, end, group_names, group_name_num2 = get_zabbix_data()NQb28資訊網(wǎng)——每日最新資訊28at.com

export_host_info(token, start, end, group_names, group_name_num2)NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

03、結(jié)論

NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

NQb28資訊網(wǎng)——每日最新資訊28at.com

文章描寫了 Zabbix API 的腳本通過與用戶交互,動態(tài)獲取 Zabbix 中主機(jī)組的信息,對用戶選擇的特定主機(jī)組,獲取該主機(jī)組內(nèi)主機(jī)的基本信息以及 CPU 使用率,并將這些信息導(dǎo)出到 CSV 文件中。通過 Zabbix 的認(rèn)證令牌,以及時間范圍的設(shè)置,使得用戶可以根據(jù)自己的需求靈活地查詢和導(dǎo)出監(jiān)控數(shù)據(jù)。從而更好地了解和管理系統(tǒng)的性能。NQb28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-50025-0.html探索Zabbix API(三):導(dǎo)出主機(jī)組資源使用率

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Java中“100=100”為True,而"1000=1000"為False?

下一篇: 掌握Python的高級用法:技巧、技術(shù)和實用性示例

標(biāo)簽:
  • 熱門焦點
Top