Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Pull metrics from multiple AWS CloudWatch namespaces #9386

Merged
merged 8 commits into from
Aug 10, 2021

Conversation

akrantz01
Copy link
Contributor

Required for all PRs:

  • Updated associated README.md.
  • Wrote appropriate unit tests.

resolves #8233

Added the ability to pull metrics from multiple namespaces for the cloudwatch input.

Adds the field namespaces to specify the namespaces to pull from. The change is backward compatible with the previous versions using the namespace field by appending the value of namespace to namespaces.

@telegraf-tiger telegraf-tiger bot added the feat Improvement on an existing feature such as adding a new setting/mode to an existing plugin label Jun 16, 2021
@Doron-Bargo
Copy link
Contributor

Hi @akrantz01 , any update on this PR?
We are really waiting for this update :)

@sspaink sspaink changed the title Pull metrics from multiple AWS CloudWatch namespaces feat: Pull metrics from multiple AWS CloudWatch namespaces Aug 9, 2021
@sspaink sspaink added the area/aws AWS plugins including cloudwatch, ecs, kinesis label Aug 9, 2021
Copy link
Contributor

@sspaink sspaink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for working on this! Added some comments.

plugins/inputs/cloudwatch/README.md Show resolved Hide resolved
plugins/inputs/cloudwatch/cloudwatch.go Show resolved Hide resolved
plugins/inputs/cloudwatch/cloudwatch.go Show resolved Hide resolved
plugins/inputs/cloudwatch/cloudwatch_test.go Outdated Show resolved Hide resolved
Copy link
Contributor

@sspaink sspaink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm!

@sspaink sspaink added the ready for final review This pull request has been reviewed and/or tested by multiple users and is ready for a final review. label Aug 9, 2021
@sspaink sspaink merged commit 83bd10b into influxdata:master Aug 10, 2021
phemmer added a commit to phemmer/telegraf that referenced this pull request Aug 13, 2021
* origin/master: (183 commits)
  fix: CrateDB replace dots in tag keys with underscores (influxdata#9566)
  feat: Pull metrics from multiple AWS CloudWatch namespaces (influxdata#9386)
  fix: improve Clickhouse corner cases for empty recordset in aggregation queries, fix dictionaries behavior (influxdata#9401)
  fix(opcua): clean client on disconnect so that connect works cleanly (influxdata#9583)
  fix: Refactor ec2 init for config-api (influxdata#9576)
  fix: sort logs by timestamp before writing to Loki (influxdata#9571)
  fix: muting tests for udp_listener (influxdata#9578)
  fix: Do not return on disconnect to avoid breaking reconnect (influxdata#9524)
  fix: Fixing k8s nodes and pods parsing error (influxdata#9581)
  feat: OpenTelemetry output plugin (influxdata#9228)
  feat: Support AWS Web Identity Provider (influxdata#9411)
  fix: upgraded sensu/go to v2.9.0 (influxdata#9577)
  fix: Normalize unix socket path (influxdata#9554)
  docs: fix aws ec2 readme inconsistency (influxdata#9567)
  feat: Modbus Rtu over tcp enhancement (influxdata#9570)
  docs: information on new conventional commit format (influxdata#9573)
  docs: Add logo (influxdata#9574)
  docs: Adding links to net_irtt and dht_sensor external plugins (influxdata#9569)
  Upgrade hashicorp/consul/api to 1.9.1 (influxdata#9565)
  Update vmware/govmomi to v0.26.0 (influxdata#9552)
  Do not skip good quality nodes after a bad quality node is encountered (influxdata#9550)
  fix test so it hits a fake service (influxdata#9564)
  Update changelog
  Fix procstat plugin README to match sample config (influxdata#9553)
  Fix metrics reported as written but not actually written  (influxdata#9526)
  Prevent segfault in persistent volume claims (influxdata#9549)
  Update procstat to support cgroup globs & include systemd unit children (Copy of influxdata#7890) (influxdata#9488)
  Fix attempt to connect to an empty list of servers. (influxdata#9503)
  Fix handling bool in sql input plugin (influxdata#9540)
  Suricata alerts (influxdata#9322)
  Linter fixes for plugins/inputs/[fg]* (influxdata#9387)
  For Prometheus Input add ability to query Consul Service catalog (influxdata#5464)
  Support Landing page on Prometheus landing page (influxdata#8641)
  [Docs] Clarify tagging behavior (influxdata#9461)
  Change the timeout from all queries to per query (influxdata#9471)
  Attach the pod labels to the `kubernetes_pod_volume` & `kubernetes_pod_network` metrics. (influxdata#9438)
  feat(http_listener_v2): allows multiple paths and add path_tag (influxdata#9529)
  Bug Fix Snmp empty metric name (influxdata#9519)
  Worktable workfile stats (influxdata#8587)
  Update Go to v1.16.6 (influxdata#9542)
  ...
@klanuza
Copy link

klanuza commented Aug 16, 2021

Hi @akrantz01 @sspaink

Encountered the error [inputs.cloudwatch] Error in plugin: InvalidParameterValue: Parameters do not match original request parameters while testing git: master eb41218 using namespaces = ["AWS/EC2","AWS/ELB"]

See output.txt for inputs.cloudwatch config and debug logging.

@klanuza
Copy link

klanuza commented Aug 18, 2021

Hello, are there any updates on this? When we tested the nightly build (master was on eb41218 then - after the PR was merged) pulling metrics for multiple AWS CloudWatch namespaces was still NOT allowed.

@akrantz01
Copy link
Contributor Author

@klanuza I'm not sure what's going wrong. However, I cannot seem to reproduce your issue with what you've provided.

When I was testing this, I used data from CloudWatch custom metrics inserted via another telegraf instance since I don't have anything running on AWS I can get metrics from. There could be some issue with pulling a certain way from AWS-generated metrics, but I'm not sure, and I don't have a good way to test it either.

@Doron-Bargo
Copy link
Contributor

Doron-Bargo commented Aug 30, 2021

@akrantz01 i managed to find the issue
In function fetchNamespaceMetrics the aws client is asking for ListMetrics
For the first namespace it is running ok, but from the second namespace it failed with this error
InvalidParameterValue: Parameters do not match original request parameters
The problem is with the loop as the next token is used for pagination and when moving to the next namespace it try to take the metrics with the old position of the last request

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/aws AWS plugins including cloudwatch, ecs, kinesis feat Improvement on an existing feature such as adding a new setting/mode to an existing plugin ready for final review This pull request has been reviewed and/or tested by multiple users and is ready for a final review.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Cloudwatch plugin multiple namespaces
4 participants