菜单
文档面包屑箭头 插件面包屑箭头 面包屑箭头 Grafana 的 ServiceNow 数据源

Grafana 的 ServiceNow 数据源

ServiceNow 数据源插件允许您在 Grafana 中查询和可视化来自 ServiceNow 的数据。

要求

此插件具有以下要求

  • 具有访问必要表的 ServiceNow 用户
  • 以下帐户类型之一
    • Grafana Cloud:专业版客户、高级版客户或已启用企业插件附加组件的专业版试用用户
    • Grafana Enterprise:拥有 已激活的许可证 的客户以及拥有 Grafana 服务器或组织管理 权限 的用户
  • 已启用的企业插件附加组件

安装 ServiceNow 数据源插件

要安装数据源,请参考 安装

配置 ServiceNow

我们建议为 Grafana 创建一个新用户或使用服务用户。

注意如果使用 Use Sys Tables 选项,则提供的 ServiceNow 用户需要访问以下表

原因
sys_db_object用于检索可查询的可用表列表。
sys_dictionary用于在查询表时检索字段列表。
sys_choice用于在使用 choice 字段筛选表结果时检索选项列表。
sys_glide_object用于收集有关数据类型的信息,包括名称、基本类型等。
incident在健康检查中用于验证表 API 和聚合 API 是否正常运行

建议仅使所用用户具有访问必要表的权限。如果用户访问了太多表,则您可能会在查询编辑器中遇到性能问题。另请注意,禁用 Use Sys Tables 选项将导致插件不会查询 sys 表,在禁用该选项时请考虑这一点,以防您确实需要使用该插件访问查询这些表。

Servicenow 用户帐户可以通过以下步骤进行配置

仅当使用“Sys Tables”选项获取架构和元数据(在数据源设置中)时,才需要执行以下操作。

  1. 将管理员用户提升为安全管理员以执行以下操作。
  2. 创建一个名为 grafana_reader_role 的角色。这可以是任何名称。
  3. 创建一个名为 grafana_user_1 的用户。这也可以是任何名称。
  4. 将以下角色分配给上述用户 grafana_user_1 或您在步骤 3 中创建的任何名称。
    • grafana_reader_role 或您在步骤 2 中创建的任何名称。
  5. 创建 ACL 规则,为上述角色提供以下权限。要执行以下操作,需要将管理员用户提升为安全管理员。
    • sys_db_object 表的读取权限
    • sys_db_object.name 字段的读取权限
    • sys_db_object.label 字段的读取权限
    • sys_db_object.sys_name 的读取权限(在 ACL 编辑器中,它将显示为 Table[sys_db_object] => 显示名称)
    • sys_db_object.super_class 的读取权限(在 ACL 编辑器中,它将显示为 Table[sys_db_object] => 扩展表)
    • sys_dictionary 表的读取权限
    • sys_dictionary.* 字段的读取权限
    • sys_choice 表的读取权限
    • sys_choice.* 字段的读取权限
    • sys_glide_object 表的读取权限
    • sys_glide_object.* 字段的读取权限
  6. 提供对 incident 表的读取权限。要执行此操作,需要将管理员用户提升为安全管理员。
  7. 对用户需要读取数据的其余表重复步骤 6。

开发人员实例

要创建和设置 ServiceNow 的开发人员实例,请访问 ServiceNow 开发人员 页面以创建帐户。

在 Grafana 中配置数据源

通过填写以下字段 添加数据源

身份验证字段

名称描述
URLServiceNow 实例的 URL。
用户名ServiceNow 帐户的用户名
密码ServiceNow 帐户的密码
客户端 IDServiceNow 帐户的 OAuth 客户端 ID
客户端密钥ServiceNow 帐户的 OAuth 客户端密钥

使用配置进行数据源配置

可以使用配置文件和 Grafana 的配置系统来配置数据源。您可以在 配置文档页面 上详细了解其工作原理以及可以为数据源设置的所有设置

yml
apiVersion: 1
datasources:
  - name: ServiceNow
    type: servicenow-datasource
    enabled: true
    access: proxy
    url: https://dev59952.service-now.com
    basicAuth: true
    basicAuthUser: ADD_YOUR_USER_HERE
    jsonData:
      oauthEnabled: true
      oauthClientID: ADD_YOUR_CLIENT_ID_HERE
    secureJsonData:
      basicAuthPassword: ADD_YOUR_PASSWORD_HERE
      oauthClientSecret: ADD_YOUR_CLIENT_SECRET_HERE
    version: 1
    editable: true
    isDefault: true

查询数据源

有两种查询方法:TableStats

表查询

返回适合在表格面板中显示的数据。它允许对要显示的字段进行排序选择,以及过滤选项。查询编辑器还提供一个字段来限制查询返回的行数。

