python - 基于具有自定义指标的 lambda cloudwatch 日志的 SNS 电子邮件通知
问题描述
我编写了一个 python 脚本,通过 cron 设置通过电子邮件获取实例信息并填充指标。使用以下代码,我可以在 cloudwatch 日志控制台中查看所有日志。然而,“维度”永远不会在 cloudwatch 事件部分创建,也不会触发任何邮件。
import boto3
import json
import logging
from datetime import datetime
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def post_metric(example_namespace, example_dimension_name, example_metric_name, example_dimension_value, example_metric_value):
cw_client = boto3.client("cloudwatch")
response = cw_client.put_metric_data(
Namespace=example_namespace,
MetricData=[
{
'MetricName': example_metric_name,
'Dimensions': [
{
'Name': example_dimension_name,
'Value': example_dimension_value
},
],
'Timestamp': datetime.datetime.now(),
'Value': int(example_metric_value)
},
]
)
def lambda_handler(event, context):
logger.info(event)
ec2_client = boto3.client("ec2")
sns_client = boto3.client("sns")
response = ec2_client.describe_instances(
Filters=[
{
'Name': 'tag:Name',
'Values': [
'jenkins-slave-*'
]
}
]
)['Reservations']
for reservation in response:
ec2_instances = reservation["Instances"]
for instance in ec2_instances:
myInstanceId = (instance['InstanceId'])
myInstanceState = (instance['State']['Name'])
myInstance = \
(
{
'InstanceId': (myInstanceId),
'InstanceState': (myInstanceState),
}
)
logger.info(json.dumps(myInstance)
post_metric("Jenkins", "ciname", "orphaned-slaves", myInstanceId, 1)
# Send message to SNS (Testing purpose)
SNS_TOPIC_ARN = 'arn:aws:sns:us-east-1:1234567890:example-instance-alarms'
sns_client.publish(
TopicArn = SNS_TOPIC_ARN,
Subject = 'Instance Info: ' + myInstanceId,
Message = 'Instance id: ' + myInstanceId
)
如果我在这里遗漏任何东西,谁能帮忙。提前致谢。
解决方案
推荐阅读
- android - Xamarin Forms 更新到 3.1 后,“LinkAssemblies”任务意外失败
- kubernetes - Kubernetes 中的 Ansible AWX RabbitMQ 容器无法使用 nxdomain 从 k8s 获取节点
- c# - Vector3.Slerp() 没有完成它必须做的事情就停止了
- ruby - watir 中的 HTML 块和内联元素文本选择
- r - 使用 lapply 过滤多个数据集
- python - Python numpy.where: TypeError: 只有整数标量数组可以转换为标量索引;在字典列表中
- php - 在 Codeigniter 中上传图片时出错
- css - 角度的递归引导面包屑
- django - 如何使用单独的应用程序文件夹运行本地 Django 站点?
- android - 启动完成不工作