Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

influxdb设置鉴权后,通过influx-proxy写入数据异常,查询数据正常 #76

Closed
nmonz opened this issue May 8, 2019 · 12 comments

Comments

@nmonz
Copy link

nmonz commented May 8, 2019

curl -i -XPOST 'http://localhost:6666/write?db=test&u=aaa&p=123' --data-binary 'cpu_load_short32,host=server01,region=us-west value=0.09 1434255562000040578'
报错如下:
2019/05/08 14:21:58.469542 http.go:225: status: 401
2019/05/08 14:21:58.469610 backends.go:243: unknown error Unknown Error, maybe overloaded.
2019/05/08 14:21:58.800641 file.go:112: read error: unexpected EOF
2019/05/08 14:22:00.012223 http.go:208: write status code: 401
2019/05/08 14:22:00.012443 http.go:215: error response: {"error":"unable to parse authentication credentials"}
是什么原因呢?

@shell909090
Copy link
Owner

shell909090 commented May 10, 2019

当然是backend尚未支持用户名密码。
https://github.com/shell909090/influx-proxy/blob/master/backend/config.go
你可以看到配置里根本不支持用户名密码。
之所以查询正常,是因为查询是解析influxql然后直接发送到backend的。而写入的record都需要打散重组。这个过程中无法带着auth信息。

@nmonz
Copy link
Author

nmonz commented Jun 13, 2019

@shell909090 那目前这个添加鉴权后,如何处理写入时的问题呢?

@shell909090
Copy link
Owner

最低限度是修改代码。在backend中加入鉴权信息,在消息头中写入鉴权。

@nmonz
Copy link
Author

nmonz commented Jun 21, 2019

@shell909090 对GO语言不熟,能指导下怎么修改吗?

@nmonz
Copy link
Author

nmonz commented Jun 24, 2019 via email

@shell909090
Copy link
Owner

shell909090 commented Jun 26, 2019

首先,修改 https://github.com/shell909090/influx-proxy/blob/master/backend/config.go 文件,在BackendConfig结构中,增加Username和Password。
其次,修改 https://github.com/shell909090/influx-proxy/blob/master/backend/http.go#L192 ,在里面加入鉴权头。
具体鉴权方法请参考 https://docs.influxdata.com/influxdb/v1.7/administration/authentication_and_authorization/

@nmonz
Copy link
Author

nmonz commented Jun 26, 2019 via email

@shell909090
Copy link
Owner

这个是可能的。但是这和我们原始的设计就出现偏差了。我们的原始设计里,多个backend只负责数据存储,因此鉴权是在proxy层完成的。这层鉴权有设计,但是始终没有实现完成。而你的预想模式里,用户名密码会被穿透到后面的backend去。这会导致一些问题,例如如何在多个backend中同步新建用户/修改密码。或者是用户密码在多个backend中不一致导致写入时对时错。
你希望的东西和这个PR非常类似。 #85 你可以等待这个PR进入dev/master,或者直接拉取上游分支自行修改。

@nmonz
Copy link
Author

nmonz commented Jul 5, 2019 via email

@shell909090
Copy link
Owner

这个不是PR,所以没有diff,看起来不是很清晰。粗看的话,应该就是这个样子。

@nmonz
Copy link
Author

nmonz commented Jul 8, 2019 via email

@shell909090
Copy link
Owner

在http请求前,先把请求内容dump出来看看?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants