Я пытаюсь настроить интерфейс Grafana для нашего устаревшего графитового сервера. Оба процесса работают в одном экземпляре EC2 под управлением Ubuntu 12.04. У меня проблемы с импортом дашбордов из graphite-web. Я могу успешно перечислить их, но когда я пытаюсь импортировать один, я получаю «Проблема! Не найдено». сообщение об ошибке.
В частности, когда я следую запросам в Chrome, я вижу следующее:
GET https://$MY_GRAPHITE_DOMAIN/dashboard/load/$MY-DASHBOARD-NAME
200 с данными JSON в телеGET https://$MY_GRAFANA_DOMAIN/api/dashboards/import/$DASHBOARD-NAME-WITHOUT-DASHES
404 с сообщением об ошибке в теле. Я пробовал скручивать второй GET локально и удаленно, всегда с тем же результатом. Я также использовал $ MY-DASHBOARD-NAME вместо $ DASHBOARD-NAME-WITHOUT-DASHES, и локально или удаленно дал тот же результат.
Мой источник данных графита настроен как 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
в файл и загружает его локально, но безрезультатно.
Это было исправлено в недавней сборке: https://github.com/grafana/grafana/issues/2529