いまのgrafanaは自前でWebサーバ機能を持っていて、デフォルトでPort3000でListenしてます。これをApacheの下で動かすにはリバースプロキシを使うわけですが、2017年1月現在、公式のドキュメント ではnginxを使った場合の手順しか書いてません。ということで、Apacheでの手順を書いてみることにします。なお環境はUbuntu14.04LTSです。
Apache側設定
proxy_module、proxy_httpモジュールを有効化する
私の環境では、これらのモジュールの情報はmods-available内にあったので、シンボリックリンクをmods-enableに作成しました。
cd /etc/apache2/mods-enabled
ln -s ../mods-available/proxy.load proxy.load
ln -s ../mods-available/proxy_http.load proxy_http.load
ln -s ../mods-available/proxy.conf proxy.conf
httpd.confが単一なら、単純に下記エントリをコメントアウトします。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
リバースプロキシを設定
proxy.confの<IfModule mod_proxy.c>
ディレクティブに以下エントリを追加します。httpd.confが単一なら、空いている場所に記述。
下記は http://[domain]/grafana とアクセスした際にgrafanaに飛ぶようにする場合の設定です。異なるURLにしたい場合は、/grafanaを適切な値に変更してください。
ProxyRequests Off
ProxyPass /grafana http://127.0.0.1:3000
ProxyPassReverse /grafana http://127.0.0.1:3000
注意点としては、127.0.0.1:3000の後ろにスラッシュ(/)を入れるとうまく動いてくれません。自分はこれでちょっとハマりました。
Grafana側設定
grafana.iniのroot_urlを編集
grafana.iniの[server]ディレクティブ内のroot_urlエントリを編集します。
具体的には、root_urlをApacheのリバースプロキシ設定に合わせます。この記事では/grafanaにアクセスした場合にgrafanaに飛ぶように設定したので、root_urlの末尾に/grafanaを付加します。
root_url = %(protocol)s://%(domain)s:/grafana
各種サービス再起動
service apache2 restart
service grafana-server restart
以上で、http://[domain]/grafana にアクセスした場合にgrafanaにアクセスできるようになるはずです。