Grafana 的 ServiceNow 数据源
ServiceNow 数据源插件允许您在 Grafana 中查询和可视化来自 ServiceNow 的数据。
要求
此插件具有以下要求
- 具有访问必要表的 ServiceNow 用户
- 以下帐户类型之一
- 已启用的企业插件附加组件
安装 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”选项获取架构和元数据(在数据源设置中)时,才需要执行以下操作。
- 将管理员用户提升为安全管理员以执行以下操作。
- 创建一个名为
grafana_reader_role
的角色。这可以是任何名称。 - 创建一个名为
grafana_user_1
的用户。这也可以是任何名称。 - 将以下角色分配给上述用户
grafana_user_1
或您在步骤 3 中创建的任何名称。grafana_reader_role
或您在步骤 2 中创建的任何名称。
- 创建 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.*
字段的读取权限
- 对
- 提供对
incident
表的读取权限。要执行此操作,需要将管理员用户提升为安全管理员。 - 对用户需要读取数据的其余表重复步骤 6。
开发人员实例
要创建和设置 ServiceNow 的开发人员实例,请访问 ServiceNow 开发人员 页面以创建帐户。
在 Grafana 中配置数据源
通过填写以下字段 添加数据源
身份验证字段
名称 | 描述 |
---|---|
URL | ServiceNow 实例的 URL。 |
用户名 | ServiceNow 帐户的用户名 |
密码 | ServiceNow 帐户的密码 |
客户端 ID | ServiceNow 帐户的 OAuth 客户端 ID |
客户端密钥 | ServiceNow 帐户的 OAuth 客户端密钥 |
使用配置进行数据源配置
可以使用配置文件和 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
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
查询数据源
有两种查询方法:Table
和 Stats
。
表查询
返回适合在表格面板中显示的数据。它允许对要显示的字段进行排序选择,以及过滤选项。查询编辑器还提供一个字段来限制查询返回的行数。
显示来自上面查询结果的示例表格面板
显示
“显示”行提供了一个用于显示字段的选择器。还可以指定多个字段。这些字段将按指定的精确顺序返回。
显示值
“显示值”标志将导致查询返回用户友好的值,或“显示值”,而不是数字值。有三种不同的选项可用
选项 | 描述 |
---|---|
全部 | 首选方式。此模式用于显示用户友好的显示值。此外,整数字段将呈现为数字,选择字段将使用用户友好的标签显示。 |
True | 这类似于all模式。但整数字段将呈现为格式化的字符串。 |
False | 使用此模式,所有字段都将使用实际值而不是标签显示。这可能比其他模式具有更好的性能。(注意:选择字段(如严重性/状态)将显示为整数 ID,而不是用户友好的标签) |
例如,严重性为1
且带有false标志只会显示1
。如果该标志设置为true/all,则显示的值将为1 - 高
。
根据ServiceNow API 文档,all和true模式可能比false模式慢。在ServiceNow 文档中阅读有关显示值/sysparm_display_value的更多信息
过滤器(通用)
“过滤器”行提供了根据多个字段和值条件缩小显示行范围的功能。
所有过滤器都与AND或OR操作组合。
选择自定义表时,字段会从 Service Now API 自动填充。
值
值选择取决于所选过滤器的类型。
- 布尔过滤器具有 True/False 选项
- 文本过滤器允许键入任何值
- 如果需要选择日期,则日期过滤器将显示日期选择器日历
- 某些运算符(例如is anything或Today)不会显示用于输入的附加字段。
排序依据
“排序依据”行提供了根据多个字段和值条件缩小显示行范围的功能。
所有过滤器都与AND操作组合。将添加对其他运算符的支持。
限制
可以指定行限制以防止返回过多的数据。默认值为 25。
时间字段
时间字段
将您的查询数据转换为时间序列。将您的数据作为时间序列处理意味着,在您的仪表板/面板的时间范围内不属于您所选“时间字段”中的值将不会显示。
如果未启用此值,则将提供一个特殊值“忽略时间”以允许“直到现在”的结果,并启用过滤器来控制显示哪些数据。
时间字段默认为Opened At,但可以更改为任何包含时间值的可用字段。
统计查询
AggregateAPI 将始终返回指标,并具有以下聚合:avg、min、max、sum。过滤也可用于缩小查询范围。
显示
“显示字段”行提供了一个用于选择字段和要显示的指标的选择器。还可以指定多个字段。
过滤器(通用)
聚合过滤器提供了根据字段和值条件缩小显示指标范围的功能,类似于表格选项。
所有过滤器都与AND操作组合。将添加对其他运算符的支持。
统计过滤器选项与 TableAPI 相同。
聚合
有四种类型的指标聚合,以及一个“计数”
- 平均值
- 最小值
- 最大值
- 总和
- 计数 - 这返回查询返回的指标的“数量”
分组依据
此选择器提供了将指标拆分为较小聚合的功能。按“优先级”分组将返回带有“优先级”标签的指标,以及分开的唯一值。
字段引用
从v2.0.0
开始,现在支持字段引用。
默认情况下,引用其他表的字段会折叠。
然后,它们将展开以在单击后显示字段。
字段引用将仅扩展到一层深度,例如,考虑以下结构
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部分,允许您选择一个Type和Field。目前,Type仅限于 Incidents 和 Changes。选择类型时,将为您提供适用于该类型的字段列表。选择Type和Field后,底部将显示值的预览,显示该Type/Field可用的选项。这些值将显示在仪表板上的下拉菜单中,您可以将其与模板一起使用以过滤仪表板面板上的数据。
例如,如果您添加一个名为category的变量,然后选择Type = Incidents和Field = Category,您将看到Category的选项列表。然后,如果您向面板添加一个过滤器,并选择Category Equals ${category},则面板数据将仅显示从仪表板下拉菜单中选择的那一类的对应数据。
导入Incidents By Category仪表板以查看示例。
在查询中使用变量
有两种语法
$<varname>
使用名为hostname
的模板变量的示例
[[varname]]
使用名为hostname
的模板变量的示例
注释
注释使您能够在图形上覆盖事件。
注释查询支持与标准查询编辑器相同的选项。
转换
当使用带有 group by 子句的聚合查询时,转换可能很有用。
标签到字段
使用标签到字段转换的示例
导入 ServiceNow 的仪表板
按照说明导入仪表板。
导入的仪表板可以在“配置”>“数据源”>选择您的 ServiceNow 数据源>选择“仪表板”选项卡中找到,以查看可用的预制仪表板。
版本兼容性
插件的当前版本已针对 ServiceNow 的NewYork版本进行了测试。每个版本之间没有显着差异,有些版本可能完全相同。
如果您的 ServiceNow 版本未在此列表中,则表示尚未使用此数据源对其进行正式测试。基本功能预计可以在 ServiceNow 的最新版本(例如Orlando
、Paris
和Quebec
)中使用。
版本 |
---|
纽约 |
API | ServiceNow 版本 | 版本 |
---|---|---|
表格 API | 纽约 | v2 |
聚合 API | 纽约 | v1 |
重大更改
升级到 V2.0
现有仪表板应继续在 2.0 上工作。如果现有仪表板无法正常工作,则请注意这不是预期的,您的反馈非常宝贵。在提交支持问题时,请务必包含面板 JSON 或仪表板 JSON 的副本。
备份您的仪表板
在升级到 v2.0 之前备份您的仪表板非常重要。v2.0 中的查询架构已更改,并且添加了迁移以更改旧查询为新查询,因为它们已更改。
如果您遇到任何问题并且需要降级,则降级后您的仪表板不太可能继续工作。
已知限制
查询编辑器中的过滤器不包含引用类型的字段。
了解更多
- 添加注释。
- 配置和使用模板和变量。
- 添加转换。
- 设置警报;请参阅警报概述。
- ServiceNow REST API 参考.
- ServiceNow 版本
使用 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 需要访问的所有表
需要管理员访问权限才能执行以下操作
登录的管理员需要将访问权限提升到 security_admin
- 单击右上角导航面板上的个人资料图标。它是有下拉箭头指示器的那个
- 从下拉菜单中单击“提升角色”
- 在显示的模态窗口中,选中“security_admin”旁边的复选框
- 单击“确定”
使用您喜欢的任何命名约定创建一个新角色
- 导航到左侧导航中的角色部分“系统安全性”=>“用户和组”=>“角色”
- 单击顶部的“新建”
- 输入角色的名称和相关的描述
- 单击“提交”
创建一个新用户并附加在步骤 2 中创建的角色
为所需的表和字段创建表 ACL
为 sys_db_object 表创建 ACL
- 在第二个搜索标题列“名称”中,键入 sys_db_object 并按 Enter 键
- 过滤后的结果应显示“表”。单击以导航到记录中
- 在选项卡部分,选择“控件”
- 在页面底部,确保“访问控制”是选定的选项卡
- 单击“新建”以创建新的 ACL
- 将“操作”选择更改为读取
- 在底部的“需要角色”部分,双击“插入新行”并搜索您创建的角色
- 选择您创建的角色后,单击绿色复选标记
- 单击底部的“提交”以创建 ACL,然后在出现模态窗口时单击“继续”
为特定的 sys_db_object 字段创建 ACL。以下步骤需要对以下每个字段重复:名称、标签、显示名称和扩展表
- 仍在 sys_db_object 的表记录视图中,选择屏幕顶部附近选项卡组中的“列”选项卡
- 找到字段名称并选择它
- 在底部选项卡部分,点击访问控制选项卡中的“新建”
- 将操作更改为读取
- 双击底部“需要角色”表中的插入行文本
- 搜索您创建的角色并点击绿色勾号
- 单击“提交”
- 确保您已对所有必需字段重复这些步骤:名称、标签、显示名称和扩展表
重复步骤 4.1 中关于更改、事件和任何其他您想从 Grafana 查询的非 CMDB 表的操作。请勿重复步骤 4.2,该步骤仅适用于 sys_db_object。
当启用“使用 Sys 表”时,如何为 Grafana 用户提供所需的访问权限?
需要管理员访问权限才能执行以下操作
选项 1:执行以下步骤以创建 Grafana 用于连接 ServiceNow 的用户
- 将管理员用户提升为安全管理员以执行以下操作。
- 创建一个名为
grafana_reader_role
的角色。这可以是任何名称。 - 创建一个名为
grafana_user_1
的用户。这也可以是任何名称。 - 将以下角色分配给上述用户
grafana_user_1
或您在步骤 3 中创建的任何名称。grafana_reader_role
或您在步骤 2 中创建的任何名称。
- 创建 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.*
字段的读取权限
- 对
- 提供对
incident
表的读取权限。要执行此操作,需要将管理员用户提升为安全管理员。 - 对用户需要读取数据的其余表重复步骤 6。
以下步骤详细说明了如何执行上述操作。
登录的管理员需要将访问权限提升到 security_admin
- 单击右上角导航面板上的个人资料图标。它是有下拉箭头指示器的那个
- 从下拉菜单中单击“提升角色”
- 在显示的模态窗口中,选中“security_admin”旁边的复选框
- 单击“确定”
使用您喜欢的任何命名约定创建一个新角色
- 导航到左侧导航中的角色部分“系统安全性”=>“用户和组”=>“角色”
- 单击顶部的“新建”
- 输入角色的名称和相关的描述
- 单击“提交”
创建一个新用户或修改一个现有用户,并赋予您在步骤 2 中创建的角色
为所需的表和字段创建表 ACL
为 sys_db_object 表创建 ACL
- 在第二个搜索标题列“名称”中,键入 sys_db_object 并按 Enter 键
- 过滤后的结果应显示“表”。单击以导航到记录中
- 在选项卡部分,选择“控件”
- 在页面底部,确保“访问控制”是选定的选项卡
- 单击“新建”以创建新的 ACL
- 将“操作”选择更改为读取
- 在底部的“需要角色”部分,双击“插入新行”并搜索您创建的角色
- 选择您创建的角色后,单击绿色复选标记
- 单击底部的“提交”以创建 ACL,然后在出现模态窗口时单击“继续”
为特定的 sys_db_object 字段创建 ACL。以下步骤需要对以下每个字段重复:名称、标签、显示名称和扩展表
- 仍在 sys_db_object 的表记录视图中,选择屏幕顶部附近选项卡组中的“列”选项卡
- 找到字段名称并选择它
- 在底部选项卡部分,点击访问控制选项卡中的“新建”
- 将操作更改为读取
- 双击底部“需要角色”表中的插入行文本
- 搜索您创建的角色并点击绿色勾号
- 单击“提交”
- 确保您已对所有必需字段重复这些步骤:名称、标签、显示名称和扩展表
重复步骤 4.1 中关于更改、事件和任何其他您想从 Grafana 查询的非 CMDB 表的操作。请勿重复步骤 4.2,该步骤仅适用于 sys_db_object。
选项 2:授予 Grafana 用户管理员权限以允许访问所有表。(**强烈不建议**)
执行任何上述选项都需要管理员权限