大数据实战:elasticsearch+kibana+logstash+xpack

一、前言

1.介绍

        在安装前我们要了解一下相关组件。

       Elasticsearch是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,基于apache Lucene开发,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库,而Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的,虽然Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

        logstash是一个开源数据收集引擎,可以实时传输数据,但是它不保证可靠,生产环境中可以加入kafka进行数据缓存减少日志丢失,和flume比较配置很简单。

        kibana是开源分析和可视化平台,主要是与Elasticsearch搭配使用。

        xpack是一个elk扩展插件,将安全,警报,监视,报告和图形功能包含在一个易于安装的软件包,程序是开源的,但是很多功能要收费,具体可以看官网。

二、安装、配置

        相关环境说明:centos7,elasticsearch6.2.4,kibana-6.2.4,logstash-6.2.4

        启动elasticsearch需要java环境,这里不做安装教程。

1.安装准备

        安装三个linux虚拟机,分配如下

esnode1 192.168.107.129
esnode2 192.168.107.130
logstash 196.168.107.128

elasticsearch一旦建立起来会自动选取master,其他都为slave,kibana我放在esnode1这台主机上。

        elasticsearch需要占用大量内存和文件数,在安装elasticsearch的主机上都要进行如下配置:

1.修改如下参数(需要重启系统生效)
vi /etc/security/limits.conf 
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
2.一个进程可以拥有虚拟内存数量
vi /etc/sysctl.conf 
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p

2.elasticsearch安装

        在官网下载elasticsearch,传到linux系统的opt文件目录下并解压

tar -zxvf elasticsearch-6.2.4.tar.gz
mkdir elasticsearch
mv elasticsearch-6.2.4/ elasticsearch/
mkdir elasticsearch/esdata
mkdir elasticsearch/eslogs
cd elasticsearch/elasticsearch-6.2.4/

修改相关配置信息:

1.由于本人配置低,需要修改jvm内存配置
vi config/jvm.options
修改如下
-Xms256m
-Xmx256m

2.修改elasticsearch主要配置
vi config/elasticsearch.yml
cluster.name: es-cluster    #集群名字,所有节点要保持一致
node.name: esnode1    #节点名字,不同节点要保证名字不一样
path.data: /opt/elasticsearch/esdata    #数据文件,自行创建
path.logs: /opt/elasticsearch/eslogs    #日志文件,自行创建
network.host: 192.168.107.129    #绑定ip
http.port: 9200    #绑定端口
discovery.zen.ping.unicast.hosts: ["192.168.107.129", "192.168.107.130"]    #集群节点ip
discovery.zen.minimum_master_nodes: 2    #集群中有master资格的节点数量

3.上述为esnode1的配置,esnode2配置只需要复制esnode1配置并修改node.name参数为esnode2

如果需要elasticsearch配置详情可以访问:https://www.cnblogs.com/hanyouchun/p/5163183.html

启动es集群,两个节点都要执行:

./bin/elasticsearch    #一般执行 nohup ./bin/elasticsearch&
elasticsearch为了安全不能在root用户下启动,需要自行创建用户

esnode1成功结果


esnode2成功结果


3.kibana安装

        在官网下载kibana,传到linux系统的opt文件目录下并解压

tar -zxvf kibana-6.2.4-linux-x86_64.tar.gz
cd kibana-6.2.4/

修改相关配置信息

vi config/kibana.yml
修改如下配置
server.port: 5601    #绑定端口
server.host: "0.0.0.0"     #绑定ip,这个表示所有ip都可以访问
elasticsearch.url: "http://192.168.107.129:9200"    #elasticsearch的ip和端口
kibana.index: ".kibana"    #kibana索引

启动kibana

./bin/kibana    #一般执行nohup ./bin/kibana&

注意:kibana是用node编写,如果要找到运行进程号需要执行下面命令
ps -ef | grep node

kibana成功如下


此时访问相关地址:http://192.168.107.129:5601


4.logstash配置并启动

        在官网下载logstash,传到linux系统的opt文件目录下并解压

tar -zxvf logstash-6.2.4.tar.gz
cd logstash-6.2.4/

修改配置相关信息:

1.由于配置原因,需要调整jvm内存
vi config/jvm.options
修改如下
-Xms256m
-Xmx256m

2.在config下新建文件并配置
vi config/logstash_test.conf
添加如下信息
input{
    file {
        path => "/home/logs/*.log"
        start_position => "beginning"
        }
}
output {
    elasticsearch {
        hosts => ["192.168.107.129:9200"]
        index => "logstest-%{+YYYY.MM.dd}"
        }
}

启动logstash

./bin/logstash -f config/logstash_test.conf    #一般执行  nohup ./bin/logstash -f config/logstash_test.conf&

成功如下


5.测试

下面我们测试相关内容输入

根据logstash配置信息,我们在系统根目录的home文件夹下
mkdir logs
多次执行
echo "hello world" >> logs/test.log

我们在kibana中点击check for new data


成功后在输入框输入logstest-*并点击Next step


创建索引


成功如下


点击左侧的Discover


刚好有5条信息,配置成功。

三、xpack安装

        要先停止所有进程

1.elasticsearch

        在elasticsearch的目录下,如果有集群所有集群都要安装

[hadoop@hadoopmaster elasticsearch-6.2.4]$ bin/elasticsearch-plugin install x-pack
-> Downloading x-pack from elastic
[=================================================] 100%   
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     WARNING: plugin requires additional permissions     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.io.FilePermission \\.\pipe\* read,write
* java.lang.RuntimePermission accessClassInPackage.com.sun.activation.registries
* java.lang.RuntimePermission getClassLoader
* java.lang.RuntimePermission setContextClassLoader
* java.lang.RuntimePermission setFactory
* java.net.SocketPermission * connect,accept,resolve
* java.security.SecurityPermission createPolicy.JavaPolicy
* java.security.SecurityPermission getPolicy
* java.security.SecurityPermission putProviderProperty.BC
* java.security.SecurityPermission setPolicy
* java.util.PropertyPermission * read,write
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@        WARNING: plugin forks a native controller        @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
This plugin launches a native controller that is not subject to the Java
security manager nor to system call filters.

Continue with installation? [y/N]y
Elasticsearch keystore is required by plugin [x-pack-security], creating...
-> Installed x-pack with: x-pack-core,x-pack-deprecation,x-pack-graph,x-pack-logstash,x-pack-ml,x-pack-monitoring,x-pack-security,x-pack-upgrade,x-pack-watcher

启动elasticsearch,并在elasticsearch目录下执行如下命令

[hadoop@hadoopmaster elasticsearch-6.2.4]$ ./bin/x-pack/setup-passwords interactive
Initiating the setup of passwords for reserved users elastic,kibana,logstash_system.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y


Enter password for [elastic]: 
Reenter password for [elastic]: 
Enter password for [kibana]: 
Reenter password for [kibana]: 
Enter password for [logstash_system]: 
Reenter password for [logstash_system]: 
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [elastic]
我设置的密码都为  elastic

2.kibana

        在kibana目录下执行如下命令

[hadoop@hadoopmaster kibana-6.2.4]$ bin/kibana-plugin install x-pack 
Attempting to transfer from x-pack
Attempting to transfer from https://artifacts.elastic.co/downloads/kibana-plugins/x-pack/x-pack-6.2.4.zip
Transferring 264988487 bytes....................
Transfer complete
Retrieving metadata from plugin archive
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete

修改config下的配置文件kibana.yml

# If your Elasticsearch is protected with basic authentication, these settings provide
# the username and password that the Kibana server uses to perform maintenance on the Kibana
# index at startup. Your Kibana users still need to authenticate with Elasticsearch, which
# is proxied through the Kibana server.
elasticsearch.username: "kibana"
elasticsearch.password: "elastic"

启动kibana并访问http://192.168.107.129:5601,我们发现出现了一个登入窗口


输入用户名elastic,密码elastic(这个是超级用户可以进行所有操作)。登入成功后,我们发现左边多出了很多菜单栏


3.logstash

        在logstash目录下执行

[hadoop@hive logstash-6.2.4]$ bin/logstash-plugin install x-pack
Downloading file: https://artifacts.elastic.co/downloads/logstash-plugins/x-pack/x-pack-6.2.4.zip
Downloading [=============================================================] 100%
Installing file: /tmp/studtmp-6852b92df5f425fd42b8c04f8899037afc2c9e08941969ef8f12b641d0a1/x-pack-6.2.4.zip
Install successful

修改相关配置

1.在前面我们的logstash_test.conf新增如下内容
vi config/logstash_test.conf
input{
    file {
        path => "/home/logs/*.log"
        start_position => "beginning"
        }
}
output {
    elasticsearch {
        hosts => ["192.168.107.129:9200"]
        index => "logstest-%{+YYYY.MM.dd}"
        user => elastic
        password => elastic
        }
}

2.修改logstash.yml
vi config/logstash.yml
在后面添加
xpack.monitoring.elasticsearch.url: "http://192.168.107.129:9200"
xpack.monitoring.elasticsearch.username: "logstash_system"
xpack.monitoring.elasticsearch.password: "elastic"

        启动logstash, 以上就是x-pack相关配置,默认情况下,所有X-Pack功能都被启用。您可以启用或禁用特定的X-Pack功能elasticsearch.yml,kibana.yml以及logstash.yml 配置文件。

设置 描述
xpack.graph.enabled 设置为false禁用X-Pack图形功能
xpack.ml.enabled 设置为false禁用X-Pack机器学习功能。
xpack.monitoring.enabled 设置为false禁用X-Pack监视功能。
xpack.reporting.enabled 设置为false禁用X-Pack报告功能。
xpack.security.enabled 设置为false禁用X-Pack安全功能。
xpack.watcher.enabled 设置false为禁用观察器。
详情可参阅, 官网教程

        下面我们看一下相关界面,进入kibana点击左边的Monitoring


我们可以看到整个集群的运行状况,点击相关链接我们可以看到如下内容




四、总结

        elk系统不仅适合做运维开发,logstash在日志采集和过滤方面有自己专门的语言,elasticsearch查询速度快,很适合做日志分析,在采集日志和查询速度对比hadoop好处太多,当然elk在做数据查询方面特别是多维查询对比hive逊色不少不适合做数据仓库,这也是elk目前在攻克的方向。elk搭建速度快而且开发简单,很适合中下企业,目前有很多公司采用,它现在也是大数据开发的一个热点。

PS: 如果觉得本篇本章对您有所帮助,欢迎关注、评论、赞!如果要转发可以注明作者和出处

参考资料:

    [1]ELK 集群 Kibana 使用 X-Pack:https://segmentfault.com/a/1190000010981283

    [2]elasticsearch学习笔记--原理介绍:https://www.cnblogs.com/zwt1990/p/7737747.html

猜你喜欢

转载自blog.csdn.net/weixin_42389349/article/details/80622626