query editor table - query

显示来自上面查询结果的示例表格面板

query editor table - example

显示

显示”行提供了一个用于显示字段的选择器。还可以指定多个字段。这些字段将按指定的精确顺序返回。

显示值

显示值”标志将导致查询返回用户友好的值,或“显示值”,而不是数字值。有三种不同的选项可用

选项描述
全部首选方式。此模式用于显示用户友好的显示值。此外,整数字段将呈现为数字,选择字段将使用用户友好的标签显示。
True这类似于all模式。但整数字段将呈现为格式化的字符串。
False使用此模式,所有字段都将使用实际值而不是标签显示。这可能比其他模式具有更好的性能。(注意:选择字段(如严重性/状态)将显示为整数 ID,而不是用户友好的标签)

例如,严重性为1且带有false标志只会显示1。如果该标志设置为true/all,则显示的值将为1 - 高

根据ServiceNow API 文档alltrue模式可能比false模式慢。在ServiceNow 文档中阅读有关显示值/sysparm_display_value的更多信息

过滤器(通用)

过滤器”行提供了根据多个字段和值条件缩小显示行范围的功能。

所有过滤器都与ANDOR操作组合。

选择自定义表时,字段会从 Service Now API 自动填充。

值选择取决于所选过滤器的类型。

  • 布尔过滤器具有 True/False 选项
  • 文本过滤器允许键入任何值
  • 如果需要选择日期,则日期过滤器将显示日期选择器日历
  • 某些运算符(例如is anythingToday)不会显示用于输入的附加字段。

排序依据

排序依据”行提供了根据多个字段和值条件缩小显示行范围的功能。

所有过滤器都与AND操作组合。将添加对其他运算符的支持。

限制

可以指定行限制以防止返回过多的数据。默认值为 25。

时间字段

时间字段将您的查询数据转换为时间序列。将您的数据作为时间序列处理意味着,在您的仪表板/面板的时间范围内不属于您所选“时间字段”中的值将不会显示。

如果未启用此值,则将提供一个特殊值“忽略时间”以允许“直到现在”的结果,并启用过滤器来控制显示哪些数据。

时间字段默认为Opened At,但可以更改为任何包含时间值的可用字段。

统计查询

AggregateAPI 将始终返回指标,并具有以下聚合:avg、min、max、sum。过滤也可用于缩小查询范围。

query editor stats

显示

显示字段”行提供了一个用于选择字段和要显示的指标的选择器。还可以指定多个字段。

过滤器(通用)

聚合过滤器提供了根据字段和值条件缩小显示指标范围的功能,类似于表格选项。

所有过滤器都与AND操作组合。将添加对其他运算符的支持。

统计过滤器选项与 TableAPI 相同。

聚合

有四种类型的指标聚合,以及一个“计数”

  • 平均值
  • 最小值
  • 最大值
  • 总和
  • 计数 - 这返回查询返回的指标的“数量”
分组依据

此选择器提供了将指标拆分为较小聚合的功能。按“优先级”分组将返回带有“优先级”标签的指标,以及分开的唯一值。

字段引用

v2.0.0开始,现在支持字段引用。

默认情况下,引用其他表的字段会折叠。

field reference collapsed

然后,它们将展开以在单击后显示字段。

field reference expanded

字段引用将仅扩展到一层深度,例如,考虑以下结构

Field (Reference) ->
--- Field 1
--- Field 2 (Reference)
    --- Field 4
    --- Field 5
    --- Field 6 (Reference)
        --- Field 7
        --- Field 8 (Reference)
            ...
--- Field 3

目前,只能扩展第一个引用,从而导致以下结果

Field (Reference) ->
--- Field 1
--- Field 3

模板和变量

要添加新的 ServiceNow 查询变量,请参阅添加查询变量。使用您的 ServiceNow 数据源作为以下可用查询的数据源

创建变量后,您可以使用变量语法在 ServiceNow 查询中使用它。有关变量的更多信息,请参阅模板和变量

模板

您可以使用变量代替在查询中硬编码名称。变量显示为仪表板顶部的下拉选择框。这些下拉菜单使更改仪表板上显示的数据变得容易。

请参阅下面查询变量部分中的示例,了解如何添加查询变量并使用模板值引用该变量。

查询变量

如果您添加类型为Query的模板变量,则可以编写一个查询来返回项目(例如类别名称、键名称或键值),这些项目显示为下拉选择框。

例如,您可以拥有一个包含categories所有值的变量,方法是在模板变量的Query设置中指定如下所示的查询。

