在kubernetes中部署企业级ELK并使用其APM( 四 )

注意需要将 elastic 用户名和密码也添加到 Kubernetes 的 Secret 对象中:
# kubectl create secret generic elasticsearch-pw-elastic \>-n elastic \>--from-literal password=BA72sAEEY1Bphgruxlcwsecret/elasticsearch-pw-elastic created2.5、验证集群状态部署完成后我们需要验证以下集群状态是否正常 。 使用如下命令:
# kubectl exec -it -n elastic elasticsearch-client-f79cf4f7b-pbz9d -- curl -u elastic:BA72sAEEY1Bphgruxlcw {"cluster_name" : "elasticsearch","status" : "green","timed_out" : false,"number_of_nodes" : 3,"number_of_data_nodes" : 1,"active_primary_shards" : 2,"active_shards" : 2,"relocating_shards" : 0,"initializing_shards" : 0,"unassigned_shards" : 0,"delayed_unassigned_shards" : 0,"number_of_pending_tasks" : 0,"number_of_in_flight_fetch" : 0,"task_max_waiting_in_queue_millis" : 0,"active_shards_percent_as_number" : 100.0}我们可以看到集群状态是green , 表示正常 。
三、部署KibanaKibana是一个简单的可视化ES数据的工具 , 其yaml清单如下:
---apiVersion: v1kind: ConfigMapmetadata:namespace: elasticname: kibana-configlabels:app: kibanadata:kibana.yml: |-server.host: 0.0.0.0elasticsearch:hosts: ${ELASTICSEARCH_HOSTS}username: ${ELASTICSEARCH_USER}password: ${ELASTICSEARCH_PASSWORD}---apiVersion: v1kind: Servicemetadata:namespace: elasticname: kibanalabels:app: kibanaspec:ports:- port: 5601name: webinterfaceselector:app: kibana---apiVersion: networking.k8s.io/v1beta1kind: Ingressmetadata:annotations:prometheus.io/http-probe: 'true'prometheus.io/scrape: 'true'name: kibananamespace: elasticspec:rules:- host: kibana.coolops.cnhttp:paths:- backend:serviceName: kibanaservicePort: 5601path: /---apiVersion: apps/v1kind: Deploymentmetadata:namespace: elasticname: kibanalabels:app: kibanaspec:selector:matchLabels:app: kibanatemplate:metadata:labels:app: kibanaspec:containers:- name: kibanaimage: docker.elastic.co/kibana/kibana:7.8.0ports:- containerPort: 5601name: webinterfaceenv:- name: ELASTICSEARCH_HOSTSvalue: ""- name: ELASTICSEARCH_USERvalue: "elastic"- name: ELASTICSEARCH_PASSWORDvalueFrom:secretKeyRef:name: elasticsearch-pw-elastickey: passwordvolumeMounts:- name: configmountPath: /usr/share/kibana/config/kibana.ymlreadOnly: truesubPath: kibana.ymlvolumes:- name: configconfigMap:name: kibana-config---然后执行kubectl apply -f kibana.yaml创建kibana , 查看pod的状态是否为running 。
# kubectl get pod -n elastic NAMEREADYSTATUSRESTARTSAGEelasticsearch-client-f79cf4f7b-pbz9d1/1Running030melasticsearch-data-01/1Running033melasticsearch-master-77d5d6c9db-gklgd1/1Running036melasticsearch-master-77d5d6c9db-gvhcb1/1Running036melasticsearch-master-77d5d6c9db-pflz61/1Running036mkibana-6b9947fccb-4vp291/1Running03m51s如下图所示 , 使用上面我们创建的 Secret 对象的 elastic 用户和生成的密码即可登录:
在kubernetes中部署企业级ELK并使用其APM文章插图
登录成功后即可进入以下界面 。
在kubernetes中部署企业级ELK并使用其APM文章插图
四、部署Elastic APMElastic APM 是 Elastic Stack 上用于应用性能监控的工具 , 它允许我们通过收集传入请求、数据库查询、缓存调用等方式来实时监控应用性能 。 这可以让我们更加轻松快速定位性能问题 。 Elastic APM 是兼容 OpenTracing 的 , 所以我们可以使用大量现有的库来跟踪应用程序性能 。 比如我们可以在一个分布式环境(微服务架构)中跟踪一个请求 , 并轻松找到可能潜在的性能瓶颈 。


推荐阅读