Zabbix物联网可视化开发文档

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


前言

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漏刻有时

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值