gfc-aws-cloudwatch
![Join the chat at https://gitter.im/gilt/gfc](https://camo.githubusercontent.com/8780d0f0137f26a51ba5101c606dbe0ff96b53b58a56d7e02533310e5d7491e1/68747470733a2f2f6261646765732e6769747465722e696d2f67696c742f6766632e737667)
A thin Scala wrapper around AWS CloudWatch Java client. Part of the Gilt Foundation Classes.
Getting gfc-aws-cloudwatch
The latest version is 1.3.2, which is cross-built against Scala 2.11.x and 2.12.x
Add dependency to build.sbt:
libraryDependencies += "com.gilt" %% "gfc-aws-cloudwatch" % "1.3.2"
Basic usage
Quick metric aggregator example (less flexible than CW APIs but can save costs when you have high-frequency events):
val cwPublisher = CloudWatchMetricsPublisher.start(1 minute)
val SubServiceMetricBuilder = {
CloudWatchMetricDataAggregator.builder(cwPublisher).withMetricNamespace("TopLevelNamespace")
}
val Count = SubServiceMetricBuilder.withUnit(StandardUnit.Count)
val SuccessCount = Count.withMetricName("success")
def kind = new Dimension().withName("kind")
val SuccessfulCreate = SuccessCount.addDimensions(kind.withValue("create"))
val SuccessfulUpdate = SuccessCount.addDimensions(kind.withValue("update"))
val SuccessfulCreateFoo = SuccessfulCreate.enterMetricNamespace("foo").start()
val SuccessfulUpdateFoo = SuccessfulUpdate.enterMetricNamespace("foo").start()
val SuccessfulCreateBar = SuccessfulCreate.enterMetricNamespace("bar").start()
val SuccessfulUpdateBar = SuccessfulUpdate.enterMetricNamespace("bar").start()
..........
SuccessfulCreateFoo.increment()
SuccessfulUpdateFoo.increment()
.....
Quick example:
implicit
object FooMetricToCloudWatchMetricsData
extends ToCloudWatchMetricsData[Foo] {
override
def toMetricData( t: Foo
): Seq[MetricDatum] = {
// convert to metric data
}
}
// ..........
CloudWatchMetricsClient("TopLevelNamespace").
enterNamespace("foo"). // optionally enter more specific namespace
putMetricData(someFoo)
implicit
object FooMetricToCloudWatchLogsData
extends ToCloudWatchLogsData[Foo] {
override
def toLogEvents( t: Foo
): Seq[InputLogEvent] = {
// convert to log events
}
}
// ..........
CloudWatchLogsClient("TopLevelNamespace").
enterNamespace("foo"). // optionally enter more specific namespace
putLogData("streamName", someFoo)
License
Copyright 2019 Hudson's Bay Company
Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0