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 也就是拥有能够探索未事先定义的属性与模式的能力,我们在先前介绍的 Uptime 与 Metrics 的部份,其实都是需要事先定义,就算是 Elastic 已经做好很多预设的 Integration 以及 Dashboard,但也都是先定义好的,如果没有定义的部份,也就不会被收集到。
而 Observability 当中的 Logs 与 APM,就拥有较多可以观察到『非事先定义』部份的能力,针对 Logs 的部份,源头当然还是需要系统、应用程序端、或是服务端,有记录足够资讯的日志,而这些日志,将会让我们拥有『当发现系统有异常时,能够进一步深入挖掘系统内部运作的情况,并且提供分析核心原因及找到解决方案』的能力。
就好比我们在 *nix 环境中常会针对日志档使用的指令 tail -f
,能让我们查看最新不断产生的日志内容,Logs 也提供了 Streaming 的功能,在 Kibana > Observability > Logs 当中,我们可以启用 Stream live
的按钮,就可以让我们即时的查看分散在多台主机的系统、服务、应用程序,所最新产生的日志内容。
在这个 Logs Streaming 的功能之中,由於资讯量很大,所以 Logs 同时也有提供一些能力,能协助我们找到或是关注在我们所需要的资料上:
使用 KQL (Kibana Query Language) 定义筛选的规则
使用 Highlights 在结果当中以颜色突显、也会在右方的时间轴上呈现出哪些时间有发生
在查询到指定某一条 log 时,能透过 View in Context
的方式来检视,也就是可以快速的翻查这行 log 的前、後的 logs,这个功能非常的实用。
这部份在 Observability 的 Logs 之中,预设在选单上就有列出两个功能,都是透过 Machine Learning 来协助做到二个类型的处理:
透过机器学习的方式,能针对指定 Logs 的时间启始点、针对哪些 Index,建立 Machine Learning 的 Job。
在进入这两个功能的检视画面时,就可以发现 Elastic 已经贴心的帮我们建立好这些基本的学习规则,可以直接查看当下发现的结果。
进一步可以从 Anomaly Explorer 查看异常分析的内容。
甚至可以查看异常判断的原因。
要使用上述介绍到 Elastic 在 Kibana 提供的 Observability Logs 的这些基本能力之前,我们要先将 Logs 收集到 Elasticsearch 之中,Elastic Stack 中负责收集 Logs 资讯的主要角色,就是 Filebeat,如同先前介绍的 Metricbeat 和 Heartbeat 一样,Filebeat 也是 Beats 家族中的一员,所以也是从 libbeat
所发展出来,并且是针对档案类型的 Logs 进行收集的工具。
如下图所示,Filebeat 主要是针对机器上的各种档案,并且会使命必达的负责将指定的目录中的档案有新增的 logs,收集起来并且往後传递,可以直接送到 Elasticsearch 或是送到 Logstash 进行 ETL (Etract, Transform, Load) 的处理,又或是送到 Kafka 或 Redis 的 Queue 之中,再透过其他的工具进行後续的处理。
安装的方式如同其他 Beats 家族成员相似,以下是使用最简单的安装步骤来做介绍,其实与官方的 Quick start 的文件差不多,先大约知道将 Metricbeat 运作起来的流程为何,我将会以 MacOS
为例。
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
filebeat.yml
指定 Elasticsearch 的位置output.elasticsearch:
hosts: ["myEShost:9200"]
username: "filebeat_internal"
password: "YOUR_PASSWORD"
./filebeat modules enable {module_name}
Filebeat 提供了非常多内建的模组 (modules),像是 Elasticsearch
、 Apache
、Nginx
、MySQL
、PostgreSQL
、Redis
、MongoDB
...等,详细可以查看 官方文件 Filebeat Modules [2]。
另外针对启动的模组,通常都会要调整这些模组的 config 档,档案的路径就在 ./modules.d/
里面,档名就会是 module 的名字,副档名为 .yml
。
./filebeat setup -e
./filebeat -d
若是要以 root
执行,要记得把 config 的拥有者也改成 root
sudo chown root filebeat.yml
sudo chown root modules.d/system.yml
sudo ./filebeat -e
接下来就可以到 Kibana 查看 Filebeat 所发送的资料,有没有成功的进入到 Elasticsearch了。
查看最新 Elasticsearch 或是 Elastic Stack 教育训练资讯: https://training.onedoggo.com
欢迎追踪我的 FB 粉丝页: 乔叔 - Elastic Stack 技术交流
不论是技术分享的文章、公开线上分享、或是实体课程资讯,都会在粉丝页通知大家哦!
>>: Day13 - this&Object Prototypes Ch3 Objects - Contents - Existence - Enumeration 作者建议
Aloha!我是少女人妻 Uerica!话说你们知道哈利波特的角色中谁最有主见吗~佛地魔!因为他不会...
混乱的周一转了一大圈!那股慌张感涌上心头! 就是你!就是因为没有见到你! 差点断更阿! ------...
前言 有了资料後,就要进行分析,因此需要做出图表比较适合观察,所以我们现在来做图罗! 本日程序码使用...
JavaScript的物件基於「原型」的继承,可以令一个物件「继承另一个物件的属性」。具体上,以 O...
前言 JS 30 是由加拿大的全端工程师 Wes Bos 免费提供的 JavaScript 简单应用...