1 - 操作指南:使用 Prometheus 监控指标
本地设置 Prometheus
在本地计算机上,您可以选择安装并作为进程运行 Prometheus,或者将其作为Docker 容器运行。
安装
注意
如果您计划将 Prometheus 作为 Docker 容器运行,则无需单独安装 Prometheus。请参阅容器部分的说明。请按照此处提供的步骤,根据您的操作系统安装 Prometheus。
配置
安装完成后,您需要创建一个配置文件。
以下是一个示例 Prometheus 配置,请将其保存为文件,例如 /tmp/prometheus.yml
或 C:\Temp\prometheus.yml
:
global:
scrape_interval: 15s # 默认情况下,每 15 秒收集一次指标。
# 包含一个收集端点的配置:
# 这里是 Prometheus 自身。
scrape_configs:
- job_name: 'dapr'
# 覆盖全局默认值,每 5 秒从此 job 收集指标。
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090'] # 如果不是默认值,请替换为 Dapr 指标端口
作为进程运行
使用您的配置文件运行 Prometheus,以开始从指定目标收集指标。
./prometheus --config.file=/tmp/prometheus.yml --web.listen-address=:8080
我们更改了端口以避免与 Dapr 自身的指标端点冲突。
如果您当前没有运行 Dapr 应用程序,目标将显示为离线。要开始收集指标,您必须启动 Dapr,并确保其指标端口与配置中指定的目标一致。
一旦 Prometheus 运行,您可以通过访问 http://localhost:8080
来查看其仪表板。
作为容器运行
要在本地计算机上将 Prometheus 作为 Docker 容器运行,首先确保已安装并运行 Docker。
然后可以使用以下命令将 Prometheus 作为 Docker 容器运行:
docker run \
--net=host \
-v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus --config.file=/etc/prometheus/prometheus.yml --web.listen-address=:8080
--net=host
确保 Prometheus 实例能够连接到在主机上运行的任何 Dapr 实例。如果您计划也在容器中运行 Dapr 应用程序,则需要在共享的 Docker 网络上运行它们,并使用正确的目标地址更新配置。
一旦 Prometheus 运行,您可以通过访问 http://localhost:8080
来查看其仪表板。
在 Kubernetes 上设置 Prometheus
先决条件
安装 Prometheus
- 首先创建一个命名空间,用于部署 Grafana 和 Prometheus 监控工具
kubectl create namespace dapr-monitoring
- 安装 Prometheus
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install dapr-prom prometheus-community/prometheus -n dapr-monitoring
如果您是 Minikube 用户或想要禁用持久卷以进行开发,可以使用以下命令禁用它。
helm install dapr-prom prometheus-community/prometheus -n dapr-monitoring
--set alertmanager.persistence.enabled=false --set pushgateway.persistentVolume.enabled=false --set server.persistentVolume.enabled=false
要自动发现 Dapr 目标(服务发现),请使用:
helm install dapr-prom prometheus-community/prometheus -f values.yaml -n dapr-monitoring --create-namespace
values.yaml
文件
alertmanager:
persistence:
enabled: false
pushgateway:
persistentVolume:
enabled: false
server:
persistentVolume:
enabled: false
# 向 prometheus.yml 添加额外的收集配置
# 使用服务发现找到 Dapr 和 Dapr sidecar 目标
extraScrapeConfigs: |-
- job_name: dapr-sidecars
kubernetes_sd_configs:
- role: pod
relabel_configs:
- action: keep
regex: "true"
source_labels:
- __meta_kubernetes_pod_annotation_dapr_io_enabled
- action: keep
regex: "true"
source_labels:
- __meta_kubernetes_pod_annotation_dapr_io_enable_metrics
- action: replace
replacement: ${1}
source_labels:
- __meta_kubernetes_namespace
target_label: namespace
- action: replace
replacement: ${1}
source_labels:
- __meta_kubernetes_pod_name
target_label: pod
- action: replace
regex: (.*);daprd
replacement: ${1}-dapr
source_labels:
- __meta_kubernetes_pod_annotation_dapr_io_app_id
- __meta_kubernetes_pod_container_name
target_label: service
- action: replace
replacement: ${1}:9090
source_labels:
- __meta_kubernetes_pod_ip
target_label: __address__
- job_name: dapr
kubernetes_sd_configs:
- role: pod
relabel_configs:
- action: keep
regex: dapr
source_labels:
- __meta_kubernetes_pod_label_app_kubernetes_io_name
- action: keep
regex: dapr
source_labels:
- __meta_kubernetes_pod_label_app_kubernetes_io_part_of
- action: replace
replacement: ${1}
source_labels:
- __meta_kubernetes_pod_label_app
target_label: app
- action: replace
replacement: ${1}
source_labels:
- __meta_kubernetes_namespace
target_label: namespace
- action: replace
replacement: ${1}
source_labels:
- __meta_kubernetes_pod_name
target_label: pod
- action: replace
replacement: ${1}:9090
source_labels:
- __meta_kubernetes_pod_ip
target_label: __address__
- 验证
确保 Prometheus 在您的集群中运行。
kubectl get pods -n dapr-monitoring
预期输出:
NAME READY STATUS RESTARTS AGE
dapr-prom-kube-state-metrics-9849d6cc6-t94p8 1/1 Running 0 4m58s
dapr-prom-prometheus-alertmanager-749cc46f6-9b5t8 2/2 Running 0 4m58s
dapr-prom-prometheus-node-exporter-5jh8p 1/1 Running 0 4m58s
dapr-prom-prometheus-node-exporter-88gbg 1/1 Running 0 4m58s
dapr-prom-prometheus-node-exporter-bjp9f 1/1 Running 0 4m58s
dapr-prom-prometheus-pushgateway-688665d597-h4xx2 1/1 Running 0 4m58s
dapr-prom-prometheus-server-694fd8d7c-q5d59 2/2 Running 0 4m58s
访问 Prometheus 仪表板
要查看 Prometheus 仪表板并检查服务发现:
kubectl port-forward svc/dapr-prom-prometheus-server 9090:80 -n dapr-monitoring
打开浏览器并访问 http://localhost:9090
。导航到 Status > Service Discovery 以验证 Dapr 目标是否被正确发现。

