日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何修改influxdb表结构_使用nginx-lua修改influxdb API的返回结构

發(fā)布時(shí)間:2025/4/5 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何修改influxdb表结构_使用nginx-lua修改influxdb API的返回结构 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

有一個(gè)API平臺(tái)服務(wù),所有接口都通過API平臺(tái)轉(zhuǎn)發(fā)到實(shí)際的服務(wù)上,然后再把實(shí)際服務(wù)的結(jié)果返回給客戶端,API平臺(tái)的規(guī)范是所有實(shí)際服務(wù)的接口返回都要統(tǒng)一結(jié)構(gòu)為

{

"code": 0,

"msg": "",

"data": {}

}

否則無法處理,現(xiàn)在使用influxdb提供的api,他的返回結(jié)構(gòu)并不是API平臺(tái)需要的結(jié)構(gòu),所以需要做一層代理轉(zhuǎn)發(fā)請求并修改返回結(jié)果為API平臺(tái)需要的結(jié)構(gòu)。

采用openresty來實(shí)現(xiàn)這個(gè)需求,只需安裝好openresty,然后編寫一個(gè)配置文件即可實(shí)現(xiàn)。

實(shí)現(xiàn)配置如下:ngx_lua_restructure_influxdb_response.conf

upstream influxdb{

server 127.0.0.1:8086;

}

server {

listen 18086;

proxy_pass_request_headers off; # handle gziped capture

location / {

proxy_pass http://influxdb/query;

}

location /query {

add_header Content-Type 'application/json; charset=utf-8'; # make sure content-type is json

content_by_lua_block {

local method_map = {

GET = ngx.HTTP_GET,

POST = ngx.HTTP_POST,

}

ngx.req.read_body()

local method = method_map[ngx.req.get_method()]

local data = ngx.req.get_body_data()

local args = ngx.req.get_uri_args()

local res = ngx.location.capture("/", {method=method, data=data, args=args})

local cjson = require "cjson"

local new_body = {}

if res.status ~= ngx.HTTP_OK then

new_body["code"] = res.status

else

new_body["code"] = 0

end

new_body["msg"] = ''

new_body["data"] = cjson.decode(res.body)

ngx.say(cjson.encode(new_body))

}

}

}

influxdb的api在8086端口,所有直接的請求返回結(jié)果為:

# curl -Gs '100.113.164.108:8086/query?db=data&q=SELECT+*+FROM+cpu+limit+1&pretty=true'

{

"results": [

{

"statement_id": 0,

"series": [

{

"name": "cpu",

"columns": [

"time",

"cpu",

"host",

"usage_guest",

"usage_guest_nice",

"usage_idle",

"usage_iowait",

"usage_irq",

"usage_nice",

"usage_softirq",

"usage_steal",

"usage_system",

"usage_user"

],

"values": [

[

"2017-12-08T08:30:00Z",

"cpu-total",

"Tencent-SNG",

0,

0,

96.92993315559063,

0.4456548651008583,

0,

0,

0,

0,

1.8321366676828983,

0.7922753157508718

]

]

}

]

}

]

}

經(jīng)過18086端口的轉(zhuǎn)發(fā)后得到的結(jié)果為:

# curl -Gs '100.113.164.108:18086/query?db=db_zhiyun&q=SELECT * FROM cpu limit 1&pretty=true' | python -m json.tool

{

"code": 0,

"data": {

"results": [

{

"series": [

{

"columns": [

"time",

"cpu",

"host",

"usage_guest",

"usage_guest_nice",

"usage_idle",

"usage_iowait",

"usage_irq",

"usage_nice",

"usage_softirq",

"usage_steal",

"usage_system",

"usage_user"

],

"name": "cpu",

"values": [

[

"2017-12-08T08:30:00Z",

"cpu-total",

"Tencent-SNG",

0,

0,

96.929933155591,

0.44565486510086,

0,

0,

0,

0,

1.8321366676829,

0.79227531575087

]

]

}

],

"statement_id": 0

}

]

},

"msg": ""

}

實(shí)現(xiàn)中遇到的坑:

使用curl請求可以得到正確結(jié)果,但是通過API平臺(tái)過來的請求全部報(bào)錯(cuò),錯(cuò)誤信息為在capture后拿到的body是一傳亂碼,并不是json。

