一、概念
ELK 是什么
1、ELK 是 Elasticsearch、Logstash、Kibana 的首字母组合,这三者是核心套件,但并非全部。
1)、Elasticsearch 是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。
2)、Logstash 是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。
3)、Kibana 是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据
说明:以上是 ELK 技术栈的一个架构图。从图中可以清楚的看到数据流向。
Beats:是单一用途的数据传输平台,它可以将多台机器的数据发送到 Logstash 或 Elasticsearch。但 Beats 并不是不可或缺的一环,所以本文中暂不介绍。
Logstash: 是一个动态数据收集管道。支持以 TCP/UDP/HTTP 多种方式收集数据(也可以接受 Beats 传输来的数据),并对数据做进一步丰富或提取字段处理。
Elasticsearch: 是一个基于 JSON 的分布式的搜索和分析引擎。作为 ELK 的核心,它集中存储数据。
Kibana:是 ELK 的用户界面。它将收集的数据进行可视化展示(各种报表、图形化数据),并提供配置、管理 ELK 的界面。
二、安装 ( 使用 Cakebrew 安装)
1、使用 Cakebrew 安装 Logstash、Elasticsearch、Kibana
注:Cakebrew 中可能无法下载 Kibana(本文中Cakebrew无法安装Kibana)
2、Kibana 安装到官网中下载(https://www.elastic.co/downloads/past-releases)
注: Logstash、ElasticSearch、Kibana 版本需要一致不然无法集成
三、配置 ( 使用 Cakebrew 安装)
1、简单配置 Elasticsearch
1)、在 /usr/local/etc/elasticsearch/elasticsearch.yml 文件中加入下列配置:
# 为集群使用描述性名称:
cluster.name: xxxxxx
# 存储数据的目录路径(用逗号分隔多个位置):
path.data: /usr/local/xx/xx/xxx/
# 日志文件路径:
path.logs: /usr/local/xx/xx/xxx/
# 为HTTP设置自定义端口:
http.port: 9600
2、简单配置 Logstash
1)、添加一个 logstash.conf 文件 或者使用文件下的 config/logstash-sample.conf 指定要使用的插件以及每个插件的设置。举个简单的例子:
input { beats { port => 5044 }}
filter { grok { match => { "message" => "%{COMBINEDAPACHELOG}"} }
geoip { source => "clientip" } }
output {
elasticsearch {
hosts => ["http://127.0.0.1:9600"]
index => "logstash-%{type}-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
2)、在 config/pipelines.yml 文件中添加 如下配置
- pipeline.id: myconfig
path.config: "xxxxxxxxx/config/logstash-sample.conf
3、简单配置 Kibana
1)、把下载下来的 Kibana 解压出来 找到 config/kibana.yml 文件添加如下
# 监听端口
server.port: 5601
# 指定后端服务器
server.host: "localhost"
# 指定elasticsearch实例地址
elasticsearch.url: "http://127.0.0.1:9600"
大功告成,此后分别启动 Logstash --- Elasticsearch -- Kibana 即可