Linkerd 2.10 系列
- 快速上手 Linkerd v2.10 Service Mesh(服务网格)
- 腾讯云 K8S 集群实战 Service Mesh—Linkerd2 & Traefik2 部署 emojivoto 应用
- 详细了解 Linkerd 2.10 基础功能,一起步入 Service Mesh 微服务架构时代
- Linkerd 2.10—将您的服务添加到 Linkerd
- Linkerd 2.10—自动化的金丝雀发布
- Linkerd 2.10—自动轮换控制平面 TLS 与 Webhook TLS 凭证
- Linkerd 2.10—如何配置外部 Prometheus 实例
- Linkerd 2.10—配置代理并发
- Linkerd 2.10—配置重试
- Linkerd 2.10—配置超时
- Linkerd 2.10—控制平面调试端点
- Linkerd 2.10—使用 Kustomize 自定义 Linkerd 的配置
Linkerd 2.10 中文手册持续修正更新中:
按照设计,Linkerd
仅在较短的固定时间窗口(目前为 6
小时)内保留指标数据。
这意味着如果 Linkerd
的指标数据对您很有价值,您可能希望将其导出到成熟的指标存储中。
在内部,Linkerd
将其指标存储在作为 Viz
扩展的一部分运行的 Prometheus
实例中。
以下教程需要在启用 prometheus
的情况下安装可视化扩展。
从 Linkerd
导出指标数据有几种基本方法:
- 将数据联合到您自己的
Prometheus
集群 - 使用
Prometheus
集成 - 通过
Prometheus
的API
提取数据 - 直接从代理收集数据
使用 Prometheus 联邦(federation) API
如果您使用 Prometheus
作为您自己的指标存储,我们建议利用 Prometheus
的 federation
API,
该 API
专为将数据从一个 Prometheus
复制到另一个的用例而设计。
只需将以下项目添加到 Prometheus
配置文件中的 scrape_configs
(将 {{.Namespace}}
替换为运行 Linkerd Viz
扩展的命名空间):
- job_name: 'linkerd'
kubernetes_sd_configs:
- role: pod
namespaces:
names: ['{{.Namespace}}']
relabel_configs:
- source_labels:
- __meta_kubernetes_pod_container_name
action: keep
regex: ^prometheus$
honor_labels: true
metrics_path: '/federate'
params:
'match[]':
- '{job="linkerd-proxy"}'
- '{job="linkerd-controller"}'
复制代码
或者,如果您更喜欢使用 Prometheus
的 ServiceMonitors
来配置您的 Prometheus
,
您可以使用此 ServiceMonitor YAML
(将 {{.Namespace}}
替换为运行 Linkerd Viz 扩展的命名空间):
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
k8s-app: linkerd-prometheus
release: monitoring
name: linkerd-federate
namespace: {{.Namespace}}
spec:
endpoints:
- interval: 30s
scrapeTimeout: 30s
params:
match[]:
- '{job="linkerd-proxy"}'
- '{job="linkerd-controller"}'
path: /federate
port: admin-http
honorLabels: true
relabelings:
- action: keep
regex: '^prometheus$'
sourceLabels:
- '__meta_kubernetes_pod_container_name'
jobLabel: app
namespaceSelector:
matchNames:
- {{.Namespace}}
selector:
matchLabels:
component: prometheus
复制代码
就是这样!您的 Prometheus
集群现已配置为从 Linkerd
的
内部 Prometheus
实例联合 Linkerd
的指标。
一旦指标在您的 Prometheus
中,
Linkerd 的代理指标将带有标签 job="linkerd-proxy"
,
Linkerd 的控制平面指标将带有标签 job="linkerd-controller"
。
有关特定指标和标签定义的更多信息,请查看代理指标。
有关 Prometheus 的 /federate
端点的更多信息,
请查看 Prometheus federation 文档。
使用 Prometheus 集成
如果您不使用 Prometheus 作为您自己的长期数据存储,
您可以利用 Prometheus 的众多
集成
之一自动将 Linkerd 的 Prometheus 实例中
的数据提取到您选择的数据存储中。有关详细信息,请参阅 Prometheus 文档。
通过 Prometheus 的 API 提取数据
如果 Prometheus federation
和 Prometheus
集成都不适合您,
则可以调用 Prometheus
的 API
从 Linkerd
中提取数据。
例如,您可以通过以下命令直接调用联邦 API
:
curl -G \
--data-urlencode 'match[]={job="linkerd-proxy"}' \
--data-urlencode 'match[]={job="linkerd-controller"}' \
http://prometheus.linkerd-viz.svc.cluster.local:9090/federate
复制代码
如果您的数据存储在 Kubernetes
集群之外,
您可能希望在您选择的域名上设置
ingress
并进行身份验证。
与 /federate
API 类似,Prometheus
提供了一个 JSON 查询 API 来检索所有指标:
curl http://prometheus.linkerd-viz.svc.cluster.local:9090/api/v1/query?query=request_total
复制代码
直接从 Linkerd 代理收集数据
最后,如果您想完全避免 Linkerd
的 Prometheus
,
您可以直接在其 /metrics
端点上查询 Linkerd
代理。
例如,要从在 linkerd
命名空间中运行的单个 Linkerd 代理查看 /metrics
:
kubectl -n linkerd port-forward \
$(kubectl -n linkerd get pods \
-l linkerd.io/control-plane-ns=linkerd \
-o jsonpath='{.items[0].metadata.name}') \
4191:4191
复制代码
然后:
curl localhost:4191/metrics
复制代码
或者,linkerd diagnostics proxy-metrics
可用于检索
给定工作负载(workload
)的代理指标(proxy metrics
)。
我是为少
微信:uuhells123
公众号:黑客下午茶
加我微信(互相学习交流),关注公众号(获取更多学习资料~)
复制代码