The documentation you are viewing is for Dapr v1.12 which is an older version of Dapr. For up-to-date documentation, see the latest version.
操作方法:在 Kubernetes 中搭建 Fluentd、Elastic search 和 Kibana
先决条件
安装 Elasticsearch 和 Kibana
-
为监控工具创建 Kubernetes 命名空间
kubectl create namespace dapr-monitoring
-
添加 Elastic Search 的 helm 存储库
helm repo add elastic https://helm.elastic.co helm repo update
-
使用 Helm 安装 Elastic Search
默认情况下,Chart 必须在不同的节点上创建3个副本。 如果您的集群少于3个节点,请指定一个较低的副本数量。 例如,这会将副本数设置为 1:
helm install elasticsearch elastic/elasticsearch -n dapr-monitoring --set replicas=1
否则:
helm install elasticsearch elastic/elasticsearch -n dapr-monitoring
如果您正在使用 minikube 或者想要禁用持久化卷来开发,您可以使用以下命令执行此操作:
helm install elasticsearch elastic/elasticsearch -n dapr-monitoring --set persistence.enabled=false,replicas=1
-
安装 Kibana
helm install kibana elastic/kibana -n dapr-monitoring
-
确保 Elastic Search 和 Kibana 正在 Kubernetes 集群中运行。
$ kubectl get pods -n dapr-monitoring NAME READY STATUS RESTARTS AGE elasticsearch-master-0 1/1 Running 0 6m58s kibana-kibana-95bc54b89-zqdrk 1/1 Running 0 4m21s
安装 Fluentd
-
安装 config map 和 Fluentd 为守护进程集
下载这些配置文件:
注意:如果您的集群中已经运行了 Fluentd,请启用嵌套的 json 解析器,以便它可以解析来自 Dapr 的 JSON 格式日志。
将配置应用到您的集群:
kubectl apply -f ./fluentd-config-map.yaml kubectl apply -f ./fluentd-dapr-with-rbac.yaml
-
确保 Fluentd 作为守护进程集运行。 FluentD 实例的数量应该与集群节点的数量相同。 在下面的例子中,集群中只有一个节点。
$ kubectl get pods -n kube-system -w NAME READY STATUS RESTARTS AGE coredns-6955765f44-cxjxk 1/1 Running 0 4m41s coredns-6955765f44-jlskv 1/1 Running 0 4m41s etcd-m01 1/1 Running 0 4m48s fluentd-sdrld 1/1 Running 0 14s
使用 JSON 格式化日志安装 Dapr
-
使用 JSON 格式化日志启用 Dapr
helm repo add dapr https://dapr.github.io/helm-charts/ helm repo update helm install dapr dapr/dapr --namespace dapr-system --set global.logAsJson=true
-
在 Dapr sidecar 中启用 JSON 格式化日志
添加
dapr.io/log-as-json: "true"
annotation 到 deployment yaml。 例如: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" ...
搜索日志
注意: Elastic Search 需要一段时间才能索引 Fluentd 发送的日志。
-
从本地主机端口转发到
svc/kibana-kibana
$ kubectl port-forward svc/kibana-kibana 5601 -n dapr-monitoring Forwarding from 127.0.0.1:5601 -> 5601 Forwarding from [::1]:5601 -> 5601 Handling connection for 5601 Handling connection for 5601
-
浏览
http://localhost:5601
-
展开下拉菜单,然后单击 管理→堆栈管理
-
在堆栈管理页面上,选择 数据→索引管理 ,然后等待
dapr-*
被索引。 -
一旦
dapr-*
被索引后,单击”Kibana → 索引模式",然后单击"创建索引模式“按钮。 -
通过在 索引模式名称 字段中键入
dapr*
来定义新的索引模式,然后单击 下一步 按钮继续。 -
通过 “时间字段” 下拉列表中选择
@timestamp
选项,配置要与新索引模式一起使用的主要时间字段。 单击 创建索引模式 按钮以完成索引模式的创建。 -
应显示新创建的索引模式。 通过使用字段标签中的搜索框,确认感兴趣的字段,如
scope
、type
、app_id
、level
等正在被索引。注意:如果您找不到索引字段,请稍候。 搜索所有索引字段所需的时间取决于运行 elastic search 的数据量和资源大小。
-
要浏览索引数据,请展开下拉菜单,然后单击 分析→发现。
-
在搜索框中,键入查询字符串(如
scope:*
,然后单击” 刷新 “按钮以查看结果。注意:这可能需要很长时间。 返回所有结果所需的时间取决于运行 elastic search 的数据量和资源大小。
参考资料
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.