Grafana的ServiceNow数据源

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

需求

这个插件有以下要求:

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

安装ServiceNow数据源插件

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

配置ServiceNow

我们建议为Grafana创建一个新用户或使用一个服务用户。提供的ServiceNow用户需要访问以下表:

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

建议使用的用户只能访问必要的表。如果用户可以访问太多的表,那么您可能会在查询编辑器中遇到性能问题。

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

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

开发实例

要创建和设置ServiceNow的开发人员实例,请转到ServiceNow开发人员页创建帐户。

在Grafana中配置数据源

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

身份验证领域

的名字 描述
URL ServiceNow实例的URL。
用户名 servicenow帐户的用户名
密码 servicenow帐号密码

用供应配置数据源

可以在Grafana的供应系统中使用配置文件来配置数据源。您可以阅读更多关于它是如何工作的,以及可以为数据源设置的所有设置配置文档页面

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 secureJsonData: basicAuthPassword: ADD_YOUR_PASSWORD_HERE version: 1 editable: true isDefault: true

查询数据源

查询方法有两种:表格而且统计数据

表查询

返回适合在表面板中显示的数据。它允许有序地选择要显示的字段加上过滤选项。查询编辑器还提供一个字段来限制查询返回的行数。

查询编辑器表-查询

示例表面板显示上述查询的结果:

查询编辑器表-示例

显示

显示Row为要显示的字段提供选择器。还可以指定多个字段。字段将按照指定的精确顺序返回。

显示值

显示值flag将导致查询返回人性化的值,或“显示值”,而不是数值。有三种不同的选择

选项 描述
所有 首选方法。此模式用于显示人性化的显示值。此外,整数字段将呈现为数字,Choice字段将显示为人类友好的标签。
真正的 这类似于所有模式。但是整数字段将被呈现为格式化的字符串。
在这种模式下,所有字段都显示实际值而不是标签。这可能比其他模式具有更好的性能。(注意:选择字段如严重性/状态将显示为整数id而不是人类友好的标签)

例如,严重性的1旗帜只会显示1.如果将标志设置为真正的/所有,显示的值将为1 -高

根据ServiceNow API文档所有而且真正的模式可能比模式。阅读更多关于显示值/sysparm_display_valueServiceNow文档

过滤器(通用)

过滤器Row提供了基于多个字段和值标准缩小显示行的能力。

所有的过滤器都与或者一个操作。

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

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

  • 布尔过滤器有True/False选项
  • 文本过滤器将允许输入任何值
  • 如果需要选择日期,日期筛选器将显示日期选择器日历
  • 一些运算符,如是什么今天,不显示额外的字段供输入。

排序

排序Row提供了基于多个字段和值标准缩小显示行的能力。

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

限制

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

时间字段

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

如果未开启此值,则提供一个特殊值“Ignore Time”,以允许“到目前为止”的结果,并使过滤器能够控制显示的数据。

时间字段默认是在打开,但它可以更改为任何保存时间值的可用字段。

统计查询

AggregateAPI总是返回带有以下聚合的指标:avg、min、max和sum。筛选也可用于缩小查询范围。

查询编辑器统计信息

显示

显示行为要显示的度量提供选择器。还可以指定多个指标。

过滤器(通用)

过滤器提供基于字段和值标准缩小显示指标的能力,类似于表选项。

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

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

聚合

有四种类型的度量聚合,外加一个“计数”:

  • 平均
  • 最低
  • 最大
  • 总和
  • Count——它返回查询返回的度量的“数量”
集团

这个选择器提供了将指标拆分为较小聚合的能力。按“优先级”分组将返回具有优先级“标签”和分隔的惟一值的指标。

字段的引用

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

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

现场参考资料崩溃

点击后,它们将展开显示字段:

扩展现场参考资料

字段引用只会扩展到一个层次的深度,例如考虑以下结构:

字段(参考)—>—字段1—字段2(参考)—字段4—字段5—字段6(参考)—字段7—字段8(参考)……——第三场

目前,只有第一个引用可以展开,导致如下:

字段(参考)->—字段1—字段3

模板和变量

要添加一个新的ServiceNow查询变量,请参见添加一个查询变量.使用ServiceNow数据源作为以下可用查询的数据源:

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

模板

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

参见下面的示例查询变量部分介绍了如何添加查询变量并使用Template值引用它。

查询变量

如果添加类型的模板变量查询,您可以编写一个查询,该查询可以返回类别名称、键名称或显示为下拉选择框的键值等项。

例如,您可以有一个包含所有值的变量类别通过在模板变量中指定这样的查询查询设置。

当选择查询设置,过滤器,允许您选择类型而且.目前,类型仅限于事件和变化。在选择类型时,将提供适用于该类型的字段列表。一次类型而且,则会在底部显示值的预览,显示该类型/字段的可用选项。这些值将在下拉菜单中显示在Dashboard上,您可以将其与template一起使用,以过滤Dashboard面板上的数据。

例如,如果您添加一个名为类别然后选择类型=事件和字段=类别,您将看到类别的选项列表。如果您在面板中添加一个Filter,并选择Category Equals ${Category},面板数据将只显示从Dashboard下拉菜单中选择的Category的数据。

导入按类别划分的事故仪表板查看示例。

查询中使用变量

有两种语法:

$ < varname >示例,其中模板变量名为主机名

[[varname]]示例,其中模板变量名为主机名

注释

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

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

转换

转换在使用带有group by子句的聚合查询时非常有用。

transformations-query-editor

字段的标签

的示例字段的标签转换:

转换

为ServiceNow导入一个仪表板

遵循这些指令用于导入仪表板。