您可以看到 job_name
及其发现的目标。

示例
参考资料
2 - 配置指标
默认情况下,每个Dapr系统进程都会发出Go运行时和进程指标,并拥有自己的Dapr指标。
Prometheus端点
Dapr sidecar提供了一个与Prometheus兼容的指标端点,您可以通过抓取该端点来更好地了解Dapr的运行状况。
使用CLI配置指标
指标应用程序端点默认是启用的。您可以通过传递命令行参数--enable-metrics=false
来禁用它。
默认的指标端口是9090
。您可以通过传递命令行参数--metrics-port
给daprd来更改此设置。
在Kubernetes中配置指标
您还可以通过在应用程序部署上设置dapr.io/enable-metrics: "false"
注解来启用或禁用特定应用程序的指标。禁用指标导出器后,daprd不会打开指标监听端口。
以下Kubernetes部署示例显示了如何显式启用指标,并将端口指定为"9090"。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nodeapp
labels:
app: node
spec:
replicas: 1
selector:
matchLabels:
app: node
template:
metadata:
labels:
app: node
annotations:
dapr.io/enabled: "true"
dapr.io/app-id: "nodeapp"
dapr.io/app-port: "3000"
dapr.io/enable-metrics: "true"
dapr.io/metrics-port: "9090"
spec:
containers:
- name: node
image: dapriosamples/hello-k8s-node:latest
ports:
- containerPort: 3000
imagePullPolicy: Always
使用应用程序配置启用指标
您还可以通过应用程序配置启用指标。要默认禁用Dapr sidecar中的指标收集,请将spec.metrics.enabled
设置为false
。
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: tracing
namespace: default
spec:
metrics:
enabled: false
为错误代码配置指标
您可以通过设置spec.metrics.recordErrorCodes
为true
来为Dapr API错误代码启用额外的指标。Dapr API可能会返回标准化的错误代码。一个名为error_code_total
的新指标被记录,它允许监控由应用程序、代码和类别触发的错误代码。有关特定代码和类别,请参见errorcodes
包。
示例配置:
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: tracing
namespace: default
spec:
metrics:
enabled: true
recordErrorCodes: true
示例指标:
{
"app_id": "publisher-app",
"category": "state",
"dapr_io_enabled": "true",
"error_code": "ERR_STATE_STORE_NOT_CONFIGURED",
"instance": "10.244.1.64:9090",
"job": "kubernetes-service-endpoints",
"namespace": "my-app",
"node": "my-node",
"service": "publisher-app-dapr"
}
使用路径匹配优化HTTP指标报告
在使用HTTP调用Dapr时,默认情况下会为每个请求的方法创建指标。这可能导致大量指标,称为高基数,这可能会影响内存使用和CPU。
路径匹配允许您管理和控制Dapr中HTTP指标的基数。通过聚合指标,您可以减少指标事件的数量并报告一个总体数量。了解更多关于如何在配置中设置基数。
此配置是选择加入的,并通过Dapr配置spec.metrics.http.pathMatching
启用。当定义时,它启用路径匹配,这将标准化指定路径的两个指标路径。这减少了唯一指标路径的数量,使指标更易于管理,并以受控方式减少资源消耗。
当spec.metrics.http.pathMatching
与increasedCardinality
标志设置为false
结合使用时,未匹配的路径会被转换为一个通用桶,以控制和限制基数,防止路径无限增长。相反,当increasedCardinality
为true
(默认值)时,未匹配的路径会像通常一样传递,允许潜在的更高基数,但保留原始路径数据。
HTTP指标中的路径匹配示例
以下示例演示了如何在Dapr中使用路径匹配API来管理HTTP指标。在每个示例中,指标是从5个HTTP请求到/orders
端点收集的,具有不同的订单ID。通过调整基数和利用路径匹配,您可以微调指标粒度以平衡细节和资源效率。
这些示例说明了指标的基数,强调高基数配置会导致许多条目,这对应于处理指标的更高内存使用。为简单起见,以下示例专注于单个指标:dapr_http_server_request_count
。
低基数与路径匹配(推荐)
配置:
http:
increasedCardinality: false
pathMatching:
- /orders/{orderID}
生成的指标:
# 匹配的路径
dapr_http_server_request_count{app_id="order-service",method="GET",path="/orders/{orderID}",status="200"} 5
# 未匹配的路径
dapr_http_server_request_count{app_id="order-service",method="GET",path="",status="200"} 1
通过配置低基数和路径匹配,您可以在不影响基数的情况下对重要端点的指标进行分组。这种方法有助于避免高内存使用和潜在的安全问题。
无路径匹配的低基数
配置:
http:
increasedCardinality: false
生成的指标:
dapr_http_server_request_count{app_id="order-service",method="GET", path="",status="200"} 5
在低基数模式下,路径是无限基数的主要来源,被丢弃。这导致的指标主要指示给定HTTP方法的服务请求数量,但没有关于调用路径的信息。
高基数与路径匹配
配置:
http:
increasedCardinality: true
pathMatching:
- /orders/{orderID}
生成的指标:
dapr_http_server_request_count{app_id="order-service",method="GET",path="/orders/{orderID}",status="200"} 5
此示例来自与上例相同的HTTP请求,但为路径/orders/{orderID}
配置了路径匹配。通过使用路径匹配,您可以通过基于匹配路径分组指标来实现减少基数。
无路径匹配的高基数
配置:
http:
increasedCardinality: true
生成的指标:
dapr_http_server_request_count{app_id="order-service",method="GET",path="/orders/1",status="200"} 1
dapr_http_server_request_count{app_id="order-service",method="GET",path="/orders/2",status="200"} 1
dapr_http_server_request_count{app_id="order-service",method="GET",path="/orders/3",status="200"} 1
dapr_http_server_request_count{app_id="order-service",method="GET",path="/orders/4",status="200"} 1
dapr_http_server_request_count{app_id="order-service",method="GET",path="/orders/5",status="200"} 1
对于每个请求,都会创建一个带有请求路径的新指标。此过程会继续为每个新订单ID的请求创建新指标,导致基数无限增长,因为ID是不断增长的。
HTTP指标排除动词
excludeVerbs
选项允许您从指标中排除特定的HTTP动词。这在内存节省至关重要的高性能应用程序中非常有用。
在指标中排除HTTP动词的示例
以下示例演示了如何在Dapr中排除HTTP动词以管理HTTP指标。
默认 - 包含HTTP动词
配置:
http:
excludeVerbs: false
生成的指标:
dapr_http_server_request_count{app_id="order-service",method="GET",path="/orders",status="200"} 1
dapr_http_server_request_count{app_id="order-service",method="POST",path="/orders",status="200"} 1
在此示例中,HTTP方法包含在指标中,导致每个请求到/orders
端点的单独指标。
排除HTTP动词
配置:
http:
excludeVerbs: true
生成的指标:
dapr_http_server_request_count{app_id="order-service",method="",path="/orders",status="200"} 2
在此示例中,HTTP方法从指标中排除,导致所有请求到/orders
端点的单个指标。
配置自定义延迟直方图桶
Dapr使用累积直方图指标将延迟值分组到桶中,其中每个桶包含:
- 具有该延迟的请求数量
- 所有具有较低延迟的请求
使用默认延迟桶配置
默认情况下,Dapr将请求延迟指标分组到以下桶中:
1, 2, 3, 4, 5, 6, 8, 10, 13, 16, 20, 25, 30, 40, 50, 65, 80, 100, 130, 160, 200, 250, 300, 400, 500, 650, 800, 1000, 2000, 5000, 10000, 20000, 50000, 100000
以累积方式分组延迟值允许根据需要使用或丢弃桶以增加或减少数据的粒度。 例如,如果一个请求需要3ms,它会被计入3ms桶、4ms桶、5ms桶,依此类推。 同样,如果一个请求需要10ms,它会被计入10ms桶、13ms桶、16ms桶,依此类推。 在这两个请求完成后,3ms桶的计数为1,而10ms桶的计数为2,因为这两个请求都包含在这里。
这显示如下:
1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 13 | 16 | 20 | 25 | 30 | 40 | 50 | 65 | 80 | 100 | 130 | 160 | ….. | 100000 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 1 | 1 | 1 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | ….. | 2 |
默认的桶数量适用于大多数用例,但可以根据需要进行调整。每个请求创建34个不同的指标,这个值可能会随着大量应用程序而显著增长。 通过增加桶的数量可以获得更准确的延迟百分位数。然而,更多的桶会增加存储指标所需的内存量,可能会对您的监控系统产生负面影响。
建议将延迟桶的数量设置为默认值,除非您在监控系统中看到不必要的内存压力。配置桶的数量允许您选择应用程序:
- 您希望通过更多的桶看到更多细节
- 通过减少桶来获得更广泛的值
在配置桶的数量之前,请注意您的应用程序产生的默认延迟值。
根据您的场景自定义延迟桶
通过修改应用程序的Dapr配置规范中的spec.metrics.latencyDistributionBuckets
字段,定制延迟桶以满足您的需求。
例如,如果您对极低的延迟值(1-10ms)不感兴趣,可以将它们分组到一个10ms桶中。同样,您可以将高值分组到一个桶中(1000-5000ms),同时在您最感兴趣的中间范围内保持更多细节。
以下配置规范示例用11个桶替换了默认的34个桶,在中间范围内提供了更高的粒度:
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: custom-metrics
spec:
metrics:
enabled: true
latencyDistributionBuckets: [10, 25, 40, 50, 70, 100, 150, 200, 500, 1000, 5000]
使用正则表达式转换指标
您可以为Dapr sidecar公开的每个指标设置正则表达式以“转换”其值。查看所有Dapr指标的列表。
规则的名称必须与被转换的指标名称匹配。以下示例显示了如何为指标dapr_runtime_service_invocation_req_sent_total
中的标签method
应用正则表达式:
apiVersion: dapr.io/v1alpha1
kind: Configuration
metadata:
name: daprConfig
spec:
metrics:
enabled: true
http:
increasedCardinality: true
rules:
- name: dapr_runtime_service_invocation_req_sent_total
labels:
- name: method
regex:
"orders/": "orders/.+"
应用此配置后,记录的带有method
标签的指标orders/a746dhsk293972nz
将被替换为orders/
。
使用正则表达式减少指标基数被认为是遗留的。我们鼓励所有用户将spec.metrics.http.increasedCardinality
设置为false
,这更易于配置并提供更好的性能。
参考
3 - 如何使用Grafana监控指标
可用的仪表板
grafana-system-services-dashboard.json
模板展示了Dapr系统组件的状态,包括dapr-operator、dapr-sidecar-injector、dapr-sentry和dapr-placement:

