您的位置:首页 > 运维架构 > Nginx

elk系统通过nginx添加对kibana的登录认证

2016-10-12 19:03 513 查看
elk系统添加对kibana的登录认证

关于elk系统的安装配置可以参考:Centos6.5安装Logstash ELK stack
日志管理系统及使用详解
http://blog.csdn.net/reblue520/article/details/52799274
kibana是nodejs开发的,本身并没有任何安全限制,直接浏览url就能访问,如果公网环境非常不安全,可以通过nginx请求转发增加认证,方法如下:

1、参考以下内容,修改配置文件:

mkdir -p /data/nginx/db/

vim /etc/nginx/conf.d/elk.conf

server {  

  listen       80;  

  server_name elk.chinasoft.com 192.168.3.17;  

  location / {  

     auth_basic "secret";  

     auth_basic_user_file /data/nginx/db/passwd.db;  

     proxy_pass http://localhost:5601;
     proxy_set_header Host $host:5601;  

     proxy_set_header X-Real-IP $remote_addr;  

     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  

     proxy_set_header Via "nginx";  

  }  

  access_log off;

}

检查nginx语法报错:

# nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)

解决办法:

vim /etc/nginx/conf.d/default.conf



listen       80 default_server;

listen       [::]:80 default_server;

改为:

listen       80;

#listen       [::]:80 default_server;

上面的配置表示将elk.chinasoft.com的请求,转发到服务器的5601端口,同时使用最基本的用户名、密码来认证。

2、配置登录用户名,密码

htpasswd -c /data/nginx/db/passwd.db elkadmin

注意passwd.db的路径要跟nginx配置中的一致,最后的elkadmin为用户名,可以随便改,输入完该命令后,系统会提示输入密码,完成后passwd.db中就有加密后的密码了,有兴趣的可以cat看下。

提示:htpasswd是apache自带的小工具,如果找不到该命令,尝试用yum install httpd安装

安装以后建议修改vim /etc/httpd/conf/httpd.conf 监听其他非80端口

也可以通过其他nginx的代理访问,如下:

elk.conf

server {

  server_name   elk.chinasoft.com

  access_log  /data/logs/elk_access.log;

  error_log  /data/logs/elk_error.log  info;

  location / {

    auth_basic "secret";  

    auth_basic_user_file /data/nginx/db/passwd.db;

    proxy_set_header Host $host;

    proxy_set_header X-Real-Ip $remote_addr;

    proxy_set_header X-Forwarded-For $remote_addr;

    #proxy_pass  http://flows_admin;

    proxy_pass  http://u04elk.yaya.corp:5601;

  }
}



在数据量较大的场景下,kibana展示数据会超时,此时需要修改nginx和kibana的超时配置

需要在nginx.conf

加入如下参数:

    keepalive_timeout   6500;

    send_timeout 6500;

    fastcgi_buffers 16 128k;

    proxy_connect_timeout 6500;

针对kibana.conf的参数

server {  

  listen       80;  

  server_name 1.1.1.1;

  proxy_connect_timeout 6500s;

  location / {  

     proxy_connect_timeout 6500s;

     proxy_read_timeout 6500s;

     auth_basic "secret";  

     auth_basic_user_file /data/nginx/db/passwd.db;  

     proxy_pass http://192.168.1.10:9529;
     proxy_set_header Host $host:9529;  

     proxy_set_header X-Real-IP $remote_addr;  

     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  

     proxy_set_header Via "nginx";  

  }  

  access_log off;

}

kibana本身的配置

kibana.yml

server.port: 9529

server.host: "192.168.1.10"

elasticsearch.url: "http://192.168.1.10:9200"

elasticsearch.pingTimeout: 600000

elasticsearch.requestTimeout: 18000000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: