将弹性APM与Docker Server一起监视应用程序Node.js
#node #docker #elasticsearch #monitoring

介绍

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中应用的示例:

Exemplo de aplicação no 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应用程序有了更好的了解。请记住,性能监控是软件开发过程的重要组成部分,可以帮助识别问题并改善用户的体验。