繁体   English   中英

使用 Telegraf 和 Influx 监控 Azure SQL 数据库

[英]Monitoring Azure SQL db with Telegraf and Influx

我们正在采用更好的机制来监控我们的环境,并开始设置 Influx + Telegraf + Grafana。

我们将 Azure Monitor 连接到 Grafana,我们可以在那里看到很多细节,但我们想更深入一层,更好地了解我们的 SQL 是如何使用的。

我已经按照这里描述的步骤 - https://github.com/influxdata/telegraf/blob/release-1.14/plugins/inputs/sqlserver/README.md

但是脚本失败了下一个结果:

Securable class 'server' not supported in this version of SQL Server.

尝试使用我们的管理员帐户连接到 SQL 服务器,该帐户具有所有权限,并且 logstash 显示下一个结果:

E! [inputs.sqlserver] Error in plugin: Script VolumeSpace failed: Login error: mssql: Login failed for user 'xxx_user'.
E! [inputs.sqlserver] Error in plugin: Script AzureDBPerformanceCounters failed: Login error: mssql: Login failed for user 'xxx_user'.
E! [inputs.sqlserver] Error in plugin: Script DatabaseIO failed: Login error: mssql: Login failed for user 'xxx_user'.
E! [inputs.sqlserver] Error in plugin: Script AzureDBPerformanceCounters failed: Login error: mssql: Login failed for user 'xxx_user'.
E! [inputs.sqlserver] Error in plugin: Script ServerProperties failed: Login error: mssql: Login failed for user 'xxx_user'.
E! [inputs.sqlserver] Error in plugin: Script WaitStatsCategorized failed: Login error: mssql: Login failed for user 'xxx_user'.
E! [inputs.sqlserver] Error in plugin: Script Cpu failed: Login error: mssql: Login failed for user 'xxx_user'.
E! [inputs.sqlserver] Error in plugin: Script PerformanceCounters failed: Login error: mssql: Login failed for user 'xxx_user'.
E! [inputs.sqlserver] Error in plugin: Script MemoryClerk failed: Login error: mssql: Login failed for user 'xxx_user'.

在 GitHub 中找不到与此相关的任何问题。 有什么我想念的吗?

有没有人成功连接这两个服务?

如果还没有,您将需要在数据库级别授予视图定义。 (没有 ANY 关键字)

GRANT VIEW DEFINITION TO user_name

参考:SQL Server 权限

根据 Microsoft SQL Server 插件 ID:input.sqlserver Telegraf 0.10.1+ 基于 AAD 的身份验证仅支持 Azure SQL 数据库和 Azure SQL 托管实例(但不适用于 SQL Server),如此处所述。

 servers = [
    "Server=<Azure_SQL_Server_Name>.database.windows.net;Port=1433;Database=<Azure_SQL_Database_Name>;app name=telegraf;log=1;",
  ]
  auth_method = "AAD"

其他可用的 Azure AD 身份验证选项是用于 SQL Server Management Studio连接的Active Directory 通用身份验证,包括多重身份验证条件访问

注意:我们在 8 小时前发布了Telegraf v1.19.1 [2021-07-07]以及它的其他错误修正,这似乎已解决: #9388 inputs.sqlserver Require authentication method to be specified

但是从之前在 github 上讨论 Telegraf 1.10.3 版,当以超级用户(创建整个服务器的人)身份连接时,这不会崩溃。 以较低特权的用户身份连接时,它仍然失败。

GitHub 中报告的其他问题:

我能够通过为 Influx Azure SQL 监控安装模板仪表板来实现监控 - https://github.com/influxdata/community-templates/tree/master/azure_sql_db

安装模板后,我进入了 Influx UI Data 菜单和Telegraf选项卡。 在那里,我复制了配置并使用了正确的格式化连接字符串,一切都开始工作了。 YOUR_USER - 管理员用户YOUR_PASSWORd - 管理员用户密码

这是我的连接字符串模板:

Server={YOUR_DB_LINK};Port=1433;Database={YOUR_DATABASE};User Id={YOUR_USER};Password={YOUR_PASSWORD};app name=telegraf;log=1;Initial Catalog=demo;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30

我的 Telegraf 配置:

[[outputs.influxdb_v2]]
  urls = ["${INFLUX_URI}"]
  token = "${INFLUX_TOKEN}"
  organization = "{YOUR_ORG}"
  bucket = "AzureSQLDB"
  namepass = ["sql*"]
[[inputs.sqlserver]]
  servers = ["$AZURE_SQL_CONNECTION_STRING",]
  query_version = 2
  database_type = "AzureSQLDB"
  include_query = ["AzureSQLDBResourceStats","AzureSQLDBWaitStats","AzureSQLDBDatabaseIO","AzureSQLDBMemoryClerks","AzureSQLDBPerformanceCounters","SQLServerPerformanceCounters"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM