一、前言
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