如何在docker-compose配置文件中添加并配置APM Server服务
问题解答
能否在现有docker-compose.yml中配置APM Server?
完全可以,直接在原有services配置块中新增APM Server的服务定义即可,无需单独拆分编排文件。
你提交的配置问题说明
你的配置整体思路正确,但是有2处必须修改的错误,以及若干可优化项:
必须修正的问题
- Kibana服务的环境变量配置错误:
- 当前配置的
xpack.apm.enabled=false需要改为xpack.apm.enabled=true,否则Kibana不会加载APM功能模块,无法查看链路监控数据 - 当前配置的
ELASTICSEARCH_URL=http://localhost:9200需要改为ELASTICSEARCH_URL=http://elasticsearch:9200,同Docker网络下的容器互相调用需要使用服务名通信,写localhost会导致Kibana无法连接Elasticsearch服务
- 当前配置的
可选优化项(提升服务稳定性)
- 给APM Server新增
restart: always配置,避免Elasticsearch、Kibana启动过慢导致APM Server初始化失败后不会自动重启 - 可以给Elasticsearch、Kibana新增健康检查规则,确保APM Server在依赖服务完全就绪后再启动
修正后的完整docker-compose.yml配置
version: '3.8' services: apm-server: container_name: apm-server image: docker.elastic.co/apm/apm-server:7.13.0 ports: - 8200:8200 depends_on: - elasticsearch - kibana restart: always networks: - elastic command: > apm-server -e -E apm-server.rum.enabled=true -E setup.kibana.host=kibana:5601 -E setup.template.settings.index.number_of_replicas=0 -E apm-server.kibana.enabled=true -E apm-server.kibana.host=kibana:5601 -E output.elasticsearch.hosts=["elasticsearch:9200"] elasticsearch: container_name: elasticsearch image: docker.elastic.co/elasticsearch/elasticsearch:7.13.0 ports: - 9200:9200 volumes: - elasticsearch-data:/usr/share/elasticsearch/data environment: - xpack.monitoring.enabled=true - xpack.watcher.enabled=false - "ES_JAVA_OPTS=-Xms512m -Xmx512m" - discovery.type=single-node networks: - elastic kibana: container_name: kibana image: docker.elastic.co/kibana/kibana:7.13.0 ports: - 5601:5601 depends_on: - elasticsearch environment: - ELASTICSEARCH_URL=http://elasticsearch:9200 - xpack.apm.enabled=true networks: - elastic networks: elastic: driver: bridge volumes: elasticsearch-data:
内容的提问来源于stack exchange,提问作者NoviceCoder
相关产品推荐
相关产品推荐

