ELK菜鸟手记 (三) - X-Pack权限控制之给Kibana加上登录控制以及index_not_found_exception问题解决

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 0. 背景 我们在使用ELK进行日志记录的时候,通过网址在Kibana中查看我们的应用程序(eg: Java Web)记录的日志, 但是默认是任何客户端都可以访问Kibana的, 这样就会造成很不安全,我们应该设置相应的用户名和密码, 只有通过登录用户名和密码才能通过Kibana查看我们的日志。

 

0. 背景

我们在使用ELK进行日志记录的时候,通过网址在Kibana中查看我们的应用程序(eg: Java Web)记录的日志,

但是默认是任何客户端都可以访问Kibana的, 这样就会造成很不安全,我们应该设置相应的用户名和密码,

只有通过登录用户名和密码才能通过Kibana查看我们的日志。

 

1. 在elasticsearch 2.x的版本是怎么做的

笔者网上查了一些博文,大部分推荐的是通过给elasticsearch安装Shield插件,参考链接如下:

http://blog.csdn.net/xuplus/article/details/51611658

但是,这种做法已经过时了,而且当你从官网下载的elasticsearch的最新版本,笔者写博文时候是5.x(5.2.2)

照着博文上安装插件的做法,根本是不行的

一般博文会建议进入elasticsearch的根目录,执行如下命令: bin/plugin install shield

但是,当你用的是5.x的时候,你会发现根本就没有plugin这条命令,进入es的根目录,发现只有

elasticsearch-plugin这条命令,这是怎么回事呢?
于是笔者上了官网一探究竟(任何时候查找技术,官网永远是最好最权威的选择)
官网给出的解释如下:

 

笔者恍然大悟,原来在5.x以后Shield插件已经作为X-Pack的一部分了,所以,必须查找关于X-Pack的相关文档。

 

2. X-Pack是什么?

以下是官网给出的解释:

(X-Pack is an Elastic Stack extension that bundles security, alerting, monitoring, reporting, and graph capabilities into one easy-to-install package.

Prior to Elasticsearch 5.0.0, you had to install separate Shield, Watcher, and Marvel plugins to get the features that are bundled together in X-Pack.

With X-Pack, you no longer have to worry about whether or not you have the right version of each plugin,

just install the X-Pack for the Elasticsearch version you’re running)

X-Pack是Elastic技术栈的扩展,它集安全,提醒,监控,报表以及图标功能于一体。

在Elasticsearch 5.0之前,你必须单独安装Shield插件,还要配套Watcher, Marvel等插件,现在X-Pack把它们都整合到一块儿了。

原来是这样啊!

 

3. 安装X-Pack

3-1) 为elasticsearch安装X-Pack插件

进入 elasticsearch根目录

执行: 

bin/elasticsearch-plugin install x-pack

 

3-2) 配置elasticsearch.yml

进入config目录

修改配置文件,在末尾加上如下行:

action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*

这是为elasticsearch增加自动创建索引功能

 

3-3) 启动elasticsearch

bin/elasticsearch

 

3-4) 为Kibana安装X-Pack插件

进入Kibana根目录

执行命令:

bin/kibana-plugin install x-pack

 

3-5) 启动Kibana

bin/kibana

 

3-6) 为Logstash节点安装X-Pack插件

进入Logstash根目录

执行命令:

bin/logstash-plugin install x-pack

 

3-7) 用配置文件启动Logstash

bin/logstash -f config/log4j_multi_input.conf

 

3-8) 验证

浏览器打开路径:

 
你看回到登录对话框如下:

默认用户名和密码是:

elastic

changeme

 

4. LogStash::Outputs::ElasticSearch::HttpClient::Pool::BadResponseCodeError, :error=>"Got response code '401' contact Elasticsearch at URL

这个时候,你可能认为我们已经大功告成了,然而并不是这样。

当你用用户名和密码登录Kibana了以后,你会发现没有任何索引,你之前使用Java程序写的日志到哪里去了呢?

笔者十分纳闷,后来查看了Logstash的控制台,笔者发现了如下错误:

LogStash::Outputs::ElasticSearch::HttpClient::Pool::BadResponseCodeError, :error=>"Got response code '401' contact Elasticsearch at URL

因为我们刚才安装了X-Pack插件,因此,我们需要在我们logstash的配置文件中指定用户名和密码,不然是没有权限访问的,

笔者的配置文件如下:

input {
    file {  
        path => ["/Users/KG/Documents/logs/app-a/*.log"]  
        type => "app-a"
    }  
    file {  
        path => ["/Users/KG/Documents/logs/app-b/*.log"] 
        type => "app-b"
    }  
}

output {
    stdout {
      codec => rubydebug
    }
    if [type] == "app-a" {  
       elasticsearch { 
            hosts => "localhost:9200"  
            index =>  "app-a-%{+YYYY.MM.dd}"
            document_type => "log4j_type"
            user => elastic
            password => changeme
        }  
    }  
    else if [type] == "app-b" {  
        elasticsearch { 
            hosts => "localhost:9200"  
            index => "app-b-%{+YYYY.MM.dd}"
            document_type => "log4j_type"
            user => elastic
            password => changeme
        }  
    }  
}

红色字体部分为新加的

然后,再次重新启动Logstash

 

5. 无法查看索引下的日志问题解决

好事多磨,我们还是无法在Kibana下看到数据,究竟是怎么一回事呢?

笔者再次查看了logstash的控制台,又发现了如下错误:

logstash outputs elasticsearch error 404 >>index_not_found_exception

上网查了下资料,原来需要在elasticsearch中创建自动索引

还记得刚才我们在elasticsearch.yml配置文件最后一行加的那句代码吗,看一下:

笔者修改如下:

action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*,app-a-*,app-b-*

其中红色字体部分为笔者测试程序所用的索引

再次重新启动elasticsearch

 

6. 最后的验证

好了,笔者使用Java代码进行验证(之前的博文中有提到怎么使用log4j进入日志到ELK)

 

再次访问Kibana,...看到如下结果:

 

好了,这回真的成功了,哈哈,是不是很有成就感啊?^_^

 

 

 

 

 

 

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
存储 NoSQL Redis
容器部署日志分析平台ELK7.10.1(Elasisearch+Filebeat+Redis+Logstash+Kibana)
容器部署日志分析平台ELK7.10.1(Elasisearch+Filebeat+Redis+Logstash+Kibana)
532 0
|
监控 Cloud Native 搜索推荐
Springboot/Springcloud整合ELK平台,(Filebeat方式)日志采集及管理(Elasticsearch+Logstash+Filebeat+Kibana)
Springboot/Springcloud整合ELK平台,(Filebeat方式)日志采集及管理(Elasticsearch+Logstash+Filebeat+Kibana)
2084 0
Springboot/Springcloud整合ELK平台,(Filebeat方式)日志采集及管理(Elasticsearch+Logstash+Filebeat+Kibana)
|
14天前
|
存储 监控 安全
一文吃透企业级elk技术栈:3. Kibana 安装配置
一文吃透企业级elk技术栈:3. Kibana 安装配置
|
6月前
|
监控 应用服务中间件 nginx
使用 Docker Compose V2 快速搭建日志分析平台 ELK (Elasticsearch、Logstash 和 Kibana)
ELK的架构有多种,本篇分享使用的架构如图所示: Beats(Filebeat) -> -> Elasticsearch -> Kibana,目前生产环境一天几千万的日志,内存占用大概 10G
375 4
|
6月前
|
JSON 数据可视化 应用服务中间件
ELK技术栈 - Kibana 学习笔记
ELK技术栈 - Kibana 学习笔记
79 0
|
缓存 应用服务中间件 nginx
基于Docker搭建ELK(Elasticsearch、Logstash、Kibana)
ELK是一套强大的开源工具组合,可以帮助我们采集、存储、分析和可视化大量的日志数据,本文通过简明清晰的步骤指导,帮助读者快速搭建起基于Docker的ELK日志分析平台,为日志数据的收集、存储、分析和可视化提供了一种高效可靠的解决方案。
|
Web App开发 JSON 数据可视化
ELK技术栈 - Kibana 学习笔记
用如下命令导入数据到你本地的 elasticsearch 进程中。这可能需要一点时间
131 0
|
Docker 容器
手把手教你搭建ELK-新手必看-第三章:搭建kibana
手把手教你搭建ELK-新手必看-第三章:搭建kibana
148 0
手把手教你搭建ELK-新手必看-第三章:搭建kibana
|
数据可视化 数据挖掘 定位技术
不得不学!从零到一搭建ELK日志,在Docker环境下部署 Kibana 可视化工具
最近在玩 ELK 日志平台,它是 Elastic 公司推出的一整套日志收集、分析和展示的解决方案。