选择Query设置时,会显示一个Filter部分,允许您选择一个TypeField。目前,Type仅限于 Incidents 和 Changes。选择类型时,将为您提供适用于该类型的字段列表。选择TypeField后,底部将显示值的预览,显示该Type/Field可用的选项。这些值将显示在仪表板上的下拉菜单中,您可以将其与模板一起使用以过滤仪表板面板上的数据。

例如,如果您添加一个名为category的变量,然后选择Type = Incidents和Field = Category,您将看到Category的选项列表。然后,如果您向面板添加一个过滤器,并选择Category Equals ${category},则面板数据将仅显示从仪表板下拉菜单中选择的那一类的对应数据。

导入Incidents By Category仪表板以查看示例。

在查询中使用变量

有两种语法

$<varname> 使用名为hostname的模板变量的示例

[[varname]] 使用名为hostname的模板变量的示例

注释

注释使您能够在图形上覆盖事件。

注释查询支持与标准查询编辑器相同的选项。

转换

当使用带有 group by 子句的聚合查询时,转换可能很有用。

transformations-query-editor

标签到字段

使用标签到字段转换的示例

transformations

导入 ServiceNow 的仪表板

按照说明导入仪表板。

导入的仪表板可以在“配置”>“数据源”>选择您的 ServiceNow 数据源>选择“仪表板”选项卡中找到,以查看可用的预制仪表板。

版本兼容性

插件的当前版本已针对 ServiceNow 的NewYork版本进行了测试。每个版本之间没有显着差异,有些版本可能完全相同。

如果您的 ServiceNow 版本未在此列表中,则表示尚未使用此数据源对其进行正式测试。基本功能预计可以在 ServiceNow 的最新版本(例如OrlandoParisQuebec)中使用。

版本
纽约
APIServiceNow 版本版本
表格 API纽约v2
聚合 API纽约v1

重大更改

升级到 V2.0

现有仪表板应继续在 2.0 上工作。如果现有仪表板无法正常工作,则请注意这不是预期的,您的反馈非常宝贵。在提交支持问题时,请务必包含面板 JSON 或仪表板 JSON 的副本。

备份您的仪表板

在升级到 v2.0 之前备份您的仪表板非常重要。v2.0 中的查询架构已更改,并且添加了迁移以更改旧查询为新查询,因为它们已更改。

如果您遇到任何问题并且需要降级,则降级后您的仪表板不太可能继续工作。

已知限制

查询编辑器中的过滤器不包含引用类型的字段。

了解更多

使用 HTTP 代理

