可观察性,即监视服务和检查跟踪的能力,对于任何事件驱动的分布式系统而言,都是至关重要的体系结构。
安装
安装可观察性功能,以在服务和事件组件中启用日志记录,指标和请求跟踪。
所有可观察性插件都要求您首先安装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 需要对接公司统一服务。