Shell.Xu
Shell.Xu
肯定支持。不过你在配置里配了reports写到哪个后端了么?
我查了一下,可能您对influxdb协议理解有问题,influx的api中,204表示写入成功。 If your write request received HTTP 204 No Content, it was a success! If it’s HTTP 200 OK, InfluxDB understood the request but couldn’t complete it. https://docs.influxdata.com/influxdb/v1.0/guides/writing_data/
OK,理解了。 首先请看一下log里是否有东西。由于influxdb是延迟写入,所以当时只要写入到队列里了,就会返回成功。后续写入失败也不会再反过去提示失败。 其次,请看一下目标influxdb里是不是有http写入调用。
@lsllcm 您好,README里的指令并不是 go get -u github.com/shell909090/influx-proxy 而是 go get -u github.com/shell909090/influx-proxy/service 请再核对您的指令。
@pclfs1983 OK,理解了。 查询语句,是分析应分发到哪个后端后直接分发过去的,使用的是前端给的一切参数。所以鉴权是OK的。 而写入语句,经过了proxy的重组和拼装,因此无法使用前端参数,会导致问题。 您需要修改 https://github.com/shell909090/influx-proxy/blob/master/backend/http.go 增加鉴权有关的代码。基本上,一个是修改结构体,增加鉴权所需字段。另一个是修改WriteStream函数,将鉴权信息拼进去。
能贴一下curl编码后的内容么?我看到你用了-v。
1. 您可以试试dev版。dev版中,默认的语句禁用是被设定为空的。用户需要自行打开。 2. 不是没有返回,而是命中0条结果。您可以用GET模式向后查询,确认一下请求是否打到了目标节点上。也可以直接向目标节点做查询试试。influx-proxy做的,其实就是算出目标节点是哪个,然后把请求打过去。
OK,我回去翻了一下API定义,发现一个问题。db这个参数总是从url query里读取的,所以理论上说,你用GET模式没事,用POST模式才会出问题。这和事实正好反过来。 另外,第二个example是直接查询目标服务器么?看端口不像。而且直接查询目标服务器的话,说明里面确实没数据。
这是个能work的设计,并不是完备的设计。如果要完备的话,可以用regex来判断命中。但是regex的算法量和使用难度都比keyword要大大升高。所以综合考虑下来,我们还是采用keyword来判断。至于混淆的问题,实际上我们的所有key都有一定分类前缀要求,所以反而问题不大。例如我们实际认为cpu和cpu_percent应该就是放到一起去的。mem和所有mem*放一起。
我们一台机器就创建一个db。这个系统的最主要场景是单个机器无法容纳所有指标了,但是可以容纳其中几个指标。所以我们做了分片,使得1,2,3这几个指标在机器A,4,5,6这几个在机器B。但是对外表现上,他们好像就在一台机器一样。客户无需去思考,这个指标需要用什么IP去存取。而一旦我们做了这个,我们就不需要对指标做再分组了。所有指标都是在一个虚拟的大db里的,最后映射到一台或多台后端机器。