使用 HTTP 代理时,Grafana 将需要设置以下环境变量之一

  • HTTP_PROXY(或http_proxy

    • 完整路径 - http://host:port
    • 或仅:host:port
  • HTTPS_PROXY(或https_proxy

    • 完整路径 - https://host:port
    • 或仅:host:port

如果我们没有 ITSM 角色插件并且启用了“使用 Sys 表”会怎样?

需要管理员访问权限才能执行以下操作

选项 1:授予 Grafana 用户管理员权限以允许访问所有表。

选项 2:创建角色并将 ACL 应用于 Grafana 需要访问的所有表

需要管理员访问权限才能执行以下操作

  1. 登录的管理员需要将访问权限提升到 security_admin

    1. 单击右上角导航面板上的个人资料图标。它是有下拉箭头指示器的那个
    2. 从下拉菜单中单击“提升角色”
    3. 在显示的模态窗口中,选中“security_admin”旁边的复选框
    4. 单击“确定”
  2. 使用您喜欢的任何命名约定创建一个新角色

    1. 导航到左侧导航中的角色部分“系统安全性”=>“用户和组”=>“角色”
    2. 单击顶部的“新建”
    3. 输入角色的名称和相关的描述
    4. 单击“提交”
  3. 创建一个新用户并附加在步骤 2 中创建的角色

  4. 为所需的表和字段创建表 ACL

    1. 为 sys_db_object 表创建 ACL

      1. 在第二个搜索标题列“名称”中,键入 sys_db_object 并按 Enter 键
      2. 过滤后的结果应显示“表”。单击以导航到记录中
      3. 在选项卡部分,选择“控件”
      4. 在页面底部,确保“访问控制”是选定的选项卡
      5. 单击“新建”以创建新的 ACL
      6. 将“操作”选择更改为读取
      7. 在底部的“需要角色”部分,双击“插入新行”并搜索您创建的角色
      8. 选择您创建的角色后,单击绿色复选标记
      9. 单击底部的“提交”以创建 ACL,然后在出现模态窗口时单击“继续”
    2. 为特定的 sys_db_object 字段创建 ACL。以下步骤需要对以下每个字段重复:名称、标签、显示名称和扩展表

      1. 仍在 sys_db_object 的表记录视图中,选择屏幕顶部附近选项卡组中的“列”选项卡

      2. 找到字段名称并选择它
      3. 在底部选项卡部分,点击访问控制选项卡中的“新建”
      4. 将操作更改为读取
      5. 双击底部“需要角色”表中的插入行文本
      6. 搜索您创建的角色并点击绿色勾号
      7. 单击“提交”
      8. 确保您已对所有必需字段重复这些步骤:名称、标签、显示名称和扩展表
    3. 重复步骤 4.1 中关于更改、事件和任何其他您想从 Grafana 查询的非 CMDB 表的操作。请勿重复步骤 4.2,该步骤仅适用于 sys_db_object。

当启用“使用 Sys 表”时,如何为 Grafana 用户提供所需的访问权限?

需要管理员访问权限才能执行以下操作

选项 1:执行以下步骤以创建 Grafana 用于连接 ServiceNow 的用户

  1. 将管理员用户提升为安全管理员以执行以下操作。
  2. 创建一个名为 grafana_reader_role 的角色。这可以是任何名称。
  3. 创建一个名为 grafana_user_1 的用户。这也可以是任何名称。
  4. 将以下角色分配给上述用户 grafana_user_1 或您在步骤 3 中创建的任何名称。
    • grafana_reader_role 或您在步骤 2 中创建的任何名称。
  5. 创建 ACL 规则,为上述角色提供以下权限。要执行以下操作,需要将管理员用户提升为安全管理员。
    • sys_db_object 表的读取权限
    • sys_db_object.name 字段的读取权限
    • sys_db_object.label 字段的读取权限
    • sys_db_object.sys_name 的读取权限(在 ACL 编辑器中,它将显示为 Table[sys_db_object] => 显示名称)
    • sys_db_object.super_class 的读取权限(在 ACL 编辑器中,它将显示为 Table[sys_db_object] => 扩展表)
    • sys_dictionary 表的读取权限
    • sys_dictionary.* 字段的读取权限
    • sys_choice 表的读取权限
    • sys_choice.* 字段的读取权限
    • sys_glide_object 表的读取权限
    • sys_glide_object.* 字段的读取权限
  6. 提供对 incident 表的读取权限。要执行此操作,需要将管理员用户提升为安全管理员。
  7. 对用户需要读取数据的其余表重复步骤 6。

以下步骤详细说明了如何执行上述操作。

  1. 登录的管理员需要将访问权限提升到 security_admin

    1. 单击右上角导航面板上的个人资料图标。它是有下拉箭头指示器的那个
    2. 从下拉菜单中单击“提升角色”
    3. 在显示的模态窗口中,选中“security_admin”旁边的复选框
    4. 单击“确定”
  2. 使用您喜欢的任何命名约定创建一个新角色

    1. 导航到左侧导航中的角色部分“系统安全性”=>“用户和组”=>“角色”
    2. 单击顶部的“新建”
    3. 输入角色的名称和相关的描述
    4. 单击“提交”
  3. 创建一个新用户或修改一个现有用户,并赋予您在步骤 2 中创建的角色

  4. 为所需的表和字段创建表 ACL

    1. 为 sys_db_object 表创建 ACL

      1. 在第二个搜索标题列“名称”中,键入 sys_db_object 并按 Enter 键
      2. 过滤后的结果应显示“表”。单击以导航到记录中
      3. 在选项卡部分,选择“控件”
      4. 在页面底部,确保“访问控制”是选定的选项卡
      5. 单击“新建”以创建新的 ACL
      6. 将“操作”选择更改为读取
      7. 在底部的“需要角色”部分,双击“插入新行”并搜索您创建的角色
      8. 选择您创建的角色后,单击绿色复选标记
      9. 单击底部的“提交”以创建 ACL,然后在出现模态窗口时单击“继续”
    2. 为特定的 sys_db_object 字段创建 ACL。以下步骤需要对以下每个字段重复:名称、标签、显示名称和扩展表

      1. 仍在 sys_db_object 的表记录视图中,选择屏幕顶部附近选项卡组中的“列”选项卡

      2. 找到字段名称并选择它
      3. 在底部选项卡部分,点击访问控制选项卡中的“新建”
      4. 将操作更改为读取
      5. 双击底部“需要角色”表中的插入行文本
      6. 搜索您创建的角色并点击绿色勾号
      7. 单击“提交”
      8. 确保您已对所有必需字段重复这些步骤:名称、标签、显示名称和扩展表
    3. 重复步骤 4.1 中关于更改、事件和任何其他您想从 Grafana 查询的非 CMDB 表的操作。请勿重复步骤 4.2,该步骤仅适用于 sys_db_object。

选项 2:授予 Grafana 用户管理员权限以允许访问所有表。(**强烈不建议**)

执行任何上述选项都需要管理员权限