Zabbix物联网可视化开发文档

本文涉及的产品
可视分析地图(DataV-Atlas),3 个项目,100M 存储空间
数据可视化DataV,5个大屏 1个月
简介: Zabbix物联网可视化开发文档

专注于数据可视化:长期开发,意味着项目需求的不断发展和变化。在此进程之中,有多次的反复,是在否定之中的不断成长,文档是记录这个收获的最好见证。


文章目录

前言

一、关键基础设施 API

zabbix-API对接数据格式

核心数据字段格式

lockdatav-API开发记录

1.按设备名称进行数组合并

2.筛选键值

3.前端数据格式

4.将数据总条数入库

二、zabbix获取itermid

1.zabbix-API对接数据格式

2.lockdatav-API开发记录

三、XSS漏洞过滤

新增httpOnly标识

四、爬虫数据参数传递

json_encode将数组转为json字符串

总结


前言

zabbix([`zæbiks])是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。在项目数据可视化的开发过程中,因牵涉的API对接方较多,本文将梳理相关的LOCKDATAV-API对接规范,以便查询。


一、关键基础设施 API

zabbix-API对接数据格式

核心数据字段格式

name,必须为华三核心交换机|CPU1使用率|10.52.200.254,否则将无法筛选同一个设备;华三核心交换机,是同一个设备必须保持一致的名称;

status:0,正常;1停机;

triggers:[0].value 和[0].value ,标识停机或暂停状态;

lastvalue,数值;

{
    "itemid": "45880",
    "hostid": "10533",
    "name": "华三核心交换机|CPU1使用率|10.52.200.254",
    "status": "0",
    "triggers": [
        {
            "value": "0",
        },
        {
            "value": "0",
        },
        {
            "value": "0",
        }
    ],
    "lastclock": "1670938900",
    "lastvalue": "10",
}

lockdatav-API开发记录

1.按设备名称进行数组合并

     //01.按照设备名称进行数组合并;
            $list = array();
            foreach ($dataInfo as $v) {
                if (stripos($v["name"], 'CPU') !== false || stripos($v["name"], '内存') !== false || stripos($v["name"], '硬盘守护') !== false || stripos($v["name"], '网口守护') !== false || stripos($v["name"], '存储') !== false || stripos($v["name"], '服务1') !== false || stripos($v["name"], '服务2') !== false) {
                    $list[explode('|', $v['name'])[0]][] = $v;
                }
            }

2.筛选键值

            $dName = array();
            foreach ($dataInfo as $v) {
                $key = explode('|', $v['name'])[0];
                if (!isset($dName[$key])) {
                    $dName[$key] = $v['name'];
                }
            }
            //保留唯一值;
            $unique = array_values($dName);
            $len = count($unique);
            // echo explode('|', $unique[2])[0];
            //var_dump($unique[2]);
            //var_dump($list[explode('|', $unique[2])[0]]);
            //$a = $list[explode('|', $unique[0])[0]];
            //die(json_encode_lockdata($a));

3.前端数据格式

            @$dataInfoNew = array();
            for ($n = 0; $n < $len; $n++) {
                $dataInfoNew[$n] = makeZabArr($list[explode('|', $unique[$n])[0]], $quota);
            }
            //echo "<pre>";
            //die(json_encode_lockdata($dataInfoNew));
            @$listArr = array();
            foreach ($dataInfoNew as $k => $v) {
                if (array_key_exists("name", $dataInfoNew[$k])) {
                    $listArr[] = $v;
                }
            }

4.将数据总条数入库

            $len1 = count($listArr);
            $row = $db->fetch('basics', 'group_id,total', array('group_id' => $hostids), ' id DESC');
            if (!$row) {
                $db->insert('basics', array('group_id' => $hostids, 'total' => $len1));
            } else {
                $db->update('basics', array('total' => $len1), 'group_id=' . $hostids);
            }


二、zabbix获取itermid

1.zabbix-API对接数据格式

  • 由于系统需要支持用户名称、归属区域和设备别名的模糊查询,在后台添加设备的时候,必须添加对应的tags字段;
  "tags": [
        {
            "tag": "微信",
            "value": "c3e42012-621c-4948-8e3e-721defb7d6e9"
        },
        {
            "tag": "用户名称",
            "value": "客户大华"
        },
        {
            "tag": "联系电话",
            "value": "刘先生 1333333"
        },
        {
            "tag": "设备归属",
            "value": "关键基础设施"
        },
        {
            "tag": "归属区域",
            "value": "中心机房"
        },
        {
            "tag": "设备别名",
            "value": "华三核心交换机"
        }
    ]

2.lockdatav-API开发记录

function getItem()
    {
        $hostids = get_param('hostids');
        $name = get_param('name');
        $keys = get_param('keys');
        $district = get_param('district');
        $groupid = array(
            "jsonrpc" => "2.0",
            "method" => "item.get",
            "params" => array(
                "output" => "extend",
                "sortfield" => ["itemid"],
                "search" => [
                    "name" => $name
                ],
                "hostids" => $hostids,  # 指定主机id,数组或者单个id
                "with_triggers" => True,
                "tags" => array(
                    [
                        "tag" => "设备归属",
                        "value" => $keys,
                    ],
                    [
                        "tag" => "归属区域",
                        "value" => $district,
                    ]
                ),
                "selectItemDiscovery" => "extend",
                "selectHosts" => "extend",
                "selectTriggers" => "extend",
                "selectTags" => "extend"
            ),
            "auth" => $this->getZabToken(),
            "id" => 1
        );
        $data = json_encode_lockdata($groupid);
        $result = getZabbix($this->url, $data);
        $groupinfo = $result->result;
        $groupid = object_array($groupinfo);
        die(json_encode_lockdata($groupid));
    }


三、XSS漏洞过滤

新增httpOnly标识

        SetCookie("dbUser", $row["user_name"], time() + 604800, "/", '', '', TRUE);
        SetCookie("member_id", $row["member_id"], time() + 604800, "/", '', '', TRUE);
        SetCookie("user_main", $row["user_main"], time() + 604800, "/", '', '', TRUE);
        SetCookie("dbUser_id", $row["user_id"], time() + 604800, "/", '', '', TRUE);


四、数据参数传递

json_encode将数组转为json字符串

    //筛选参数
    $group_data = array("group_id" => $data, 'start_time' => $start_time, 'end_time' => $end_time);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($group_data));


总结

@lockdata.cn

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
数据可视化 物联网
Threejs物联网,工厂3D可视化
Threejs物联网,工厂3D可视化
684 0
Threejs物联网,工厂3D可视化
|
2月前
|
人工智能 监控 数据可视化
Springcloud可视化物联网智慧工地云SaaS平台源码 支持二开和私有化部署
Springcloud可视化物联网智慧工地云SaaS平台源码 支持二开和私有化部署
137 0
|
2月前
|
人工智能 数据可视化 安全
Java带可视化数据大屏的物联网智慧工地系统源码
通过现场AI智能视频监控、临时设施动态管理,实时检测场地空间、资源、设施的运行状况,及时发现场地安全隐患,确保为工人营造一个安全、文明的场地作业环境。
74 0
|
11月前
|
监控 数据可视化 物联网
Java可视化物联网智慧工地SaaS平台源码:人脸识别考勤
基于微服务+Java+Spring Cloud Vue +UniApp +MySql实现的智慧工地云平台源码
111 1
|
数据可视化 物联网
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
815 0
Threejs物联网,养殖场3D可视化(三)模型展示,轨道控制器设置,模型沿着路线运动,模型添加边框,自定义样式显示标签,点击模型获取信息
|
传感器 监控 数据可视化
IoT Studio 物联网可视化应用搭建开发实践
阿里云 IoT Studio 物联网可视化应用搭建开发实践
22892 4
IoT Studio 物联网可视化应用搭建开发实践
|
监控 数据可视化 关系型数据库
zabbix可视化图形监控
zabbix可视化图形监控
162 0
|
数据可视化 物联网
Threejs物联网,工厂3D可视化,加载模型,水流监测,标签动态数据展示
Threejs物联网,工厂3D可视化,加载模型,水流监测,标签动态数据展示
714 0
Threejs物联网,工厂3D可视化,加载模型,水流监测,标签动态数据展示
|
数据可视化 物联网
Threejs物联网,养殖场3D可视化(二)
Threejs物联网,养殖场3D可视化(二)
345 0
Threejs物联网,养殖场3D可视化(二)
|
数据可视化 物联网
Threejs物联网,养殖场3D可视化(一)
Threejs物联网,养殖场3D可视化(一)
384 0
Threejs物联网,养殖场3D可视化(一)

推荐镜像

更多