idou老師教你學Istio 25:如何用istio實現監控和日誌采集
這裏我們依然以Bookinfo應用程序作為貫穿此任務的示例程序。首先在集群中安裝並部署Istio。
1
收集遙測數據
創建一個新的YAML文件,用來保存Istio將自動生成和收集的新度量標準和日誌流的配置。如下圖所示:
通過命令$ kubectl apply -f new_telemetry.yaml推送剛剛配置的YAML文件。然後去請求應用程序來生成流量,例如在本用例中就可以訪問Bookinfo完成訪問。
接下來我們就可以驗證是否采集到了剛剛的請求數據。在Kubernetes環境中,通過執行以下命令為Prometheus設置端口轉發:
$ kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=prometheus -o jsonpath=‘{.items[0].metadata.name}‘) 9090:9090 &
通過Prometheus UI查看新指標的值。執行對istio_double_request_count度量值的查詢。Console選項卡中顯示的表 包含類似於以下內容的條目:
驗證是否已創建日誌流並正在為請求填充日誌流。在Kubernetes環境中,搜索istio-telemetry pod的日誌,如下所示:
從打印的信息中,我們可以清楚的看到日誌級別、生成時間、實例名稱、訪問組件名稱等等信息。
2
遙測配置
在上面的實踐中,我們已經完成了Istio收集數據並打印日誌的一個過程。
那麽Istio是如何做到的呢?其實我們已經給Istio做了配置,指示Mixer自動生成並上報服務網格中采集的metric信息和日誌流。在這個配置中我們主要設置了mixer的三個功能:
從Istio的屬性中生成實例信息,比如在我們上面的實踐中打印的metric和日誌信息。
創建出adapter適配器,可以幫助我們處理生成的實例。
根據定義的規則向adapter發送實例信息。
3
metrics配置
配置metrics是為了指示Mixer將metric發送到Prometheus。它使用三個模塊來進行配置:實例配置、處理程序配置和規則配置。
metric配置的模塊定義了用於生成metric。此實例配置根據Envoy報告的屬性(由Mixer自身生成)告訴Mixer 如何為任何給定請求生成metric。
dimensions為每個實例指定一組維度。提供了根據查詢的不同需求和方向對metric據進行分片,聚合和分析的方法。例如,可能需要在對應用程序行為進行故障排除時僅考慮對特定目標服務的請求。
4
日誌配置
日誌配置指示Mixer將日誌條目發送到stdout。它同樣使用三個模塊來進行配置:實例配置,處理程序 配置和規則配置。
logentry配置的部分定義了用於生成日誌條目實例。此實例配置告訴Mixer 如何 根據Envoy報告的屬性為請求生成日誌條目。
severity參數用於指示任何生成的日誌級別 logentry。在此示例中,使用了參數值"warning"。此值將由logentry 處理程序映射到支持的日誌記錄級別。
Timestamp參數提供所有日誌條目的時間信息。在此示例中,時間request.time由Envoy 提供的屬性值提供。
variables參數允許操作員配置每個值中應包含的值logentry。一組表達式控制從Istio屬性和文字值到構成a的值的映射logentry。在此示例中,每個logentry實例都有一個名為latency使用屬性值填充的字段response.duration。如果沒有已知值response.duration,則該latency字段將設置為持續時間 0ms。
stdio配置定義了處理程序命名newhandler。處理程序spec配置stdio適配器代碼處理接收 logentry實例的方式。該severity_levels參數控制字段的logentry 值如何severity映射到支持的日誌記錄級別。這裏,值"warning"被映射到WARNING日誌級別。該 outputAsJson參數指示適配器生成JSON格式的日誌行。
rule配置定義一個新的規則命名newlogstdio。該規則指示Mixer將所有newlog.logentry實例發送到 newhandler.stdio處理程序。由於match參數設置為true,因此將對網格中的所有請求執行規則。
相關服務請訪問https://support.huaweicloud.com/cce/index.html?cce_helpcenter_2019
idou老師教你學Istio 25:如何用istio實現監控和日誌采集