ELK系列-(五)指标收集-MetricBeat(上)

一、前文回顾

在前面的ELK系列中,我们已经搭建了ELK的核心组件,包括:

有关整个系统架构的部署,您可以回顾前面的文章。今天,我们将继续探讨如何将指标数据通过MetricBeat进行采集并传输到ELK。

系统架构图:

本篇内容:指标收集(MetricBeat)

今天我们要探讨的是 MetricBeat,它是Elastic Stack中用来收集和传输系统和服务指标的工具,也是Beat家族中的一员,支持操作系统、容器、云平台等多种数据源。

还没不清楚beat家族的朋友回第四篇看一眼哦

二、下载和安装MetricBeat

首先,需要下载并安装MetricBeat:
MetricBeat官方文档

也可以执行以下命令来下载安装MetricBeat(8.15版本的):

bash 复制代码
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.15.0-amd64.deb
sudo dpkg -i metricbeat-8.15.0-amd64.deb

三、修改配置

下载并安装后,我们需要修改MetricBeat的配置文件。首先,进入工作目录并编辑配置文件:

bash 复制代码
cd /etc/metricbeat
vim metricbeat.yml

在配置文件中,主要需要配置以下两项内容:

  • Elasticsearch(ES)链接
  • Kibana链接

下面是一个翻译好的配置文件,你也可以直接把你的配置文件替换为这份哦

yml 复制代码
###################### Metricbeat 配置示例 #######################

# 此文件是一个配置示例文件,仅展示了最常用的选项。
# metricbeat.reference.yml 文件包含所有支持的选项及更多注释,您可以将其用作参考。
#
# 您可以在此处找到完整的配置参考:
# https://www.elastic.co/guide/en/beats/metricbeat/index.html

# =========================== 模块配置 ============================

