上一节我们定位到了是payment模块的错误率过高。本节我们将定位到具体的原因,并修复它
在Traces & Spans
部分,选择一个带Error的trace id并点进去:
这时会包括trace的详细信息,比如每个span所花的时间,这里我们看到/payment
接口是报错的:
复制上面的trace id,在log events
中查询这个trace id,点击Refresh
进行查询:
在查询出来的日志中,里面包括了具体报错的信息,以及哪一行报的错(paymentService.py第77行):
进入到paymentService
第77行相关的部分,我们看到了代码的逻辑如下:
它会生成一个0-99的随机数,并与ERROR_RATE_THRESHOLD
比较,如果小于它就会报错。而继续往上看,在第23行ERROR_RATE_THRESHOLD
这个值是100,所以应用会永远报错。我们将ERROR_RATE_THRESHOLD
改成0。
重新构建应用镜像,将新版本的镜像打上fixed
标签:
aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com
export repo_name=payment-service
cd $HOME/environment/observability-with-amazon-opensearch/sample-apps/08-paymentService/
docker build -t ${repo_name}:fixed .
docker tag ${repo_name}:fixed ${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${repo_name}:fixed
docker push ${ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com/${repo_name}:fixed
重新部署镜像:
sed -i -e "s|amazonaws\.com\/payment\-service|amazonaws\.com\/payment\-service\:fixed|g" ${HOME}/environment/observability-with-amazon-opensearch/sample-apps/08-paymentService/kubernetes/01-deployment.yaml
kubectl apply -f ${HOME}/environment/observability-with-amazon-opensearch/sample-apps/08-paymentService/kubernetes/
上面的命令中将原来deployment中的镜像地址进行了替换:
替换后:
在前端页面重新模拟几条购买记录:
在OpenSearch Dashboards中,查看最近一段时间的service错误率,确认payment服务已被修复: