这篇文章是 “Beats 入门教程 (一)”的续篇。在上一篇文章,我们主要讲述了 Beats 的一些理论方面的知识。在这篇文章中,我们将具体展示如何使用 Filebeat 及 Metriceat 把数据导入到我们的 Elasticsearch 并对他们进行分析。

安装 Elastic Stack

对于我们的测试环境,我们可以有几种选择:

  • 安装本机的 Elastic Stack。你可以参阅我之前的文章 “Elastic:开发者上手指南” 来进行安装 Elasticsearch 及 Kibana
  • 安装 Elastic Cloud:你可以参阅我之前的文章 “在 Elastic 云上3分钟部署 Elastic 集群” 来部署 Elastic Stack。你也可以参考我录的视频教程
  • 安装AWS Elastic 集群:你可以参阅文章 “如何在 AWS 上一步一步地安装 Elastic Stack”

在今天的练习中,我将主要以本机的 Elastic Stack 及 Elastic cloud 来讲述。针对其它的环境,基本都是一样的。

Filebeat

在接下来的展示中,我将展示如何使用 Filebeat 来收集系统日志,并把日志传入到 Elasticsearch:

我们打开我们的自己的 Kibana,并按照如下的步骤来进行安装:

由于 Filebeat 是 log 相关的,所以我们需要选择 “Add log data”。我们想对系统(System)日志进行监控,所以,我们选择 “System logs”:

然后,我们根据我们自己运行的平台,我们分别使用不同的命令来在我们的平台上进行安装:

在上面我们可以看到最详细的安装指令。根据我的情况,我在 macOS 上部署我的 Filebeat。具体的安装步骤如下:

下载 Filebeat

我们执行如下的指令来安装 Filebeat:

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.5.0-darwin-x86_64.tar.gz
tar xzvf filebeat-7.5.0-darwin-x86_64.tar.gz
cd filebeat-7.5.0-darwin-x86_64/

配置 Filebeat

我们在 Filebeat 的安装目录下,可以发现一个叫做 filebeat.yml 的文件。这个文件就是 filebeat 的配置文件:

$ pwd
/Users/liuxg/elastic8/filebeat-7.5.0-darwin-x86_64
liuxg-2:filebeat-7.5.0-darwin-x86_64 liuxg$ ls
LICENSE.txt            fields.yml             kibana
NOTICE.txt             filebeat               logs
README.md              filebeat.reference.yml module
data                   filebeat.yml           modules.d

我们用我们所喜爱的编辑打开 filebeat.yml 文件,并找到如下的部分:

output.elasticsearch:hosts: ["<es_url>"]username: "elastic"password: "<password>"
setup.kibana:host: "<kibana_url>"

在上面,我们需要把我们的 Elasticsearch 及 Kibana 的 host 地址填上。针对我本地的情况,我填入 localhost:9200 和 localhost:5601。如果是针对本地安装的 Elastic Stack 来说,这些都是默认的配置,我们甚至不需要做任何的修改。如果我们对我们的 Elasticsearch 已经设置用户名及密码的话,那么请填入你自己的用户名及密码。

Elastic cloud

如下的配置只限于 Elastic Cloud。针对 Elastic cloud,我们可以避免把我们的用户名及密码写到我们的 filebeat.yml 文件中,我们可以使用 cloud.id 来及 keystore 管理来帮我们实现。

我们首先在 Terminal 中打入如下的命令:

./filebeat keystore create

接着打入如下的命令:

./filebeat keystore add CLOUD_PWD

在这一步我们拷贝在Cloud中所创建的密码,并粘贴下来。

最后,我们修改我们的 filebeat.yml 文件

根据上面的提示,一旦我们设置好 cloud.id,它将覆盖我们的 output.elasticsearch 中的设置。

我们可以可以使用同样的方法来创建如下的 key:

./filebeat keystore add CLOUD_ID

通过上面的配置,我们可以在 filebeat.yml 的文件中使用同样的方法来代替我们的 cloud.id。

另外,我们可以在不用修改 filebeat.yml 的情况下直接使用命令行参数的方法来进行操作,比如在 setup filebeat 时:

./filebeat setup -E cloud.id=\${CLOID_ID} -E cloud.auth=elastic:\${CLOUD_PWD}

请注意上面\字符,它是一个转字符,因为后面的 $ 符号有特别的意义。

启动/禁止 Filebeat 模块

我们可以通过如下的命令来展示所有 Filebeat 的模块:

./filebeat modules list

在上面,我们可以看到 redis 模块已经被成功地启动了。如果我们想启动 system 模块,我们可以使用如下的命令:

./filebeat modules enable system

上面的命令的返回结果是:

Enabled system

如果我们想不启动 redis 模块,我们可以使用如下的命令:

./filebeat modules disable redis

上面的命令的返回结果是:

Disabled redis

我们可以使用如下的命令再次查询我们启动的模块:

在上面,我们可以清楚地看到 redis 模块已经被成功地关闭了,取而代之的是 system 模块被成功地启动了。我们可以在 filebeat 的安装目录下的 modules.d 子目录下可以查看到 system 模块的配置文件:

从上面我们可以清楚地看出来 system.yml 文件已经被成功地启动了。我们可以用我们所喜爱的编辑器来修改这个文件的配置。比如,我们如果已经通过如下的命令启动 nginx 模块:

./filebeat modules enable nginx

那么我们可以通过编辑器来修改这个在 modules.d 下的  nginx.yml 文件:

# Module: nginx
# Docs: https://www.elastic.co/guide/en/beats/filebeat/7.10/filebeat-module-nginx.html- module: nginx# Access logsaccess:enabled: true# Set custom paths for the log files. If left empty,# Filebeat will choose the paths depending on your OS.#var.paths:# Error logserror:enabled: true# Set custom paths for the log files. If left empty,# Filebeat will choose the paths depending on your OS.#var.paths:# Ingress-nginx controller logs. This is disabled by default. It could be used in Kubernetes environments to parse ingress-nginx logsingress_controller:enabled: false# Set custom paths for the log files. If left empty,# Filebeat will choose the paths depending on your OS.#var.paths:

比如,我们可以针对它做如下的配置:

modules.d/nginx.yml

- module: nginxaccess:enabled: truevar.paths: ["/path/to/log/nginx/access.log*"]error:enabled: truevar.paths: ["/path/to/log/nginx/error.log*"]

在上面我们可以对这个模块进行配置。比如,我可以配置 access.log 或者 error.log 的位置。当然,我们也可以直接在运行 filebeat 时,直接在命令行中定义这些参数:

./filebeat --modules nginx \
-M "nginx.access.var.paths=[/path/to/log/nginx/access.log*]" \
-M "nginx.error.var.paths=[/path/to/log/nginx/error.log*]"

每个模块启动一个 Filebeat 的输入(input),并且每个输入启动一个或者多个 harvester。你可以添加或者覆盖任何默认的输入设置,比如,你可以使用如下的配置来关掉一个输入文件,只要文件的末尾已经达到。这个设置针对一些文件只写一次,并且不会有更新的情况非常有用:

- module: nginxaccess:input:close_eof: true

如果我们需要修改 filebeat.yml 这个配置文件,或者下面的 module 的配置文件,我们可以通过如下的命令来检查配置文件的正确如否:

./filebeat test config
$ ./filebeat test config
Config OK
./filebeat test output
$ ./filebeat test output
elasticsearch: http://192.168.0.3:9200...parse url... OKconnection...parse host... OKdns lookup... OKaddresses: 192.168.0.3dial up... OKTLS... WARN secure connection disabledtalk to server... OKversion: 7.7.0

针对 Filebeat,它没有相应的命令来对模块进行测试。这一点和下面的 Metricbeat 是不同的。

我们甚至可以在运行 filebeat 的同时来启动相应的模块:

