Telegraf和Grafana监控多平台上的SQL Server-自定义监控数据收集「建议收藏」

Telegraf和Grafana监控多平台上的SQL Server-自定义监控数据收集「建议收藏」问题 在上一篇文章中,我们使用Telegraf自带的Plugin配置好了的监控,但是自带的Plugin并不能完全覆盖我们想要的监控指标,就需要收集额外的自定义的监控数据,实现的方法有: 开发自己的Te

Telegraf和Grafana监控多平台上的SQL Server-自定义监控数据收集

问题

上一篇文章中,我们使用Telegraf自带的Plugin配置好了的监控,但是自带的Plugin并不能完全覆盖我们想要的监控指标,就需要收集额外的自定义的监控数据,实现的方法有:

  • 开发自己的Telegraf Plugin

  • 使用可以执行自定义脚本的inputs plugin

此处收集的监控项不多,收集间隔也不是很频繁,所以我选择Telegraf预置的Inputs.exec plugin实现。它非常灵活,可以执行任意命令和脚本。在脚本中实现获取监控数据的逻辑,然后使用inputs.exec执行。获取数据之后,需要按InfluxDB Line Protocol 格式组织数据,才能写入到Influxdb。这种格式的组织方式:

[measurement],[tags] [fields] [timestamp]

  • measurement,类似于SQL中表的概念,数据存放的容器

  • tags,K-V格式用于标记数据记录,一般它们的值不经常变化,如主机名。同时tags上会建立索引,查询效率会好一些.

  • fields,K-V格式,表示真正收集的不同时间点的数据项,如CPU Load

  • timestamp,UNIX 时间戳,Influxdb是时序数据库,所有数据都要与时间关联起来。

  • measurement和tag之间用逗号分隔,fields 与它们用空格(whitespace)分隔

不管是运行在Linux还是Windows上的SQL,通常使用T-SQL查询实例内部的数据和使用操作系统脚本查询实例外部的数据以实现监控。接下来,以执行T-SQL获取自定义监控数据为例,看看在Windos和Linux上分别如何实现。

解决方案

首先在被监控的实例上把相应的逻辑写成存储过程,然后通过inputs.exec调用之。

例如我在目标实例的influx库中创建了一个存储过程influx.usp_getInstanceInfo获取一些实例的配置信息。然后需要在telegraf配置文件中启用inputs.exec调用这个存储过程。存储过程的输出数据如下:

sqlserver_property,host=SQL19N1,sql_instance=SQL19N1 host_platform="Linux",host_distribution="CentOS Linux",host_release=7,edition="Developer Edition (64-bit)",product_version="15.0.4033.1",collation="SQL_Latin1_General_CP1_CI_AS",is_clustered=f,is_hadr=t,cpu_count=2,scheduler_count=2,physical_memory_kb=6523904,max_workers_count=512,max_dop=0,max_memmory=2147483647 1590915136000000000

代码100分

数据写入到sqlserver_property,tags包括host,sql_instance,后面的全是fields。

  • SQL On Linux

使用SQLCMD调用存储过程,把SQLCMD命令写到一个bash文件中/telegraf/get_sqlproperty.sh

代码100分#!/bin/bash

/opt/mssql-tools/bin/sqlcmd -S SQL19N1 -U telegraf -P <yourpassword> -d influx -y 0 -Q "EXEC influx.usp_getInstanceInfo"

修改telegraf.conf中的inputs.exec, 然后重启telegraf生效:

因为收集的是实例属性信息,收集间隔设置的比较长。

 [[inputs.exec]]
#   ## Commands array
   commands = [
        "/telegraf/get_sqlproperty.sh"
        ]
        
   timeout = "5s"
   interval="24h"
   data_format = "influx"
  • SQL On Windows

Windows上首选使用PowerShell实现,把执行SQL的命令写到C:Monitoringscriptsget_sqlproperty.ps1。col_res是存储过程输出的列名。

代码100分(Invoke-Sqlcmd -ServerInstance SQL17N1 -Username telegraf -Password "<yourpassword>" -Database influx -Query "exec influx.usp_getInstanceInfo" ).col_res

修改telegraf.conf中的inputs.exec, 然后重启telegraf生效.

需要特别注意的问题:

  • 指定文件路径时,要使用Linux路径表达的forward slash(/), 而不是Windows中的 back slash()

  • ps1文件路径使用单引号(single quote)

  • 避免文件路径中有空格(whitespace)

 [[inputs.exec]]