使用ngx.req.raw_header()查看curl和API平臺(tái)請求的header信息的區(qū)別,發(fā)現(xiàn)curl沒有設(shè)置Accept-Encoding,而API平臺(tái)的請求都帶有Accept-Encoding: gzip, deflate,導(dǎo)致capture子請求(即請求真實(shí)influxdb接口)的返回結(jié)果被gzip壓縮后把json變成了亂碼,

從而導(dǎo)致在后面cjson.decode的時(shí)候出錯(cuò)。

OPTION ONE

Placed:

more_clear_input_headers Accept-Encoding;

in "location /cap2"

OPTION TWO

Placed:

proxy_pass_request_headers off;

in "location /cap2"

OPTION THREE

Downloaded https://github.com/brimworks/lua-zlib :

make linux

cp zlib.so /usr/lib/lua/5.1/zlib.so

added following to conf:

local zlib = require("zlib")

local stream = zlib.inflate()

local inflated_body = stream(res1.body)

local res2 = ngx.location.capture("/cap2?"..inflated_body)

由于外層的nginx配置默認(rèn)的content-type為application/octet-stream;,所以為了確保返回為json,又在/query中明確的設(shè)置了content-type

總結(jié)

以上是生活随笔為你收集整理的如何修改influxdb表结构_使用nginx-lua修改influxdb API的返回结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 人妖天堂狠狠ts人妖天堂狠狠 | 久久精品8 | jzz在线观看 | 色av吧 | 农村偷人一级超爽毛片 | 美美女高清毛片视频免费观看 | 亚洲天天av| 色天天 | 亚洲国产欧美另类 | 欧美一级片免费 | 天天干视频在线 | 日本在线视频免费 | 日韩性xx| 日婷婷 | 成人精品免费网站 | 正在播放经典国语对白 | 少妇69xx | 色吧综合| 一本一道波多野结衣一区二区 | 国产成人精品电影 | 老司机深夜福利视频 | 秋霞精品一区二区三区 | 欧美乱大交xxxxx春色视频 | 古装做爰无遮挡三级视频 | av一级二级 | 日剧再来一次第十集 | 成年人网站av | 碰在线视频 | 欧美一二区视频 | 男男上床视频 | av导航在线观看 | 激情中文字幕 | 在线一区二区视频 | 久久亚洲综合色图 | 九月婷婷综合 | 免费久久精品 | 超碰成人在线免费观看 | 欧美人与性囗牲恔配 | 无码免费一区二区三区免费播放 | 美女干b视频 | 东方av在线免费观看 | 四虎影院一区 | 日本高清在线观看 | 一区免费| 久久久性视频 | 高中男男gay互囗交观看 | 久久性感视频 | 国产一级视频在线 | 国产又粗又猛又爽 | 国产18照片色桃 | 欧洲高潮三级做爰 | 在线激情视频 | 九九热精品视频在线观看 | 国产精品一区二区性色av | 激情噜噜 | www.一区二区三区四区 | 精品欧美一区二区三区 | 欧美www视频| 女人高潮被爽到呻吟在线观看 | 91久久国产综合久久91 | 日韩成人av一区 | 精品人妻无码在线 | 国产中文字幕久久 | 国产精品一区二区三区四区在线观看 | 国产黄频 | 蜜臀久久99精品久久久 | 国产精品一区二区三区四区在线观看 | 在线免费精品 | 久久99影院| 色天天综合 | 91视频 - 8mav| 亚洲天堂一区二区三区四区 | 色婷婷中文 | 国产成人网 | 免费在线看a | 久草视频免费在线 | 欧美日韩精品在线观看 | 美国一区二区 | 国产成人免费av | 欧美激情视频一区二区三区在线播放 | 国产一二三在线视频 | 九九热只有精品 | 日本一区二区三区视频在线观看 | 国产妞干网| 日韩在线观看精品 | 欧美乱大交| 很污很黄的网站 | 大奶在线播放 | 中文综合网 | 狠狠操你 | 成人免费看片在线观看 | 久久不卡免费视频 | 狠狠干网 | 男女考妣视频 | 国产精品亚洲色图 | 青草视频免费看 | 精品国产无码一区二区三区 | 亚洲综合精品国产一区二区三区 | 三级黄色片网站 |