滴滴夜莺02-自定义推送数据

写在前面

collector采集的数据可以push到监控系统,一些场景下,我们需要自定义的一些数据指标比如:

  1. 线上某服务的qps
  2. 某业务的在线人数
  3. 某个接⼝的响应时间
  4. 某个⻚面的状态码(500、200)
  5. 某个接⼝的请求出错次数
  6. 某个业务的每分钟的收⼊统计

那么问题来了,监控平台支持自定义推送数据吗,答案是肯定了,回顾一下上篇文章内容

绿色部分最左侧有一个***plugin*** ,这个表示监控平台是支持插件机制了,我们可以自己写一些采集插件或者使用开源的采集器,shell、python、java什么语言都可以!甚至是一些二进制都ok,这里只介绍两种比较常用的语言作为例子

1.准备工作

1.安装

这边不多讲监控平台的安装部署,有问题去看安装视频,通过源码编译安装

在这里插入图片描述

2. 推送数据格式说明

2.1 shell

# 注意,http request body是个json,这个json是个列表

ts=`date +%s`;

curl -H "Content-Type: application/json" -X POST  --data '[{"endpoint": "viotest", "tags": "service=sshd, port=22", "timestamp": 1589525503, "metric": "tempa.cpu0", "extra": "pid=359696", "value": 33, "counterType": "GAUGE", "step": 20}]' http://ip:5810/api/transfer/push

2.2 python

#!-*- coding:utf8 -*-
import requests
import time
import json

ts = int(time.time())
payload = [
    {
        "endpoint": "test-endpoint",
        "metric": "temp1",
        "timestamp": ts,
        "step": 60,
        "value": 50,
        "counterType": "GAUGE",
        "tags": "idc=lg,loc=wuxi",
    },

    {
        "endpoint": "test-endpoint",
        "metric": "temp2",
        "timestamp": ts,
        "step": 60,
        "value": 66,
        "counterType": "GAUGE",
        "tags": "idc=lg,loc=wuxi",
    },
]

r = requests.post("http://ip:5810/api/transfer/push", data=json.dumps(payload))

2.3 字段详解

  • metric: 最核心的字段,代表这个采集项具体度量的是什么, 比如是cpu_idle呢,还是memory_free, 还是qps
  • endpoint: 标明Metric的主体(属主),比如metric是cpu_idle,那么Endpoint就表示这是哪台机器的cpu_idle
  • timestamp: 表示汇报该数据时的unix时间戳,注意是整数,代表的是秒
  • value: 代表该metric在当前时间点的值,float64
  • step: 表示该数据采集项的汇报周期,这对于后续的配置监控策略很重要,必须明确指定。
  • counterType: 只能是COUNTER或者GAUGE二选一,前者表示该数据采集项为计时器类型,后者表示其为原值 (注意大小写)
    • GAUGE:即用户上传什么样的值,就原封不动的存储
    • COUNTER:指标在存储和展现的时候,会被计算为speed,即(当前值 - 上次值)/ 时间间隔
  • tags: 一组逗号分割的键值对, 对metric进一步描述和细化, 可以是空字符串. 比如idc=lg,比如service=xbox等,多个tag之间用逗号分割

3.实战

出于某种原因,公司机器不能连接外网,因此pip 、yum等软件源就无法使用,只能通过本地源的方式去install,所以这里就演示通过shell发送

  1. 选一个测试机器往装有transfer的机器上发送指标数据,当返回{"dat":"ok","err":""}表示成功,

在这里插入图片描述

如果返回502,首先检查nginx日志,然后定位问题,一般都是由于发送数据格式不对导致的。push的数据应该是个数组,另外要加个header Content-Type: application/json

回到n9e平台,在全部对象里面会发现多了一个节点信息viotest

稍作解释:endpoint会自动解析出来,自动进入全部对象那个表

在这里插入图片描述

然后进入监控大盘会发现,我们推送的数据已经显示出来了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值