导入的仪表板可以在配置中找到>数据源>选择你的ServiceNow数据源>选择dashboards选项卡查看可用的预先制作的仪表板。

版本兼容性

插件的当前版本进行了测试纽约ServiceNow的版本。每个版本之间没有显著差异,有些版本可能完全相同。

如果您的ServiceNow版本不在此列表中,则没有使用此数据源进行正式测试。基本功能预计将在ServiceNow的最新版本中工作,例如奥兰多巴黎而且魁北克

版本
纽约
API ServiceNow版本 版本
表API 纽约 v2
总API 纽约 v1

突发的变化

升级到V2.0

现有的仪表板应该在2.0中继续工作。如果存在现有仪表板不再工作的任何问题,那么要知道这不是有意的,您的反馈是有价值的。在提交支持问题时,请确保包含面板JSON或仪表板JSON的副本。

备份仪表板

在升级到2.0版本之前,必须备份仪表板。v2.0中的查询模式已经更改,并且添加了迁移,以便在旧查询更改时将其更改为新查询。

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

了解更多

使用HTTP代理

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

  • HTTP_PROXY(或http_proxy

    • 〇全路径http://host:port
    • 或者是:主持人:港口
  • HTTPS_PROXY(或https_proxy):

    • 〇全路径https://host:port
    • 或者是:主持人:港口

如果我们没有ITSM角色插件呢?

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

选项1:授予Grafana用户admin特权,允许访问所有表。

选项2:创建一个角色,并对需要由Grafana访问的所有表应用acl

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

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

    1. 单击右上角导航面板上的概要文件图标。就是那个有下拉胡萝卜指示灯的
    2. 从下拉菜单中点击“提升角色”
    3. 从显示的模式中,选中“security_admin”旁边的复选框
    4. 单击OK
  2. 用您喜欢的任何命名约定创建一个新角色

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

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

    1. 为sys_db_object表创建ACL

      1. 在第二个搜索头列“Name”中,输入sys_db_object并按enter
      2. 过滤后的结果应该显示“Table”。单击可导航到记录中
      3. 在选项卡部分,选择“控件”
      4. 在页面的底部,确保“访问控制”是选中的选项卡
      5. 单击“新建”,创建新的ACL
      6. 将“操作”选项更改为读取
      7. 在底部的“required Role”部分,双击“Insert New Row”并搜索您创建的角色
      8. 选择已创建的角色后,单击绿色复选标记
      9. 单击底部的Submit以创建ACL,然后在出现模式时单击continue
    2. 为特定的sys_db_object字段创建acl。需要对以下每个字段重复以下步骤:名称、标签、显示名称和扩展表

      1. 在sys_db_object的表记录视图中,选择最靠近屏幕顶部的选项卡组中的“Columns”选项卡
      2. 找到字段名并选择它
      3. 在底部选项卡部分,单击访问控制选项卡中的“新建”
      4. 将操作更改为读取
      5. 双击底部“requirements role”表格中的插入一行文本
      6. 搜索您创建的角色并单击绿色复选标记
      7. 单击Submit
      8. 确保您已经为所有必需字段重复了这些步骤:名称、标签、显示名称和扩展表
    3. 在Change、Incident和您希望从Grafana查询的任何其他非cmdb表上重复4.1中的步骤。不要重复4.2中的步骤,只有sys_db_object才需要这个步骤。

如何为grafana用户提供必要的访问?

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

选项1:执行以下步骤为grafana创建连接servicenow的用户

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

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

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

    1. 单击右上角导航面板上的概要文件图标。就是那个有下拉胡萝卜指示灯的
    2. 从下拉菜单中点击“提升角色”
    3. 从显示的模式中,选中“security_admin”旁边的复选框
    4. 单击OK
  2. 用您喜欢的任何命名约定创建一个新角色

    1. 导航到左侧导航的“角色”部分:系统安全=>用户和组=>角色
    2. 点击顶部的“New”
    3. 输入角色名称和相关描述
    4. 单击Submit
  3. 使用步骤2中创建的角色创建新用户或修改现有用户

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

    1. 为sys_db_object表创建ACL

      1. 在第二个搜索头列“Name”中,输入sys_db_object并按enter
      2. 过滤后的结果应该显示“Table”。单击可导航到记录中
      3. 在选项卡部分,选择“控件”
      4. 在页面的底部,确保“访问控制”是选中的选项卡
      5. 单击“新建”,创建新的ACL
      6. 将“操作”选项更改为读取
      7. 在底部的“required Role”部分,双击“Insert New Row”并搜索您创建的角色
      8. 选择已创建的角色后,单击绿色复选标记
      9. 单击底部的Submit以创建ACL,然后在出现模式时单击continue
    2. 为特定的sys_db_object字段创建acl。需要对以下每个字段重复以下步骤:名称、标签、显示名称和扩展表

      1. 在sys_db_object的表记录视图中,选择最靠近屏幕顶部的选项卡组中的“Columns”选项卡
      2. 找到字段名并选择它
      3. 在底部选项卡部分,单击访问控制选项卡中的“新建”
      4. 将操作更改为读取
      5. 双击底部“requirements role”表格中的插入一行文本
      6. 搜索您创建的角色并单击绿色复选标记
      7. 单击Submit
      8. 确保您已经为所有必需字段重复了这些步骤:名称、标签、显示名称和扩展表
    3. 在Change、Incident和您希望从Grafana查询的任何其他非cmdb表上重复4.1中的步骤。不要重复4.2中的步骤,只有sys_db_object才需要这个步骤。

选项2:授予Grafana用户admin权限,允许访问所有表。(强烈不推荐)

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