首页 文章

Azure SQL数据库中的SQL Server Telegraf插件需要哪些授权

提问于
浏览
15

我正在使用SQL Server的Telegraf输入插件(https://github.com/influxdata/telegraf/tree/master/plugins/inputs/sqlserver)来收集指标并向InfluxDB报告 . 它适用于SQL Server,但虽然它支持Azure SQL数据库,但文档有点稀疏 .

应该像这样创建数据库用户:

CREATE LOGIN [telegraf] WITH PASSWORD = N'password';
GRANT VIEW SERVER STATE TO [telegraf];
GRANT VIEW ANY DEFINITION TO [telegraf];

这适用于SQL Server,但在Azure中它失败:

此版本的SQL Server不支持安全类'服务器' .

我想知道我需要批准什么才能以最好的方式解决这个问题 . 我们在弹性池中的同一台服务器上运行了大量数据库,所以如果可能的话,我想使用登录主服务器的单个用户,同时收集所有数据库的指标(工作方式)与SQL Server) . 如果这是不可能的,我可以配置多个登录并一次处理一个数据库 .

也许我可以在数据库级别授予 VIEW DEFINITION ,但似乎根本不支持 VIEW SERVER STATE .

那么,我应该如何使用SQL Server插件为Telegraf配置SQL数据库登录以使其正常工作?

编辑:

  • 作为服务器的超级用户运行时没有错误,但只生成master和tempdb的度量标准 . 我需要许多应用程序数据库的指标,但它们都缺失了 . 另外,作为超级用户运行并不理想 .

  • 作为服务器的超级用户运行但连接到特定的应用程序数据库(在连接字符串中添加数据库)使用nil指针取消引用崩溃,并且日志抱怨数据库主服务器中的VIEW DATABASE STATE权限被拒绝(超级用户具有访问权限,但是显然不是在连接到特定数据库时) .

  • 向应用程序数据库中的telegraf授予VIEW DATABASE和VIEW DEFINITION并直接连接到该数据库,因为telegraf使用nil指针取消引用崩溃,并且日志显示连接已关闭 .

编辑2:

创建错误报告https://github.com/influxdata/telegraf/issues/4222 .

1 回答

  • 3

    Azure SQL数据库不支持 The answer: GRANT VIEW SERVER STATE .

    在SQL数据库上,Premium Tiers需要数据库中的VIEW DATABASE STATE权限 . 无法在Master中授予权限,但可以在用户数据库中查询视图 . 在SQL数据库标准和基本层上,由于这些层的多租户之后的安全性要求,因此需要SQL数据库服务器管理员帐户 .

    Reason: SQL Azure SQL是PaaS解决方案,因此大多数"server"特定功能,DMV,设置都被目的阻止

    References:

    Grant View Server State - is it possible for a none SA user to have in Azure SQL?

    SQL Azure VIEW DATABASE STATE permission denied in database 'master'

    Possible workaround: (无论如何,在ewramner案例中不起作用)

    CREATE LOGIN [telegraf] WITH PASSWORD = N'password';
    
    USE [yourDB]
    GRANT VIEW DEFINITION TO [telegraf];
    GRANT VIEW DATABASE STATE TO [telegraf];
    

    因此,(恕我直言),没有办法在不改变应用程序代码的情况下使这种应用程序在SQL Azure中工作

相关问题