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

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) 验证

浏览器打开路径:

http://localhost:5601/

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

默认用户名和密码是:

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

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

时间: 2024-07-28 15:12:32

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

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

无法查看索引下的日志问题解决 好事多磨,我们还是无法在Kibana下看到数据,究竟是怎么一回事呢? 笔者再次查看了logstash的控制台,又发现了如下错误: logstash outputs elasticsearch error 404 >>index_not_found_exception 上网查了下资料,原来需要在elasticsearch中创建自动索引 还记得刚才我们在elasticsearch.yml配置文件最后一行加的那句代码吗,看一下: 笔者修改如下: #自定义追加http.c

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

1. 问题描述  我们需要将不同服务器(如Web Server)上的log4j日志传输到同一台ELK服务器,介于公司服务器资源紧张(^_^) 2. 我们需要用到filebeat 什么是filebeat? filebeat被用来ship events,即把一台服务器上的文件日志通过socket的方式,传输到远程的ELK. 可以传输到logstash,也可以直接传输到elasticsearch. 3. 我们这里讲解如何传输到远程的logstash,然后再由elasticsearch讲数据传输到kib

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

1. 背景介绍 在大数据时代,日志记录和管理变得尤为重要. 以往的文件记录日志的形式,既查询起来又不方便,又造成日志在服务器上分散存储,管理起来相当麻烦, 想根据一个关键字查询日志中某个关键信息相当困难. 这个时候,ELK诞生了. 什么是ELK? 简单来说:它是一套完整的日志记录和分析的解决方案平台. 2. 技术栈介绍 ELK = Elasticsearch + Logstash + Kibana 2-1) Elasticsearch: ( Elasticsearch is a distribu

C++的三种访问权限与三种继承方式

三种访问权限 我们知道C++中的类,有三种访问权限(也称作访问控制),它们分别是public.protected.private.要理解它们其实也很容易,看下面了一个例子. 父类: class Person { public: Person(const string& name, int age) : m_name(name), m_age(age) { } void ShowInfo() { cout << "姓名:" << m_name <&l

文件的三种特殊权限——suid、sgid和粘滞位(sticky)

文件的正常权限是首选对用户进行分组:文件属主,文件属组和其它.然后每组类用户对文件具有三种基本的权限:r,w,x.除了这些正常的权限设置,还可以设置三种特殊权限. 1. suid.任何用户执行设置有该权限的文件后,不再以用户自己的身份作为进程的属主,而是以该执行文件的属主作为进程的属主.这种权限的实质就是让执行该文件的用户,在进程运行过程中被授予文件属主的身份. 举例: -rwsr-xr-x. 1 root root 48568 Sep 10 14:24 /tmp/cat 任何用户运行cat时,

ELK搭建实时日志分析平台之二Logstash和Kibana搭建

本文书接前回<ELK搭建实时日志分析平台之一ElasticSearch> 文:铁乐与猫 四.安装Logstash logstash是一个数据分析软件,主要目的是分析log日志. 1)下载和解压logstash 下载地址: https://www.elastic.co/cn/downloads/logstash 上传到服务器/usr/ELK目录后,解压:sudo tar -zxvf logstash-6.1.3.tar.gz 我下的这个6.1.3版本的logstash tar包大小有110多M了

智能手机的工业控制应用方案——SimpleWiFi在工业控制领域应用

智能手机的工业控制应用方案——SimpleWiFi在工业控制领域应用    先上图: 现在的智能控制都是基于微控制器,随着智能的手持终端的普及,基于智能终端的控制就会越来越普遍. WIFI便是其中的一种.WiFi用于智能家居控制,有着其得天独厚的优势.其优势如下: 优势一:WiFi终端设备现在基本上已经普及,WiFi已经智能手持终端的标配.大到笔记本.Pad,小到手机,WiFi已经是无所不在. 优势二:WiFi作为无线局域网的技术标准,能够通过无线路由器与现有的互联网进行互联互通.没有任何的技术

《机电传动控制》大作业-机械大楼电梯控制项目(阶段1)

<机电传动控制>大作业-机械大楼电梯控制项目(阶段1) 胡恒谦 机卓1301 一.系统硬件接口定义 根据电梯系统的工作运行特点,可将系统硬件接口分为楼层硬件接口.电梯内部硬件接口以及动力部分硬件接口. 1.1楼层硬件接口 每层电梯口有两个按钮“上行”和“下行”,有两个LED数码管分别显示左右两个电梯所在的楼层,数码管旁有箭头LED灯指示该电梯的运行状态(向上,向下,停止). 两个按钮即为电气开关,控制电梯的上行和下行.两个LED数码管要显示电梯楼层的话,就必须能够接收到电梯所在楼层的信息.箭头

2016/2/24 1,css有几种引入方式 2,div除了可以声明id来控制,还可以声明什么控制? 3,如何让2个div,并排显示。

1,css有几种引入方式 使用HTML标签的STYLE属性 将STYLE属性直接加在单个的HTML元素标签上,控制HTML标签的表现样式.这种引入CSS的方式是分散灵活方便,但缺乏整体性和规划性,不利于后期的修改和维护,当需要修改网站的样式时,一个相同的修改可能涉及多个地方,维护成本高.使用STYLE属性的样式效果最强,会覆盖掉其它几种引入方式的相同样式效果.   将样式代码写在页面<STYLE>...</STYLE>标签之中 <STYLE>...</STYLE&