

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Connect 连接到 ServiceNow 数据源
<a name="grafana-enterprise-servicenow-datasource"></a>

这是用于连接 ServiceNow实例 ServiceNow 的数据源。

**注意**  
此数据来源仅适用于 Grafana Enterprise。有关更多信息，请参阅 [管理对 Enterprise 插件的访问](upgrade-to-enterprise-plugins.md)。  
此外，在支持版本 9 或更高版本的工作区中，此数据来源可能需要您安装相应的插件。有关更多信息，请参阅 [使用插件扩展您的工作区](grafana-plugins.md)。

## 功能
<a name="features-1"></a>
+  查询 
  +  统计 API 查询 
  +  表 API 查询 
    +  事件、变更和任何其他表 
+  警报 
+  注释（测试版功能） 
+  模板变量 

## 配置
<a name="configuration-2"></a>

 在 Grafana 的左侧面板上选择数据来源。

 选择“添加数据来源”：

 输入 **servicenow** 以查找数据来源插件：

 输入 ServiceNow 网址：

 选择**保存并测试**。您应该会看到一条绿色消息，上面写着 “ServiceNow 连接正常”。

### 控制面板示例
<a name="example-dashboards"></a>

 预制控制面板包含在插件中，可通过控制面板选项卡下面的数据来源配置页面导入。

## 用法
<a name="usage-2"></a>

 在查询编辑器中返回数据的方法有两种。
+  TableAPI 
+  AggregateAPI 

 用户目前可以在查询预定义表之间进行选择，如下所示：
+  更改 
+  意外事件 

 或者，截止到 `v1.4.0`，使用**其他（自定义表）**选项的由 API 驱动的表和字段列表。此选项将允许您查询用于设置数据源的用户可用的任何表中的 ServiceNow 数据。

 **自定义表**选项应支持所有与预定义表列表相同的功能。

### TableAPI 查询
<a name="tableapi-queries"></a>

 TableAPI 返回适合在表面板中显示的数据。它允许按顺序选择要显示的字段以及筛选选项。查询编辑器还提供了一个用于限制查询返回的行数的字段。

 显示上次查询结果的表面板示例。

#### 显示
<a name="show"></a>

 *显示*行为要显示的字段提供了一个选择器。也可以指定多个字段。这些字段将按指定的确切顺序返回。

#### 显示值
<a name="display-values"></a>

 *显示值*标志将使查询返回人性化值或显示值，而不是数值。

 例如，如果没有此标志，则严重性 `1` 会仅显示 `1`。如果启用了该标志，则显示的值将为 `1 - High`。

 根据 [ServiceNow API文档](https://developer.servicenow.com/dev.do#!/reference/api/orlando/rest/c_TableAPI)，这可能会对性能产生负面影响。

**注意**  
 [...] 指定显示值可能会导致性能问题，因为它不是直接从数据库读取数据，并且可能包括引用其他字段和记录。

#### 筛选器（通用）
<a name="filters-general"></a>

 *筛选器*行使用户能够根据多个字段和值标准缩小显示行的范围。

 所有筛选器都与 *AND* 或 *OR* 运算相结合。

 不使用自定义表时，以下字段可用（此列表将来会扩展）。

```
Active
Asset
Group
Assigned To
Escalation
Issue Number
Description
Priority
State
Type
Change Risk
Change State
Start Date
End Date
On Hold
```

 选择自定义表时，将自动从 ServiceNow API 填充字段。

##### 日期筛选条件
<a name="date-filters"></a>


|  时间字段  |  运算符  |  值  | 
| --- | --- | --- | 
|  打开时间  |  At or Before Today Not Today Before At or Before After At or After  |  timestamp javascript:gs.daysAgo(30)  | 
|  活动到期时间  |   |   | 
|  关闭时间  |   |   | 
|  到期日  |   |   | 
|  预计开始时间  |   |   | 
|  重新打开时间  |   |   | 
|  解决时间  |   |   | 
|  工作结束时间  |   |   | 
|  工作开始时间  |   |   | 
|  忽略时间  |   |   | 

 有关其他日期值，请参阅： https://developer.servicenow.com/app.do\$1\$1/api\$1doc？ v=newyork&id=r\$1sgsys-dateGenerate\$1s\$1s 

##### 运算符（通用，基于字符串）
<a name="operators-generalstring-based"></a>
+  Starts With 
+  Ends With 
+  like 
+  Not Like 
+  Equals 
+  Not Equals 
+  Is Empty 

##### 运算符（基于时间）
<a name="operators-time-based"></a>
+  Today 
+  Not Today 
+  Before 
+  At or Before 
+  晚于 
+  At or After 

##### 值
<a name="values"></a>

 值选择取决于选择的筛选器的类型。
+  布尔过滤器有 True/False 选项 
+  文本筛选器将允许键入任何值 
+  升级、优先级有一组固定的数值 

#### 排序依据
<a name="sort-by"></a>

 *排序依据*行使用户能够根据多个字段和值标准缩小显示行的范围。

 所有筛选器均与 *AND* 运算相结合。将添加对其他运算符的支持。

#### 限制
<a name="limit"></a>

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

#### 时间字段
<a name="time-field"></a>

 `Time Field` 是将您查询到的数据转换为时间序列的原因。将您的数据作为时间序列进行处理意味着所选“时间字段”中未落到控制面板/面板时间范围内的值将不会显示。

 使用的默认时间字段是“打开时间”，但可以将该字段更改为任何包含时间值的可用字段。

 提供了一个特殊值“忽略时间”，以允许结果“到目前为止”，并使筛选器能够控制显示哪些数据。

### AggregateAPI 查询（统计信息）
<a name="aggregateapi-queries-stats"></a>

 AggregateAPI 将始终返回指标，其中包含以下聚合：平均值、最小值、最大值、总和。筛选也可用于缩小查询范围。

#### 显示
<a name="show-1"></a>

 *显示*行为要显示的指标提供了一个选择器。也可以指定多个指标。

#### 筛选器（通用）
<a name="filters-general-1"></a>

 聚合*筛选器*提供了根据字段和值标准缩小显示指标范围的功能，类似于表选项。

 所有筛选器均与 *AND* 运算相结合。将添加对其他运算符的支持。

 统计筛选器选项与 TableAPI 相同。

#### 聚合
<a name="aggregation"></a>

 指标聚合有四种类型，外加一个“计数”：
+  平均值 
+  最小值 
+  最大值 
+  总和 
+  计数：计数将返回查询返回的指标的“数量” 

##### 分组依据
<a name="group-by"></a>

 此选择器可以将指标拆分为较小的聚合。按“优先级”分组将返回带有优先级“标签”的指标，其中的唯一值已分隔开。

### 模板化
<a name="templating-2"></a>

 您可以使用变量代替查询中的硬编码名称。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板上显示的数据。

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

#### 查询变量
<a name="query-variable"></a>

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

 例如，可以通过在模板变量 *Query* 设置中指定这样的查询，来获取包含 `categories` 的所有值的变量。

 选择**查询**设置时，将显示**筛选器**部分，允许您选择**类型**和**字段**。目前，**类型**仅限于事件和更改。选择类型时，系统会为您提供适用于该类型的字段列表。选择**类型**和**字段**后，底部将显示值的预览，显示该类型/字段的可用选项。这些值将显示在控制面板的下拉列表中，您可以将其与模板一起使用来筛选控制面板的面板上的数据。

 例如，如果您添加一个名为 *category* 的变量，然后选择“类型 = 事件”和“字段 = 类别”，那么将看到类型的选项列表。如果您随后向面板添加筛选器，并选择类别等于 \$1\$1category\$1，则面板数据将仅显示从控制面板下拉列表中选择的该类别的数据。

 导入**按类别划分的事件**控制面板以查看示例。

#### 在查询中使用变量
<a name="using-variables-in-queries"></a>

 共有两种语法：

 `$<varname>` 名为 `hostname` 的模板变量的示例：

 `[[varname]]` 名为 `hostname` 的模板变量的示例：

## 警报
<a name="servicenow-alerting"></a>

 支持标准 Grafana Alerting。图形面板中定义的任何查询都可用于生成警报。

 以下是查询示例和警报。此查询将返回所有未解决的重大高优先级事件的图形：

 当有超过五件未解决的重大高优先级事件时，将启动此警报：

 测试警报规则将显示警报规则的输出，选择状态历史记录将显示警报从正常过渡到待处理再到警报的过程。

 当警报处于待定状态时，图形视图将显示一条垂直线，顶部的心形图标将变为橙色。

 满足警报条件后，该规则将变为红色。

 在图形视图中，将出现红色垂直线，顶部的心形图标将变为红色。

### 为警报编写事件
<a name="writing-incidents-for-alerts"></a>

 **测试版功能** 
+  为您的 ServiceNow 数据源配置通知渠道。

 这将配置一个 [Grafana 通知](https://grafana.com/docs/grafana/latest/alerting/notifications/)渠道，该渠道使用您配置的用户在实例上为此数据 ServiceNow 源创建事件。

 此操作要求 ServiceNow 数据源用户具有写入事件的权限。

## Annotations
<a name="annotations-1"></a>

 截至该数据来源的 `v1.4.0`，Grafana 注释仍是一项**测试版功能**。注释使您能够在图表上叠加事件。

 “注释”查询支持与标准查询编辑器相同的选项，但有一些细微的区别：
+  只能选择一个“显示”列。这可能会在将来的改进中得到修复。
+  时间字段为必填项。

## 常见问题解答
<a name="faq-1"></a>

### 如果我们没有 ITSM 角色插件会怎样？
<a name="what-if-we-dont-have-the-itsm-roles-plugin"></a>

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

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

 选项 2：创建角色并应用 ACLs 于 Grafana 必须访问的所有表。

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

1.  已登录的管理员需要提升对 security\$1admin 的访问权限级别。

   1.  在右上方的导航窗格中，选择个人资料图标。个人资料图标带有下拉插入符号指示器。

   1.  从下拉列表中，选择**提升角色**。

   1.  在显示的模态中，选中 **security\$1admin** 复选框。

   1.  选择确定。

1. 使用您想要的任何命名约定创建一个新角色。

   1.  导航到左侧导航栏中的“角色”部分：“系统安全”=>“用户和组”=>“角色” 

   1.  选择顶部的**新建**。

   1.  输入角色的名称和相关说明。

   1.  选择**提交**。

1.  创建新用户或修改具有所需角色的现有用户。

   1.  您在步骤 2 中创建的角色 

   1.  personalize\$1dictionary 

   1.  personalize\$1choices 

   1.  cmdb\$1read（这将授予对所有 cmdb 表的读取访问权限） 

1.  ACLs 为所需的表和字段创建表。

   1.  为 sys\$1db\$1object 表创建 ACL。

     1.  在第二个搜索标题列的**名称**中，输入 **sys\$1db\$1object**，然后按 **Enter**。

     1.  筛选结果应显示**表**。选择**表**以导航到记录。

     1.  在选项卡部分，选择**控件**。

     1.  在页面的下半部分，确保选择了**访问控制**选项卡。

     1.  要创建新 ACL，请选择**新建**。

     1.  更改**操作**选择以进行读取。

     1.  在屏幕下方的**需要角色**部分中，选择（双击）**插入新行**，然后搜索您创建的角色。

     1. 选择您创建的角色后，选择绿色复选标记。

     1.  选择屏幕下方的**提交**以创建 ACL，然后在出现模态时选择**继续**。

1.  ACLs 为特定的 sys\$1db\$1object 字段创建。必须对以下每个字段重复以下步骤：“名称”、“标签”、“显示名称”和“扩展”表。

   1.  如果您仍处于 sys\$1db\$1object 的表记录视图中，在最靠近屏幕顶部的选项卡组中选择**列**选项卡。

   1.  找到文件名并选择该文件名。

   1.  在下方的选项卡部分，在**访问控制**选项卡上选择**新建**。

   1.  将操作改为读取。

   1.  在底部的“需要角色”表格中选择（双击）以插入一行文本。

   1.  搜索并选择您创建的角色，并选择绿色复选标记。

   1.  选择**提交**。

   1.  请确保对所有必填字段重复这些步骤：“名称”、“标签”、“显示名称”和“扩展” 表。

1.  在“更改”、“事件”表以及要从 Grafana 查询的任何其他非 CMDB 表上重复 4.1 中的步骤。不要重复 4.2 中的步骤；只有在 sys\$1db\$1object 中才需要执行该步骤。