sh poc:Inf​​luxDB线路协议到OpenTSDB JSON协议

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sh poc:Inf​​luxDB线路协议到OpenTSDB JSON协议相关的知识,希望对你有一定的参考价值。

#!/bin/bash -eu

# [key] [fields] [timestamp]
# temperature,machine=unit143,type=assembly internal=22,external=130 1434055562005000035

split() {	tr "$2" "\n" <<< $1; }
get()   {	cut -d '=' -f$2 <<< $1; }

point() {
	local timestamp=$1
	local metric=$2
	local value=$3
	local tags=$4
	echo '{"metric":"'$metric'","timestamp":'$timestamp',"value":'$value',"tags":'$tags'}'
}

get_prefix() {
	local key=$1
	for t in $(split "$key" ","); do
		echo $t;	break
	done
}

parse_tags() {
	local key=$1
	local count=0
	local c=''
	echo '{'
	for t in $(split "$key" ","); do
		if [[ $count -eq 0 ]]; then
			PREFIX=$t
		else
		  echo $c'"'$(get $t 1)'":"'$(get $t 2)'"'; c=,
		fi
		count=$(($count + 1))
	done
	echo '}'
}

main() {
	local key=$1
	local fields=${2:-""}
	local timestamp=${3:-$(date +%s%N)}

	[ -z $key ]    && echo '{"error": "key required"}'    && exit 1
	[ -z $fields ] && echo '{"error": "fields required"}' && exit 1

	local prefix=$(get_prefix $key)
	local tags=$(parse_tags $key | jq -c .)

	for f in $(split "$fields" ","); do
		point $timestamp $prefix.$(get $f 1) $(get $f 2) $tags
	done
}

main $(cat /dev/stdin) | jq -s .

以上是关于sh poc:Inf​​luxDB线路协议到OpenTSDB JSON协议的主要内容,如果未能解决你的问题,请参考以下文章

google 的从 c# 到 java 的协议缓冲区 - 协议消息标签的线路类型无效

tdengine 是不是支持使用线路协议将数据从 influxdb 传输到 tdengine

influxdb-java

influxdb-java

什么是BGP线路?跟普通线路有什么不同?

获取测量的标签值 - influxDB