我正在本地运行Xray守护进程,我希望通过设置守护进程AWSXRay.setDaemonAddress('127.0.0.1:2000')将数据从我的停靠程序中推送到Xray。
通过在守护进程容器中运行cat segment.txt > /dev/udp/127.0.0.1/2000来验证守护进程的安装,如何在容器外部运行这个守护进程?
2020-05-11T04:39:45Z [Debug] processor: sending partial batch
2020-05-11T04:39:45Z [Debug] processor: segment batch size: 1. capacity: 50
2020-05-11T04:39:46Z [Info] Successfully sent batch of 1 segments (1.653 seconds)
2020-05-11T04:40:19Z [Debug] Send 1 telemetry record(s)创建了一个名为Mynetwork的新网络,并将容器(app和守护进程)连接到该网络。甚至能够击穿他们
docker exec -ti Myapp ping daemon尝试将IP地址、停靠器ipv4地址(172.21.0.2)和容器名称作为AWSXRay.setDaemonAddress中主机的xray-守护进程(‘host :2000’),但是没有发生任何错误,守护进程日志中也没有任何成功。
可以在应用程序日志中看到已配置的消息,但似乎没有发生链接。
2020-05-11 11:19:49.895 +00:00 [INFO] Configured daemon address to 127.0.0.1:2000有什么建议可以访问我的应用程序中的守护进程吗?
以下是我的应用程序日志,我的应用程序是一个被篡改的节点应用程序。
2020-05-12 02:48:33.359 +00:00 [DEBUG] Starting the AWS X-Ray SDK in automatic mode (default).
2020-05-12 02:48:33.364 +00:00 [DEBUG] AWS_XRAY_CONTEXT_MISSING is set. Configured context missing strategy to LOG_ERROR.
2020-05-12 02:48:33.389 +00:00 [INFO] Using custom sampling rules file: src/utils/awsXrayRule.json
2020-05-12 02:48:33.394 +00:00 [INFO] Configured daemon address to 127.0.0.1:2000.
app listening on port 3000!
2020-05-12 02:49:29.342 +00:00 [DEBUG] Starting segment: MY_NODE_APP
2020-05-12 02:49:29.352 +00:00 [DEBUG] Segment sent: {"trace_id:"1-5eba0eb9-8fda8d30ca36e717ae849f68","id":"a96cdf725443768e"}
2020-05-12 02:49:29.352 +00:00 [DEBUG] UDP message sent: {"trace_id":"1-5eba0eb9-8fda8d30ca36e717ae849f68","id":"a96cdf725443768e","start_time":1589251769.342,"name":"MY_NODE_APP","service":{"runtime":"node","runtime_version":"v13.10.1","version":"1.0.0","name":"my-node-app"},"aws":{"xray":{"sdk":"X-Ray for Node.js","sdk_version":"3.0.0","package":"aws-xray-sdk"}},"annotations":{"key1":"value2"},"end_time":1589251769.346}samplingrules.json:
{
"version": 1,
"default": {
"fixed_target": 1,
"rate": 1.0
}
}发布于 2020-05-11 17:30:17
您介意张贴您的应用程序日志吗?我认为要调试这一点,我们需要确保运行在一个容器中的应用程序正在发送数据(以便我们可以确保正确地检测应用程序),如果应用程序没有正确地发送数据,那么您将在应用程序日志中看到这一点(https://github.com/aws/aws-xray-sdk-java/blob/master/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/emitters/UDPEmitter.java#L84)。
发布于 2021-04-29 17:30:43
与this question类似,它可能无法连接守护进程,因为在Docker容器中运行的应用程序无法连接到主机上本地运行的X射线守护进程。
您可能会发现this answer很有用。有一个简单的Docker平台示例,它在单独的容器中并行运行守护进程和应用程序。它使用坞-组合网络和AWS_XRAY_DAEMON_ADDRESS环境变量将app容器连接到守护进程。
https://stackoverflow.com/questions/61728733
复制相似问题