h2. CW Component
*Available as of Camel 2.11
The CW component allows messages to be sent to an [Amazon CloudWatch|http://aws.amazon.com/cloudwatch/] metrics. The implementation of the Amazon API is provided by the [AWS SDK|http://aws.amazon.com/sdkforjava/].
{info:title=Prerequisites}
You must have a valid Amazon Web Services developer account, and be signed up to use Amazon CloudWatch. More information are available at [Amazon CloudWatch|http://aws.amazon.com/cloudwatch/].
{info}
h3. URI Format
{code}
aws-cw://namespace[?options]
{code}
The metrics will be created if they don't already exists.
You can append query options to the URI in the following format, {{?options=value&option2=value&...}}
h3. URI Options
|| Name || Default Value || Context || Description ||
|amazonCwClient | {{null}} | Producer | Reference to a {{com.amazonaws.services.cloudwatch.AmazonCloudWatch}} in the [Registry]. |
|accessKey | {{null}} | Producer | Amazon AWS Access Key |
|secretKey | {{null}} | Producer | Amazon AWS Secret Key |
|name | {{null}} | Producer | The metric name which is used if the message header 'CamelAwsCwMetricName' is not present. |
|value | {{1.0}} | Producer | The metric value which is used if the message header 'CamelAwsCwMetricValue' is not present. |
|unit | {{Count}} | Producer | The metric unit which is used if the message header 'CamelAwsCwMetricUnit' is not present. |
|namespace | {{null}} | Producer | The metric namespace which is used if the message header 'CamelAwsCwMetricNamespace' is not present. |
|timestamp | {{null}} | Producer | The metric timestamp which is used if the message header 'CamelAwsCwMetricTimestamp' is not present. |
|amazonCwEndpoint | {{null}} | Producer | The region with which the AWS-CW client wants to work with. |
{info:title=Required CW component options}
You have to provide the amazonCwClient in the [Registry] or your accessKey and secretKey to access the [Amazon's CloudWatch|http://aws.amazon.com/cloudwatch/].
{info}
h3. Usage
h4. Message headers evaluated by the CW producer
{div:class=confluenceTableSmall}
|| Header || Type || Description ||
| {{CamelAwsCwMetricName}} | {{String}} | The Amazon CW metric name. |
| {{CamelAwsCwMetricValue}} | {{Double}} | The Amazon CW metric value. |
| {{CamelAwsCwMetricUnit}} | {{String}} | The Amazon CW metric unit. |
| {{CamelAwsCwMetricNamespace}} | {{String}} | The Amazon CW metric namespace. |
| {{CamelAwsCwMetricTimestamp}} | {{Date}} | The Amazon CW metric timestamp. |
| {{CamelAwsCwMetricDimensionName}} | {{String}} | *Camel 2.12:* The Amazon CW metric dimension name. |
| {{CamelAwsCwMetricDimensionValue}} | {{String}} | *Camel 2.12:* The Amazon CW metric dimension value. |
| {{CamelAwsCwMetricDimensions}} | {{Map<String, String>}} | *Camel 2.12:* A map of dimension names and dimension values. |
{div}
h4. Advanced AmazonCloudWatch configuration
If you need more control over the {{AmazonCloudWatch}} instance configuration you can create your own instance and refer to it from the URI:
{code}
from("direct:start")
.to("aws-cw://namepsace?amazonCwClient=#client");
{code}
The {{#client}} refers to a {{AmazonCloudWatch}} in the [Registry].
For example if your Camel Application is running behind a firewall:
{code}
AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("http://myProxyHost");
clientConfiguration.setProxyPort(8080);
AmazonCloudWatch client = new AmazonCloudWatchClient(awsCredentials, clientConfiguration);
registry.bind("client", client);
{code}
h3. Dependencies
Maven users will need to add the following dependency to their pom.xml.
{code:xml|title=pom.xml}
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-aws</artifactId>
<version>${camel-version}</version>
</dependency>
{code}
where {{$\{camel-version\}}} must be replaced by the actual version of Camel (2.10 or higher).
{include:Endpoint See Also}
- [AWS Component|AWS] |