metricbeat.config.modules:
  # 用于加载配置的全局模式
  path: ${path.config}/modules.d/*.yml

  # 设置为 true 以启用配置重新加载
  reload.enabled: false

  # 检查 path 下文件更改的周期
  #reload.period: 10s

# ======================= Elasticsearch 模板设置 =======================

setup.template.settings:
  index.number_of_shards: 1 # 设置索引的分片数量为 1
  index.codec: best_compression # 使用最佳压缩算法
  #_source.enabled: false # 禁用 _source 字段(默认情况下启用)

# ================================== 通用配置 ===================================

# 发布网络数据的主机名称。可用于在Web界面中对同一主机发送的所有事务进行分组。
#name:

# shipper 的标签,这些标签将包含在每个发布的事务的字段中。
#tags: ["service-X", "web-tier"]

# 可选字段,您可以指定以向输出添加额外的信息。
#fields:
#  env: staging

# ================================= 仪表板配置 =================================
# 这些设置用于控制将示例仪表板加载到 Kibana 索引中。默认情况下,加载仪表板是禁用的,可以通过在此处设置或使用 `setup` 命令启用。
#setup.dashboards.enabled: false

# 下载仪表板存档的 URL。默认情况下,该 URL 根据 Beat 名称和版本计算得出。对于发布的版本,此 URL 指向 artifacts.elastic.co 网站上的仪表板存档。
#setup.dashboards.url:

# =================================== Kibana 配置 ===================================

# 从 Beats 6.0.0 版本开始,通过 Kibana API 加载仪表板。这需要配置 Kibana 的端点。
setup.kibana:

  # Kibana 主机地址
  # 可以省略协议和端口,系统会自动设置为默认的 http 和 5601。
  # 如果您指定了额外的路径,则需要指定协议:http://localhost:5601/path
  # IPv6 地址应始终定义为:https://[2001:db8::1]:5601
  host: "localhost:5601"

  # Kibana 空间 ID
  # 指定仪表板应加载到的 Kibana 空间 ID。默认情况下使用 Default Space。
  #space.id:

# =============================== Elastic Cloud 配置 ================================

# 这些设置简化了使用 Metricbeat 与 Elastic Cloud(https://cloud.elastic.co/)的操作。

# cloud.id 设置会覆盖 `output.elasticsearch.hosts` 和 `setup.kibana.host` 选项。
# 您可以在 Elastic Cloud Web 界面中找到 `cloud.id`。
#cloud.id:

# cloud.auth 设置会覆盖 `output.elasticsearch.username` 和 `output.elasticsearch.password` 设置。格式为 `<user>:<pass>`。
#cloud.auth:

# ================================== 输出配置 ===================================

# 配置发送由 beat 收集的数据时使用的输出。

# ---------------------------- Elasticsearch 输出 ----------------------------
output.elasticsearch:
  # 要连接的主机数组。
  hosts: ["localhost:9200"]

  # 性能预设 - 可选择 "balanced"、"throughput"、"scale"、"latency" 或 "custom"。
  preset: balanced

  # 协议 - 可选择 `http`(默认)或 `https`。
  #protocol: "https"

  # 认证凭证 - 可以是 API 密钥或用户名/密码。
  #api_key: "id:api_key"
  #username: "elastic"
  #password: "changeme"

# ------------------------------ Logstash 输出 -------------------------------
#output.logstash:
  # Logstash 主机
  #hosts: ["localhost:5044"]

  # 可选的 SSL。默认情况下关闭。
  # HTTPS 服务器验证的根证书列表
  #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]

  # SSL 客户端认证证书
  #ssl.certificate: "/etc/pki/client/cert.pem"

  # 客户端证书密钥
  #ssl.key: "/etc/pki/client/cert.key"

# ================================= 处理器配置 =================================

# 配置处理器以增强或操作由 beat 生成的事件。

processors:
  - add_host_metadata: ~ # 添加主机元数据
  - add_cloud_metadata: ~ # 添加云元数据
  - add_docker_metadata: ~ # 添加 Docker 元数据
  - add_kubernetes_metadata: ~ # 添加 Kubernetes 元数据

# ================================== 日志配置 ===================================

# 设置日志级别。默认日志级别为 info。
# 可用的日志级别有:error、warning、info、debug
#logging.level: debug

# 在调试级别,您可以选择性地仅为某些组件启用日志记录。
# 若要启用所有选择器,请使用 ["*"]。其他选择器的示例为 "beat"、"publisher"、"service"。
#logging.selectors: ["*"]

# ============================= X-Pack 监控配置 ==============================
# Metricbeat 可以将内部指标导出到中央 Elasticsearch 监控集群。这需要在 Elasticsearch 中启用 xpack 监控。默认情况下,报告是禁用的。

# 设置为 true 以启用监控报告。
#monitoring.enabled: false

# 设置此 Metricbeat 实例将在 Stack Monitoring UI 中显示的 Elasticsearch 集群的 UUID。如果启用了 output.elasticsearch,则 UUID 来源于 output.elasticsearch 引用的 Elasticsearch 集群。
#monitoring.cluster_uuid:

# 取消注释以将指标发送到 Elasticsearch。大多数设置与 Elasticsearch 输出相同。
# 请注意,设置应指向您的 Elasticsearch *监控*集群。
# 任何未设置的设置将自动继承自 Elasticsearch 输出配置,因此如果您已配置 Elasticsearch 输出指向您的 Elasticsearch 监控集群,只需取消注释以下行即可。
#monitoring.elasticsearch:

# ============================== 仪器化支持 ===============================

# Metricbeat 的仪器化支持。
#instrumentation:
    # 设置为 true 以启用 metricbeat 的仪器化。
    #enabled: false

    # Metricbeat 运行的环境(例如:staging、production 等)。
    #environment: ""

    # 用于报告仪器化结果的 APM 服务器主机。
    #hosts:
    #  - http://localhost:8200

    # APM 服务器的 API 密钥。
    # 如果设置了 api_key,则会忽略 secret_token。
    #api_key:

    # APM 服务器的密钥令牌。
    #secret_token:

# ================================= 迁移配置 ==================================

# 此设置允许启用 6.7 迁移别名
#migration.6_to_7.enabled: true

配置说明:

  • output.elasticsearch:指定ES服务器的地址,MetricBeat会将采集到的数据发送到该地址。
  • setup.kibana:设置Kibana的地址,用于将MetricBeat的仪表板加载到Kibana中。

配置文件修改完成后,我们可以通过以下命令来验证配置是否正确:

bash 复制代码
sudo metricbeat test config

如果没有错误,您会看到类似如下的输出:

复制代码
Config OK

四、MeticBeat的采集模块

在深入模块之前,先来了解一下 MetricBeat 的架构 。MetricBeat 本身是一个轻量级的代理,负责从各种资源(如操作系统、数据库、Web服务器等)收集性能指标。它通过不同的模块来实现这一功能。

每个模块都关注一个特定的数据源,比如操作系统、Docker、Kubernetes、Redis等。每个模块会根据设定的周期(通常是每10秒)从数据源获取数据,并将这些数据通过预配置的输出方式(通常是 Elasticsearch 或 Logstash)发送到后台进行存储和分析。

在 MetricBeat 的配置中,模块是以插件形式存在的。您可以根据需要启用或禁用某些模块,灵活地选择要采集的数据类型。比如,如果你只关心系统级别的指标,可以选择启用 system 模块;如果需要监控 Redis 服务的状态,那么启用 redis 模块就可以了。

(一)、查看当前启用的模块

要查看当前启用了哪些模块,我们可以使用 MetricBeat 提供的命令。运行以下命令:

bash 复制代码
sudo metricbeat modules list

这时会列出所有可用的模块,并标明哪些模块已经启用。默认情况下,MetricBeat 会启用一些基础的系统指标收集模块(比如 CPU、内存、磁盘等)。

如图所示,默认启用了系统模块,我们可以根据需要启用其他模块。每个模块都有对应的配置文件,位于/etc/metricbeat/modules.d目录下。以Redis模块为例,我们来看看模块的配置长啥样

bash 复制代码
cat redis.yml.disabled

内容如下:

yml 复制代码
# Module: redis
# Docs: https://www.elastic.co/guide/en/beats/metricbeat/main/metricbeat-module-redis.html

- module: redis
  #metricsets:
  #  - info
  #  - keyspace
  period: 10s

  # Redis hosts
  hosts: ["127.0.0.1:6379"]

  # Network type to be used for redis connection. Default: tcp
  #network: tcp

  # Max number of concurrent connections. Default: 10
  #maxconn: 10

  # Redis AUTH username (Redis 6.0+). Empty by default.
  #username: user

  # Redis AUTH password. Empty by default.
  #password: pass

  # Optional SSL/TLS (Redis 6.0+). By default is false.
  #ssl.enabled: true

  # List of root certificates for SSL/TLS server verification
  #ssl.certificate_authorities: ["/etc/pki/root/ca.crt"]

  # Certificate for SSL/TLS client authentication
  #ssl.certificate: "/etc/pki/client/cert.crt"

  # Client certificate key file
  #ssl.key: "/etc/pki/client/cert.key"

(二)、启用模块

通过MetricBeat模块化的配置,我们可以很简单地通过命令启用模块。例如Redis,我们进入模块配置中,重命名去掉disable,然后进行编辑配置。这样就能收集 Redis 的相关指标了。

复制代码
cd /etc/metricbeat/modules.d/
mv redis.yml.disabled redis.yml

五、启动服务

(一) 创建并检查输出

复制代码
sudo metricbeat setup -e
sudo metricbeat test output

正常的话即可看到采集的信息输出了

最后通过以下命令启动MetricBeat服务

bash 复制代码
sudo systemctl start metricbeat

(二)、查看Kibana中的监控数据

启动MetricBeat后,您可以前往Kibana的Observability模块,查看采集到的系统指标。访问Kibana并导航到 Observability,可以看到各种系统和服务的监控数据。

小结

通过MetricBeat,我们可以方便地收集各种系统和服务的指标,并将其传输到Elasticsearch中。在Kibana中轻松地查看和分析这些数据,从而更好地监控和优化系统。下一章继续!一起变强!

相关推荐
Jiude2 分钟前
MinIO 社区版被故意阉割,Web管理功能全面移除。我来试试国产RustFS
后端·docker·架构
飞询33 分钟前
Docker 安装 Elasticsearch 9
elasticsearch·docker
0wioiw01 小时前
Ubuntu基础(监控重启和查找程序)
linux·服务器·ubuntu
Tipriest_1 小时前
Ubuntu常用的软件格式deb, rpm, dmg, AppImage等打包及使用方法
linux·运维·ubuntu
GBXLUO1 小时前
windows的vscode无法通过ssh连接ubuntu的解决办法
vscode·ubuntu
G皮T2 小时前
【Elasticsearch】检索高亮
大数据·elasticsearch·搜索引擎·全文检索·kibana·检索·高亮
笑衬人心。3 小时前
Ubuntu 22.04 修改默认 Python 版本为 Python3 笔记
笔记·python·ubuntu
ladymorgana4 小时前
【docker】修改 MySQL 密码后 Navicat 仍能用原密码连接
mysql·adb·docker
有点小帅得平哥哥4 小时前
本地部署index-tts并且通过docker做成镜像
docker·index-tts
小张是铁粉6 小时前
docker学习二天之镜像操作与容器操作
学习·docker·容器