13 - Logs - 挖掘系统内部发生的状况 (1/4) - Logs 与 Filebeat 的基本介绍

Logs - 挖掘系统内部发生的状况 系列文章


本篇学习重点

  • Logs 在 Observability 中的基本介绍
  • Filebeat 的简介,以及如何用 Filebeat 来收集 Logs 资料

Observability Logs 的基本介绍

Logs 在 Observability 扮演的角色

Google Cloud Architecture Center - DevOps Guides [1] 对针 Observability 这个词的定义中,描述到:

Observability is tooling or a technical solution that allows teams to actively debug their system. Observability is based on exploring properties and patterns not defined in advance.

有提到一个重点,就是『非事先定义』,Observability 也就是拥有能够探索未事先定义的属性与模式的能力,我们在先前介绍的 UptimeMetrics 的部份,其实都是需要事先定义,就算是 Elastic 已经做好很多预设的 Integration 以及 Dashboard,但也都是先定义好的,如果没有定义的部份,也就不会被收集到。

而 Observability 当中的 Logs 与 APM,就拥有较多可以观察到『非事先定义』部份的能力,针对 Logs 的部份,源头当然还是需要系统、应用程序端、或是服务端,有记录足够资讯的日志,而这些日志,将会让我们拥有『当发现系统有异常时,能够进一步深入挖掘系统内部运作的情况,并且提供分析核心原因及找到解决方案』的能力。

Observability 中的 Logs 提供了什麽样的能力

即时监控不断产生的 Logs - Streaming

就好比我们在 *nix 环境中常会针对日志档使用的指令 tail -f,能让我们查看最新不断产生的日志内容,Logs 也提供了 Streaming 的功能,在 Kibana > Observability > Logs 当中,我们可以启用 Stream live 的按钮,就可以让我们即时的查看分散在多台主机的系统、服务、应用程序,所最新产生的日志内容。

13-Kibana-O11y-Logs-stream

在这个 Logs Streaming 的功能之中,由於资讯量很大,所以 Logs 同时也有提供一些能力,能协助我们找到或是关注在我们所需要的资料上:

  • 使用 KQL (Kibana Query Language) 定义筛选的规则

  • 使用 Highlights 在结果当中以颜色突显、也会在右方的时间轴上呈现出哪些时间有发生
    13-Kibana-O11t-Stream-Highlight

  • 在查询到指定某一条 log 时,能透过 View in Context 的方式来检视,也就是可以快速的翻查这行 log 的前、後的 logs,这个功能非常的实用。

13-Kibana-O11t-Stream-view-in-context

使用 Machine Learning 来协助分析 Logs

这部份在 Observability 的 Logs 之中,预设在选单上就有列出两个功能,都是透过 Machine Learning 来协助做到二个类型的处理:

  • Anomalies 异常
  • Categories 分类

透过机器学习的方式,能针对指定 Logs 的时间启始点、针对哪些 Index,建立 Machine Learning 的 Job。

13-Kibana-Create-ML-Job

在进入这两个功能的检视画面时,就可以发现 Elastic 已经贴心的帮我们建立好这些基本的学习规则,可以直接查看当下发现的结果。

13-Kibana-Create-Anomalies

进一步可以从 Anomaly Explorer 查看异常分析的内容。

13-Kibana-Create-Anomaly-Explorer

甚至可以查看异常判断的原因。

13-Kibana-Create-Anomaly-Reason

Filebeat 基本介绍

要使用上述介绍到 Elastic 在 Kibana 提供的 Observability Logs 的这些基本能力之前,我们要先将 Logs 收集到 Elasticsearch 之中,Elastic Stack 中负责收集 Logs 资讯的主要角色,就是 Filebeat,如同先前介绍的 Metricbeat 和 Heartbeat 一样,Filebeat 也是 Beats 家族中的一员,所以也是从 libbeat 所发展出来,并且是针对档案类型的 Logs 进行收集的工具。

Filebeat 的主要运作架构

如下图所示,Filebeat 主要是针对机器上的各种档案,并且会使命必达的负责将指定的目录中的档案有新增的 logs,收集起来并且往後传递,可以直接送到 Elasticsearch 或是送到 Logstash 进行 ETL (Etract, Transform, Load) 的处理,又或是送到 Kafka 或 Redis 的 Queue 之中,再透过其他的工具进行後续的处理。

13-Filebeat-Architecture

Filebeat 的安装方式

安装的方式如同其他 Beats 家族成员相似,以下是使用最简单的安装步骤来做介绍,其实与官方的 Quick start 的文件差不多,先大约知道将 Metricbeat 运作起来的流程为何,我将会以 MacOS 为例。

  1. 下载,并解压缩 Filebeat。
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.15.0-darwin-x86_64.tar.gz
tar xzvf filebeat-7.15.0-darwin-x86_64.tar.gz
  1. 在解压缩目录下的 filebeat.yml 指定 Elasticsearch 的位置
output.elasticsearch:
  hosts: ["myEShost:9200"]
  username: "filebeat_internal"
  password: "YOUR_PASSWORD" 
  1. 启动要安装的模组
./filebeat modules enable {module_name}

Filebeat 提供了非常多内建的模组 (modules),像是 ElasticsearchApacheNginxMySQLPostgreSQLRedisMongoDB...等,详细可以查看 官方文件 Filebeat Modules [2]。

另外针对启动的模组,通常都会要调整这些模组的 config 档,档案的路径就在 ./modules.d/ 里面,档名就会是 module 的名字,副档名为 .yml

  1. 安装 Filebeat 内建的 Kibana Dashboard,以及 Elasticsearch 的 Index Template。
./filebeat setup -e
  1. 启动 Filebeat
./filebeat -d

若是要以 root 执行,要记得把 config 的拥有者也改成 root

sudo chown root filebeat.yml 
sudo chown root modules.d/system.yml 
sudo ./filebeat -e

接下来就可以到 Kibana 查看 Filebeat 所发送的资料,有没有成功的进入到 Elasticsearch了。

参考资料

  1. Google Cloud Architecture Center - DevOps Guides
  2. 官方文件 Filebeat Modules

查看最新 Elasticsearch 或是 Elastic Stack 教育训练资讯: https://training.onedoggo.com
欢迎追踪我的 FB 粉丝页: 乔叔 - Elastic Stack 技术交流
不论是技术分享的文章、公开线上分享、或是实体课程资讯,都会在粉丝页通知大家哦!


<<:  Day14 - 做一半的产品编辑 modal

>>:  Day13 - this&Object Prototypes Ch3 Objects - Contents - Existence - Enumeration 作者建议

【在厨房想30天的演算法】Day 29 资讯安全与演算法 : 数位签章

Aloha!我是少女人妻 Uerica!话说你们知道哈利波特的角色中谁最有主见吗~佛地魔!因为他不会...

Day5-就差那麽那麽一点点!!!(指尖宇宙系列

混乱的周一转了一大圈!那股慌张感涌上心头! 就是你!就是因为没有见到你! 差点断更阿! ------...

【D8】制作图表:三大法人-区分期货与选择权二类

前言 有了资料後,就要进行分析,因此需要做出图表比较适合观察,所以我们现在来做图罗! 本日程序码使用...

Day-21 物件与原型链

JavaScript的物件基於「原型」的继承,可以令一个物件「继承另一个物件的属性」。具体上,以 O...

Day 8 - Fun with HTML5 Canvas

前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...