OpenTSDB 写入介绍

2023-11-20 13:50
文章标签 介绍 写入 opentsdb

本文主要是介绍OpenTSDB 写入介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  OpenTSDB支持几种写入方式。包括Telnet API、HTTP API、import方式、客户端采集器(tcollector/telegraf)。Telnet适合测试用,tcollector/telegraf是日志采集客户端可用于流式加载日志,import方式适合批量导入数据。当然,最后还有一种方式就是直接写入Hbase(官网不推荐),这样OpenTSDB也可以直接展示数据。

一、创建metric

  两种方式,选择其一即可。不管何种导入方式都必须先设置metric。
1. 事先在opentsdb中创建metric。如生成两个名为mymetric.data_1和mymetric.data_2的metric。如下:

tsdb mkmetric mymetric.data_1 mymetric.data_2

2.设置自动生成metric。修改opentsdb.conf设置:

tsd.core.auto_create_metrics = true

二、Telnet Put 方式

参考:http://opentsdb.net/docs/build/html/api_telnet/put.html
尝试将数据点写入存储。Telnet API无法处理UTF-8字符,可改用/api/put方法或直接使用Java API。命令格式如下:

put <metric> <timestamp> <value> <tagk_1>=<tagv_1>[ <tagk_n>=<tagv_n>]

终端运行示例:

echo "put mymetric.test.data 1295643636 48 a=foo" | nc -w 15 tsdHost tsdPort

三、HTTP API Put 方式

参考:http://opentsdb.net/docs/build/html/api_http/put.html
  此端点允许在OpenTSDB中通过HTTP存储数据,可替代Telnet接口。放置请求只能通过与POST方法关联的内容来执行。
  为了节省带宽,put API允许客户端在单个请求中存储多个数据点。数据点之间可以毫无关联。每个数据点被单独处理,并且一个数据的错误将不会影响良好数据的存储。这意味着如果你的请求有100个数据点,其中1个数据点有错误。那么该错误数据点会被拒绝写入,但其余的99个数据点仍将被写入。
虽然API每个请求都支持多个数据点,但API在处理完每个请求之前不会返回。这意味着必须验证度量和标记名称/值,解析值,并将数据排队等待存储。如果你的put请求具有大量的数据点,则API可能需要很长时间才能响应,尤其是如果OpenTSDB必须将UID分配给标记名称或值。因此,最好限制每个请求的最大数据点数; 50每个请求是一个好的起点。
  另一个建议是在HTTP客户端上启用keep-alives,这样您可以在每次放置数据时重新使用与服务器的连接。

1 HTTP 请求解析

这里写图片描述

2 数据写入示例

  • 单点数据写入
{"metric": "sys.cpu.nice","timestamp": 1346846400,"value": 18,"tags": {"host": "web01","dc": "lga"}
}
  • 多点数据写入
    多点数据写入必须被包装成数组形式
[{"metric": "sys.cpu.nice","timestamp": 1346846400,"value": 18,"tags": {"host": "web01","dc": "lga"}},{"metric": "sys.cpu.nice","timestamp": 1346846400,"value": 9,"tags": {"host": "web02","dc": "lga"}}
]

3 返回响应

  默认情况下,如果所有数据点都已成功存储,put端点将使用HTTP 204状态码进行响应,而无内容。如果一个或多个数据点有错误,API将在内容中返回一个带有错误消息的400状态码。响应解析说明和响应示例如下图所示:
这里写图片描述

四、批量导入

参考:http://opentsdb.net/docs/build/html/user_guide/cli/import.html
 Import命令允许将时间序列数据批量加载到OpenTSDB中。可提供一个或多个文件,OpenTSDB将解析和加载数据。数据必须和Telnet put的数据格式一致,文本文件中每一行作为一个数据点。此外,文件还可以可选地使用GZip压缩,并且以.gz扩展名结束。

1 输入格式

路径可以是相对路径,也可以是绝对路径。

import path [...paths]
import /home/hobbes/timeseries1.gz /home/hobbes/timeseries2.gz

2 参数说明

格式和Telnet 接口相同。

<metric> <timestamp> <value> <tagk=tagv> [<tagkN=tagvN>]
  1. metric Is the name of the metric. Note that the metric name may not include spaces.
  2. timestamp Is the absolute timestamp of the data point in seconds or milliseconds
  3. value Is the value to store
  4. tagk=tagv Is a pair of one or more space sparate tag name and value pairs. Note that the tags may not have spaces in them.

Example:

sys.cpu.user 1356998400 42 host=web01 cpu=0

代码示例如下:

./tsdb import --config=/Applications/opentsdb/src/opentsdb.conf /Applications/opentsdb/
my_test_data/opentsdb.txt

文件的内容格式如下,其中时间戳必须升序:

mymetric.test.data 1479303678 0.841470984808 host=xyd_host
mymetric.test.data 1479303679 0.909297426826 host=xyd_host
mymetric.test.data 1479303680 0.14112000806 host=xyd_host
mymetric.test.data 1479303681 -0.756802495308 host=xyd_host
mymetric.test.data 1479303682 -0.958924274663 host=xyd_host
mymetric.test.data 1479303683 -0.279415498199 host=xyd_host
mymetric.test.data 1479303684 0.656986598719 host=xyd_host
mymetric.test.data 1479303685 0.989358246623 host=xyd_host
mymetric.test.data 1479303686 0.412118485242 host=xyd_host
mymetric.test.data 1479303687 -0.544021110889 host=xyd_host
mymetric.test.data 1479303688 -0.999990206551 host=xyd_host
mymetric.test.data 1479303689 -0.536572918 host=xyd_host

这里写图片描述

五、Tcollector/Telegraf 客户端写入

这里使用Tcollect收集,Telegraf不做演示。Tcollector是一个客户端程序,用来收集本机的指标数据,并将数据发送到OpenTSDB。
Tcollector GitHub地址:https://github.com/OpenTSDB/tcollector/
Tcollector 官方地址:http://opentsdb.net/docs/build/html/user_guide/utilities/tcollector.html
关于Tcollector安装和介绍,在此就不详细说明了。这里展示的是按照官方要求,直接用python定义一个收集器,向opentsdb发送数据。
运行:

sudo ./tcollector start

用Python自定义一个mycollector.py,注意文件权限为755,也可直接设为777。

#!/usr/bin/env python import sys
import time
import math
from collectors.lib import utilsCOLLECTION_INTERVAL = 5  # secondsdef getValue(num):return math.cos(num)def main():utils.drop_privileges()i = 100while True:print("xyd.test.cos %d %s"% (int(time.time()), getValue(i)))i += 0.1sys.stdout.flush()time.sleep(COLLECTION_INTERVAL)if __name__ == "__main__":sys.stdin.close()sys.exit(main())

执行效果如下,生成一个只有正值的cos函数,貌似opentsdb不显示负数的:
这里写图片描述

这篇关于OpenTSDB 写入介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/395056

相关文章

Java中HashMap的用法详细介绍

《Java中HashMap的用法详细介绍》JavaHashMap是一种高效的数据结构,用于存储键值对,它是基于哈希表实现的,提供快速的插入、删除和查找操作,:本文主要介绍Java中HashMap... 目录一.HashMap1.基本概念2.底层数据结构:3.HashCode和equals方法为什么重写Has

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)