#   ## Commands array
   commands = [
        "powershell "C:/Monitoring/scripts/get_sqlproperty.ps1" "
        ]
        
   timeout = "5s"
   interval="24h"
   data_format = "influx"

配置完成后,看看measurement和数据:

Telegraf和Grafana监控多平台上的SQL Server-自定义监控数据收集「建议收藏」

总结

  • 在inputs.exec中最好是调用脚本,而不是命令。这样当你需要变更数据收集逻辑,直接修改脚本即可,而不需要修改Telegraf的配置文件,避免重启服务和配置干扰

  • 被调用的脚本的输出,要是stdout,才能被正确写入influxdb

  • Windows 上文件路径和符号escape要特别注意

  • 如果对收集性能特别敏感或者收集频率特别高时,使用Go自定义Plugin

  • 本文内容仅代表个人观点,与任何公司和组织无关

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7972.html

(0)
上一篇 2023-03-10
下一篇 2023-03-10

相关推荐

  • Python最新版本是什么?

    Python最新版本是什么?Python是一种高级编程语言,广泛应用于人工智能、机器学习、数据科学、网络编程等领域,其简洁的语法和丰富的库使得Python成为开发者的首选语言之一。目前,Python有多个版本,那么Python最新版本是什么呢?

    2024-08-21
    28
  • Python Numpy安装教程

    Python Numpy安装教程Python是一门非常强大的编程语言,它提供了很多科学计算的工具,如Numpy。Numpy是Python中的一个重要科学计算库,它支持很多高级的数学和统计计算功能,而且还能够处理多维数组和矩阵。因此,学习和使用Numpy可以为科学计算和数据分析提供极大的便利。

    2024-06-20
    42
  • oracle内存占用过高和修改不当无法启动oracle实例的解决办法[通俗易懂]

    oracle内存占用过高和修改不当无法启动oracle实例的解决办法[通俗易懂]今天,在自己机器上装了oracle 12c,发现Oracle的服务Oracle RDBMS Kenel Executable (OracleServiceORCL)占用内存高达5G,本人电脑内存才16

    2022-12-21
    144
  • NVL 与 COALESCE 的重要区别「建议收藏」

    NVL 与 COALESCE 的重要区别「建议收藏」大家都知道的区别: NVL Oracle 专属 只支持两个参数 COALESCE SQL 标准 支持多个参数 但是今天偶然间还发现一个重要差别:滥用 NVL 可能导致额外的计算 NVL 无论前面的参…

    2023-03-18
    186
  • tidb锁机制_币圈白皮书

    tidb锁机制_币圈白皮书如果说在 TiDB 3.0 中,悲观锁是 “千呼万唤始出来,犹抱琵琶半遮面”。那么在 TiDB 4.0 中,悲观锁在经历了市场与时光的考验后,无论是性能还是稳定性都能够 “轻拢慢撚抹复挑,初为《霓裳…

    2023-02-08
    170
  • 数据库范式:三大范式、BC范式和反范式化

    数据库范式:三大范式、BC范式和反范式化一、什么是数据库范式 无规矩不成方圆,同理范式是数据表设计的一些约束和规范。为了让各个属性间的关系更加合理,减少数据冗余。 一般来说,主要满足 3NF 就可以了,因为范式过高,虽然对数据关系有更好的…

    2023-03-22
    162
  • Python Coursepoint Plus: 为你的编程技能升级提供一站式解决方案

    Python Coursepoint Plus: 为你的编程技能升级提供一站式解决方案随着信息技术的发展,编程已经成为一个非常重要的技能。编程不仅在IT行业中得到广泛应用,而且在其他行业中也已经变得非常重要。学习编程不仅可以提升个人技能,而且可以帮助人们更好地理解和掌握计算机科学,这对未来的职业和事业发展都是非常有帮助的。

    2023-12-05
    107
  • Talent Challenge Program:专属在校大学生的远程实习培养计划来啦!「建议收藏」

    Talent Challenge Program:专属在校大学生的远程实习培养计划来啦!「建议收藏」2020 开年的一场疫情,打得我们措手不及,往年一直幻想着可以有一个不用开学的假期,现在开学也变得遥遥无期,原本准备的暑期实习也因为不能到现场,一个个泡汤。这个暑假,还能做点什么才不虚度光阴? 不如…

    2023-03-17
    152

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注