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,...看到如下结果:

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

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

  1. X-Pack权限控制之给Kibana加上登录控制以及index_not_found_exception问题解决

    无法查看索引下的日志问题解决 好事多磨,我们还是无法在Kibana下看到数据,究竟是怎么一回事呢? 笔者再次查看了logstash的控制台,又发现了如下错误: logstash outputs ela ...

  2. ELK菜鸟手记 (四) - 利用filebeat和不同端口把不同服务器上的log4j日志传输到同一台ELK服务器

    1. 问题描述  我们需要将不同服务器(如Web Server)上的log4j日志传输到同一台ELK服务器,介于公司服务器资源紧张(^_^) 2. 我们需要用到filebeat 什么是filebeat ...

  3. ELK菜鸟手记 (一) 环境配置+log4j日志记录

    1. 背景介绍 在大数据时代,日志记录和管理变得尤为重要. 以往的文件记录日志的形式,既查询起来又不方便,又造成日志在服务器上分散存储,管理起来相当麻烦, 想根据一个关键字查询日志中某个关键信息相当困 ...

  4. ELK菜鸟手记 (二) - 高级配置之多应用索引过滤

    我们在实际的场景中,经常是多个网站或者服务端在一台服务器上,但是如果这些应用全部 记录到一台logstash服务器,大家日志都混在一起不好区分. 有人说,我可以在日志中打项目名,但是这样并不方便. 其 ...

  5. SpringBoot学习笔记(六):SpringBoot实现Shiro登录控制和权限控制

    登录模块:在登录时必须调用 授权模块:不是一登录就调动,而是当角色权限控制时才会调用 登录控制 环境搭建在上一篇. 数据库表 表名:role 字段:id rolename 表名:user 字段:id ...

  6. linux系统中,文件的三种特殊权限

    背景介绍 在linux系统中,我们熟知有rwx三种权限,对应所有者,同组用户,其他用户三种用户的权限,一共9个位来指定一个文件的权限情况,通过chmod xxx 来更改权限属性,其中xxx是已八进制表 ...

  7. MVC与单元测试实践之健身网站(三)-角色与权限

    管理员的维护功能完成后,还有权限和角色,三者构成权限系统.这里采用的RBAC是最经典.最简单的一种,权限-角色-管理员只能层层传递,并不能直接为管理员分配权限. 一 权限.角色管理 a) 权限 之前编 ...

  8. django-rest-framework 基础三 认证、权限和频率

    django-rest-framework 基础三 认证.权限和频率 目录 django-rest-framework 基础三 认证.权限和频率 1. 认证 1.1 登录接口 1.2 认证 2. 权限 ...

  9. 权限管理系统之集成Shiro实现登录、url和页面按钮的访问控制

    用户权限管理一般是对用户页面.按钮的访问权限管理.Shiro框架是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理,对于Shiro的介绍这里就不多说.本篇博客主要是了解Shiro的 ...

随机推荐

  1. Linux基础命令操作实例

    1.开启Linux操作系统,要求以root用户登录GNOME图形界面,语言支持选择为汉语 2.使用快捷键切换到虚拟终端2,使用普通用户身份登录,查看系统提示符 使用快捷键Ctrl+Alt+F2切换到终 ...

  2. JAVA I/O 字符输出流简要概括

    偷个懒,直接参考上篇字符输入流Reader的形式,其实Reader和Writer本来就大同小异: 字符输出流Writer 本篇将对JAVA I/O流中的字符输出流Writer做个简单的概括: 总得来说 ...

  3. Ubuntu 开机启动是出现 grub rescue 解决办法

    最近想在Ubuntu的基础上,再在硬盘的一个分区安装Windows,其中有次不小心,在安装windows的时候,删除了一个分区,造成下次启动Ubuntu系统出现 grub rescue 下面是我的修复 ...

  4. c/c++重定向输入输出

    #define Local #include <iostream> #include <cstdio> //#include <stdio.h> using nam ...

  5. 重磅消息:微信小程序支持长按二维码进入

    之前微信小程序一般通过以下入口进入: 而用户经常使用“长按二维码”识别应用的功能一直未开放,据酷客多了解,微信安卓6.5.6内测版已经支持长按二维码识别和进入小程序,意味着把小程序二维码分享给朋友,或 ...

  6. web从入门开始(6)-----框架

    普通框架 框架概念:就是将一个页面分割成小窗口,每个窗口都是一个网页 框架集和框架页 框架集:<frameset>:主要用来划分窗口的 框架页:<frame>:主要用来指定窗口 ...

  7. C中运算符优先级

    总体规则: 特殊运算符>单目运算符>双目运算符>三目运算符>赋值运算符>逗号运算符 只有单目运算符是右结合,其余的均为左结合

  8. 于普通用户启动UAC问题

    在VS中设置UAC级别操作如下: 项目属性-配置属性-连接器-清单文件 1.UAC执行级别: aslnvoker: 权限级别最低,不需要管理员身份. highestAvailable:获取最高权限执行 ...

  9. bootstrap-dialog插件的使用

    官网文档:http://nakupanda.github.io/bootstrap3-dialog BootstrapDialog.show({ message: 'Hi Apple!', messa ...

  10. cephfs创建及挂载

    Ceph 文件系统( Ceph FS )是个 POSIX 兼容的文件系统,它使用 Ceph 存储集群来存储数据.Ceph 文件系统要求 Ceph 存储集群内至少有一个 Ceph 元数据服务器. 1.添 ...