可觀察性,即監視服務和檢查跟蹤的能力,對於任何事件驅動的分散式系統而言,都是至關重要的體系結構。
安裝
安裝可觀察性功能,以在服務和事件元件中啟用日誌記錄,指標和請求跟蹤。
所有可觀察性外掛都要求您首先安裝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 需要對接公司統一服務。