首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grafana简单json数据源反向代理的适当配置

grafana简单json数据源反向代理的适当配置
EN

Stack Overflow用户
提问于 2020-09-19 07:38:33
回答 1查看 555关注 0票数 0

我想把很少的服务放在反向代理之后,简单的服务工作。

当试图到达grafana简单的json数据源(POST + json有效负载)时,会出现502问题。

Grafana本身并不支持反向代理。

当前的haproxy配置:

代码语言:javascript
复制
frontend FRONT.AWS.WEB.PROXY
    mode http
    bind *:8080
    timeout client 1m
    option  httplog
    acl IS_RELE path_beg /release
    acl IS_GRAF path_beg /grafana
    use_backend BACK.AWS.WEB.ARTIFACTS if IS_RELE
    use_backend BACK.AWS.WEB.RTGRAF if IS_GRAF

backend BACK.AWS.WEB.ARTIFACTS
    mode http
    http-request set-path /
    http-response replace-value X-Application-Context (.*)(\release).*$ \1
    server AWS.WEB.ARTIFACTS *:5581/ maxconn 1000 check port 5581

backend BACK.AWS.WEB.RTGRAF
    mode http
    #option forwardfor
    #balance source
    #option httpclose
    #option httpchk HEAD / HTTP/1.0
    http-request set-path /
    http-response replace-value X-Application-Context (.*)(\grafana).*$ \1
    server AWS.WEB.RTGRAF *:5582/ maxconn 1000 check port 5582                 

grafana中的数据源配置:

http://192.168.56.101:8080/grafana/

这是没有haproxy的工作请求:

代码语言:javascript
复制
curl -d '{"requestId":"Q119","timezone":"utc".....lters":[]}' -H 'Content-Type: application/json' http://localhost:8080/query

答得好:

代码语言:javascript
复制
[{"columns":[{"text":"sym","type":"string"}, {"text":"time","type":""}, .... .... {"text":"mode","type":"string"}, {"text":"proto","type":"string"}],"rows":[],"type":"table"}]

与haproxy:

代码语言:javascript
复制
 curl -d .... http://localhost:8080/grafana/query

502答复:

代码语言:javascript
复制
<h1>502 Bad Gateway</h1>
The server returned an invalid or incomplete response. 

但要确认的是,服务本身是有效的:

代码语言:javascript
复制
curl http://localhost:8080/grafana/?2+1

响应:

代码语言:javascript
复制
<html><head><style>a{text-decoration:none}a:link{color:024C7E}a:visited{color:024C7E}a:active{color:958600}body{font:10pt verdana;text-align:justify}</style></head><body><pre>3

Haproxy日志:

代码语言:javascript
复制
127.0.0.1:42362 [16/Sep/2020:21:57:14.430] FRONT.AWS.WEB.PROXY BACK.AWS.WEB.RTGRAF/AWS.WEB.RTGRAF 0/0/0/3/3 200 274 - - ---- 1/1/0/0/0 0/0 "GET /grafana/?2+1 HTTP/1.1"                            
127.0.0.1:42418 [16/Sep/2020:21:57:32.038] FRONT.AWS.WEB.PROXY BACK.AWS.WEB.RTGRAF/AWS.WEB.RTGRAF 0/0/0/-1/0 502 214 - - PH-- 1/1/0/0/0 0/0 "POST /grafana/query HTTP/1.1"

地堑日志:

代码语言:javascript
复制
INFO[09-16|22:23:02] Request Completed logger=context userId=1 orgId=1 uname=admin method=POST path=/api/datasources/proxy/2/query status=502 remote_addr=192.168.56.1 time_ms=6 size=107 referer="http://192.168.56.101:3000/d/aQPWEJFmz/system-status?orgId=1&refresh=10s"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-29 09:08:52

找到问题了,对未来的任何人来说,都是给你的!

....................................................caring古开发人员

使用简单的nc

  • You'd查找
  1. 调试请求,从第一个HTTP GET

请求错误路径

因此,这需要重写:

代码语言:javascript
复制
backend BACK.AWS.WEB.ARTIFACTS                                                     
   mode http                                                                       
   http-request set-uri %[url,regsub(^/release/,/,)]                               
   http-response replace-value X-Application-Context (.*)(\release).*$ \1          
   server AWS.WEB.ARTIFACTS *:5581/ maxconn 1000 check port 5581                   
backend BACK.AWS.WEB.RTGRAF                                                        
   mode http                                                                       
   http-response replace-value X-Application-Context (.*)(\grafana).*$ \1          
   server AWS.WEB.RTGRAF *:5582/ maxconn 1000 check port 5582                      
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63966423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档