grafana-sidecar-dashboard.json
模板展示了Dapr sidecar 的状态,包括sidecar 的健康状况/资源使用情况、HTTP和gRPC的吞吐量/延迟、actor、mTLS等:

grafana-actor-dashboard.json
模板展示了Dapr sidecar 的状态、actor 调用的吞吐量/延迟、timer/reminder触发器和基于回合的并发性:

前提条件
在Kubernetes上设置
安装Grafana
添加Grafana Helm仓库:
helm repo add grafana https://grafana.github.io/helm-charts helm repo update
安装图表:
helm install grafana grafana/grafana -n dapr-monitoring
注意
如果您使用Minikube或希望在开发中禁用持久卷,可以使用以下命令禁用:
helm install grafana grafana/grafana -n dapr-monitoring --set persistence.enabled=false
获取Grafana登录的管理员密码:
kubectl get secret --namespace dapr-monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
您将看到一个类似于
cj3m0OfBNx8SLzUlTx91dEECgzRlYJb60D2evof1%
的密码。请去掉密码中的%
字符,得到cj3m0OfBNx8SLzUlTx91dEECgzRlYJb60D2evof1
作为管理员密码。检查Grafana是否在您的集群中运行:
kubectl get pods -n dapr-monitoring NAME READY STATUS RESTARTS AGE dapr-prom-kube-state-metrics-9849d6cc6-t94p8 1/1 Running 0 4m58s dapr-prom-prometheus-alertmanager-749cc46f6-9b5t8 2/2 Running 0 4m58s dapr-prom-prometheus-node-exporter-5jh8p 1/1 Running 0 4m58s dapr-prom-prometheus-node-exporter-88gbg 1/1 Running 0 4m58s dapr-prom-prometheus-node-exporter-bjp9f 1/1 Running 0 4m58s dapr-prom-prometheus-pushgateway-688665d597-h4xx2 1/1 Running 0 4m58s dapr-prom-prometheus-server-694fd8d7c-q5d59 2/2 Running 0 4m58s grafana-c49889cff-x56vj 1/1 Running 0 5m10s
配置Prometheus作为数据源
首先,您需要将Prometheus连接为Grafana的数据源。
端口转发到svc/grafana:
kubectl port-forward svc/grafana 8080:80 -n dapr-monitoring Forwarding from 127.0.0.1:8080 -> 3000 Forwarding from [::1]:8080 -> 3000 Handling connection for 8080 Handling connection for 8080
打开浏览器访问
http://localhost:8080
登录Grafana
- 用户名 =
admin
- 密码 = 上述密码
- 用户名 =
选择
Configuration
和Data Sources
添加Prometheus作为数据源。
获取您的Prometheus HTTP URL
Prometheus HTTP URL的格式为
http://<prometheus服务端点>.<命名空间>
首先通过运行以下命令获取Prometheus服务器端点:
kubectl get svc -n dapr-monitoring NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE dapr-prom-kube-state-metrics ClusterIP 10.0.174.177 <none> 8080/TCP 7d9h dapr-prom-prometheus-alertmanager ClusterIP 10.0.255.199 <none> 80/TCP 7d9h dapr-prom-prometheus-node-exporter ClusterIP None <none> 9100/TCP 7d9h dapr-prom-prometheus-pushgateway ClusterIP 10.0.190.59 <none> 9091/TCP 7d9h dapr-prom-prometheus-server ClusterIP 10.0.172.191 <none> 80/TCP 7d9h elasticsearch-master ClusterIP 10.0.36.146 <none> 9200/TCP,9300/TCP 7d10h elasticsearch-master-headless ClusterIP None <none> 9200/TCP,9300/TCP 7d10h grafana ClusterIP 10.0.15.229 <none> 80/TCP 5d5h kibana-kibana ClusterIP 10.0.188.224 <none> 5601/TCP 7d10h
在本指南中,服务器名称为
dapr-prom-prometheus-server
,命名空间为dapr-monitoring
,因此HTTP URL将是http://dapr-prom-prometheus-server.dapr-monitoring
。填写以下设置:
- 名称:
Dapr
- HTTP URL:
http://dapr-prom-prometheus-server.dapr-monitoring
- 默认:开启
- 跳过TLS验证:开启
- 这是保存和测试配置所必需的
- 名称:
点击
Save & Test
按钮以验证连接是否成功。
在Grafana中导入仪表板
在Grafana主屏幕的左上角,点击“+”选项,然后选择“Import”。
现在,您可以从发布资产中为您的Dapr版本导入Grafana仪表板模板:
找到您导入的仪表板并享受
提示
将鼠标悬停在每个图表描述角落的
i
上:
参考资料
示例
4 - 操作指南:配置 New Relic 以收集和分析指标
前提条件
- New Relic 账户,永久免费,每月提供 100 GB 的免费数据摄取,1 个免费完全访问用户,无限制的免费基本用户
背景信息
New Relic 支持 Prometheus 的 OpenMetrics 集成。
本文档将介绍如何在集群中安装该集成,建议使用 Helm chart 进行安装。
安装步骤
根据官方说明安装 Helm。
按照这些说明添加 New Relic 官方 Helm chart 仓库。
运行以下命令通过 Helm 安装 New Relic Logging Kubernetes 插件,并将 YOUR_LICENSE_KEY 替换为您的 New Relic 许可证密钥:
helm install nri-prometheus newrelic/nri-prometheus --set licenseKey=YOUR_LICENSE_KEY
查看指标
相关链接/参考
5 - 操作指南:配置 Azure Monitor 以搜索日志和收集指标
前提条件
使用配置映射启用 Prometheus 指标抓取
确认 Azure Monitor Agents (AMA) 正在运行。
$ kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE ... ama-logs-48kpv 2/2 Running 0 2d13h ama-logs-mx24c 2/2 Running 0 2d13h ama-logs-rs-f9bbb9898-vbt6k 1/1 Running 0 30h ama-logs-sm2mz 2/2 Running 0 2d13h ama-logs-z7p4c 2/2 Running 0 2d13h ...
使用配置映射启用 Prometheus 指标端点抓取。
可以使用 azm-config-map.yaml 来启用 Prometheus 指标端点抓取。
如果 Dapr 安装在不同的命名空间,需要修改
monitor_kubernetes_pod_namespaces
数组的值。例如:... prometheus-data-collection-settings: |- [prometheus_data_collection_settings.cluster] interval = "1m" monitor_kubernetes_pods = true monitor_kubernetes_pods_namespaces = ["dapr-system", "default"] [prometheus_data_collection_settings.node] interval = "1m" ...
应用配置映射:
kubectl apply -f ./azm-config.map.yaml
安装带有 JSON 格式日志的 Dapr
安装 Dapr 并启用 JSON 格式日志。
helm install dapr dapr/dapr --namespace dapr-system --set global.logAsJson=true
在 Dapr sidecar 中启用 JSON 格式日志并添加 Prometheus 注解。
注意:只有设置了 Prometheus 注解,Azure Monitor Agents (AMA) 才会发送指标。
在部署的 YAML 文件中添加
dapr.io/log-as-json: "true"
注解。示例:
apiVersion: apps/v1 kind: Deployment metadata: name: pythonapp namespace: default labels: app: python spec: replicas: 1 selector: matchLabels: app: python template: metadata: labels: app: python annotations: dapr.io/enabled: "true" dapr.io/app-id: "pythonapp" dapr.io/log-as-json: "true" prometheus.io/scrape: "true" prometheus.io/port: "9090" prometheus.io/path: "/" ...
使用 Azure Monitor 搜索指标和日志
在 Azure 门户中进入 Azure Monitor。
搜索 Dapr 日志。
下面是一个示例查询,用于解析 JSON 格式日志并查询来自 Dapr 系统进程的日志。
ContainerLog | extend parsed=parse_json(LogEntry) | project Time=todatetime(parsed['time']), app_id=parsed['app_id'], scope=parsed['scope'],level=parsed['level'], msg=parsed['msg'], type=parsed['type'], ver=parsed['ver'], instance=parsed['instance'] | where level != "" | sort by Time
搜索 指标。
这个查询,查询
process_resident_memory_bytes
Prometheus 指标用于 Dapr 系统进程并渲染时间图表。InsightsMetrics | where Namespace == "prometheus" and Name == "process_resident_memory_bytes" | extend tags=parse_json(Tags) | project TimeGenerated, Name, Val, app=tostring(tags['app']) | summarize memInBytes=percentile(Val, 99) by bin(TimeGenerated, 1m), app | where app startswith "dapr-" | render timechart