在kubernetes中部署企业级ELK并使用其APM( 五 )
文章插图
Elastic APM 通过一个名为 APM-Server 的组件提供服务 , 用于收集并向 ElasticSearch 以及和应用一起运行的 agent 程序发送追踪数据 。
4.1、安装APM Server配置清单如下(apm-server.yaml):
---apiVersion: v1kind: ConfigMapmetadata:namespace: elasticname: apm-server-configlabels:app: apm-serverdata:apm-server.yml: |-apm-server:host: "0.0.0.0:8200"output.elasticsearch:hosts: ['${ELASTICSEARCH_HOST:elasticsearch}:${ELASTICSEARCH_PORT:9200}']username: ${ELASTICSEARCH_USERNAME}password: ${ELASTICSEARCH_PASSWORD}setup.kibana:host: '${KIBANA_HOST:kibana}:${KIBANA_PORT:5601}'---apiVersion: v1kind: Servicemetadata:namespace: elasticname: apm-serverlabels:app: apm-serverspec:ports:- port: 8200name: apm-serverselector:app: apm-server---apiVersion: apps/v1kind: Deploymentmetadata:namespace: elasticname: apm-serverlabels:app: apm-serverspec:replicas: 1selector:matchLabels:app: apm-servertemplate:metadata:labels:app: apm-serverspec:containers:- name: apm-serverimage: docker.elastic.co/apm/apm-server:7.8.0env:- name: ELASTICSEARCH_HOSTvalue: elasticsearch-client.elastic.svc.cluster.local- name: ELASTICSEARCH_PORTvalue: "9200"- name: ELASTICSEARCH_USERNAMEvalue: elastic- name: ELASTICSEARCH_PASSWORDvalueFrom:secretKeyRef:name: elasticsearch-pw-elastickey: password- name: KIBANA_HOSTvalue: kibana.elastic.svc.cluster.local- name: KIBANA_PORTvalue: "5601"ports:- containerPort: 8200name: apm-servervolumeMounts:- name: configmountPath: /usr/share/apm-server/apm-server.ymlreadOnly: truesubPath: apm-server.ymlvolumes:- name: configconfigMap:name: apm-server-config
然后执行kubectl apply -f apm-server.yaml , 查看其pod状态 , 当其成为running则代表启动成功 。
# kubectl get pod -n elasticNAMEREADYSTATUSRESTARTSAGEapm-server-667bfc5cff-7vqsd1/1Running091selasticsearch-client-f79cf4f7b-pbz9d1/1Running0177melasticsearch-data-01/1Running03helasticsearch-master-77d5d6c9db-gklgd1/1Running03h3melasticsearch-master-77d5d6c9db-gvhcb1/1Running03h3melasticsearch-master-77d5d6c9db-pflz61/1Running03h3mkibana-6b9947fccb-4vp291/1Running0150m
4.2、部署APM Agent这里以Java agent为例 。 接下来我们在示例应用程序 spring-boot-simple 上配置一个 Elastic APM Java agent 。 首先我们需要把 elastic-apm-agent-1.8.0.jar 这个 jar 包程序内置到应用容器中去 , 在构建镜像的 Dockerfile 文件中添加一行如下所示的命令直接下载该 JAR 包即可:
RUN wget -O /apm-agent.jar
完整的 Dockerfile 文件如下所示:
【在kubernetes中部署企业级ELK并使用其APM】FROM openjdk:8-jdk-alpineENV ELASTIC_APM_VERSION "1.8.0"RUN wget -O /apm-agent.jar $ELASTIC_APM_VERSION/elastic-apm-agent-$ELASTIC_APM_VERSION.jarCOPY target/spring-boot-simple.jar /app.jarCMD java -jar /app.jar
然后需要在示例应用中添加上如下依赖关系 , 这样我们就可以集成 open-tracing 的依赖库或者使用 Elastic APM API 手动检测 。
推荐阅读
- 向美国靠拢?瑞典绕开华为部署5G!华为已2次起诉
- 一个人完成AI开发和部署 百度飞桨实现铁路货车车号精准检测
- 华云大咖说|企业级统一存储解决方案
- 服务器|“按需定制”灵活部署,京东智联云“云服务”实力圈粉
- 最新,爱立信公布在英国部署5G计划!但仍与华为有差距?
- IPV6部署成果显著 中国电信助力加快网络强国建设
- 剑指微信,三大电信运营商开始规模化部署5G消息
- 基于在浪潮K1 Power部署Fabric网络的实践(一)
- BT选中爱立信为5G合作商 在伦敦等主要城市推进5G网络部署
- GPU|干货|基于 CPU 的深度学习推理部署优化实践