服務水準目標 (SLO)
使用 Instana ,您可以建立及管理服務水準目標 (SLO) ,這是以具體、可測量的目標術語分析服務品質 (QoS) 及可靠性目標的必要項目。
DevOps 實踐者或業務擁有者面臨正確管理服務的難題。 為了確保服務水準與商業需求一致,必須知道特定應用程式的重要使用者旅程: 使用者與應用程式之間的一組互動,以達到特定結果,如 設定服務水準目標 (SLO) 手冊中所述。
Instana 使用者可以透過設定 應用程式視景 或選取 受監視網站的過濾器,來建立其重要使用者旅程的模型。
在依業務衝擊來識別及訂購重要使用者行程之後,擁有者需要決定要用作關鍵指標的度量值。 這類指示器的配置詳細說明於 服務水準指示器 (SLI) 配置中。
當設定指示器時,必須定義所選指示器的目標或目標。 在指定時間範圍內,服務水準目標是服務水準指示器的目標。 SLO 可協助測量服務在特定期間內的可靠性是否符合大部分使用者的預期。 此程序在部落格文章 設定 SLO 手冊中有說明。
SLOs 是必要的,因為它們以具體、可測量的客觀術語定義服務品質 (QoS) 及可靠性目標。 它們不是用來定義最佳效能層次,而是定義一系列可能的最佳及最低可接受效能標準。
術語
服務水準指示器 (SLI): 定義提供給客戶之服務水準的一個性質的已定義定量測量。 一般範例包括服務的錯誤率或回應延遲。
服務水準目標 (SLO): 定義由 SLI 測量之服務水準的目標值。 例如, SLO 可能指定特定 SLI 是所定義時間的 99.9%。
錯誤預算: SLO 的指定目標值隱含地定義小型預算,其中容許服務無法完全可靠地運作。 此錯誤預算容許納入實際無法避免的服務計劃或意外關閉時間。
SLO 小組件
Instana 可讓使用者為其 SLO 建立自訂儀表板小組件,以在一段時間內顯示及分析其服務的效能。 小組件可以顯示 時間型 或 事件型 SLI 配置。
下列影像說明範例 SLO 小組件,稱為 Robot Shop SLO ,並使用 時間型 SLI 配置及 SLO 目標值 95%進行配置。 範例中的 SLI 基於延遲度量值的第 90th 個百分位數,以及臨界值 2 秒。 錯誤預算是 1 減去 SLO 的目標值乘以時間範圍。 對於小組件上所顯示 7 天的顯示時間範圍,它會轉換為 504 分鐘的錯誤預算:
504 minutes = (1 - 95%) * 10080 minutes
範例 SLO 在選取的時間範圍中違規,因為花費的錯誤預算 565 分鐘超出該限制。

配置
新增 SLO 小組件
您可以為任何應用程式視景或網站設定 SLO 小組件。 若要新增 SLO 小組件,請跳至其中一個自訂儀表板,以開啟用於 新增小組件的對話框。 接下來,請遵循下列步驟:
- 在對話框資訊看板中,按一下 SLO > 下一步。 對話框會開啟配置區段,以設定 SLO 小組件。
- 選取您要監視 應用程式視景 還是 網站。
- 應用程式視景的 SLO 會排除您無法控制的因素,例如使用者的網際網路連線功能不佳,且可能無法精確反映使用者體驗。
- 網站的 SLO 最精確地反映使用者體驗,不排除您無法控制的因素,例如使用者的網際網路連線功能不佳。
- 從清單中選取 SLO 的 應用程式視景 或 網站 。
- 從清單中選取特定 SLO 類型的 服務等級指示器 。 如果先前選取的 SLO 類型沒有可用的 SLI ,請依照 SLI 配置中的說明來建立 SLI。
- 輸入想要的 SLO 目標 值,例如 99.9%。
- 選取 時間範圍類型,以定義小組件的環境定義及顯示時間範圍:
- 動態時間範圍: 針對在廣域時間選取器中選取的時間範圍計算 SLO。
- 漸進式時間範圍: 具有固定時間範圍大小的時間範圍,其中結束是由廣域時間選取器的結束日期和時間選項所定義。 例如,滾動時間範圍可讓您一律看到上週,而無需調整為廣域時間選取器。
- 固定時間間隔:具有既定開始及持續時間的時間範圍。 例如,您可以配置在
2020-01-01上啟動的固定一個月時間範圍。 當月份完成時,時間範圍會自動重設為下個月 (2020-02-01)。
- 輸入小組件的標題。
- 在預覽中驗證您的小組件。 附註: 如果未顯示任何預覽,請按一下 強調顯示遺漏的配置 ,以立即查看遺漏的內容。
- 若要建立 SLO 小組件配置,請按一下 建立。
- 若要在自訂儀表板上儲存 SLO 小組件配置,請按一下 儲存變更。
SLI 配置
SLI 類型
與 SLO 類型無關,您可以為配置選取下列兩種 SLI 類型之一:
- 事件型 SLI 使用已定義的良好及不良事件群組來測量服務的可靠性。 因為每個通話都有相同的加權,所以它會更精確地反映實際使用者體驗。 因此,處理錯誤預算更困難,因為它取決於事件數目。
- 時間型 SLI 測量依分鐘聚集的服務可靠性。 雖然錯誤預算一律是固定數目的不良分鐘數,讓人員更容易管理,但它比事件型 SLI 更不精確,因為不良事件在分鐘內更重要,且資料流量較低。
透過使用者介面管理 SLI
若要建立 SLI 配置或複製現有的 SLI 配置,請按一下 SLO 小組件上的 管理 SLI ,以移至「 SLI 管理 」對話框。

接下來,請遵循下列步驟,從頭開始建立配置,或複製現有的配置。
建立應用程式視景的 SLI 配置
- 在「 SLI 管理 」對話框上,按一下 建立 SLI。
- 提供 SLI 配置詳細資料:
- 輸入 SLI 配置的名稱,以唯一識別配置。
- 選取 SLI 配置類型,可以是 時間型 或 事件型
- 按一下 建立 ,以儲存新的 SLI 配置。
應用程式的時間型 SLI
完成 時間型 SLI的下列配置:
- 選取界限範圍: 入埠呼叫 或 所有呼叫。
- 入埠呼叫: 只包含從應用程式外部起始且目的地服務是所選應用程式視景一部分的呼叫。
- 所有呼叫: 包含來自應用程式外部的入埠呼叫,以及在應用程式視景本身內發生的呼叫。
- 您可以在應用程式中選擇特定服務,或保留選取 所有服務 的預設值,以套用至整個「應用程式視景」。
- 如果您想要進一步縮小至某個端點,您可以從清單中選取一個端點。 與選取服務類似,您可以選擇保留 所有端點 的預設值,以套用至整個服務。
- 從支援的度量清單中選擇必須評估 SLI 配置的度量。
- 支援下列度量:
- 延遲
- 呼叫計數
- 錯誤率
- 錯誤呼叫
- 支援下列度量:
- 選取所選度量值的聚集。
- 輸入所選取度量的臨界值。
選取度量及臨界值之後, SLI 的計算方式如下:
SLI = (1 - #minutes_where_threshold_is_violated / #minutes_in_time_window) * 100%
下列影像顯示如何為應用程式 k8s-demo配置時間型 SLI。 應用程式的 界限 範圍限制為 Inbound Calls (針對 端點 DELETE /cart/:id ) ,以及在稱為 cart的 服務 上。 要評估的 度量 設為 Latency ,建議的 聚集 為 90th percentile , 臨界值 為 25 ms。

事件型 SLI
事件型 SLI 配置提供 無界限分析 查詢建置器的完整彈性,可選取良好事件及不良事件的子集。
- 良好事件: 指出特定服務成功準則的一組呼叫。 例如, HTTP 服務的所有 HTTP 要求,其狀態碼為 2XX。
- 錯誤事件: 一組呼叫,指出特定服務的失敗準則。 例如, HTTP 服務的所有 HTTP 要求,其狀態碼為 5XX。
完成 事件型 SLI的下列配置:
- 選取界限範圍: 入埠呼叫 或 所有呼叫。
- 入埠呼叫: 只包含從應用程式外部起始且目的地服務是所選應用程式視景一部分的呼叫。
- 所有呼叫: 包含來自應用程式外部的入埠呼叫,以及在應用程式視景本身內發生的呼叫。
- 選用項目: 您可以包括內部呼叫或虛構呼叫。 依預設,會排除這兩個呼叫。
當定義錯誤事件及良好事件時, SLI 的計算方式如下:
SLI = #good_events / (#good_events + #bad_events) * 100%
影像顯示如何針對其界限範圍限制為 入埠呼叫的應用程式配置事件型 SLI。 良好事件 定義為狀態碼為 200 的呼叫,而 不良事件 定義為狀態碼為 500 的呼叫。

此配置產生的小組件會顯示呼叫的錯誤預算 (相對於分鐘)。
建立網站的 SLI 配置
- 在「 SLI 管理 」對話框上,按一下 建立 SLI。
- 提供 SLI 配置詳細資料:
- 輸入 SLI 配置的名稱,以唯一識別配置。
- 選取 SLI 配置類型,可以是 時間型 或 事件型
- 按一下 建立 ,以儲存新的 SLI 配置。
網站的時間型 SLI
完成 時間型 SLI的下列配置:
- 選取引標範圍,例如 HTTP 要求。 透過套用引標過濾器,您可以進一步將配置範圍限定為網站資料流量的子集,例如透過地理定位、瀏覽器或使用者。
- 從支援的度量清單中選擇必須評估 SLI 配置的度量。 支援下列度量:
- 引標錯誤率
- 引標持續時間
- 選取所選度量值的聚集。
- 輸入所選取度量的臨界值。
選取度量及臨界值之後, SLI 的計算方式如下:
SLI = (1 - #minutes_where_threshold_is_violated / #minutes_in_time_window) * 100%
以下是 Robot Shop 網站的時間型 SLI 配置範例,該網站在 /products 路徑上使用 GET 方法,僅限於臨界值為 25 毫秒之信標錯誤率度量平均值的 HTTP 要求。

網站的事件型 SLI
事件型 SLI 配置提供 無界限分析 查詢建置器的完整彈性,可選取良好事件及不良事件的子集。
- 良好事件: 指出特定服務成功準則的一組呼叫。 例如, HTTP 服務的所有 HTTP 要求,其狀態碼為 2XX。
- 錯誤事件: 一組呼叫,指出特定服務的失敗準則。 例如, HTTP 服務的所有 HTTP 要求,其狀態碼為 5XX。
完成 事件型 SLI的下列配置:
- 選取 引標範圍,例如 HTTP 要求。 透過套用引標過濾器,您可以進一步將配置範圍限定為網站資料流量的子集,例如依地理定位、瀏覽器或使用者。
- 入埠呼叫 或 所有呼叫。
- 入埠呼叫: 只包含從應用程式外部起始且目的地服務是所選應用程式視景一部分的呼叫。
- 所有呼叫: 包含來自應用程式外部的入埠呼叫,以及在應用程式視景本身內發生的呼叫。
當定義錯誤事件及良好事件時, SLI 的計算方式如下:
SLI = #good_events / (#good_events + #bad_events) * 100%
影像顯示如何針對引標範圍設為 HTTP 要求的網站配置事件型 SLI ,其中 良好事件 是狀態碼為 200 的 GET 要求, _bad 事件 + 是狀態碼為 500 的 GET 要求。

此配置產生的小組件會顯示呼叫的錯誤預算 (相對於分鐘)。
複製現有的 SLI 配置
無法修改 SLI 的參數來防止所計算的耗費預算失效。 這就是為什麼當您變更任何參數時需要複製 SLI 配置的原因。
- 從「SLI 管理」對話框中,在您要複製的所選 SLI 配置上按一下 檢視/複製 SLI 配置 圖示。
- 編輯 SLI 配置詳細資料:
- 變更 SLI 配置的名稱,以將配置識別為現有配置中的複本。
- 視需要編輯 SLI 配置。
- 按一下 複製 ,以建立 SLI 配置的複本。
透過 API 建立 SLI
Instana SLI 配置 API 提供端點來建立、讀取、更新及刪除 SLI 配置。
例如,下列 curl 指令可用來為 ID 為 appId 的應用程式建立名稱為 My First SLI 的時間型 SLI ,該應用程式具有 ID 為 serviceId 的服務,且僅限於 endpoint-id 等於 endpointId的呼叫。 SLI 針對 延遲 度量值的 90th 百分位數及臨界值 25 毫秒聚集。
curl --location --request POST "{{base}}/api/settings/v2/sli" \
--header "Authorization: apiToken {{apiToken}}" \
--header "Content-Type: application/json" \
--data '{
"sliName": "My first SLI",
"metricConfiguration": {
"metricName": "latency",
"metricAggregation": "P90",
"threshold": 25
},
"sliEntity": {
"sliType": "application",
"applicationId": "appId",
"serviceId": "serviceId",
"endpointId": "endpointId",
"boundaryScope": "ALL"
}
}'
附註:
- 使用的 API 記號 需要許可權 「服務水準指示器的配置」。
Grafana SLO 外掛程式
或者,如果您有任何其他自訂儀表板需求, Instana 提供 Grafana 外掛程式 ,可讓您根據 Instana 提供的資料來顯示特定的 SLO 資訊 。