操作指南:在 Kubernetes 中设置 Fluentd、Elastic search 和 Kibana
前提条件
安装 Elastic search 和 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 --version 7.17.3 -n dapr-monitoring --set replicas=1
否则:
helm install elasticsearch elastic/elasticsearch --version 7.17.3 -n dapr-monitoring
如果您使用 minikube 或仅在开发过程中想禁用持久卷,可以使用以下命令:
helm install elasticsearch elastic/elasticsearch --version 7.17.3 -n dapr-monitoring --set persistence.enabled=false,replicas=1
-
安装 Kibana
helm install kibana elastic/kibana --version 7.17.3 -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
-
作为 daemonset 安装配置映射和 Fluentd
下载这些配置文件:
注意:如果您的集群中已经运行了 Fluentd,请启用嵌套的 JSON 解析器,以便它可以解析来自 Dapr 的 JSON 格式日志。
将配置应用到您的集群:
kubectl apply -f ./fluentd-config-map.yaml kubectl apply -f ./fluentd-dapr-with-rbac.yaml
-
确保 Fluentd 作为 daemonset 运行。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
安装 Dapr 并启用 JSON 格式日志
-
安装 Dapr 并启用 JSON 格式日志
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 格式日志
在您的部署 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" ...
搜索日志
注意: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
-
展开下拉菜单并点击 Management → Stack Management
-
在 Stack Management 页面上,选择 Data → Index Management 并等待
dapr-*
被索引。 -
一旦
dapr-*
被索引,点击 Kibana → Index Patterns 然后点击 Create index pattern 按钮。 -
通过在 Index Pattern name 字段中输入
dapr*
来定义一个新的索引模式,然后点击 Next step 按钮继续。 -
通过从 Time field 下拉菜单中选择
@timestamp
选项来配置新索引模式的主要时间字段。点击 Create index pattern 按钮完成索引模式的创建。 -
应显示新创建的索引模式。通过在 Fields 标签中的搜索框中使用搜索,确认感兴趣的字段如
scope
、type
、app_id
、level
等是否被索引。注意:如果找不到索引字段,请稍等。搜索所有索引字段所需的时间取决于数据量和 Elastic Search 运行的资源大小。
-
要探索索引的数据,展开下拉菜单并点击 Analytics → Discover。
-
在搜索框中输入查询字符串如
scope:*
并点击 Refresh 按钮查看结果。注意:这可能需要很长时间。返回所有结果所需的时间取决于数据量和 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.