我正在向cloudwatch编写定制的SLA度量,同时向S3编写集成测试的日志。我生成一个时间戳,并将其放入度量和S3对象名中。当我读回度量值时,它会关闭几毫秒。例如,如果在155986547处显示失败,则相应的S3文件的名称可能是155986532。它可以是前几毫秒,也可以是后几毫秒,但通常是几毫秒。你知道吗
我以前有一个日期时间编码器,后来删除了它:
class DatetimeEncoder(json.JSONEncoder):
def default(self, obj):
try:
return super(DatetimeEncoder, obj).default(obj)
except TypeError:
return str(obj)
message_encoded = json.dumps(message, cls=DatetimeEncoder, separators=(",", ":"))
from datetime import datetime
import boto3
import json
def run_loop(args):
exec_result = exec_command(args["command"].split(" "))
result = exec_result["return_code"] == 0
now = int(datetime.today().timestamp())
message = {
"timestamp": now,
"succeeded": result,
"service": args["service"]
}
message_encoded = json.dumps(message)
arn = get_topic_arn(args["sns_topic_name"])
if result:
result_name="SUCCESS"
else:
result_name="FAILURE"
filename="%s/%s_%s" % (args["service"], now, result_name)
client = boto3.client('sns')
response = client.publish(
TopicArn=arn,
MessageStructure='json',
Message=json.dumps({'default': message_encoded})
)
s3 = boto3.client("s3")
s3.put_object(Body=exec_result["stdout"],
Bucket=args["s3_bucket_name"],
Key=filename)
在处理器lambda中,通过以下方式从sns数据初始化度量:
const sourceMetric = {
Timestamp: parseInt(message.timestamp),
StorageResolution: resolution,
Dimensions: dimensions,
Unit: "Count",
};
显然,我希望文件名和时间戳匹配,但它们不匹配。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