在 Elasticsearch 中收集性能指标并在 Grafana 中可视化这些指标

在这篇文章中,我们将尝试了解如何可视化 Windows Server 计算机或其服务(如 SQL Server)的任何性能指标, 交换… 目的是能够在 Grafana 中实时可视化它们.

这个想法是通过 Elastic Stack 的一个代理来收集它们, 在这个例子中我们将使用 Metricbeat, 然后它将负责将数据存储到 Elasticsearch 中; 通过 Grafana 我们可以访问这些数据并根据我们的需求进行可视化. 前一段时间我写过一篇文章,讲的是如何实现 Metricbeat 以及如何收集系统副本, 如果需要帮助, 可以看一下, 今天要讲的是 perfmon 或资源监视器 的性能计数器, 或者我们想怎么叫它都行.

安装 Metricbeat

Metricbeat 的安装我们已经知道, 非常简单, 只需下载 x64 版本的 ZIP 文件 https://www.elastic.co/es/downloads/beats/metricbeat 并解压到 ‘C:\Program Files\metricbeat’. 要创建 Metricbeat 服务,我们执行:

cd 'C:\Program Files\metricbeat\'
.\install-service-metricbeat.ps1

编辑 Metricbeat 的配置文件, 至少创建到我们的 Elasticsearch 服务器和 Kibana 的连接:

...
# ---------------------------- Elasticsearch 输出 ----------------------------
输出.elasticsearch:
  # 要连接到的主机数组.
  主机: ["https://FQDN_ELASTIC:9200"]
  ssl.verification_mode: none
  用户名: "用户"
  密码: "密码"
  指数: "metricbeat-%{+yyyy.MM.dd}"
...
# =================================== Kibana ===================================
setup.kibana:
  主机: "https://FQDN_KIBANA:5601"
  ssl.verification_mode: 没有
...

测试配置:

.\metricbeat.exe test config -c .metricbeat.yml -e

加载 Kibana 的仪表盘 (如果仪表盘我们已经导入过,可以忽略第一个命令) 然后启动服务:

.\metricbeat.exe setup
Start-Service metricbeat

如果我们想移除服务, 如果以后要卸载 filebeat:

.\uninstall-service-metricbeat.ps1

启用 Windows 服务和性能计数器的指标

井, 那么我们必须启用此模块, 我们将使用以下命令来执行此操作:

.\metricbeat.exe modules enable windows

接下来是要知道我们有哪些性能计数器, 我们可以使用此 PowerShell 命令查看:

Get-Counter -ListSet *

然后只是告诉 Metricbeat 我们想收集哪些, 编辑模块配置文件 'C:\Program Files\metricbeat\modules.d\windows.yml’ 然后告诉它, 例:

# Module: 窗户
# Docs: https://www.elastic.co/guide/en/beats/metricbeat/7.x/metricbeat-module-windows.html

- 模块: windows
  metricsets:
    - service
  period: 1m

- 模块: windows
  metricsets: [perfmon]
  时期: 10s
  perfmon.ignore_non_existent_counters: true
  perfmon.group_measurements_by_instance: true
  perfmon.queries:
  - object: "PhysicalDisk"
    field : "磁盘"
    实例: "*"
    counters:
    - 名字: "磁盘写入次数/秒"
    - 名字: "% 磁盘写入时间"
      field: "write_time"
      格式: "浮"
  - object: "PhysicalDisk"
    field : "磁盘"
    实例: "*"
    counters:
    - 名字: "磁盘读取次数/秒"
    - 名字: "% 磁盘读取时间"
      field: "read_time"
      格式: "浮"

  - object: "MSSQL$VEEAMSQL2012:数据库"
    field : "数据库"
    实例: "*"
    counters:
    - 名字: "数据文件(s) 大小 (知识库)"
...

我们录制文件, 我们重启 Metricbeat 服务,现在去验证在 Elasticsearch 中的数据. 照常, 我们将转到 Kibana,一旦数据进入,我们就可以转到 “Management” > “堆栈管理” > “Kibana” > “索引模式” > “Create index pattern” 创建索引模式, 正如我所说, 照常 (在这种情况下,不带引号) ‘metricbeat-*’,我们会在 Elasticsearch 中正确存储数据. 现在我们可以从“Analytics”连接 > “Discover” 到我们的 Metricbeat 索引,并查看它正在收集数据.

一旦数据在 Elasticsearch 中,就可以按照我们在其他帖子中多次看到的步骤进行, 那就是, (我) 创建 Grafana 到 Elasticsearch 的连接器或数据源,然后 (第二) 开始制作你需要的仪表盘. 这是一个从 SQL Server 服务器收集的数据的简单示例, 我们可以看到一些非常有趣且常见的计数器, 以及数据库的大小和增长, 连接, 延迟…

想象一下这会带来的可能性, 任何在 Windows 上安装的服务都有自己的计数器, 我们可以按所需的频率收集这些数据, 以 1 秒为单位, 10s, 30s… 以及它们的可视化, 可以实时刷新,也可以在摄取大量数据后进行分析报告,并分析增长情况…

无, 我以此结束, 查看 SQL Server 拥有的计数器的一种快速方式:

选择计数(*) FROM sys.dm_os_performance_counters;

就是这样, 希望这能帮助你们在自己的环境中看到可能性, que podemos recopilar cualquier dato que necesitemos, 稍后停止, trabajarlo, crear dashboards personalizados para distintos perfiles, informes semanalesAle que me alargo, un abrazo a tod@s!

推荐文章

作者

nheobug@bujarra.com
Autor del blog Bujarra.com Cualquier necesidad que tengas, 请随时与我联系, 我会尽我所能帮助你, 分享就是生活 ;) . 享受文档!!!