前回GrafanaとZabbixを連携する方法をブログしましたが、
http://adachin.com:3000でポート指定してログインしていたと思います。
これだとhttpsじゃないしセキュアでもありません。
何にせよ外からアクセスする場合はダイジェスト認識もかましたいところです。
今回はNginxではなくH2Oで実装してみました。
■Environment before/after
・Zabbix
https://adachin.com/zabbix
・Grafana
http://adachin.com:3000
↓
・Zabbix
https://adachin.com/zabbix
・Grafana
https://adachin.com/grafana
■Running Grafana behind a reverse proxy
http://docs.grafana.org/installation/behind_proxy/
Nginxの場合は以下のように書けばOK。
1 2 3 4 5 6 7 8 9 |
server { listen 80; root /usr/share/nginx/www; index index.html index.htm; location /grafana/ { proxy_pass http://localhost:3000/; } } |
■H2O “proxy.reverse.url”
https://h2o.examp1e.net/configure/proxy_directives.html#proxy.reverse.url
H2O美しい。。
■grafana.ini
1 2 3 4 5 6 7 8 9 |
[server] # Protocol (http, https, socket) #protocol = http root_url = %(protocol)s://%(domain)s:/grafana →追加 domain = adachin.com [auth.basic] enabled = false →falseに |
GrafanaはBasic認証がデフォルトで有効になっているため無効にします。
(H2Oでダイジェスト認識したいため)
■/etc/h2o/conf.d/adachin.com.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
"adachin.com:80": listen: port: 80 paths: "/zabbix": redirect: https://adachin.com/zabbix paths: "/grafana": redirect: https://adachin.com/grafana paths: "/": redirect: https://adachin.com "adachin.com:443": listen: port: 443 ssl: certificate-file: /etc/letsencrypt/live/adachin.com/fullchain.pem key-file: /etc/letsencrypt/live/adachin.com/privkey.pem paths: "/zabbix": mruby.handler: | require "htpasswd.rb" acl { allow { addr == "xxx.xxx.xxx.xxx" } deny { user_agent.match(/curl/i) && ! addr.start_with?("192.168.") } use Htpasswd.new("/var/www/html/.htpasswd", "realm-name") { path.start_with?("/") } } file.dir: /usr/share/zabbix paths: "/grafana": mruby.handler: | require "htpasswd.rb" acl { allow { addr == "xxx.xxx.xxx.xxx" } deny { user_agent.match(/curl/i) && ! addr.start_with?("192.168.") } use Htpasswd.new("/var/www/html/.htpasswd", "realm-name") { path.start_with?("/") } } proxy.reverse.url: http://127.0.0.1:3000/ paths: "/": file.dir: /var/www access-log: path: "/var/log/h2o/zabbix-access.log" |
h2oの設定ファイルはincludeしているのでhostsのバーチャルのみ記載しています。
80portは全て443にリダイレクトし、/zabbix、/grafanaにアクセスした場合は
ダイジェスト認証するように設定しています。
grafanaは3000 portで動いているのでリバースプロキシして
アクセス可能にしています。問題なければh2oとgrafana-serverを再起動しましょう。
※includeの設定がわからん人は以下を参考に。
■確認
OK!!!!!!!!!!!!
あとはセキュリティーグループなりiptablesなどの3000 portを無効にすれば完全体。
■まとめ
H2O素晴らしい。。
この際Zabbix使ってるユーザはH2O+Grafana-Zabbixにすれば快適?
今後の運営ですが、Zabbix側はホスト追加をansibleで自動化し、
グラフはGrafanaで見ていくようにします〜
参考
https://luispc.com/memo/2017/01/19/8854
0件のコメント