Kibana4學習<二>


生產環境部署

Kibana4 是是一個完整的 web 應用。使用時,你需要做的只是打開瀏覽器,然后輸入你運行 Kibana 的機器地址然后加上端口號。比如說:localhost:5601 或者 http://YOURDOMAIN.com:5601

但是當你准備在生產環境使用 Kibana4 的時候,比起在本機運行,就需要多考慮一些問題:

  • 在哪運行 kibana
  • 是否需要加密 Kibana 出入的流量
  • 是否需要控制訪問數據的權限

Nginx 代理配置

因為 Kibana4 不再是 Kibana3 那種純靜態文件的單頁應用,所以其服務器端是需要消耗計算資源的。因此,如果用戶較多,Kibana4 確實有可能需要進行多點部署,這時候,就需要用 Nginx 做一層代理了。

和 Kibana3 相比,Kibana4 的 Nginx 代理配置倒是簡單許多,因為所有流量都是統一配置的。下面是一段包含入口流量加密、簡單權限控制的 Kibana4 代理配置:

upstream kibana4 {
    server 127.0.0.1:5601 fail_timeout=0;
}
server {
    listen               *:80;
    server_name          kibana_server;
    access_log           /var/log/nginx/kibana.srv-log-dev.log;
    error_log            /var/log/nginx/kibana.srv-log-dev.error.log;

    ssl                  on;
    ssl_certificate      /etc/nginx/ssl/all.crt;
    ssl_certificate_key  /etc/nginx/ssl/server.key;

    location / {
        root   /var/www/kibana;
        index  index.html  index.htm;
    }

    location ~ ^/kibana4/.* {
        proxy_pass           http://kibana4;
        rewrite              ^/kibana4/(.*)  /$1 break;
        proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header     Host            $host;
        auth_basic           "Restricted";
        auth_basic_user_file /etc/nginx/conf.d/kibana.myhost.org.htpasswd;
    }
}

如果用戶夠多,當然你可以單獨跑一個 kibana4 集群,然后在 upstream 配置段中添加多個代理地址做負載均衡。

配置 Kibana 和 shield 一起工作

Nginx 只能加密和管理瀏覽器到服務器端的請求,而 Kibana4 到 ELasticsearch 集群的請求,就需要由 Elasticsearch 方面來完成了。如果你在用 Shield 做 Elasticsearch 用戶認證,你需要給 Kibana 提供用戶憑證,這樣它才能訪問 .kibana 索引。Kibana 用戶需要由權限訪問 .kibana 索引里以下操作:

'.kibana':
      - indices:admin/create
      - indices:admin/exists
      - indices:admin/mapping/put
      - indices:admin/mappings/fields/get
      - indices:admin/refresh
      - indices:admin/validate/query
      - indices:data/read/get
      - indices:data/read/mget
      - indices:data/read/search
      - indices:data/write/delete
      - indices:data/write/index
      - indices:data/write/update
      - indices:admin/create

更多配置 Shield 的內容,請閱讀官網的 Shield with Kibana 4

要配置 Kibana 的憑證,設置 kibana.yml 里的 kibana_elasticsearch_username 和kibana_elasticsearch_password 選項即可:

# If your Elasticsearch is protected with basic auth:
kibana_elasticsearch_username: kibana4
kibana_elasticsearch_password: kibana4

開啟 ssl

Kibana 同時支持對客戶端請求以及 Kibana 服務器發往 Elasticsearch 的請求做 SSL 加密。

要加密瀏覽器(或者在 Nginx 代理情況下,Nginx 服務器)到 Kibana 服務器之間的通信,配置 kibana.yml里的 ssl_key_file 和 ssl_cert_file 參數:

# SSL for outgoing requests from the Kibana Server (PEM formatted)
ssl_key_file: /path/to/your/server.key
ssl_cert_file: /path/to/your/server.crt

如果你在用 Shield 或者其他提供 HTTPS 的代理服務器保護 Elasticsearch,你可以配置 Kibana 通過 HTTPS 方式訪問 Elasticsearch,這樣 Kibana 服務器和 Elasticsearch 之間的通信也是加密的。

要做到這點,你需要在 kibana.yml 里配置 Elasticsearch 的 URL 時指明是 HTTPS 協議:

elasticsearch: "https://<your_elasticsearch_host>.com:9200"

如果你給 Elasticsearch 用的是自己簽名的證書,請在 kibana.yml 里設定 ca 參數指明 PEM 文件位置,這也意味着開啟了 verify_ssl 參數:

# If you need to provide a CA certificate for your Elasticsarech instance, put
# the path of the pem file here.
ca: /path/to/your/ca/cacert.pem

控制訪問權限

你可以用 Elasticsearch Shield 來控制用戶通過 Kibana 可以訪問到的 Elasticsearch 數據。Shield 提供了索引級別的訪問控制。如果一個用戶沒被許可運行這個請求,那么它在 Kibana 可視化界面上只能看到一個空白。

要配置 Kibana 使用 Shield,你要位 Kibana 創建一個或者多個 Shield 角色(role),以 kibana4 作為開頭的默認角色。更詳細的做法,請閱讀 Using Shield with Kibana 4

虛擬現實最新資訊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM