跟我一起學Knative(8)--可觀察性

iyacontrol發表於2020-05-18

可觀察性,即監視服務和檢查跟蹤的能力,對於任何事件驅動的分散式系統而言,都是至關重要的體系結構。

安裝

安裝可觀察性功能,以在服務和事件元件中啟用日誌記錄,指標和請求跟蹤。

所有可觀察性外掛都要求您首先安裝core:

kubectl apply --filename https://github.com/knative/serving/releases/download/v0.14.0/monitoring-core.yaml

namespace/knative-monitoring created

安裝core後,您可以選擇安裝以下一個或所有可觀察性外掛:

  • metrics

1:執行以下命令,並按照以下說明啟用請求指標(如果需要):

kubectl edit cm -n knative-serving config-observability

將metrics.request-metrics-backend-destination:prometheus新增到data欄位。您可以在正在編輯的ConfigMap的data._example欄位中找到詳細資訊。

2:安裝Prometheus和Grafana以獲取指標:

kubectl apply --filename https://github.com/knative/serving/releases/download/v0.14.0/monitoring-metrics-prometheus.yaml

3: 確保grafana-*,kibana-logging-*,kube-state-metrics-*,node-exporter- *和prometheus-system- * pod均報告runing狀態:

kubectl get pods --namespace knative-monitoring --watch

示例:

NAME                                  READY     STATUS    RESTARTS   AGE
grafana-798cf569ff-v4q74              1/1       Running   0          2d
kibana-logging-7d474fbb45-6qb8x       1/1       Running   0          2d
kube-state-metrics-75bd4f5b8b-8t2h2   4/4       Running   0          2d
node-exporter-cr6bh                   2/2       Running   0          2d
node-exporter-mf6k7                   2/2       Running   0          2d
node-exporter-rhzr7                   2/2       Running   0          2d
prometheus-system-0                   1/1       Running   0          2d
prometheus-system-1                   1/1       Running   0          2d
  • logs

1:執行以下命令並按照以下說明啟用請求日誌(如果需要):

kubectl edit cm -n knative-serving config-observability

將logging.request-log-template從data._example欄位複製到正在編輯的ConfigMap中的data欄位。您可以在data._example欄位中找到詳細資訊,以自定義請求日誌格式

2:安裝用於日誌的ELK堆疊(Elasticsearch,Logstash和Kibana):

kubectl apply --filename https://github.com/knative/serving/releases/download/v0.14.0/monitoring-logs-elasticsearch.yaml

3:確保elasticsearch-logging-*,fluentd-ds- *和kibana-logging- * Pod均報告runing狀態:

kubectl get pods --namespace knative-monitoring --watch

示例:

NAME                                  READY     STATUS    RESTARTS   AGE
elasticsearch-logging-0               1/1       Running   0          2d
elasticsearch-logging-1               1/1       Running   0          2d
fluentd-ds-5kc85                      1/1       Running   0          2d
fluentd-ds-vhrcq                      1/1       Running   0          2d
fluentd-ds-xghk9                      1/1       Running   0          2d
kibana-logging-7d474fbb45-6qb8x       1/1       Running   0          2d
  • trace

:安裝Jaeger或Zipkin 用於實現分散式追蹤:

要安裝Jaeger的記憶體(獨立)版本,請執行以下命令:

kubectl apply --filename https://github.com/knative/serving/releases/download/v0.14.0/monitoring-tracing-jaeger-in-mem.yaml

要安裝Zipkin的記憶體(獨立)版本,請執行以下命令:

kubectl apply --filename https://github.com/knative/serving/releases/download/v0.14.0/monitoring-tracing-zipkin-in-mem.yaml

結論

以上的安裝預設的網路層是istio,如果選擇了ambassador或是contour等其他網路層,整個可可觀察性部署需要調整。

另外對於一個生產環境,往往監控,日誌,和trace 需要對接公司統一服務。

相關文章