gpt4 book ai didi

node.js - 无法在 Node.js Docker 容器中发送 Sentry 事件

转载 作者:行者123 更新时间:2023-12-04 19:27:23 27 4
gpt4 key购买 nike

Node.js 的 Sentry SDK 在 Docker 容器内运行时无法将事件发送到 Sentry 服务器。我对在我的 DigitalOcean Ubuntu 20.04 VPS 上运行容器化设置相当陌生,因此非常感谢任何帮助!
错误:

Sentry Logger [Log]: [Tracing] starting gql transaction - GET_REFRESH_TOKEN
Sentry Logger [Log]: [Tracing] Finishing gql transaction: GET_REFRESH_TOKEN.
Sentry Logger [Error]: Error while sending event: Error: connect ETIMEDOUT 34.120.195.249:443
IP 是来自 Sentry 的预期,可在此处找到: https://docs.sentry.io/product/security/ip-ranges/#event-ingestion .
相关设置:
Sentry 初始化
{
dsn: 'https://<secret>@<secret>.ingest.sentry.io/<secret>',
environment: 'Testing',
debug: true,
integrations: [ Http { name: 'Http', _breadcrumbs: true, _tracing: true } ],
tracesSampleRate: 1,
_metadata: {
sdk: {
name: 'sentry.javascript.node',
packages: [Array],
version: '6.13.3'
}
}
}
Docker 撰写文件
version: '3'
services:
frontend:
#...

api:
container_name: api-${COMPOSE_PROJECT_NAME}
restart: always
build:
context: ./api
dockerfile: Dockerfile.prod
env_file:
- .env
environment:
API_PORT: 3001
DB_HOST: db
DB_PORT: 5432
DATABASE_URL: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?schema=${DB_SCHEMA}
depends_on:
- db
ports:
- ${API_PORT_INTERNAL}:3001
volumes:
- ./api:/app
- /app/node_modules

db:
#...
API Dockerfile
FROM node:14 AS builder

# Create app directory
WORKDIR /app

COPY package*.json ./
COPY prisma ./prisma/

RUN npm install
RUN npx prisma generate

COPY . .

# Latest LTS version
FROM node:14

# Set default values for environment variables
ENV API_PORT=3001

COPY . .
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package*.json ./

# Bind port
EXPOSE 3001

# Start server
CMD ["npm", "start"]
如果需要更多详细信息,我将附加此列表。

最佳答案

经过更多调查后的自我回答:
事实证明,来自容器内的所有外部网络访问都被阻止了。 Sentry 的使用只是第一次有必要。
问题
在配置 VPS 防火墙 (UFW) 时,Docker 绕过了防火墙并暴露了不需要的端口。为了解决这个问题,我禁用了 iptables完全在 /etc/docker/daemon.json :

{
"iptables": false
}
这可以完成工作,但会阻止来自容器内的所有外部网络访问。
解决方案
解决方案的所有学分都转到@Feng his answer here回答以下问题: What is the best practice of docker + ufw under Ubuntu .
解决方案是删除 iptables = false选项并在 UFW 配置中正确修复它。您可以按照他的帖子中所述手动执行此操作,也可以像我一样使用他的工具: https://github.com/chaifeng/ufw-docker .
TL;DR
  • 删除 "iptables": false来自 /etc/docker/daemon.json
  • 使用 https://github.com/chaifeng/ufw-docker 正确设置 UFW + Docker
  • 关于node.js - 无法在 Node.js Docker 容器中发送 Sentry 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69801317/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com