ELK 三件套的一些实践

什么是 ELK

官方网址:https://www.elastic.co/cn/

  • Elasticsearch

    • Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
  • Logstash

    • Logstash 是开源的服务器端数据处理管道,能够同时 从多个来源采集数据、转换数据,然后将数据发送到您最喜欢的 “存储库” 中。(我们的存储库当然是 Elasticsearch。)
  • Kibana

    • Kibana 让您能够可视化 Elasticsearch 中的数据并操作 Elastic Stack。

Elasticsearch

几个特性:

  • 查询:Elasticsearch 允许执行和合并多种类型的搜索 — 结构化、非结构化、地理位置、度量指标 — 搜索方式随心而变。先从一个简单的问题出发,试试看能够从中发现些什么。
  • 分析:找到与查询最匹配的十个文档是一回事。但是如果面对的是十亿行日志,又该如何解读呢?Elasticsearch 聚合让您能够从大处着眼,探索数据的趋势和模式。
  • 速度:我们通过有限状态机实现了用于全文检索的倒排索引,实现了用于存储数值数据和位置数据的 BKD 树, 以及用于分析的列存储。
    而且由于每个数据都被编入了索引,因此您再也不用因为某些数据没有索引而烦心。您可以用快到令人发指的速度使用和访问您的所有数据。
  • 可扩展性:无论 Elasticsearch 是在一个节点上运行,还是在一个包含 300 节点的集群上运行,您都能够以相同的方式与 Elasticsearch 进行通信。
    它能够水平扩展,每秒钟可处理海量事件,同时能够自动管理索引和查询在集群中的分布方式,以实现极其流畅的操作。
  • 弹性:硬件故障。网络瞬断。Elasticsearch 为您检测这些故障并确保您的集群(数据)安全和可用。
  • 灵活性:数字、文本、地理位置、结构化、非结构化。所有的数据类型都欢迎。
    应用搜索、安全分析或是日志分析只是全球众多公司利用 Elasticsearch 解决各种挑战的冰山一角。
  • 客户端库:Elasticsearch 使用的是标准的 RESTful API 和 JSON。此外,我们还构建和维护了很多其他语言的客户端,例如 Java, Python, .NET, 和 PHP
  • X-PACK:X-Pack 可以很轻松的安装在 Elasticsearch 从而带来为您带来增强的使用体验,提供的特性包括 security、monitoring、alerting、reporting、graph 关联分析和 machine learning。

Mac 上安装与操作 Elasticsearch

使用 Homebrew 安装:

brew install elasticsearch

产生的几个目录:

  • Data 数据: /usr/local/var/lib/elasticsearch/elasticsearch_xianch/
  • Logs 日志: /usr/local/var/log/elasticsearch/elasticsearch_xianch.log
  • Plugins 插件: /usr/local/var/elasticsearch/plugins/
  • Config 配置: /usr/local/etc/elasticsearch/
  • 安装目录: /usr/local/Cellar/elasticsearch/6.2.4

查看 Elasticsearch 版本:

elasticsearch --version
Version: 6.2.4, Build: ccec39f/2018-04-12T20:37:28.497551Z, JVM: 1.8.0_172

启动和停止 Elasticsearch:

brew services start elasticsearch
brew services stop elasticsearch

启动后可以访问 http://localhost:9200/ 看到 Elasticsearch 的信息,返回一段 JSON:

