我正在尝试为我们的旧版 Graphite 服务器设置 Grafana 前端。两个进程都在运行 Ubuntu 12.04 的同一 EC2 实例上运行。我在从 graphite-web 导入仪表板时遇到问题。我能够成功列出它们,但当我尝试导入一个仪表板时,我收到“问题!未找到。”错误消息。
具体来说,当我在 Chrome 中按照请求操作时,我看到以下内容:
GET https://$MY_GRAPHITE_DOMAIN/dashboard/load/$MY-DASHBOARD-NAME
200'ing 正文中包含 JSON 数据GET https://$MY_GRAFANA_DOMAIN/api/dashboards/import/$DASHBOARD-NAME-WITHOUT-DASHES
404,其正文中包含错误消息。
我尝试在本地和远程执行第二个 GET,结果始终相同。我还使用 $MY-DASHBOARD-NAME 代替 $DASHBOARD-NAME-WITHOUT-DASHES 执行过卷曲,在本地或远程执行时均产生相同的结果。
我的 graphite 数据源设置为 https://$MY_GRAPHITE_DOMAIN,可直接访问,无需身份验证。我切换到直接访问,因为这样可以列出 Graphite 仪表板,而代理访问则不行。除了这些导入之外,其他所有功能都运行良好。
值得一提的是,Graphite 和 Grafana 都在同一台机器上运行,前面是 nginx。安装详述如下。
我正在使用原始的 Grafana 安装,SSL 在通过代理传递之前在 nginx 处终止。/etc/nginx/sites-enabled/grafana.conf
:
server {
listen 443;
server_name $MY_GRAFANA_DOMAIN;
// ssl conf
location / {
proxy_pass http://localhost:3000;
}
}
这个旧版 Graphite 服务器(我希望尽可能少地干扰它)在 nginx 和 uwsgi 后面运行。我添加了指令Access-Control-Allow-Origin
。/etc/nginx/sites_enabled/graphite.conf
:
upstream uwsgi_graphite {
server unix:/tmp/uwsgi-graphite.sock;
}
include uwsgi_params;
server {
listen 443;
server_name $MY_GRAPHITE_DOMAIN;
root /opt/graphite;
underscores_in_headers on; # For legacy graphite clients with malformed headers
// SSL CONF
location / {
# Allow specified network with no password
# Everyone else needs the password
satisfy any;
allow 127.0.0.1/32;
allow $MY_HOME_IP;
deny all;
auth_basic "closed site";
auth_basic_user_file /opt/graphite/conf/htpasswd;
add_header Access-Control-Allow-Origin *;
uwsgi_pass_request_headers on;
uwsgi_pass uwsgi_graphite;
}
}
我做错了什么导致这些导入无法进行?或者,我可以使用其他解决方法来进行这些导入吗?
显然,我只需要传输这些仪表板一次。我尝试将响应主体放在GET https://$MY_GRAPHITE_DOMAIN/dashboard/load/$MY-DASHBOARD-NAME
文件中并在本地加载,但没有效果。
答案1
此问题已在最近的版本中修复:https://github.com/grafana/grafana/issues/2529