成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

探索Zabbix API(三):導出主機組資源使用率

開發 前端
文章描寫了 Zabbix API 的腳本通過與用戶交互,動態獲取 Zabbix 中主機組的信息,對用戶選擇的特定主機組,獲取該主機組內主機的基本信息以及 CPU 使用率,并將這些信息導出到 CSV 文件中。

今天我們來講一下探索zabbixAPI的最后一章,結合前兩章的內容,導出指定主機組的資源使用情況。

01、使用場景

通過該腳本,系統管理員和運維團隊可以定期分析系統中特定主機組的性能數據,包括主機的基本信息和 CPU 使用率。這有助于識別系統中的性能瓶頸、監測系統資源的使用情況,并及時采取措施進行優化。

02、導出數據的方法介紹

1.時間函數,用途取監控時間范圍

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

函數解析:

x: 表示當前時間減去 12 小時的時間,以字符串形式表示。這一時間字符串的格式為 "%Y-%m-%d %H:%M:%S",即年-月-日 時:分:秒。

y: 表示當前時間,以字符串形式表示,同樣使用 "%Y-%m-%d %H:%M:%S" 格式。

z: 使用 time.strftime 函數獲取當前時間的字符串表示,格式為 "%Y-%m-%d %H-%M-%S",即年-月-日 時-分-秒。

timestamp函數首先使用 time.strptime 函數將時間字符串轉換為結構化的時間元組。然后,通過 time.mktime 函數將時間元組轉換為時間戳,并使用 str 函數將時間戳轉換為字符串。

2.獲取指定監控項的ID

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"]

函數解析:

函數首先獲取與主機關聯的監控項,然后從中找到 CPU 使用率相關的監控項。

Cpu_load:表示要獲取的主機監控項的key值(可以在對應主機的監控項中查看,這里選的是CPU使用率)

get_cpu_utilization(host_id, auth): 這個函數用于獲取指定主機的 CPU 使用率。它首先通過 Zabbix API 中的 item.get 方法獲取主機的監控項列表,然后從中找到與 CPU 使用率相關的監控項,并獲取其歷史數據。最終,返回一個包含 CPU 使用率歷史數據的列表。

host_id: 主機的ID,表示要獲取 CPU 使用率的主機。

auth: 認證令牌,用于通過 Zabbix API 進行身份驗證。

3.獲取歷史數據函數

def get_item_history(item_id, auth):
    data = {
        "jsonrpc": "2.0",
        "method": "history.get",
        "params": {
            "output": "extend",
            "itemids": item_id,
            "history": 0,  # 0代表數值型數據
            "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

函數解析:

函數通過 Zabbix API 發送請求,拿到歷史數據,然后將其返回供后續使用。

get_item_history(item_id, auth): 這個函數用于獲取指定監控項(item)的歷史數據。它構建了一個 JSON-RPC 請求,其中包括監控項的 item_id,并通過 Zabbix API 中的 history.get 方法獲取歷史數據。該函數返回一個包含歷史數據的列表。

item_id: 監控項的ID,表示要獲取歷史數據的監控項。

4.獲取主機信息喝資源使用率并導入以主機組名命名的CSV文件中

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})

函數解析:

filename: 通過使用用戶選擇的主機組名(group_name_num2)作為文件名的一部分創建 CSV 文件的名稱。打開 CSV 文件,并使用 csv.DictWriter 對象創建一個 CSV 寫入器,定義了列名為 ["Group", "Hostname", "IP", "CPU使用率"]。

寫入 CSV 文件的表頭行。遍歷主機組信息,找到用戶選擇的主機(group_name_num2)。獲取該主機組內的所有主機信息,遍歷每個主機。對于每個主機,獲取主機名(hostname)、IP地址(ip)和對應的 CPU 使用率(cpu_value)。

將這些信息寫入主機組命名的 CSV 文件。

5.打印所有主機組名,根據用戶輸入模糊匹配列表輸出,供用戶參考輸入。根據用戶的輸入獲取準確的主機組名

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主機組名稱: ")
    result = fuzzy_match_list(group_name, host_group_list)
    print(result)


    group_name_num = input("請輸入要查詢的主機組序號: ")


    # 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
    