{
  "name" : "XUgy0CH",
  "cluster_name" : "elasticsearch_xianch",
  "cluster_uuid" : "mjJZ5tJHTAW0ef2FsnLfqw",
  "version" : {
    "number" : "6.2.4",
    "build_hash" : "ccec39f",
    "build_date" : "2018-04-12T20:37:28.497551Z",
    "build_snapshot" : false,
    "lucene_version" : "7.2.1",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

Logstash

几个特性:

  • 输入:数据往往以各种各样的形式,或分散或集中地存在于很多系统中。Logstash 支持各种输入选择 ,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。
  • 过滤器:Logstash 能够动态地转换和解析数据,不受格式或复杂度的影响。
  • 输出:尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。
    Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。
  • 即插即用:Logstash 模块通过流行的数据源(如 ArcSightNetflow )呈现瞬间可视化的体验。通过立即部署摄入管道和复杂的仪表板,您的数据探索将以几分钟而不是几天的时间开始。
  • 可扩展:Logstash 采用可插拔框架,拥有 200 多个插件。您可以将不同的输入选择、过滤器和输出选择混合搭配、精心安排,让它们在管道中和谐地运行。
  • 可靠性 & 安全性:假如 Logstash 节点发生故障,Logstash 会通过持久化队列来保证运行中的事件至少一次被送达(at-least-once delivery)。那些未被正常处理的消息会被送往死信队列(dead letter queue)以便做进一步处理。由于具备了这种吸收吞吐量的能力,现在您无需采用额外的队列层,Logstash 就能平稳度过高峰期。
  • 监控:Logstash 管道通常服务于多种用途,会变得非常复杂,因此充分了解管道性能、可用性和瓶颈异常重要。借助 X-Pack monitoring 功能,您可以轻松观察和研究处于活动状态的 Logstash 节点或整个部署。
  • 管理 & 治理:借助 Pipeline 管理图形界面来管理 Logstash 的部署,这让您数据加工管道的治理变得轻而易举。

Mac 上安装与操作 Logstash

使用 Homebrew 安装:

brew install logstash

产生的几个目录:

  • 安装目录: /usr/local/Cellar/logstash/6.2.4

查看 Logstash 版本:

logstash --version
logstash 6.2.4

创建一个 Logstash 配置文件 logstash.conf
语法参考:https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html

input {
  tcp {
    mode => "server"
    host => "127.0.0.1"
    port => 9250
  }
}
filter {
}
output {
  elasticsearch {
    action => "index"
    hosts  => "127.0.0.1:9200"
    index  => "testing-log"
  }
}

启动一个 Logstash 实例,其实相当于定义了一个数据处理的管道,从 9250 端口接受数据,并发送存储到上面创建的 Elasticsearch 示例:

logstash -f logstash.conf

Kibana

几个特性:

  • 可视化与探索
  • 分享 KIBANA <3
  • 统一的 UI 管理界面
  • 开发工具

Mac 上安装与操作 Kibana

请确保 Kibana 的版本与 Elasticsearch 的版本一致。否则启动 Kibana 之后会出现错误提示:

Kibana 与 Elasticsearch 版本不匹配错误提示

先下载到本地并解压缩:

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-darwin-x86_64.tar.gz
tar zxvf kibana-6.2.4-darwin-x86_64.tar.gz

编辑 /config/kibana.yml,确保:

# The URL of the Elasticsearch instance to use for all your queries.
elasticsearch.url: "http://localhost:9200"

通过 ./bin/kibana 启动 Kibana:

启动 Kibana 日志

随后可以通过 http://localhost:5601/ 访问 Kibana 页面:

Kibana 页面

导入示例数据到 Elasticsearch

三个数据集:

  • 威廉·莎士比亚全集,解析成合适的字段。点击这里下载这个数据集: shakespeare.json.
  • 一组虚构的账户与随机生成的数据。点击这里下载这个数据集: accounts.zip.
  • 一组随机生成的日志文件。点击这里下载这个数据集: logs.jsonl.gz.

具体过程参考:

几个注意的点:

  • 在莎士比亚和日志数据集加载之前,我们需要为字段设置 映射 Mapping。 映射把索引中的文档按逻辑分组并指定了字段的属性,比如字段的可搜索性或者该字段是否是 tokenized ,或分解成单独的单词。
    通过 Kibana UI 的 Dev Tools 创建映射 Mapping
  • 可以通过 GET /_cat/indices?v 查看是否导入成功:
    可以通过 GET /_cat/indices?v 查看是否导入成功

在 Elasticsearch 中创建索引模式 Index Patterns

具体过程参考:

导入数据后,我们再次访问 Kibana 页面 http://localhost:5601/ 会看到如下的信息:
Index Patterns: In order to visualize and explore data in Kibana, you'll need to create an index pattern to retrieve data from Elasticsearch.

提示创建 Index Patterns

加载到 Elasticsearch 的每组数据都有一个索引模式(Index Pattern)。
在上一节中,为莎士比亚数据集创建了名为 shakespeare 的索引,为 accounts 数据集创建了名为 bank 的索引。
一个 索引模式 是可以匹配多个索引的带可选通配符的字符串。例如一般在通用日志记录中,一个典型的索引名称一般包含类似 YYYY.MM.DD 格式的日期信息。例如一个包含五月数据的索引模式: logstash-2015.05*
定义索引模式时,匹配该模式的索引必须在 Elasticsearch 中存在。并且那些索引必须包含数据。

创建 Index Pattern shakespeare

创建 Index Pattern bank

创建 Index Pattern logstash-*

在 Elasticsearch 中搜索数据

具体过程参考:

单击侧面导航中的 Discover 进入 Kibana 的数据探索功能。在查询框里,您可以输入 Elasticsearch 查询语句 来搜索您的数据。

例如我们想查询0到99之间所有余额超过47,500的账户号码:


在 Elasticsearch 中搜索数据

可视化数据

具体过程参考:

在侧边导航栏点击 Visualize 开始视化您的数据。例如:我们使用饼图这个重要的可视化控件来查看银行账户样本数据中的账户余额。点击屏幕中间的 Create a visualization 蓝色按钮开始。


可视化数据

使用仪表板汇总数据

具体过程参考:

仪表板可用于集中管理和分享可视化控件集合。

Spring Cloud Sleuth 集成 ELK

参见 Spring Cloud 学习笔记 - No.8 分布式服务跟踪 Sleuth

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容