AWS.Lambda.Powertools.Metrics 1.7.1

前缀已保留
dotnet add package AWS.Lambda.Powertools.Metrics --version 1.7.1                
NuGet\Install-Package AWS.Lambda.Powertools.Metrics -Version 1.7.1                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的 Install-Package 版本。
<PackageReference Include="AWS.Lambda.Powertools.Metrics" Version="1.7.1" />                
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中以引用包。
paket add AWS.Lambda.Powertools.Metrics --version 1.7.1                
#r "nuget: AWS.Lambda.Powertools.Metrics, 1.7.1"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将其复制到交互工具或脚本的源代码中以引用包。
// Install AWS.Lambda.Powertools.Metrics as a Cake Addin
#addin nuget:?package=AWS.Lambda.Powertools.Metrics&version=1.7.1

// Install AWS.Lambda.Powertools.Metrics as a Cake Tool
#tool nuget:?package=AWS.Lambda.Powertools.Metrics&version=1.7.1                

AWS.Lambda.Powertools.Metrics

通过将指标记录到标准输出,异步创建自定义指标,遵循 Amazon CloudWatch 内嵌指标格式 (EMF)

这些指标可以通过 Amazon CloudWatch 控制台 进行可视化。

主要特性

  • 使用单个 CloudWatch EMF 对象(大型 JSON 块)聚合最多 100 个指标
  • 验证常见指标定义错误(指标单位、值、最大维度、最大指标等)
  • CloudWatch 服务异步创建指标,无需自定义堆栈
  • 上下文管理器用于创建不同维度的一次性指标

阅读文档

要查看功能列表的完整列表,请转到 docs.powertools.aws.dev/lambda/dotnet/core/metrics/

GitHub: https://github.com/aws-powertools/powertools-lambda-dotnet/

示例函数

在此处查看完整示例: https://github.com/aws-powertools/powertools-lambda-dotnet/tree/develop/examples/Metrics

public class Function
{
    /// <summary>
    /// Lambda Handler
    /// </summary>
    /// <param name="apigwProxyEvent">API Gateway Proxy event</param>
    /// <param name="context">AWS Lambda context</param>
    /// <returns>API Gateway Proxy response</returns>
    [Logging(LogEvent = true)]
    [Metrics(CaptureColdStart = true)]
    public async Task<APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest apigwProxyEvent,
        ILambdaContext context)
    {
        var requestContextRequestId = apigwProxyEvent.RequestContext.RequestId;

        Logger.LogInformation("Getting ip address from external service");

        // Add Metric to capture the amount of time 
        Metrics.PushSingleMetric(
            metricName: "CallingIP",
            value: 1,
            unit: MetricUnit.Count,
            service: "lambda-powertools-metrics-example",
            defaultDimensions: new Dictionary<string, string>
            {
                { "Metric Type", "Single" }
            });
        
        var watch = Stopwatch.StartNew();
        var location = await GetCallingIp();
        watch.Stop();
        
        Metrics.AddMetric("ElapsedExecutionTime", watch.ElapsedMilliseconds, MetricUnit.Milliseconds);
        Metrics.AddMetric("SuccessfulLocations", 1, MetricUnit.Count);
        
        var lookupRecord = new LookupRecord(lookupId: requestContextRequestId,
            greeting: "Hello Powertools for AWS Lambda (.NET)", ipAddress: location);

        try
        {
            Metrics.PushSingleMetric(
                metricName: "RecordsSaved",
                value: 1,
                unit: MetricUnit.Count,
                service: "lambda-powertools-metrics-example",
                defaultDimensions: new Dictionary<string, string>
                {
                    { "Metric Type", "Single" }
                });
            
            await SaveRecordInDynamo(lookupRecord);
            
            Metrics.AddMetric("SuccessfulWrites", 1, MetricUnit.Count);
            
            return new APIGatewayProxyResponse
            {
                Body = JsonSerializer.Serialize(lookupRecord),
                StatusCode = 200,
                Headers = new Dictionary<string, string> { { "Content-Type", "application/json" } }
            };
        }
        catch (Exception e)
        {
            Logger.LogError(e.Message);
            
            return new APIGatewayProxyResponse
            {
                Body = e.Message,
                StatusCode = 500,
                Headers = new Dictionary<string, string> { { "Content-Type", "application/json" } }
            };
        }
    }
}

示例输出

{
    "_aws": {
        "Timestamp": 1648181318790,
        "CloudWatchMetrics": [
            {
                "Namespace": "AWSLambdaPowertools",
                "Metrics": [
                    {
                        "Name": "CallingIP",
                        "Unit": "Count"
                    }
                ],
                "Dimensions": [
                    [
                        "Metric Type"
                    ],
                    [
                        "Service"
                    ]
                ]
            }
        ]
    },
    "Metric Type": "Single",
    "Service": "lambda-powertools-metrics-example",
    "CallingIP": 1
}
产品 兼容的和额外的计算目标框架版本。
.NET net6.0 兼容。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 兼容。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
兼容的目标框架
包含的目标框架(在包中)
了解更多关于目标框架.NET Standard的信息。

NuGet 包

此包没有被任何 NuGet 包使用。

GitHub 仓库 (4)

显示依赖 AWS.Lambda.Powertools.Metrics 的前 4 个最受欢迎的 GitHub 仓库

仓库 星标
aws/aws-lambda-dotnet
用于帮助 .NET Core 开发者开发 AWS Lambda 函数的库、示例和工具。
aws-samples/serverless-test-samples
该仓库旨在为实施服务器端无服务应用程序的全面测试套件提供建议。
aws-powertools/powertools-lambda-dotnet
工具集是一组开发工具,有助于实施无服务器最佳实践并提高开发效率。
aws-samples/serverless-dotnet-demo
版本 下载 最后更新
1.7.1 1,288 7/12/2024
1.7.0-alpha3 61 7/14/2024
1.7.0-alpha2 59 7/12/2024
1.7.0-alpha 1,664 2/21/2024
1.6.2 3,528 5/23/2024
1.6.1 15,593 3/10/2024
1.6.0 11,516 2/16/2024
1.5.3 26,302 11/16/2023
1.4.3 1,422 10/30/2023
1.4.2 6,715 9/19/2023
1.3.3 3,157 8/22/2023
1.3.2 4,483 6/29/2023
1.3.1 18,238 6/21/2023
1.2.0 10,662 5/5/2023
1.1.0 125 5/5/2023
1.0.1 14,310 4/6/2023
1.0.0 3,235 2/24/2023
0.0.3-preview 90 9/18/2023
0.0.2-preview 183 1/18/2023
0.0.1-preview.1 4,475 8/1/2022