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


在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/1Running0150m4.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 手动检测 。
co.elastic.apmapm-agent-api${elastic-apm.version}