AWS CloudWatch Log Insight 和 AWS Athena 都可用于日志分析,但在功能和使用方式上有一些不同。
AWS CloudWatch Log Insight 可以帮助您分析和解决应用程序和系统问题,它可以结合使用 Metric Filter 和 Query 语言,快速搜索、过滤和分析日志数据。作为一项托管服务,您可以非常方便地使用 AWS 管理控制台来管理日志和执行分析操作。
以下是一个使用 AWS CloudWatch Logs 和 CloudWatch Log Insight 的 Python 代码示例:
import boto3
# Create CloudWatch client
cloudwatch_logs = boto3.client('logs')
# Define Metric Filter
log_group_name = 'my-log-group'
filter_name = 'my-metric-filter'
filter_pattern = '[ip, user_agent, response_code, bytes_sent, time_taken]'
metric_name = 'MyMetric'
metric_namespace = 'MyNamespace'
metric_value = '1'
# Create Metric Filter
response = cloudwatch_logs.put_metric_filter(
logGroupName=log_group_name,
filterName=filter_name,
filterPattern=filter_pattern,
metricTransformations=[
{
'metricName': metric_name,
'metricNamespace': metric_namespace,
'metricValue': metric_value
},
]
)
# Create CloudWatch Dashboard
dashboard_name = 'MyDashboard'
dashboard_body = '''
{
"widgets": [
{
"type": "metric",
"x": 0,
"y": 0,
"width": 6,
"height": 6,
"properties": {
"metrics": [
[
"MyNamespace",
"MyMetric",
"log_group",
"my-log-group",
"MetricFilterName",
"my-metric-filter"
]
],
"period": 300,
"stat": "Sum",
"region": "us-east-1",
"title": "My Dashboard"
}
}
]
}
'''
response = cloudwatch_logs.put_dashboard(
dashboardName=dashboard_name,
dashboardBody=dashboard_body
)
# Query Log Insights
query = 'fields @timestamp, @message | sort @timestamp desc | limit 10'
response = cloudwatch_logs.start_query(
logGroupName=log_group_name,
startTime=int((time.time() - 3600) * 1000),
endTime=int(time.time() * 1000),
queryString=query,
limit=10
)
query_id = response['queryId']
# Get Query