我试图使用测微计向AWS cloudwatch发送度量,但我面临着AWS凭据的问题。
ERROR i.m.c.CloudWatchMeterRegistry - error sending metric data.
com.amazonaws.SdkClientException: Unable to load AWS credentials from any provider in the chain:
[com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper@b23c49d: Failed to connect to service endpoint: , com.amazonaws.auth.profile.ProfileCredentialsProvider@7edf67de: profile file cannot be null]
at com.amazonaws.auth.AWSCredentialsProviderChain.getCredentials(AWSCredentialsProviderChain.java:136)r
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.getCredentialsFromContext(AmazonHttpClient.java:1257)r
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.runBeforeRequestHandlers(AmazonHttpClient.java:833)r
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:783)r
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:770)r
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:744)r
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:704)r
at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:686)r at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:550)r
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:530)r at com.amazonaws.services.cloudwatch.AmazonCloudWatchClient.doInvoke(AmazonCloudWatchClient.java:2587)r
at com.amazonaws.services.cloudwatch.AmazonCloudWatchClient.invoke(AmazonCloudWatchClient.java:2554)r
at com.amazonaws.services.cloudwatch.AmazonCloudWatchClient.invoke(AmazonCloudWatchClient.java:2543)r
at com.amazonaws.services.cloudwatch.AmazonCloudWatchClient.executePutMetricData(AmazonCloudWatchClient.java:2297)r
at com.amazonaws.services.cloudwatch.AmazonCloudWatchAsyncClient$27.call(AmazonCloudWatchAsyncClient.java:1215)r
at com.amazonaws.services.cloudwatch.AmazonCloudWatchAsyncClient$27.call(AmazonCloudWatchAsyncClient.java:1209)r
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)r
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)r at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)r
at java.base/java.lang.Thread.run(Unknown Source)r
AmazonHttpClient正在尝试使用EC2ContainerCredentialsProviderWrapper或ProfileCredentialsProvider检索凭据,但在lambda环境中,凭据可以通过执行角色获得,而且我们还有特定的环境变量,称为AWS\u ACCESS\u KEY\u ID和AWS\u SECRET\u ACCESS\u KEY。
那么,有没有什么方法可以告诉测微计使用不同的AwsCredentials提供程序,例如,EnvironmentVariableCredentialsProvider?
当您将aws-java-sdk-sts
添加到您的依赖项(并且将其放在类路径上)时,将导致扩展的提供者链。然后应该使用执行角色。
对于maven:
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-sts</artifactId>
<version>1.12.52</version>
</dependency>
对于gradle:
implementation group: 'com.amazonaws', name: 'aws-java-sdk-sts', version: '1.12.52'
经过一些研究,我能够通过创建一个定制的CloudWatchMeterRegistry bean来发送指标,如下所示:
@Bean
@Primary
public CloudWatchMeterRegistry customCloudWatchMeterRegistry(
CloudWatchConfig config, Clock clock, AwsRegionProperties awsRegionProperties) {
AmazonCloudWatchAsync amazonCloudWatchAsync = AmazonCloudWatchAsyncClient
.asyncBuilder()
.withCredentials(new EnvironmentVariableCredentialsProvider())
.withRegion(awsRegionProperties.getStatic())
.build();
return new CloudWatchMeterRegistry(config, clock, amazonCloudWatchAsync);
}
如您所见,现在我可以配置自定义凭据提供程序,在我的示例中是EnvironmentVariableCredentialsProvider。
重要提示:bean的名称不应该是cloudWatchMeterRegistry,因为这个类是org。springframework。云aws。自动配置。指标。CloudWatchExportAutoConfiguration已经有一个使用该名称声明的bean。
您是否尝试过使用Configuration
文件来更改Bean
?
@Configuration
public class ManualAWSCredentialProviderConfiguration {
@Value("${AWS_ACCESS_KEY_ID}")
protected String accessKey;
@Value("${AWS_SECRET_ACCESS_KEY}")
protected String secretKey;
@Bean
@Primary
public AWSCredentialsProvider buildAWSCredentialsProviderManually() {
return new AWSStaticCredentialsProvider(
new BasicAWSCredentials(accessKey, secretKey)
);
}
}
我是测微计新手。有人能告诉我如何在spring boot中集中管理微服务指标吗? 在哪里可以获得influxdb中所有注册的服务信息、矩阵和存储的度量?
我想将Micrometer的默认执行器度量(JVM内存等)发送到AWS ElasticSearch实例,并在Kibana中可视化数据。 我想我的设置是正确的,但我没有得到数据在吉巴纳。 以下是我的配置: URL在应用程序中是硬编码的,我只是在这里删除了它。我使用的url来自ES域的AWS仪表板,其中列出: 但是使用这个配置,我还没有能够得到任何数据显示在Kibana。 其他注意事项:我知道Micr
关于带有@Counted和@ExceptionHandler的Java测微计的快速问题。 我有一个非常简单的@ExceptionHandler: 我认为这种组合非常有趣,因为它提供了异常发生的可见性。我们可以建立仪表板,警报等,相当酷。 不幸的是,当我查看生成的指标时,它类似于: 我对例外="没有"和结果="成功"感到很困惑 我可以问一下,这些值是如何首先进入度量的吗? 此外,如何将它们更改为更有
使用我将跟踪的请求大小的摘要 < li >请求总数 < li >总请求大小总计 < li >最大请求大小 我可以这样做 但是,我可以使用计数器和最大尺寸的量规来实现相同的效果 问题是,除了更短之外,总结比更长的解决方案有什么好处吗?
本文向大家介绍js仿微博实现统计字符和本地存储功能,包括了js仿微博实现统计字符和本地存储功能的使用技巧和注意事项,需要的朋友参考一下 随着移动设备和Web应用的普及,为了更好的便于用户的使用,对于网页或应用程序的用户体验要求就越来越高,确实是这样,作为用户更喜欢选择用户体验效果好的网站或应用程序,所以作为开发者的我们就需要开发出更人生化的应用程序了。 相信许多人有使用微博的经验,像微博这样的社交
我们有一个奇特的监控系统,我们的Spring启动服务将指标发布到带有千分尺的流入数据库中。有一个很好的grafana前端,但问题是我们现在正处于这样一个阶段,我们必须在其他服务中获得一些可用的指标来进行推理。整个系统是由我的前任建立的,我目前对它的理解几乎为零。我可以添加和发布新的指标,但我一生都不能从中得到任何东西。 下面是一个简短示例:我们的网关会为摄像机发布到它的每张图像递增计数器。计数器的