#調用 get_zabbix_data 函數獲取認證令牌、時間范圍、主機組列表和用戶選擇的主機組名。
token, start, end, group_names, group_name_num2 = get_zabbix_data()
#調用 export_host_info 函數,將獲取的信息寫入 CSV 文件。
export_host_info(token, start, end, group_names, group_name_num2)

函數解析:

調用 get_token 獲取 Zabbix API 的認證令牌 token。

調用 timestamp(x, y) 獲取時間范圍的起始時間戳 start 和結束時間戳 end。

獲取并輸出主機組列表,用戶輸入所需的主機組名稱。

使用 fuzzy_match_list 函數對用戶輸入的主機組名稱進行模糊匹配,輸出匹配結果。

用戶輸入要查詢的主機組序號,計算用戶想要的主機組的序號(group_name_num1),然后裁剪掉序號前面的部分得到用戶選擇的主機組名(group_name_num2)。

最后使用兩段代碼完成調用。

token, start, end, group_names, group_name_num2 = get_zabbix_data()

export_host_info(token, start, end, group_names, group_name_num2)

03、結論

文章描寫了 Zabbix API 的腳本通過與用戶交互,動態獲取 Zabbix 中主機組的信息,對用戶選擇的特定主機組,獲取該主機組內主機的基本信息以及 CPU 使用率,并將這些信息導出到 CSV 文件中。通過 Zabbix 的認證令牌,以及時間范圍的設置,使得用戶可以根據自己的需求靈活地查詢和導出監控數據。從而更好地了解和管理系統的性能。

責任編輯:武曉燕 來源: 新鈦云服
相關推薦

2023-11-29 08:03:46

Zabbix APIPython

2013-04-12 09:39:01

Top監控系統

2015-01-05 14:07:27

云計算虛擬化云環境

2024-04-11 13:27:19

Linuxtop命令

2016-10-11 08:33:32

服務器使用率多線程

2015-04-27 09:29:48

微軟AzureIaaS混合IT

2009-11-16 17:03:20

Oracle優化CPU

2011-04-06 11:36:30

MRTG監控內存

2019-01-15 15:04:54

CPU電腦使用率

2024-05-14 08:47:01

JavaPAC++

2021-05-31 15:53:57

CPU Top命令

2022-07-23 21:31:24

KubernetesLinux開源

2009-01-13 16:41:02

編程語言JavaC

2021-08-10 11:45:57

topCPULinux

2012-12-28 11:46:35

手機系統iOS黑莓

2014-05-09 10:42:38

GNULinux

2015-11-30 11:32:21

Windows 10Windows 8使用率

2011-08-24 14:35:35

Platform

2021-11-11 16:46:02

CPU使用率 .NET
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品视频在线看 | 亚洲国产成人精品女人久久久 | 精品在线一区二区三区 | 天天操狠狠操 | 成人a视频片观看免费 | 午夜欧美一区二区三区在线播放 | 天天躁天天操 | 亚洲国产网站 | 给我免费的视频在线观看 | 婷婷精品 | 国产一级免费视频 | 凹凸日日摸日日碰夜夜 | 狠狠操狠狠干 | 欧美综合一区二区三区 | 国产精品高潮呻吟久久av黑人 | 国产不卡在线播放 | 91福利在线观看 | 日韩免费网站 | 成人在线免费视频 | 国产成人99久久亚洲综合精品 | 欧美一区2区三区4区公司 | 久久久精品一区二区三区 | 国产福利小视频 | 亚洲久久一区 | 男女一区二区三区 | 美国一级黄色片 | 精品少妇一区二区三区日产乱码 | 国产免费一区二区三区 | 国产精品99久 | 久久av资源网 | 亚洲一区二区三区视频 | 久日精品| 久久国产精品72免费观看 | 成人a免费 | 亚洲精品视频二区 | 高清黄色毛片 | 91免费观看| 成人网在线看 | 成人精品视频99在线观看免费 | 毛片一区二区三区 | 欧美性生活一区二区三区 |