前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python获取数据实现echarts出图

python获取数据实现echarts出图

作者头像
cuijianzhe
发布2022-06-14 17:44:37
3310
发布2022-06-14 17:44:37
举报
文章被收录于专栏:cuijianzhe

一、 python3 + echarts

1.1. python3 获取数据展示无线节点图例:

1.1.1 通过 snmp 获取源数据

代码语言:javascript
复制
#!/bin/env python3
import json
import subprocess
import os
User_list = []
CMD_num = "snmpwalk -v 2c -c limi@2018  10.200.250.5 1.3.6.1.4.1.2011.6.139.13.3.10.1.5 | wc -l"  #AP总数
Num = int(subprocess.getoutput(CMD_num))
CMD_name = '''snmpwalk -v 2c -c limi@2018  10.200.250.5 enterprises.2011.6.139.13.3.10.1.5 | awk  '{print $4}' | sed 's/"//g' '''

ap_name = subprocess.getoutput(CMD_name)
Name_list = ap_name.split("\n")

for id in range(0,Num):
    CMD = "snmpwalk -v 2c -c limi@2018  10.200.250.5 1.3.6.1.4.1.2011.6.139.13.3.10.1.45.%s | awk '{print $4}'"%id  #AP连接用户数
    Sum = int(subprocess.getoutput(CMD))
    User_list.append(Sum)

data = json.dumps({'APUser':User_list,'APNAME':Name_list})
with open('/var/www/html/echarts/data/data'+'.json','w') as f:
     f.write(data)

1.1.2 echarts 渲染

在此表示 echarts 很强大

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>用户数显示</title>
    <script src="js/jquery-1.12.4.js"></script>
    <script src="js/echarts.min.js"></script>

</head>

<body>
<div id="main" style="width:2400px;height:800px;"></div>

<script>
    var myChart = echarts.init(document.getElementById('main'));
    // 异步加载数据
    $.get('data/data.json').done(function (data) {

        // 填入数据
        myChart.setOption({
            title: {
                text: 'AP用户数连接示例'
            },
            tooltip: {},
            legend: {
                data: ['用户数']
            },
            xAxis: {
                data: data.APNAME
            },
            yAxis: {},
            series: [{
                name: '用户数',
                type: 'bar',
                data: data.APUser
            }]
        });
    });
</script>
</body>
</html>

效果图:

2. 展示网络设备上下行流量

2.1 首先检索主机列表,找到 hostid:

代码语言:javascript
复制
import requests
import json
import os
url = 'http://192.168.51.202/api_jsonrpc.php'
headers = {'Content-Type': 'application/json-rpc'}
def login():

    post_data = {
	    "jsonrpc":"2.0",
	    "method":"user.login",
	    "params":{
		    "user":"cuijianzhe",
		    "password":"jhzxxb@100"
		    },
		    "id":1
    }

    res = requests.post(url,data=json.dumps(post_data),headers=headers)
    zabbix_res = (json.loads(res.text)).get('result')
    return zabbix_res
def get_data(token):
    post_data = {
        "jsonrpc": "2.0",
        "method": "host.get",
        "params": {
            "output": [
                "hostid",
                "host"
            ],
            "selectInterfaces": [
                "interfaceid",
                "ip"
            ]
        },
        "id": 2,
        "auth": token
    }
    res = requests.post(url, data=json.dumps(post_data), headers=headers)
    traffic_res = json.loads(res.text)
    # print(json.dumps(traffic_res, sort_keys=True, indent=4, separators=(',', ':')))
    results = traffic_res.get('result')
    for i in results:
        print(i)

if __name__ == "__main__":
    auth = login()
    get_data(auth)

2.2 从 zabbix 源获取数据:

代码语言:javascript
复制
import requests
import json
import os
url = 'http://192.168.51.202/api_jsonrpc.php'
headers = {'Content-Type': 'application/json-rpc'}
def login():

    post_data = {
	    "jsonrpc":"2.0",
	    "method":"user.login",
	    "params":{
		    "user":"cuijianzhe",
		    "password":"jhzxxb@100"
		    },
		    "id":1
    }

    res = requests.post(url,data=json.dumps(post_data),headers=headers)
    zabbix_res = (json.loads(res.text)).get('result')
    return zabbix_res
def get_data(token):
    post_data = {
        "jsonrpc": "2.0",
        "method": "item.get",
        "params": {
            "output": "extend",
            "hostids": "10290",
            "search": {
                "key_": "net.if.in"
            },
            "sortfield": "name"
        },
        "auth": token,
        "id": 1
    }

    res = requests.post(url, data=json.dumps(post_data), headers=headers)
    traffic_res = json.loads(res.text)
    # print(json.dumps(traffic_res, sort_keys=True, indent=4, separators=(',', ':')))
    results = traffic_res.get('result')
    #直播间数据整理
    list_room = []
    list_port = []
    list_name = [1, 3, 5, 7, 9, 11, 23, 21, 19, 17, 15, 13, 25, 27, 29, 31, 33, 35, 2, 43, 41, 39, 37, 4, 6, 8, 10, 12,14,16]

    for l in list_name:
        list_port.append('Interface GigabitEthernet0/0/%d(): Bits received' % l)
    # out:  Interface GigabitEthernet0/0/22(): Bits sent
    # in:  Interface GigabitEthernet0/0/1(): Bits received
    for i in range(1, 31):
        list_room.append('LiveRoom%d' %i)
    # sum = 1
    # while sum < 31:
    #     for j in list_port:
    #         sum += 1
    # print('直播间:%s,对应端口:%s'%(sum-1,j))
    port_room = list(zip(list_room, list_port))
    pr_dict = dict(port_room)

    # for pr in port_room:
    #     pr_dict[pr[0]] = pr[1]
    # print(pr_dict)

##循环api返回值和房间端口号,取集合
    # 整合数据
    list_receive = []
    list_name = []
    for k in results:
        for m in pr_dict:
            if k['name'] == pr_dict[m]:
                # print(m,k['lastvalue'])
                traff = (int(k['lastvalue']))/1024   #默认取值为bps,转化为kbps
                list_receive.append(traff)
                list_name.append(m)
    data = json.dumps({'Room': list_name, 'Values': list_receive})
    return data

if __name__ == "__main__":
    auth = login()
    with open('./Liveroom_in' + '.json', 'w') as f:
        f.write(get_data(auth))

图例:


标题:python获取数据实现echarts出图

作者:cuijianzhe

地址:https://cloud.tencent.com/developer/article/2022764

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、 python3 + echarts
    • 1.1. python3 获取数据展示无线节点图例:
      • 1.1.1 通过 snmp 获取源数据
      • 1.1.2 echarts 渲染
      • 效果图:
    • 2. 展示网络设备上下行流量
      • 2.1 首先检索主机列表,找到 hostid:
        • 2.2 从 zabbix 源获取数据:
        • 图例:
    相关产品与服务
    云直播
    云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档