ELK入门
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana 。
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
以下是其原理简图:
为了简化,此处直接将Logstash机器上的/var/log/messages日志传送给Elasticsearch机器,然后Kibana机器来进行可视化分析。
===================================================================================================
一 安装6.2版本的Logstash,Elasticsearch,Kibana:
https://www.elastic.co/guide/en/logstash/current/installing-logstash.html
https://www.elastic.co/guide/en/elasticsearch/reference/6.2/install-elasticsearch.html
https://www.elastic.co/guide/en/kibana/6.2/setup.html
参考官网会有详细的介绍。
二 部署Logstash,Elasticsearch,Kibana服务:
1. 配置Logstash:
首先进入Logstash配置文件目录:
[[email protected] logstash]# cd /etc/logstash/
我们可以查看以下jvm.options
[[email protected] logstash]# cat jvm.options
## JVM configuration
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space
-Xms256m
-Xmx1g
(建议系统内存是Xmx的2倍以上。)
然后进入conf.d目录,写入一个配置文件:
[[email protected] logstash]# cd conf.d/
[[email protected] conf.d]# cat test1.conf
input {
file{
start_position => "beginning"
path => ["/var/log/messages"]
}
}
output {
elasticsearch{
hosts => "192.168.0.113:9200"
}
}
这个配置文件包含最基本的插件。 Input和Output,这两个插件是Logstash配置文件所必须的。
input {
file{
start_position => "beginning"
path => ["/var/log/messages"]
}
}
这一段的意思是,我们从文件中读入数据,文件是该主机上的/var/log/messages,start_position => "beginning"限定了文件是从头至尾地读。
output {
elasticsearch{
hosts => "192.168.0.113:9200"
}
}
这一段的意思是:我们将数据输出到elasticsearch主机中,并且定义了elasticsearch主机的IP地址及端口。
2. 配置elasticsearch:
首先,进入elasticsearch服务的配置文件目录:
[[email protected] ~]# cd /etc/elasticsearch/
修改主配置文件:
[[email protected] elasticsearch]# vim elasticsearch.yml
29 # ----------------------------------- Paths -------------------------------- ----
30 #
31 # Path to directory where to store the data (separate multiple locations by comma):
32 #
33 path.data: /var/lib/elasticsearch
34 #
35 # Path to log files:
36 #
37 path.logs: /var/log/elasticsearch
定义存储数据和日志的目录,使用默认值。
51 # ---------------------------------- Network ------------------------------- ----
52 #
53 # Set the bind address to a specific IP (IPv4 or IPv6):
54 #
55 network.host: 192.168.0.113
56 #
57 # Set a custom port for HTTP:
58 #
59 http.port: 9200
60 #
61 # For more information, consult the network module documentation.
62 #
network.host改为Elasticsearch机器的IP地址,端口按默认9200端口放行。
3. 配置Kibana:
首先,进入Kibana的配置文件目录:
[[email protected] ~]# cd /etc/kibana/
修改主配置文件:
[[email protected] kibana]# vim kibana.yml
1 # Kibana is served by a back end server. This setting specifies the port to use.
2 server.port: 5601
端口按Kibana默认的5601端口放行。
6 # To allow connections from remote users, set this parameter to a non-loopba ck address.
7 server.host: "192.168.0.114"
修改server.host为Kibana机器的IP地址。
20 # The URL of the Elasticsearch instance to use for all your queries.
21 elasticsearch.url: "http://192.168.0.113:9200"
这里elasticsearch.url定义了Elasticsearch机器的IP地址。
30 kibana.index: ".kibana"
这里解注释
三. 测试:
在Logstash主机上执行:
[[email protected] conf.d]# /usr/share/logstash/bin/logstash -f test1.conf
最后系统提示:[INFO ] 2019-03-19 23:04:32.035 [Ruby-0-Thread-1: /usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/stud-0.0.23/lib/stud/task.rb:22] agent - Pipelines running {:count=>1, :pipelines=>["main"]}
则表示执行成功。
在浏览器中输入:192.168.0.114(Kibana主机IP):6501进入Kibana可视化界面:
点击Discover,可发现从Elasticsearch传来的数据。 输入一个Index Pattern后,点击下一步,然后设置配置后可创建Index Pattern。
在右上角时间选择处选择合适的监控时间,如选择This week。可以出现Elasticsearch上的Logstash传来的messages日志信息。