ELK(Elasticsearch,Logstash和Kibana)日志分析平台,是目前比较流行的技术架构了。出于好奇心的驱使在自己的mac电脑上安装了一下,探探究竟。先介绍一下Elasticsearch,Elasticsearch是目前全文搜索引擎的首选。它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic是Lucene的封装,提供了REST API的操作接口,开箱即用。
安装前准备
1.mac下安装最方便的就是Homebrew了。首先安装Homebrew。
2.elk需要java8的环境,java -version看是否当前java环境是java8。
安装elasticsearch
brew install elasticsearch && brew info elasticsearch
启动/关闭/重启elasticsearch:
brew service start elasticsearch
brew service stop elasticsearch
brew service restart elasticsearch
启动之后使用您喜欢的浏览器检查它是否在localhost和默认端口上正确运行:http:// localhost:9200
输出应该如下所示:
安装Logstash:
brew install logstash
启动/关闭/重启logstash
brew services start logstash
brew services stop logstash
brew services restart logstash
由于我们尚未配置Logstash管道,因此启动Logstash不会产生任何有意义的结果。我们将在下面的另一个步骤中返回配置Logstash。
安装Kibana
brew install kibana
启动Kibana并检查所有ELK服务是否正在运行:
brew services start kibana
brew services list
Kibana需要进行一些配置更改才能正常工作,打开Kibana配置文件:kibana.yml
sudo vi /usr/local/etc/kibana/kibana.yml
取消注释用于定义Kibana端口和Elasticsearch实例的指令:
server.port: 5601
elasticsearch.url: "http://localhost:9200”
如果一切顺利,请在localhost:5601/status打开Kibana。你应该看到这样的东西:
恭喜,您已经在Mac上成功安装了ELK!
发送一些数据
您已准备好开始向Elasticsearch发送数据并享受堆栈提供的所有优点。下面是一个Logstash管道将syslog日志发送到堆栈的示例。 首先,您需要创建一个新的Logstash配置文件:
sudo vim /etc/logstash/conf.d/syslog.conf
输入以下配置:
input {
file {
path => [ "/var/log/*.log", "/var/log/messages", "/var/log/syslog" ]
type => "syslog"
}
}
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "syslog-demo"
}
stdout { codec => rubydebug }
}
然后重启logstash.
在Kibana的Management选项卡中,您应该看到由新的Logstash管道创建的新创建的“syslog-demo”索引。
将其作为index pattern输入,然后在下一步中选择@timestamp字段作为时间过滤器字段名称。
我们都准备好了!打开Discover页面,您将在Kibana中看到syslog数据。