在 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 semanales… Ale que me alargo, un abrazo a tod@s!














