./filebeat --modules nginx, system, mysql

我们也可以直接在 modules.d 目录下把相应的文件名的 .disabled 去掉,从而使得该文件名是以 .yml 为结束的文件。通过这样的方法。我们也可以启动该模块。

还有一种方法就是在 filebeat.yml 文件中,我们直接添加相应启动的模块:

filebeat.modules:
- module: nginx
- module: system
- module: mysql

比如在 filebeat 启动 elasticsearch 模块的情况下,我们可以正对它做如下的配置:

modules.d/elasticsearch.yml

filebeat.modules:
- module: elasticsearchserver:var.paths:- ../elasticsearch*/logs/*_server.jsonslowlog:var.paths:- ../elasticsearch*/logs/*_index_search_slowlog.json- ../elasticsearch*/logs/*_index_indexing_slowlog.jsongc:var.paths:- ../elasticsearch*/logs/gc/log.[0-9]*- ../elasticsearch*/logs/gc.logaudit:var.paths:- ../elasticsearch*/logs/*_audit.json

上面是我们在启动对 Elasticsearch 的监控情况下,针对 elasticsearch 模块进行配置的示例。如果你想了解更多关于对 Elasitcsearch 的监控,请阅读文章 “Elastic:监控 Elasticsearch 及 Kibana”。

启动 Filebeat

在上面,我们已经成功地配置了 filebeat,在接下来的步骤中,我们来启动 Filebeat:

./filebeat setup

setup 命令将加载 Kibana 仪表板。如果你想了解更多关于 setup 命令的秘密,请阅读我的另外一篇文章 “Beats:解密 Filebeat 中的 setup 命令”。

在上面,我们使用 setup 来加载仪表板等,另外一种方式是,我们直接修该 filebeat.yml 文件中的如下部分:

这样,当我们在下面的命令启动 Filebeat 时,它会自动帮我们完成上面的 ./filebeat setup 所完成的工作。
如果已经设置了仪表板,请忽略此命令。上面命令的输出结果为:

./filebeat setup
Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards
Loaded machine learning job configurations
Loaded Ingest pipelines

在上面,我们可以看出来在 setup 这一步它帮我们配置好 dashboard,装载机器学习及 ingest pipleline。

我们接下来运行如下的命令来把我们的 sysetm 模块的数据送入到 Elasticsearch 之中:

./filebeat -e

我们点击 “Check data” 按钮:

在 Kibana 中,我们可以看到已经收到数据。

Beats 收集起来的数据被存放于由配置文件中 output.elasticsearch.index 所定义。在默认的情况下,它的值是这样的:{beat}-%{[agent.version]}-%{+yyyy.MM.dd},比如,针对 Filebeat,在默认的情况下,我们会看到诸如 filebeat-7.13.0-2021-06-18 这样的索引名称。

运用 Dashboard 展示 Filebeat 数据

由于在上面的 filebeat setup 这一步已经为我们创建好了一个叫做 filebeat-* 的 index pattern,我们可以直接打开 Kibana 中的 Discover:

在右上角选好我们喜欢的时间区域,然后对我们的数据进行查询:

我们接着点击 Dashboard:

我们选择 “[Filebeat System] Syslog dashboard ECS”:

在上面它展示了我的电脑里的 Syslog 的所有 log 信息。我们也可以在上面选择 “Sudo commands”,“SSH logins” 及 “New users and groups” 分别进行查看。

从上面的展示我们可以查看来:Elastic 公司除了提供一个强大的数据搜索引擎之外,也在 Elastic Stack 中提出了开箱即用的工具。我们只需要简单的几部配置,就可以很方便地把我们所需要的日志数据导入到 Elasticsearch 中进行分析。

Metricbeat

Metricbeat 的使用和 Filebea t的使用非常地相似。我们打开我们的自己的 Kibana,并按照如下的步骤来进行安装:

由于 Metricbeat 是属于 Metrics 范畴,所以我们选择 “Add metric data”:

同样地,针对我们的 metrics,我们也想对 sysem 模块来做指标分析:

根据不同的平台,我们选择不同的方法进行安装。针对我的情况,我在我们的 MacOS 上进行安装。简单地说:

下载 Metricbeat

我们首先安装如下的指令来下载并安装 metribeat:

curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.5.0-darwin-x86_64.tar.gz
tar xzvf metricbeat-7.5.0-darwin-x86_64.tar.gz
cd metricbeat-7.5.0-darwin-x86_64/

配置 Metricbeat

我们首先进入到 Metricbeat 的安装目录,我们可看到如下的文件:

 pwd
/Users/liuxg/elastic8/metricbeat-7.5.0-darwin-x86_64
liuxg-2:metricbeat-7.5.0-darwin-x86_64 liuxg$ ls
LICENSE.txt              fields.yml               metricbeat.reference.yml
NOTICE.txt               kibana                   metricbeat.yml
README.md                logs                     module
data                     metricbeat               modules.d

在安装目录的根目录下, 我们可以发现一个叫做 metribeat.yml 的文件。这个文件就是 metricbeat 的配置文件。我们用我们喜爱的编辑器,并打开这个文件。找到如下的部分:

output.elasticsearch:hosts: ["<es_url>"]username: "elastic"password: "<password>"
setup.kibana:host: "<kibana_url>"

在上面,我们需要把我们的 Elasticsearch 及 Kibana 的 host 地址填上。针对我本地的情况,我填入 localhost:9200 和localhost:5601。如果是针对本地安装的 Elastic Stack 来说,这些都是默认的配置,我们甚至不需要做任何的修改。如果我们对我们的 Elasticsearch 已经设置用户名及密码的话,那么请填入你自己的用户名及密码。

Elastic cloud

如下的配置只限于 Elastic Cloud。针对 Elastic cloud,我们可以避免把我们的用户名及密码写到我们的 metricbeat.yml 文件中,我们可以使用 cloud.id 来及 keystore 管理来帮我们实现。

我们首先在 Terminal 中打入如下的命令:

./metricbeat keystore create

接着打入如下的命令:

./metricbeat keystore add CLOUD_PWD

在这一步我们拷贝在 Cloud 中所创建的密码,并粘贴下来。

然后修改我们的 metricbeat.yml:

根据上面的提示,一旦我们设置好 cloud.id,它将覆盖我们的 output.elasticsearch 中的设置。

启动/禁止 Metricbeat 模块

我们可以通过如下的命令来展示所有 Metricbeat 的模块:

在上面我们可以看出来 redis 模板已经被启动,其它的模块都被禁止。

在默认的情况下,system 模块就被启动了。如果我们想启动 system 模块,我们可以使用如下的命令:

./metricbeat modules enable system

上面命令的返回结果是:

Enabled system

如果我们想禁止 redis 模块,我们可以使用如下的命令:

./metricbeat modules disable redis

上面命令的返回结果是:

Disabled redis

我们可以使用如下的命令再次查询我们启动的模块:

我们可以看出来我们的 redis 模块已经从 Enabled 里移除了,取而代之的是 system 模块。

我们可以在 metricbeat 的安装目录下的 modules.d 子目录下可以查看到 system 模块的配置文件:

我们可以在 system.yml 中找到 system 模块的配置文件。

我们可以通过如下的命令来测试  metricbeat.yml 的配置是否成功:

./metricbeat test config

如果正确的话,会显示:

$ ./metricbeat test config
Config OK

我们也可以来测试某个模块:

./metricbeat test modules system

它将显示:

$ ./metricbeat test modules system
system...cpu...OKresult: {"@timestamp": "2020-07-03T10:48:52.063Z","event": {"dataset": "system.cpu","duration": 19621,"module": "system"},"metricset": {"name": "cpu","period": 10000},"service": {"type": "system"},...

如果这个显示太多了。我们可以使用如下的命令来进行显示:

./metricbeat test modules system | grep OK

上面的命令显示的结果为:

$ ./metricbeat test modules system | grep OKcpu...OKload...OKmemory...OKnetwork...OKprocess...OK"OK""command_line": "grep OK","cmdline": "grep OK",process_summary...OKsocket_summary...OK
OK
OKuptime...OK

你也可显示这个模块中的某个 metricset,比如,我们可以在 ./modules.d/system.yml 中可以看到如下的一些 metricsets:

我们可以对上面的 ./modules.d/system.yml 文件进行修改,比如采样的频率以及对各个 metricsets 进行启动或禁止。我们可以通过如下的命令来进行测试:

./metricbeat test modules system cpu

我们也可以来测试它的 output:

./metricbeat test output
$ ./metricbeat test output
elasticsearch: http://localhost:9200...parse url... OKconnection...parse host... OKdns lookup... OKaddresses: ::1, 127.0.0.1dial up... OKTLS... WARN secure connection disabledtalk to server... OKversion: 7.8.0

重新装载配置

关于配置 Metricbeat,我们有两个地方可以进行配置:

  • metricbeat.yml:这里的配置对所有的模块都起作用
  • 模块配置文件:每个模块都有自己的在 modules.d 目录下的配置文件。这里的配置只针对每个模块起作用

在默认的情况下,我们针对 metricbeat.yml 所做的任何改变在 metricbeat 运行的情况下都不会立即起作用,除非我们重新启动 metricbeat。为了能够使得 metricbeat 能够对我们的动态修改起作用,我们可以对 reload.enabled 及 reload.period 进行配置,比如:

metricbeat.config.modules:# Glob pattern for configuration loadingpath: ${path.config}/modules.d/*.ymlreload.enabled: truereload.period: 10s

通过上面的配置,metricbeat 将会在每隔10秒钟来检查配置文件的改变。如果配置以及修改,那么将会采用新的配置。

启动 Metricbeat

在上面,我们已经成功地配置了 metricbeat,在接下来的步骤中,我们来启动 Metricbeat:

./metricbeat setup

setup 命令将加载 Kibana仪表板。 如果已经设置了仪表板,请忽略此命令。上面命令的输出结果为:

./metricbeat setup
Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards

我们接下来运行如下的命令来把我们的 sysetm 模块的数据送入到 Elasticsearch 之中:

./metricbeat -e

这个时候,我们在 Kibana 中点击 “Check data” 按钮:

我们可以看到数据已经被 Elasticsearch 成功收到了。

运用 Dashboard 展示 Merticbeat 数据

在 Kibana 中,我们点击 Dashboard 应用:

我们来点击 “[Metricbeat System] Overview ECS”:

我们可以看到我们的电脑的 system 指标信息。我们也可以点击上面的 “Host Overview” 及 “Container overview”。我们点击上面所示的 liu-2.local host,我们可以看到关于这个 host 的所有的 system 信息:

下面的就留给你们自己探索了。

Beats:Beats 入门教程 (二)相关推荐

  1. python elasticsearch 入门教程(二) ---全文搜索

    python elasticsearch 入门教程(二) ---全文搜索 截止目前的搜索相对都很简单:单个姓名,通过年龄过滤.现在尝试下稍微高级点儿的全文搜索--一项 传统数据库确实很难搞定的任务. ...

  2. R语言七天入门教程二:认识变量与运算符

    R语言七天入门教程二:认识变量与运算符 一.什么是变量 1.变量 顾名思义,我们可以将变量理解为"可以改变的量",是计算机语言中能储存计算结果或能表示值的抽象概念.这里的值可以是数 ...

  3. (转)tensorflow入门教程(二十六)人脸识别(上)

    https://blog.csdn.net/rookie_wei/article/details/81676177 1.概述 查看全文 http://www.taodudu.cc/news/show- ...

  4. Android WebRTC 入门教程(二) -- 模拟p2p本地视频传输

    Android WebRTC 入门教程(一) – 使用相机 Android WebRTC 入门教程(二) – 模拟p2p本地视频传输 源码工程: https://github.com/LillteZh ...

  5. LittleVGL (LVGL)干货入门教程二之LVGL的输入设备(indev)API对接。

    LittleVGL (LVGL)干货入门教程二之LVGL的输入设备(indev)API对接 前言: 阅读前,请确保你拥有以下条件: 你已经完成"显示API"的移植. 你已经实现了一 ...

  6. c语言类似于 n的标识符,C语言快速入门教程(二)

    C语言快速入门教程(二) C语言的基本语法 本节学习路线图: 引言: C语言,顾名思义就是一门语言,可以类比一下英语; 你要说出一个英语的句子需要: 单词 + 语法! 将单词按照一定的语法拼凑起来就成 ...

  7. 微信小程序云开发 初学者入门教程二

    微信小程序云开发 初学者入门教程二-前端操作数据库模块 如何操作数据库,作为一名前端,如果对数据的知识不够熟悉也没关系,从现在开始好好学习就行,数据库的操作内容差不多涉及增删改查四大模块,花一些业余的 ...

  8. python爬虫入门教程(二):开始一个简单的爬虫

    2019/10/28更新 使用Python3,而不再是Python2 转载请注明出处:https://blog.csdn.net/aaronjny/article/details/77945329 爬 ...

  9. quarkus 入门教程(二) -项目开发模式热更新及项目断点调试方法

    quarkus 入门教程(二) -项目断点调试方法 1.项目热更新 quarkus:dev runs 方式启动,项目会以开发者模式启动,当修改了java文件或者resource文件后,项目会在后台编译 ...

  10. Apollo Control——超详细入门教程(二):连续状态空间方程离散化与离散LQR公式推导

    专栏文章列表 Apollo Control--超详细入门教程(一):基于道路误差的车辆动力学模型 Apollo Control--超详细入门教程(二):连续状态空间方程离散化与离散LQR公式推导 Ap ...

最新文章

  1. CCF NOI1040 除法游戏
  2. python loading_MXNet Python Data Loading API
  3. 面试字节跳动后的2点总结,建议收藏!
  4. nginx 二进制包安装mysql_二进制安装mysql5.7
  5. CCIE理论-第八篇-SD-WAN(三)+DAI(动态ARP检测)
  6. 李学勤:功利化是现在教育的最大问题
  7. 原地踏步 – 没有突破高效理念的结果
  8. 深度学习中所有的优化器的详细介绍与列表化对比分析
  9. shell编程脚本练习题
  10. lstm网络一般训练多少轮_Pytorch的LSTM的理解
  11. c语言删除堆栈所有的结点,深入浅出数据结构C语言版(15)——优先队列(堆)(示例代码)...
  12. access无法 dolby_Win10专业版装不了dolby该怎么办?Win10 dolby音效驱动安装教程
  13. 锐捷长ping_锐捷交换机命令
  14. 后端API接口的错误信息返回规范
  15. UI设计:模仿淘宝App首页
  16. Apache Tomcat 8配置参考 HTTP连接器
  17. 【离散数学】群、环和域的关系
  18. Java定时任务技术分析
  19. 揭秘团队业绩不好的原因
  20. php 银行支付通道_PHP银联在线支付接口的开发实例

热门文章

  1. app上传到安卓各大市场
  2. ChatGPT专业应用:纯英文视频-中英文快速字幕添加
  3. 花式打印菱形图案!!
  4. 【WIN 07】笔记本重装系统找回预装的office
  5. 多测师肖sir_高级金牌讲师_项目数据
  6. RNA-seq流程学习笔记(4)-使用FastQC软件对fastq格式的数据进行质量控制
  7. 全国湿地分类数据:内陆沼泽、盐碱地、红树林、潮汐平地
  8. Delphi皮肤控件分析与QQ的皮肤变色功能
  9. 仿win10系统UI界面纯html网页网站后台UI界面
  10. Joel 技术分享心得