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

相关推荐

  • SSL加密_ssl安全错误 sql

    SSL加密_ssl安全错误 sqlMsSQL使用加密连接SSL/TLS 说明 应用程序通过未加密的通道与数据库服务器通信, 这可能会造成重大的安全风险。在这种情况下, 攻击者可以修改用户输入的数据, 甚至对数据库服务器执行任意 SQL

    2022-12-26
    137
  • mysql安全管理免费PPT_MySQL 修改密码

    mysql安全管理免费PPT_MySQL 修改密码数据库服务器通常包含关键的数据,确保这些数据的安全和完整需要利用访问控制。一、访问控制MySQL服务器的安全基础:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少。访问控制:你需要给用户提供

    2023-01-24
    137
  • 大数据Hadoop之——Flink中的Window API+时间语义+Watermark「终于解决」

    大数据Hadoop之——Flink中的Window API+时间语义+Watermark「终于解决」一、window 概念 窗口(window)是处理无限流的核心。窗口将流分割成有限大小的“桶”,我们可以在桶上应用计算。本文档重点介绍如何在Flink中执行窗口操作,以及程序员如何从其提供的功能中获得

    2023-05-16
    128
  • 将序列随机打乱的Python函数

    将序列随机打乱的Python函数Python是一门强大的编程语言,它提供了许多函数来处理各种数据类型。其中,打乱序列顺序的函数就是其中之一。打乱序列的目的是为了让序列更加随机,从而增加算法的效率和数据的安全性。Python提供了一个shuffle()函数来打乱序列的顺序。它可以用于任何可迭代的对象,包括字符串、列表、元组等。

    2023-12-14
    104
  • TDSQL | 在整个技术解决方案中HTAP对应的混合交易以及分析系统应该如何实现?[亲测有效]

    TDSQL | 在整个技术解决方案中HTAP对应的混合交易以及分析系统应该如何实现?[亲测有效]从主交易到传输,到插件式解决方案,每个厂商对HTAP的理解和实验方式都有自己的独到解法,在未来整个数据解决方案当中都会往HTAP中去牵引。那么在整个技术解决方案中HTAP对应的混合交易以及分析系统应该

    2023-04-27
    147
  • 断开MySQL服务器的命令是_mysql的配置文件有哪些

    断开MySQL服务器的命令是_mysql的配置文件有哪些1、org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘…

    2023-04-03
    145
  • 如何调用Python函数?

    如何调用Python函数?在Python编程中,函数是一种非常重要的概念。通过使用函数,我们能够提高代码的可读性和可复用性。那么如何调用Python函数呢?在本文中,我们将会从多个方面对如何调用Python函数进行详细的阐述。

    2024-07-26
    32
  • 使用WHILE语句计算2+6+12+20+…+110的值

    使用WHILE语句计算2+6+12+20+…+110的值在上大学的小妹求助一题使用While语句计算数列数值,这似乎是有些难为没有计算机细胞小朋友。 由于都是nosql数据库多年没有怎么接触SQL,查询相关资料,做了如下处理并记录。 循环插入id从0到2…

    2022-12-19
    146

发表回复

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