介绍
Elastic APM是一种应用程序性能监视工具,可允许您收集和分析真实的时间性能数据。在本文中,让我们看看如何将弹性APM配置为Docker Server以监视应用程序Node.js.
pron© - 条件
在我们开始之前,您必须在母亲中安装以下内容:
- Docker
- Docker Compose
步骤1:创建一个应用程序node.js
在本文中,我们将创建一个简单的node.js应用程序。创建一个新的方向并创建一个名为Koud0的文件。将以下代码添加到文件:
const http = require('http');
const server = http.createServer((req, res) => {
if (req.url === '/health') {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ status: 'UP' }));
} else {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello, world!\n');
}
});
const port = process.env.PORT || 3000;
server.listen(port, () => {
console.log(Server running on port ${port});
});
这样,可以创建一个简单的HTTP服务器,该服务器响应“ Hello,World!”。当您访问服务器的根部时。当您访问Koud1时,服务器返回一个表示健康的JSON。
步骤2:创建一个Dockerfile
文件
下一步是创建一个Dockerfile
文件,将node.js应用程序打包到dockr coantment中。在项目的根方向上创建一个名为Dockerfile
的新文件,并添加以下包含:
FROM node:14-alpine
WORKDIR /app
COPY package.json .
COPY package-lock.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
此文件定义了使用node:14-alpine
映像作为基础的Docker映像。它在图像中定义了一个工作方向,安装了应用程序的依赖性,复制了coartment docker的应用程序的文件,并将展览显示为端口3000。最后,它将npm start
命令定义为标准命令,该命令应在控制时应执行什么开始。
步骤3:创建一个Koud7文件
下一步是创建一个docker-compose.yml
文件,以协调应用程序和Elastic APM的执行。在项目的根方向上创建一个名为docker-compose.yml
的新文件,并添加以下包含:
version: '3.8'
services:
app:
build: .
ports:
- '3000:3000'
environment:
- ELASTIC_APM_SERVICE_NAME=my-node-app
- ELASTIC_APM_SERVER_URL=http://apm-server:8200
- ELASTIC_APM_ENVIRONMENT=development
- ELASTIC_APM_LOG_LEVEL=debug
depends_on:
- apm-server
apm-server:
image: docker.elastic.co/apm/apm-server:
ports:
- '8200:8200'
- '1514:1514/udp'
environment:
- output.elasticsearch.hosts=[elasticsearch:9200]
- apm-server.secret_token=${ELASTIC_APM_SECRET_TOKEN}
volumes:
- './apm-server/config/apm-server.yml:/usr/share/apm-server/apm-server.yml:ro'
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.16.2
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- ES_JAVA_OPTS=-Xms256m -Xmx256m
- http.host=0.0.0.0
- transport.host=127.0.0.1
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- '9200:9200'
- '9300:9300'
volumes:
- esdata:/usr/share/elasticsearch/data
volumes:
esdata:
driver: local
此文件定义了trans服务:
-
app
:执行应用程序node.js. 的服务
-
apm-server
:执行Elastic APM服务器的服务 -
elasticsearch
:执行Elasticsearch的服务。
app
服务是根据Dockerfile
文件中定义的图像构建的,并展示到端口3000。它还定义了弹性APM库使用的一些环境变量,以连接到服务器弹性APM。
apm-server
服务是由docker.elastic.co/apm/apm-server
图像构建的。它具有8200和1514/UDP的门,用于与弹性APM库进行通信。它还定义了一个环境方差,该方差定义了弹性APM服务器用于身份验证的秘密密钥。
elasticsearch
服务由docker.elastic.co/elasticsearch/elasticsearch
图像构建。它具有9200和9300门,Elasticsearch使用它们与应用程序进行通信。它还定义了用于配置Elasticsearch的环境的一些变量。
步骤4:开始遏制
现在我们拥有所有必要的文件,我们可以启动遏制。为此,请在项目的根方向上执行以下命令:
docker-compose up -d
此命令开始在koud7文件中定义的包含包含的包含。您应该在启动时看到每个封存的日志消息。
步骤5:确保弹性APM正在工作
要查看Elastic APM是否正在工作,请在http://localhost:5601
浏览器中打开Kibana。在左导航面板中,单击“ APM”以访问性能监视页面。
如果一切正常,则应查看“ APM”页面中列出的应用程序Node.js。单击应用程序以查看有关应用程序性能的更多信息。
APM中应用的示例:
包括£o
在本文中,我们看到了如何使用弹性APM在Docker环境中监视应用程序Node.js。 Elastic APM是一种强大的工具,可提供有关其应用程序性能的详细见解,使您可以识别问题并优化性能。
我们开始创建一个dockerfile文件,该文件定义了应用程序node.js的执行环境,并在应用程序后添加了弹性库。然后,我们创建了一个docker-compose.yml文件,该文件定义了node.js应用程序,Elastic APM服务器和elasticsearch。
启动遏制时,我们可以通过访问Kibana并检查我们的应用程序node.js是否在“ APM”页面中列出了弹性APM是否正在工作。由此,我们可以使用Elastic APM监视应用程序的性能并确定可能的瓶颈或性能问题。
我们希望这篇文章已经对您而言,现在您对如何使用弹性APM在Docker环境中监视Node.js应用程序有了更好的了解。请记住,性能监控是软件开发过程的重要组成部分,可以帮助识别问题并改善用户的体验。