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

Web metric provider #177

Closed
jessesuen opened this issue Oct 2, 2019 · 7 comments
Closed

Web metric provider #177

jessesuen opened this issue Oct 2, 2019 · 7 comments
Labels
analysis Related to Analysis CRD enhancement New feature or request M

Comments

@jessesuen
Copy link
Member

jessesuen commented Oct 2, 2019

Instead of prometheus, a generic webhook HTTP URL may be desired as a metric provider. This might look something like:

metrics:
- name: my-webhook
  provider:
    web:
      url: http://my-website/api/my-metric
      successCondition: result.data.values[1] > 99
@jessesuen jessesuen added analysis Related to Analysis CRD enhancement New feature or request labels Oct 2, 2019
@dthomson25
Copy link
Member

One question for the implementation is how can users include something like an API key with the webhook if that API key is a secret?

@jessesuen
Copy link
Member Author

I think it should, but not necessarily for MVP.

@jessesuen
Copy link
Member Author

jessesuen commented Oct 31, 2019

I don't think webhook is appropriate terminology for this. Webhooks are used to POST event information payloads to external sources. Whereas this is really just performing an HTTP GET against some URL and interpreting the payload.

I think this should be renamed to HTTP web metric provider.

Furthermore, we also want reserve the webhook feature/concept for events like when analysis fails, to perform some other HTTP request. (e.g. if analysis fails, then perform an HTTP post call to slack)

@jessesuen jessesuen changed the title Webhook metric provider HTTP metric provider Oct 31, 2019
@jessesuen jessesuen changed the title HTTP metric provider Web metric provider Nov 6, 2019
@allcentury
Copy link

allcentury commented Nov 22, 2019

@jessesuen - Amazing talk at kubecon this year, thanks again for showing off this great project. We would also be interested in this as we use Datadog as our metrics provider. I'd be happy to be involved in this implementation, especially if you already have ideas for it. Can you point me in the right direction to get this going?

@tomsanbear
Copy link
Contributor

Hey ArgoRollouts team, thanks for the awesome work so far.

I've just drafted a PR for implementing this, and would appreciate some feedback as this is a feature I'd love to get implemented as soon as possible. I read the feedback above and included some basic options for basic GET calls to a metrics Rest API.

@jessesuen
Copy link
Member Author

jessesuen commented Jan 22, 2020

Copying discussion from slack:
https://argoproj.slack.com/archives/CKTN88XFH/p1579644561025100

cabrinha:

Looks like the webmetric provider got implemented ... but is there any chance of datadog being implemented as a metric provider? #177

tomsanbear:

Implementing a more native ‘datadog’ metric provider wouldn’t be much work actually, if you use the prometheus as a reference for implementation.
Datadog APIs (for retrieving metrics) afaik also operate with GET calls, so the WebMetric implementation should be sufficient for a standin solution till someone contributes a native datadog integration.

jesse:

I agree with @tomsanbear that in theory, Data Dog should be now supported using Argo Rollouts with the imminent v0.7 release using the web metric provider, with the caveat that we currently don’t yet support referencing secrets as part of HTTP (auth) headers:
#372

If there are Data Dog specific considerations that aren’t supported using web metrics, I’d be curious to know what they are. This will inform us to on whether it warrants a Data Dog specific provider, or simply enhancements to the generic web metric provider.

For example, with the prometheus provider, there are some prometheus specific things to normalize the well known return values of Prometheus (vectors, scalars, etc.) in a way that could be interpreted by analysis.

@jessesuen
Copy link
Member Author

jessesuen commented Jan 22, 2020

Closing as implemented in v0.7. Opened: #372 and #371 as future enhancements

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
analysis Related to Analysis CRD enhancement New feature or request M
Projects
None yet
Development

No branches or pull requests

5 participants