可观察性,即监视服务和检查跟踪的能力,对于任何事件驱动的分布式系统而言,都是至关重要的体系结构。

安装

安装可观察性功能,以在服务和事件组件中启用日志记录,指标和请求跟踪。

所有可观察性插件都要求您首先安装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 需要对接公司统一服务。


iyacontrol
1.4k 声望2.7k 粉丝

专注kubernetes,devops,aiops,service mesh。