From a1e59659493361e31204784a8ae37f0422f53990 Mon Sep 17 00:00:00 2001 From: Mariana Dima Date: Tue, 14 Jul 2020 09:47:23 +0200 Subject: [PATCH] Add azure billing metricset (#19207) (#19860) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * work on metricset vendor work run fix change fix fix dependencies work fix * remove vendor * remove unused * work on the billing * make notice * work on fields * build dashboards * make notice * review * make sure * is set to auto in gitattributes * test * update CLRF to LF * update CLRF to LF * notice * notice * Fix notice * update visualization Co-authored-by: Martijn Laarman Co-authored-by: Carlos PĂ©rez-Aradros Herce (cherry picked from commit e69eb975e833694313a14c93e7ee9a67cc835e42) --- NOTICE.txt | 85 ++ go.mod | 2 + go.sum | 4 + metricbeat/docs/fields.asciidoc | 117 +++ .../metricbeat-azure-billing-overview.png | Bin 0 -> 244413 bytes metricbeat/docs/modules/azure.asciidoc | 25 +- .../docs/modules/azure/billing.asciidoc | 23 + metricbeat/docs/modules_list.asciidoc | 3 +- x-pack/metricbeat/include/list.go | 1 + x-pack/metricbeat/metricbeat.reference.yml | 10 + .../module/azure/_meta/config.reference.yml | 10 + .../metricbeat/module/azure/_meta/config.yml | 11 + .../module/azure/_meta/docs.asciidoc | 11 +- .../Metricbeat-azure-billing-overview.json | 760 ++++++++++++++++++ .../module/azure/billing/_meta/data.json | 39 + .../module/azure/billing/_meta/docs.asciidoc | 8 + .../module/azure/billing/_meta/fields.yml | 50 ++ .../module/azure/billing/billing.go | 83 ++ .../azure/billing/billing_integration_test.go | 35 + .../metricbeat/module/azure/billing/client.go | 68 ++ .../module/azure/billing/client_test.go | 47 ++ .../metricbeat/module/azure/billing/data.go | 101 +++ .../module/azure/billing/data_test.go | 98 +++ .../module/azure/billing/mock_service.go | 45 ++ .../module/azure/billing/service.go | 52 ++ x-pack/metricbeat/module/azure/fields.go | 2 +- .../metricbeat/modules.d/azure.yml.disabled | 11 + 27 files changed, 1697 insertions(+), 4 deletions(-) create mode 100644 metricbeat/docs/images/metricbeat-azure-billing-overview.png create mode 100644 metricbeat/docs/modules/azure/billing.asciidoc create mode 100644 x-pack/metricbeat/module/azure/_meta/kibana/7/dashboard/Metricbeat-azure-billing-overview.json create mode 100644 x-pack/metricbeat/module/azure/billing/_meta/data.json create mode 100644 x-pack/metricbeat/module/azure/billing/_meta/docs.asciidoc create mode 100644 x-pack/metricbeat/module/azure/billing/_meta/fields.yml create mode 100644 x-pack/metricbeat/module/azure/billing/billing.go create mode 100644 x-pack/metricbeat/module/azure/billing/billing_integration_test.go create mode 100644 x-pack/metricbeat/module/azure/billing/client.go create mode 100644 x-pack/metricbeat/module/azure/billing/client_test.go create mode 100644 x-pack/metricbeat/module/azure/billing/data.go create mode 100644 x-pack/metricbeat/module/azure/billing/data_test.go create mode 100644 x-pack/metricbeat/module/azure/billing/mock_service.go create mode 100644 x-pack/metricbeat/module/azure/billing/service.go diff --git a/NOTICE.txt b/NOTICE.txt index faecba0b760..bb94184451f 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -13238,6 +13238,61 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +Dependency : github.com/shopspring/decimal +Version: v1.2.0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/shopspring/decimal@v1.2.0/LICENSE: + +The MIT License (MIT) + +Copyright (c) 2015 Spring, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +- Based on https://github.com/oguzbilgic/fpd, which has the following license: +""" +The MIT License (MIT) + +Copyright (c) 2013 Oguz Bilgic + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +""" + + -------------------------------------------------------------------------------- Dependency : github.com/spf13/cobra Version: v0.0.3 @@ -35364,6 +35419,36 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +-------------------------------------------------------------------------------- +Dependency : github.com/satori/go.uuid +Version: v1.2.0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/satori/go.uuid@v1.2.0/LICENSE: + +Copyright (C) 2013-2018 by Maxim Bublis + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + -------------------------------------------------------------------------------- Dependency : github.com/sergi/go-diff Version: v1.1.0 diff --git a/go.mod b/go.mod index 93facd93542..9af7e2bd546 100644 --- a/go.mod +++ b/go.mod @@ -137,7 +137,9 @@ require ( github.com/samuel/go-parser v0.0.0-20130731160455-ca8abbf65d0e // indirect github.com/samuel/go-thrift v0.0.0-20140522043831-2187045faa54 github.com/sanathkr/yaml v1.0.1-0.20170819201035-0056894fa522 // indirect + github.com/satori/go.uuid v1.2.0 // indirect github.com/shirou/gopsutil v2.19.11+incompatible + github.com/shopspring/decimal v1.2.0 github.com/spf13/cobra v0.0.3 github.com/spf13/pflag v1.0.5 github.com/stretchr/objx v0.2.0 // indirect diff --git a/go.sum b/go.sum index ec37fe41c3f..56f84eb6a36 100644 --- a/go.sum +++ b/go.sum @@ -623,11 +623,15 @@ github.com/sanathkr/yaml v1.0.1-0.20170819201035-0056894fa522 h1:39BJIaZIhIBmXAT github.com/sanathkr/yaml v1.0.1-0.20170819201035-0056894fa522/go.mod h1:tQTYKOQgxoH3v6dEmdHiz4JG+nbxWwM5fgPQUpSZqVQ= github.com/santhosh-tekuri/jsonschema v1.2.4 h1:hNhW8e7t+H1vgY+1QeEQpveR6D4+OwKPXCfD2aieJis= github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4= +github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shirou/gopsutil v2.19.11+incompatible h1:lJHR0foqAjI4exXqWsU3DbH7bX1xvdhGdnXTIARA9W4= github.com/shirou/gopsutil v2.19.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= diff --git a/metricbeat/docs/fields.asciidoc b/metricbeat/docs/fields.asciidoc index 9b46d25d61a..b4b75c0830e 100644 --- a/metricbeat/docs/fields.asciidoc +++ b/metricbeat/docs/fields.asciidoc @@ -4567,6 +4567,123 @@ type: object -- +[float] +=== billing + +billing and usage details + + + +*`azure.billing.currency`*:: ++ +-- +The currency + + +type: keyword + +-- + +*`azure.billing.pretax_cost`*:: ++ +-- +Cost + + +type: float + +-- + +*`azure.billing.department_name`*:: ++ +-- +The department name + + +type: keyword + +-- + +*`azure.billing.product`*:: ++ +-- +The product type + + +type: keyword + +-- + +*`azure.billing.usage_start`*:: ++ +-- +The usage start date + + +type: date + +-- + +*`azure.billing.usage_end`*:: ++ +-- +The usage end date + + +type: date + +-- + +*`azure.billing.billing_period_id`*:: ++ +-- +The billing period id + + +type: keyword + +-- + +*`azure.billing.account_name`*:: ++ +-- +The billing account name + + +type: keyword + +-- + +*`azure.billing.actual_cost`*:: ++ +-- +The actual cost + + +type: float + +-- + +*`azure.billing.forecast_cost`*:: ++ +-- +The forecast cost + + +type: float + +-- + +*`azure.billing.usage_date`*:: ++ +-- +The usage date + + +type: date + +-- + *`azure.compute_vm.*.*`*:: + -- diff --git a/metricbeat/docs/images/metricbeat-azure-billing-overview.png b/metricbeat/docs/images/metricbeat-azure-billing-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..b183cff2a32148a08d4cd6f965d30ee85d3e095e GIT binary patch literal 244413 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 literal 0 HcmV?d00001 diff --git a/metricbeat/docs/modules/azure.asciidoc b/metricbeat/docs/modules/azure.asciidoc index 32cbe864201..93d644bd999 100644 --- a/metricbeat/docs/modules/azure.asciidoc +++ b/metricbeat/docs/modules/azure.asciidoc @@ -35,10 +35,14 @@ The virtual machine scale sets dashboard is similar to the VM dashboard and show image::./images/metricbeat-azure-vmss-overview.png[] -The Azure storage dashboards dashboards show all relevant metrics for the blob, file, table and queue storage services: +The Azure storage dashboards show all relevant metrics for the blob, file, table and queue storage services: image::./images/metricbeat-azure-storage-overview.png[] +The Azure billing dashboards show relevant usage and forecast information: + +image::./images/metricbeat-azure-billing-overview.png[] + [float] === Module-specific configuration notes @@ -105,6 +109,11 @@ so the `period` for `container_service` metricset should be `300s` or multiples This metricset will collect relevant metrics from specified database accounts, these metrics will have a timegrain every 5 minutes, so the `period` for `database_account` metricset should be `300s` or multiples of `300s`. +[float] +=== `billing` +This metricset will collect relevant usage data and forecast information from a specific subscription, these metrics will have a timegrain every 24 hours, +so the `period` for `billing` metricset should be `24h` or multiples of `24h`. + [float] === `app_insights` This metricset will collect application insights metrics, the `period` (interval) for the `app-insights` metricset is set by default at `300s`. @@ -211,6 +220,16 @@ metricbeat.modules: tenant_id: '${AZURE_TENANT_ID:""}' subscription_id: '${AZURE_SUBSCRIPTION_ID:""}' +- module: azure + metricsets: + - billing + enabled: true + period: 24h + client_id: '${AZURE_CLIENT_ID:""}' + client_secret: '${AZURE_CLIENT_SECRET:""}' + tenant_id: '${AZURE_TENANT_ID:""}' + subscription_id: '${AZURE_SUBSCRIPTION_ID:""}' + - module: azure metricsets: - app_insights @@ -228,6 +247,8 @@ The following metricsets are available: * <> +* <> + * <> * <> @@ -246,6 +267,8 @@ The following metricsets are available: include::azure/app_insights.asciidoc[] +include::azure/billing.asciidoc[] + include::azure/compute_vm.asciidoc[] include::azure/compute_vm_scaleset.asciidoc[] diff --git a/metricbeat/docs/modules/azure/billing.asciidoc b/metricbeat/docs/modules/azure/billing.asciidoc new file mode 100644 index 00000000000..81b3b2c028e --- /dev/null +++ b/metricbeat/docs/modules/azure/billing.asciidoc @@ -0,0 +1,23 @@ +//// +This file is generated! See scripts/mage/docs_collector.go +//// + +[[metricbeat-metricset-azure-billing]] +=== Azure billing metricset + +beta[] + +include::../../../../x-pack/metricbeat/module/azure/billing/_meta/docs.asciidoc[] + + +==== Fields + +For a description of each field in the metricset, see the +<> section. + +Here is an example document generated by this metricset: + +[source,json] +---- +include::../../../../x-pack/metricbeat/module/azure/billing/_meta/data.json[] +---- diff --git a/metricbeat/docs/modules_list.asciidoc b/metricbeat/docs/modules_list.asciidoc index 487729c860b..9c6842884a7 100644 --- a/metricbeat/docs/modules_list.asciidoc +++ b/metricbeat/docs/modules_list.asciidoc @@ -33,7 +33,8 @@ This file is generated! See scripts/mage/docs_collector.go |<> beta[] |<> beta[] |<> |image:./images/icon-yes.png[Prebuilt dashboards are available] | -.9+| .9+| |<> beta[] +.10+| .10+| |<> beta[] +|<> beta[] |<> |<> |<> diff --git a/x-pack/metricbeat/include/list.go b/x-pack/metricbeat/include/list.go index 9f9704d067e..71876550fc8 100644 --- a/x-pack/metricbeat/include/list.go +++ b/x-pack/metricbeat/include/list.go @@ -20,6 +20,7 @@ import ( _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/aws/sqs" _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/azure" _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/azure/app_insights" + _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/azure/billing" _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/azure/compute_vm" _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/azure/compute_vm_scaleset" _ "github.com/elastic/beats/v7/x-pack/metricbeat/module/azure/monitor" diff --git a/x-pack/metricbeat/metricbeat.reference.yml b/x-pack/metricbeat/metricbeat.reference.yml index 6f84f7826b3..d28b969057f 100644 --- a/x-pack/metricbeat/metricbeat.reference.yml +++ b/x-pack/metricbeat/metricbeat.reference.yml @@ -323,6 +323,16 @@ metricbeat.modules: tenant_id: '${AZURE_TENANT_ID:""}' subscription_id: '${AZURE_SUBSCRIPTION_ID:""}' +- module: azure + metricsets: + - billing + enabled: true + period: 24h + client_id: '${AZURE_CLIENT_ID:""}' + client_secret: '${AZURE_CLIENT_SECRET:""}' + tenant_id: '${AZURE_TENANT_ID:""}' + subscription_id: '${AZURE_SUBSCRIPTION_ID:""}' + - module: azure metricsets: - app_insights diff --git a/x-pack/metricbeat/module/azure/_meta/config.reference.yml b/x-pack/metricbeat/module/azure/_meta/config.reference.yml index 6127c2123d6..129384d1498 100644 --- a/x-pack/metricbeat/module/azure/_meta/config.reference.yml +++ b/x-pack/metricbeat/module/azure/_meta/config.reference.yml @@ -83,6 +83,16 @@ tenant_id: '${AZURE_TENANT_ID:""}' subscription_id: '${AZURE_SUBSCRIPTION_ID:""}' +- module: azure + metricsets: + - billing + enabled: true + period: 24h + client_id: '${AZURE_CLIENT_ID:""}' + client_secret: '${AZURE_CLIENT_SECRET:""}' + tenant_id: '${AZURE_TENANT_ID:""}' + subscription_id: '${AZURE_SUBSCRIPTION_ID:""}' + - module: azure metricsets: - app_insights diff --git a/x-pack/metricbeat/module/azure/_meta/config.yml b/x-pack/metricbeat/module/azure/_meta/config.yml index 6217294e5bf..914f5ed5774 100644 --- a/x-pack/metricbeat/module/azure/_meta/config.yml +++ b/x-pack/metricbeat/module/azure/_meta/config.yml @@ -91,6 +91,17 @@ # subscription_id: '${AZURE_SUBSCRIPTION_ID:""}' # refresh_list_interval: 600s +#- module: azure +# metricsets: +# - billing +# enabled: true +# period: 24h +# client_id: '${AZURE_CLIENT_ID:""}' +# client_secret: '${AZURE_CLIENT_SECRET:""}' +# tenant_id: '${AZURE_TENANT_ID:""}' +# subscription_id: '${AZURE_SUBSCRIPTION_ID:""}' +# refresh_list_interval: 600s + #- module: azure # metricsets: # - app_insights diff --git a/x-pack/metricbeat/module/azure/_meta/docs.asciidoc b/x-pack/metricbeat/module/azure/_meta/docs.asciidoc index 571181dde7a..38e11f24a85 100644 --- a/x-pack/metricbeat/module/azure/_meta/docs.asciidoc +++ b/x-pack/metricbeat/module/azure/_meta/docs.asciidoc @@ -27,10 +27,14 @@ The virtual machine scale sets dashboard is similar to the VM dashboard and show image::./images/metricbeat-azure-vmss-overview.png[] -The Azure storage dashboards dashboards show all relevant metrics for the blob, file, table and queue storage services: +The Azure storage dashboards show all relevant metrics for the blob, file, table and queue storage services: image::./images/metricbeat-azure-storage-overview.png[] +The Azure billing dashboards show relevant usage and forecast information: + +image::./images/metricbeat-azure-billing-overview.png[] + [float] === Module-specific configuration notes @@ -97,6 +101,11 @@ so the `period` for `container_service` metricset should be `300s` or multiples This metricset will collect relevant metrics from specified database accounts, these metrics will have a timegrain every 5 minutes, so the `period` for `database_account` metricset should be `300s` or multiples of `300s`. +[float] +=== `billing` +This metricset will collect relevant usage data and forecast information from a specific subscription, these metrics will have a timegrain every 24 hours, +so the `period` for `billing` metricset should be `24h` or multiples of `24h`. + [float] === `app_insights` This metricset will collect application insights metrics, the `period` (interval) for the `app-insights` metricset is set by default at `300s`. diff --git a/x-pack/metricbeat/module/azure/_meta/kibana/7/dashboard/Metricbeat-azure-billing-overview.json b/x-pack/metricbeat/module/azure/_meta/kibana/7/dashboard/Metricbeat-azure-billing-overview.json new file mode 100644 index 00000000000..b8ebdbdaf3c --- /dev/null +++ b/x-pack/metricbeat/module/azure/_meta/kibana/7/dashboard/Metricbeat-azure-billing-overview.json @@ -0,0 +1,760 @@ +{ + "objects": [ + { + "attributes": { + "description": "This dashboard gives an overview of resource costs and forecast", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "optionsJSON": { + "hidePanelTitles": false, + "useMargins": true + }, + "panelsJSON": [ + { + "embeddableConfig": { + "title": "" + }, + "gridData": { + "h": 5, + "i": "3202a4c8-ed88-4592-9d39-73846426413b", + "w": 48, + "x": 0, + "y": 0 + }, + "panelIndex": "3202a4c8-ed88-4592-9d39-73846426413b", + "panelRefName": "panel_0", + "version": "8.0.0-SNAPSHOT" + }, + { + "embeddableConfig": { + "title": "Subscriptions" + }, + "gridData": { + "h": 16, + "i": "c18f8802-6189-4966-abe5-30bf2c7c6d63", + "w": 15, + "x": 0, + "y": 5 + }, + "panelIndex": "c18f8802-6189-4966-abe5-30bf2c7c6d63", + "panelRefName": "panel_1", + "title": "Subscriptions", + "version": "8.0.0-SNAPSHOT" + }, + { + "embeddableConfig": { + "title": "Resource groups" + }, + "gridData": { + "h": 16, + "i": "0a93b125-de04-466e-a1d0-7b56d1b31b52", + "w": 16, + "x": 15, + "y": 5 + }, + "panelIndex": "0a93b125-de04-466e-a1d0-7b56d1b31b52", + "panelRefName": "panel_2", + "title": "Resource groups", + "version": "8.0.0-SNAPSHOT" + }, + { + "embeddableConfig": { + "title": "Resources" + }, + "gridData": { + "h": 16, + "i": "f6b54b8f-b9e5-4c20-9e4c-8f83935ca739", + "w": 17, + "x": 31, + "y": 5 + }, + "panelIndex": "f6b54b8f-b9e5-4c20-9e4c-8f83935ca739", + "panelRefName": "panel_3", + "title": "Resources", + "version": "8.0.0-SNAPSHOT" + }, + { + "embeddableConfig": { + "title": "Forecast" + }, + "gridData": { + "h": 17, + "i": "323f890e-c4d6-4c84-a3d8-f3d4277d3c2f", + "w": 48, + "x": 0, + "y": 21 + }, + "panelIndex": "323f890e-c4d6-4c84-a3d8-f3d4277d3c2f", + "panelRefName": "panel_4", + "title": "Forecast", + "version": "8.0.0-SNAPSHOT" + }, + { + "embeddableConfig": { + "title": "Daily usage" + }, + "gridData": { + "h": 15, + "i": "fb121db4-1343-4e4d-b1a3-e3f3531ae045", + "w": 48, + "x": 0, + "y": 38 + }, + "panelIndex": "fb121db4-1343-4e4d-b1a3-e3f3531ae045", + "panelRefName": "panel_5", + "title": "Daily usage", + "version": "8.0.0-SNAPSHOT" + } + ], + "timeRestore": false, + "title": "[Metricbeat Azure] Billing overview", + "version": 1 + }, + "id": "d3efeb30-c1c7-11ea-b7e7-0f48178cdb3c", + "migrationVersion": { + "dashboard": "7.3.0" + }, + "references": [ + { + "id": "82a51dd0-c1d7-11ea-b7e7-0f48178cdb3c", + "name": "panel_0", + "type": "visualization" + }, + { + "id": "6ffa7e20-c1da-11ea-b7e7-0f48178cdb3c", + "name": "panel_1", + "type": "visualization" + }, + { + "id": "b18053b0-c1da-11ea-b7e7-0f48178cdb3c", + "name": "panel_2", + "type": "visualization" + }, + { + "id": "c8016f70-c1da-11ea-b7e7-0f48178cdb3c", + "name": "panel_3", + "type": "visualization" + }, + { + "id": "9142aca0-c1c7-11ea-b7e7-0f48178cdb3c", + "name": "panel_4", + "type": "visualization" + }, + { + "id": "05d5b3e0-c1c9-11ea-b7e7-0f48178cdb3c", + "name": "panel_5", + "type": "visualization" + } + ], + "type": "dashboard", + "updated_at": "2020-07-09T12:59:36.436Z", + "version": "WzMyNjMsOF0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "title": "Billing Filters [Metricbeat Azure]", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [], + "params": { + "controls": [ + { + "fieldName": "azure.billing.department_name", + "id": "1594294278147", + "indexPatternRefName": "control_0_index_pattern", + "label": "Department", + "options": { + "dynamicOptions": true, + "multiselect": true, + "order": "desc", + "size": 5, + "type": "terms" + }, + "parent": "", + "type": "list" + }, + { + "fieldName": "azure.billing.account_name", + "id": "1594294329560", + "indexPatternRefName": "control_1_index_pattern", + "label": "Account", + "options": { + "dynamicOptions": true, + "multiselect": true, + "order": "desc", + "size": 5, + "type": "terms" + }, + "parent": "", + "type": "list" + }, + { + "fieldName": "azure.subscription_id", + "id": "1549397251041", + "indexPatternRefName": "control_2_index_pattern", + "label": "Subscription", + "options": { + "dynamicOptions": true, + "multiselect": false, + "order": "desc", + "size": 5, + "type": "terms" + }, + "parent": "", + "type": "list" + }, + { + "fieldName": "azure.resource.group", + "id": "1549512142947", + "indexPatternRefName": "control_3_index_pattern", + "label": "Resource Group", + "options": { + "dynamicOptions": true, + "multiselect": true, + "order": "desc", + "size": 5, + "type": "terms" + }, + "parent": "", + "type": "list" + }, + { + "fieldName": "cloud.instance.name", + "id": "1578578146383", + "indexPatternRefName": "control_4_index_pattern", + "label": "Resource Name", + "options": { + "dynamicOptions": true, + "multiselect": true, + "order": "desc", + "size": 5, + "type": "terms" + }, + "parent": "", + "type": "list" + } + ], + "pinFilters": false, + "updateFiltersOnChange": true, + "useTimeFilter": false + }, + "title": "Billing Filters [Metricbeat Azure]", + "type": "input_control_vis" + } + }, + "id": "82a51dd0-c1d7-11ea-b7e7-0f48178cdb3c", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [ + { + "id": "metricbeat-*", + "name": "control_0_index_pattern", + "type": "index-pattern" + }, + { + "id": "metricbeat-*", + "name": "control_1_index_pattern", + "type": "index-pattern" + }, + { + "id": "metricbeat-*", + "name": "control_2_index_pattern", + "type": "index-pattern" + }, + { + "id": "metricbeat-*", + "name": "control_3_index_pattern", + "type": "index-pattern" + }, + { + "id": "metricbeat-*", + "name": "control_4_index_pattern", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2020-07-09T11:41:03.757Z", + "version": "WzMxMzksOF0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", + "query": { + "language": "kuery", + "query": "" + } + } + }, + "title": "Billing subscriptions [Metricbeat Azure]", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": { + "customLabel": "Total costs", + "field": "azure.billing.pretax_cost" + }, + "schema": "metric", + "type": "sum" + }, + { + "enabled": true, + "id": "2", + "params": { + "field": "azure.subscription_id", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "segment", + "type": "terms" + } + ], + "params": { + "addLegend": true, + "addTooltip": true, + "isDonut": true, + "labels": { + "last_level": true, + "show": false, + "truncate": 100, + "values": true + }, + "legendPosition": "right", + "type": "pie" + }, + "title": "Billing subscriptions [Metricbeat Azure]", + "type": "pie" + } + }, + "id": "6ffa7e20-c1da-11ea-b7e7-0f48178cdb3c", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [ + { + "id": "metricbeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2020-07-09T11:50:51.393Z", + "version": "WzMyMjYsOF0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", + "query": { + "language": "kuery", + "query": "" + } + } + }, + "title": "Billing resource groups [Metricbeat Azure]", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": { + "customLabel": "Total costs", + "field": "azure.billing.pretax_cost" + }, + "schema": "metric", + "type": "sum" + }, + { + "enabled": true, + "id": "2", + "params": { + "field": "azure.resource.group", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "segment", + "type": "terms" + } + ], + "params": { + "addLegend": true, + "addTooltip": true, + "isDonut": true, + "labels": { + "last_level": true, + "show": false, + "truncate": 100, + "values": true + }, + "legendPosition": "right", + "row": true, + "type": "pie" + }, + "title": "Billing resource groups [Metricbeat Azure]", + "type": "pie" + } + }, + "id": "b18053b0-c1da-11ea-b7e7-0f48178cdb3c", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [ + { + "id": "metricbeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2020-07-09T11:52:41.323Z", + "version": "WzMyMjcsOF0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "indexRefName": "kibanaSavedObjectMeta.searchSourceJSON.index", + "query": { + "language": "kuery", + "query": "" + } + } + }, + "title": "Billing resource names [Metricbeat Azure]", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [ + { + "enabled": true, + "id": "1", + "params": { + "customLabel": "Total costs", + "field": "azure.billing.pretax_cost" + }, + "schema": "metric", + "type": "sum" + }, + { + "enabled": true, + "id": "2", + "params": { + "field": "cloud.instance.name", + "missingBucket": false, + "missingBucketLabel": "Missing", + "order": "desc", + "orderBy": "1", + "otherBucket": false, + "otherBucketLabel": "Other", + "size": 5 + }, + "schema": "segment", + "type": "terms" + } + ], + "params": { + "addLegend": true, + "addTooltip": true, + "isDonut": true, + "labels": { + "last_level": true, + "show": false, + "truncate": 100, + "values": true + }, + "legendPosition": "right", + "row": true, + "type": "pie" + }, + "title": "Billing resource names [Metricbeat Azure]", + "type": "pie" + } + }, + "id": "c8016f70-c1da-11ea-b7e7-0f48178cdb3c", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [ + { + "id": "metricbeat-*", + "name": "kibanaSavedObjectMeta.searchSourceJSON.index", + "type": "index-pattern" + } + ], + "type": "visualization", + "updated_at": "2020-07-09T11:53:19.079Z", + "version": "WzMyMjgsOF0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "title": "Charges Forecast [Metricbeat Azure]", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [], + "params": { + "axis_formatter": "number", + "axis_position": "left", + "axis_scale": "normal", + "background_color_rules": [ + { + "id": "1f64e4e0-c1c7-11ea-879f-d1f118e66220" + } + ], + "bar_color_rules": [ + { + "id": "20dbcd70-c1c7-11ea-879f-d1f118e66220" + } + ], + "default_index_pattern": "metricbeat-*", + "default_timefield": "@timestamp", + "drop_last_bucket": 1, + "gauge_color_rules": [ + { + "id": "22692430-c1c7-11ea-879f-d1f118e66220" + } + ], + "gauge_inner_width": 10, + "gauge_style": "half", + "gauge_width": 10, + "id": "61ca57f0-469d-11e7-af02-69e470af7417", + "index_pattern": "metricbeat-*", + "interval": "24h", + "isModelInvalid": false, + "series": [ + { + "axis_position": "right", + "chart_type": "line", + "color": "rgba(25,77,51,1)", + "fill": "0.7", + "formatter": "number", + "hide_in_legend": 0, + "id": "61ca57f1-469d-11e7-af02-69e470af7417", + "label": "Actual costs", + "line_width": 1, + "metrics": [ + { + "agg_with": "avg", + "field": "azure.billing.actual_cost", + "id": "61ca57f2-469d-11e7-af02-69e470af7417", + "order": "desc", + "order_by": "@timestamp", + "size": 1, + "type": "top_hit" + } + ], + "override_index_pattern": 0, + "point_size": 1, + "separate_axis": 0, + "split_color_mode": "kibana", + "split_mode": "everything", + "stacked": "none", + "steps": 1, + "terms_field": "azure.billing.usage_date", + "type": "timeseries", + "value_template": "{{value}}" + }, + { + "axis_position": "right", + "chart_type": "line", + "color": "rgba(104,188,0,1)", + "fill": "0.5", + "formatter": "number", + "id": "d09632c0-c120-11ea-b262-d3ff1f3885f8", + "label": "Forecast costs", + "line_width": "2", + "metrics": [ + { + "agg_with": "avg", + "field": "azure.billing.forecast_cost", + "id": "d09632c1-c120-11ea-b262-d3ff1f3885f8", + "order": "desc", + "order_by": "@timestamp", + "size": 1, + "type": "top_hit" + } + ], + "offset_time": "", + "point_size": 1, + "separate_axis": 0, + "split_color_mode": "kibana", + "split_mode": "everything", + "stacked": "none", + "steps": 0, + "type": "timeseries", + "value_template": "{{value}}" + } + ], + "show_grid": 1, + "show_legend": 1, + "time_field": "azure.billing.usage_date", + "tooltip_mode": "show_all", + "type": "timeseries" + }, + "title": "Charges Forecast [Metricbeat Azure]", + "type": "metrics" + } + }, + "id": "9142aca0-c1c7-11ea-b7e7-0f48178cdb3c", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [], + "type": "visualization", + "updated_at": "2020-07-09T09:45:25.575Z", + "version": "WzMwMTEsOF0=" + }, + { + "attributes": { + "description": "", + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "title": "Usage Details [Metricbeat Azure]", + "uiStateJSON": {}, + "version": 1, + "visState": { + "aggs": [], + "params": { + "axis_formatter": "number", + "axis_position": "left", + "axis_scale": "normal", + "background_color_rules": [ + { + "id": "1f64e4e0-c1c7-11ea-879f-d1f118e66220" + } + ], + "bar_color_rules": [ + { + "id": "20dbcd70-c1c7-11ea-879f-d1f118e66220" + } + ], + "default_index_pattern": "metricbeat-*", + "default_timefield": "@timestamp", + "drop_last_bucket": 1, + "gauge_color_rules": [ + { + "id": "22692430-c1c7-11ea-879f-d1f118e66220" + } + ], + "gauge_inner_width": 10, + "gauge_style": "half", + "gauge_width": 10, + "id": "61ca57f0-469d-11e7-af02-69e470af7417", + "index_pattern": "metricbeat-*", + "interval": "24h", + "isModelInvalid": false, + "series": [ + { + "axis_position": "right", + "chart_type": "bar", + "color": "rgba(22,165,165,1)", + "fill": "0.5", + "formatter": "number", + "id": "d09632c0-c120-11ea-b262-d3ff1f3885f8", + "label": "Usage Details", + "line_width": "2", + "metrics": [ + { + "agg_with": "sum", + "field": "azure.billing.pretax_cost", + "id": "d09632c1-c120-11ea-b262-d3ff1f3885f8", + "order": "desc", + "order_by": "@timestamp", + "size": 1, + "type": "sum" + } + ], + "offset_time": "", + "point_size": 1, + "separate_axis": 0, + "split_color_mode": "kibana", + "split_mode": "everything", + "stacked": "none", + "steps": 0, + "type": "timeseries", + "value_template": "{{value}}" + } + ], + "show_grid": 1, + "show_legend": 1, + "time_field": "azure.billing.usage_start", + "tooltip_mode": "show_all", + "type": "timeseries" + }, + "title": "Usage Details [Metricbeat Azure]", + "type": "metrics" + } + }, + "id": "05d5b3e0-c1c9-11ea-b7e7-0f48178cdb3c", + "migrationVersion": { + "visualization": "7.4.2" + }, + "references": [], + "type": "visualization", + "updated_at": "2020-07-09T11:36:42.328Z", + "version": "WzMwOTQsOF0=" + } + ], + "version": "8.0.0-SNAPSHOT" +} diff --git a/x-pack/metricbeat/module/azure/billing/_meta/data.json b/x-pack/metricbeat/module/azure/billing/_meta/data.json new file mode 100644 index 00000000000..d9f31101dc1 --- /dev/null +++ b/x-pack/metricbeat/module/azure/billing/_meta/data.json @@ -0,0 +1,39 @@ +{ + "@timestamp": "2020-07-08T08:05:34.853Z", + "azure": { + "billing" : { + "product" : "Tables - LRS Data Stored", + "usage_start" : "2020-07-08T00:00:00.000Z", + "usage_end" : "2020-07-08T23:59:59.000Z", + "currency" : "USD", + "billing_period_id" : "/subscriptions/fd675b6f-b5e5-426e-ac45-d1f876d0ffa6/providers/Microsoft.Billing/billingPeriods/20200701", + "account_name" : "Eng1", + "pretax_cost" : "0.000004175936293", + "department_name" : "Eng" + }, + "resource": { + "group": "obs-infrastructure" + }, + "subscription_id": "fd675b6f-b5e5-426e-ac45-d1f876d0ffa6" + }, + "cloud": { + "instance": { + "id": "/subscriptions/fd675b6f-b5e5-426e-ac45-d1f876d0ffa6/resourceGroups/obs-infrastructure/providers/Microsoft.DocumentDb/databaseAccounts/obsaccount", + "name": "obsaccount" + }, + "provider": "azure", + "region": "westeurope" + }, + "event": { + "dataset": "azure.monitor", + "duration": 115000, + "module": "azure" + }, + "metricset": { + "name": "monitor", + "period": 10000 + }, + "service": { + "type": "azure" + } +} diff --git a/x-pack/metricbeat/module/azure/billing/_meta/docs.asciidoc b/x-pack/metricbeat/module/azure/billing/_meta/docs.asciidoc new file mode 100644 index 00000000000..39a5652c33b --- /dev/null +++ b/x-pack/metricbeat/module/azure/billing/_meta/docs.asciidoc @@ -0,0 +1,8 @@ +This is the billing metricset of the module azure. + +This metricset allows users to retrieve usage details and forecast information of the subscription configured. + +include::../../_meta/shared-azure.asciidoc[] + + + diff --git a/x-pack/metricbeat/module/azure/billing/_meta/fields.yml b/x-pack/metricbeat/module/azure/billing/_meta/fields.yml new file mode 100644 index 00000000000..45609ffbd0f --- /dev/null +++ b/x-pack/metricbeat/module/azure/billing/_meta/fields.yml @@ -0,0 +1,50 @@ +- name: billing + type: group + release: beta + description: > + billing and usage details + fields: + - name: currency + type: keyword + description: > + The currency + - name: pretax_cost + type: float + description: > + Cost + - name: department_name + type: keyword + description: > + The department name + - name: product + type: keyword + description: > + The product type + - name: usage_start + type: date + description: > + The usage start date + - name: usage_end + type: date + description: > + The usage end date + - name: billing_period_id + type: keyword + description: > + The billing period id + - name: account_name + type: keyword + description: > + The billing account name + - name: actual_cost + type: float + description: > + The actual cost + - name: forecast_cost + type: float + description: > + The forecast cost + - name: usage_date + type: date + description: > + The usage date diff --git a/x-pack/metricbeat/module/azure/billing/billing.go b/x-pack/metricbeat/module/azure/billing/billing.go new file mode 100644 index 00000000000..2f6025ef1cf --- /dev/null +++ b/x-pack/metricbeat/module/azure/billing/billing.go @@ -0,0 +1,83 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package billing + +import ( + "time" + + "github.com/pkg/errors" + + "github.com/elastic/beats/v7/libbeat/logp" + "github.com/elastic/beats/v7/metricbeat/mb" + "github.com/elastic/beats/v7/metricbeat/mb/parse" +) + +// init registers the MetricSet with the central registry as soon as the program +// starts. The New function will be called later to instantiate an instance of +// the MetricSet for each host defined in the module's configuration. After the +// MetricSet has been created then Fetch will begin to be called periodically. +func init() { + mb.Registry.MustAddMetricSet("azure", "billing", New, mb.WithHostParser(parse.EmptyHostParser)) +} + +// MetricSet holds any configuration or state information. It must implement +// the mb.MetricSet interface. And this is best achieved by embedding +// mb.BaseMetricSet because it implements all of the required mb.MetricSet +// interface methods except for Fetch. +type MetricSet struct { + mb.BaseMetricSet + client *Client + log *logp.Logger +} + +// Config options +type Config struct { + ClientId string `config:"client_id" validate:"required"` + ClientSecret string `config:"client_secret" validate:"required"` + TenantId string `config:"tenant_id" validate:"required"` + SubscriptionId string `config:"subscription_id" validate:"required"` + Period time.Duration `config:"period" validate:"nonzero,required"` +} + +// New creates a new instance of the MetricSet. New is responsible for unpacking +// any MetricSet specific configuration options if there are any. +func New(base mb.BaseMetricSet) (mb.MetricSet, error) { + var config Config + err := base.Module().UnpackConfig(&config) + if err != nil { + return nil, errors.Wrap(err, "error unpack raw module config using UnpackConfig") + } + if err != nil { + return nil, err + } + // instantiate monitor client + billingClient, err := NewClient(config) + if err != nil { + return nil, errors.Wrap(err, "error initializing the billing client: module azure - billing metricset") + } + return &MetricSet{ + BaseMetricSet: base, + client: billingClient, + }, nil +} + +// Fetch methods implements the data gathering and data conversion to the right metricset +// It publishes the event which is then forwarded to the output. In case +// of an error set the Error field of mb.Event or simply call report.Error(). +func (m *MetricSet) Fetch(report mb.ReporterV2) error { + results, err := m.client.GetMetrics() + if err != nil { + return errors.Wrap(err, "error retrieving usage information") + } + events := EventsMapping(results) + for _, event := range events { + isOpen := report.Event(event) + if !isOpen { + break + } + } + + return nil +} diff --git a/x-pack/metricbeat/module/azure/billing/billing_integration_test.go b/x-pack/metricbeat/module/azure/billing/billing_integration_test.go new file mode 100644 index 00000000000..da7c9977d58 --- /dev/null +++ b/x-pack/metricbeat/module/azure/billing/billing_integration_test.go @@ -0,0 +1,35 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +// +build integration +// +build azure + +package billing + +import ( + "testing" + + "github.com/elastic/beats/v7/x-pack/metricbeat/module/azure/test" + + "github.com/stretchr/testify/assert" + + mbtest "github.com/elastic/beats/v7/metricbeat/mb/testing" +) + +func TestFetchMetricset(t *testing.T) { + config := test.GetConfig(t, "billing") + metricSet := mbtest.NewReportingMetricSetV2Error(t, config) + events, errs := mbtest.ReportingFetchV2Error(metricSet) + if len(errs) > 0 { + t.Fatalf("Expected 0 error, had %d. %v\n", len(errs), errs) + } + assert.NotEmpty(t, events) + mbtest.TestMetricsetFieldsDocumented(t, metricSet, events) +} + +func TestData(t *testing.T) { + config := test.GetConfig(t, "billing") + metricSet := mbtest.NewFetcher(t, config) + metricSet.WriteEvents(t, "/") +} diff --git a/x-pack/metricbeat/module/azure/billing/client.go b/x-pack/metricbeat/module/azure/billing/client.go new file mode 100644 index 00000000000..a6e4ba83cb7 --- /dev/null +++ b/x-pack/metricbeat/module/azure/billing/client.go @@ -0,0 +1,68 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package billing + +import ( + "fmt" + "time" + + "github.com/pkg/errors" + + "github.com/Azure/azure-sdk-for-go/services/consumption/mgmt/2019-01-01/consumption" + + "github.com/elastic/beats/v7/libbeat/logp" +) + +// Client represents the azure client which will make use of the azure sdk go metrics related clients +type Client struct { + BillingService Service + Config Config + Log *logp.Logger +} + +type Usage struct { + UsageDetails []consumption.UsageDetail + ActualCosts []consumption.Forecast + ForecastCosts []consumption.Forecast +} + +// NewClient instantiates the an Azure monitoring client +func NewClient(config Config) (*Client, error) { + usageService, err := NewService(config.ClientId, config.ClientSecret, config.TenantId, config.SubscriptionId) + if err != nil { + return nil, err + } + client := &Client{ + BillingService: usageService, + Config: config, + Log: logp.NewLogger("azure monitor client"), + } + return client, nil +} + +// GetMetrics returns the usage detail and forecast values. +func (client *Client) GetMetrics() (Usage, error) { + var usage Usage + startTime := time.Now().UTC().Truncate(24 * time.Hour).Add((-24) * time.Hour) + endTime := startTime.Add(time.Hour * 24).Add(time.Second * (-1)) + usageDetails, err := client.BillingService.GetUsageDetails(fmt.Sprintf("subscriptions/%s", client.Config.SubscriptionId), "properties/meterDetails", + fmt.Sprintf("properties/usageStart eq '%s' and properties/usageEnd eq '%s'", startTime.Format(time.RFC3339Nano), endTime.Format(time.RFC3339Nano)), + "", nil, "properties/instanceLocation") + if err != nil { + return usage, errors.Wrap(err, "Retrieving usage details failed in client") + } + usage.UsageDetails = usageDetails.Values() + actualCosts, err := client.BillingService.GetForcast(fmt.Sprintf("properties/chargeType eq '%s'", "Actual")) + if err != nil { + return usage, errors.Wrap(err, "Retrieving forecast - actual costs failed in client") + } + usage.ActualCosts = *actualCosts.Value + forecastCosts, err := client.BillingService.GetForcast(fmt.Sprintf("properties/chargeType eq '%s'", "Forecast")) + if err != nil { + return usage, errors.Wrap(err, "Retrieving forecast failed in client") + } + usage.ForecastCosts = *forecastCosts.Value + return usage, nil +} diff --git a/x-pack/metricbeat/module/azure/billing/client_test.go b/x-pack/metricbeat/module/azure/billing/client_test.go new file mode 100644 index 00000000000..a0eb6c0d31c --- /dev/null +++ b/x-pack/metricbeat/module/azure/billing/client_test.go @@ -0,0 +1,47 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package billing + +import ( + "errors" + "testing" + + "github.com/Azure/azure-sdk-for-go/services/consumption/mgmt/2019-01-01/consumption" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" +) + +var ( + config = Config{} +) + +func TestClient(t *testing.T) { + t.Run("return error not valid query", func(t *testing.T) { + client := NewMockClient() + client.Config = config + m := &MockService{} + m.On("GetForcast", mock.Anything).Return(consumption.ForecastsListResult{}, errors.New("invalid query")) + m.On("GetUsageDetails", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(consumption.UsageDetailsListResultPage{}, nil) + client.BillingService = m + results, err := client.GetMetrics() + assert.Error(t, err) + assert.Equal(t, len(results.ActualCosts), 0) + m.AssertExpectations(t) + }) + t.Run("return results", func(t *testing.T) { + client := NewMockClient() + client.Config = config + m := &MockService{} + forecasts := []consumption.Forecast{{}, {}} + m.On("GetForcast", mock.Anything).Return(consumption.ForecastsListResult{Value: &forecasts}, nil) + m.On("GetUsageDetails", mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything, mock.Anything).Return(consumption.UsageDetailsListResultPage{}, nil) + client.BillingService = m + results, err := client.GetMetrics() + assert.NoError(t, err) + assert.Equal(t, len(results.ActualCosts), 2) + assert.Equal(t, len(results.ForecastCosts), 2) + m.AssertExpectations(t) + }) +} diff --git a/x-pack/metricbeat/module/azure/billing/data.go b/x-pack/metricbeat/module/azure/billing/data.go new file mode 100644 index 00000000000..9b84d9d20ae --- /dev/null +++ b/x-pack/metricbeat/module/azure/billing/data.go @@ -0,0 +1,101 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package billing + +import ( + "fmt" + "strings" + "time" + + "github.com/Azure/azure-sdk-for-go/services/consumption/mgmt/2019-01-01/consumption" + + "github.com/shopspring/decimal" + + "github.com/elastic/beats/v7/libbeat/common" + "github.com/elastic/beats/v7/metricbeat/mb" +) + +func EventsMapping(results Usage) []mb.Event { + var events []mb.Event + if len(results.UsageDetails) > 0 { + for _, usageDetail := range results.UsageDetails { + event := mb.Event{ + ModuleFields: common.MapStr{ + "resource": common.MapStr{ + "type": usageDetail.ConsumedService, + "group": getResourceGroupFromId(*usageDetail.InstanceID), + }, + "subscription_id": usageDetail.SubscriptionGUID, + }, + MetricSetFields: common.MapStr{ + "pretax_cost": usageDetail.PretaxCost, + "department_name": usageDetail.DepartmentName, + "product": usageDetail.Product, + "usage_start": usageDetail.UsageStart.ToTime(), + "usage_end": usageDetail.UsageEnd.ToTime(), + "currency": usageDetail.Currency, + "billing_period_id": usageDetail.BillingPeriodID, + "account_name": usageDetail.AccountName, + }, + Timestamp: time.Now().UTC(), + } + event.RootFields = common.MapStr{} + event.RootFields.Put("cloud.provider", "azure") + event.RootFields.Put("cloud.region", usageDetail.InstanceLocation) + event.RootFields.Put("cloud.instance.name", usageDetail.InstanceName) + event.RootFields.Put("cloud.instance.id", usageDetail.InstanceID) + events = append(events, event) + } + } + + groupedCosts := make(map[*string][]consumption.Forecast) + for _, forecast := range results.ForecastCosts { + groupedCosts[forecast.UsageDate] = append(groupedCosts[forecast.UsageDate], forecast) + } + for _, forecast := range results.ActualCosts { + groupedCosts[forecast.UsageDate] = append(groupedCosts[forecast.UsageDate], forecast) + } + for usageDate, items := range groupedCosts { + var actualCost *decimal.Decimal + var forecastCost *decimal.Decimal + for _, item := range items { + if item.ChargeType == consumption.ChargeTypeActual { + actualCost = item.Charge + } else { + forecastCost = item.Charge + } + } + parsedDate, err := time.Parse("2006-01-02", *usageDate) + if err != nil { + parsedDate = time.Now().UTC() + } + event := mb.Event{ + RootFields: common.MapStr{ + "cloud.provider": "azure", + }, + MetricSetFields: common.MapStr{ + "actual_cost": actualCost, + "forecast_cost": forecastCost, + "usage_date": parsedDate, + "currency": items[0].Currency, + }, + Timestamp: time.Now().UTC(), + } + //event.ID = generateEventID(parsedDate) + events = append(events, event) + } + return events +} + +// getResourceGroupFromId maps resource group from resource ID +func getResourceGroupFromId(path string) string { + params := strings.Split(path, "/") + for i, param := range params { + if param == "resourceGroups" { + return fmt.Sprintf("%s", params[i+1]) + } + } + return "" +} diff --git a/x-pack/metricbeat/module/azure/billing/data_test.go b/x-pack/metricbeat/module/azure/billing/data_test.go new file mode 100644 index 00000000000..7e605a12663 --- /dev/null +++ b/x-pack/metricbeat/module/azure/billing/data_test.go @@ -0,0 +1,98 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package billing + +import ( + "testing" + "time" + + "github.com/Azure/azure-sdk-for-go/services/consumption/mgmt/2019-01-01/consumption" + "github.com/Azure/go-autorest/autorest/date" + "github.com/shopspring/decimal" + "github.com/stretchr/testify/assert" +) + +func TestEventMapping(t *testing.T) { + usageDate := "2020-08-08" + name := "test" + startDate := date.Time{} + + var charge decimal.Decimal = decimal.NewFromFloat(8.123456) + var prop = consumption.ForecastProperties{ + UsageDate: &usageDate, + Grain: "", + Charge: &charge, + Currency: &name, + ChargeType: "Forecast", + ConfidenceLevels: nil, + } + var prop2 = consumption.ForecastProperties{ + UsageDate: &usageDate, + Grain: "", + Charge: &charge, + Currency: &name, + ChargeType: "Actual", + ConfidenceLevels: nil, + } + var prop1 = consumption.UsageDetailProperties{ + InstanceName: &name, + SubscriptionName: &name, + AccountName: &name, + DepartmentName: &name, + Product: &name, + InstanceID: &name, + UsageStart: &startDate, + UsageEnd: &startDate, + } + usage := Usage{ + UsageDetails: []consumption.UsageDetail{ + { + UsageDetailProperties: &prop1, + ID: nil, + Name: nil, + Type: nil, + Tags: nil, + }, + }, + ActualCosts: []consumption.Forecast{ + { + ForecastProperties: &prop2, + ID: nil, + Name: nil, + Type: nil, + Tags: nil, + }}, + ForecastCosts: []consumption.Forecast{ + { + ForecastProperties: &prop, + ID: nil, + Name: nil, + Type: nil, + Tags: nil, + }}, + } + events := EventsMapping(usage) + assert.Equal(t, len(events), 2) + for _, event := range events { + + if ok, _ := event.MetricSetFields.HasKey("department_name"); ok { + val1, _ := event.MetricSetFields.GetValue("account_name") + assert.Equal(t, val1, &name) + val2, _ := event.MetricSetFields.GetValue("product") + assert.Equal(t, val2, &name) + val3, _ := event.MetricSetFields.GetValue("department_name") + assert.Equal(t, val3, &name) + } else { + dt, _ := time.Parse("2006-01-02", usageDate) + val1, _ := event.MetricSetFields.GetValue("usage_date") + assert.Equal(t, val1, dt) + val2, _ := event.MetricSetFields.GetValue("forecast_cost") + assert.Equal(t, val2, &charge) + val3, _ := event.MetricSetFields.GetValue("actual_cost") + assert.Equal(t, val3, &charge) + + } + } +} diff --git a/x-pack/metricbeat/module/azure/billing/mock_service.go b/x-pack/metricbeat/module/azure/billing/mock_service.go new file mode 100644 index 00000000000..4bbf4a16622 --- /dev/null +++ b/x-pack/metricbeat/module/azure/billing/mock_service.go @@ -0,0 +1,45 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package billing + +import ( + "github.com/stretchr/testify/mock" + + "github.com/elastic/beats/v7/libbeat/logp" + + "github.com/Azure/azure-sdk-for-go/services/consumption/mgmt/2019-01-01/consumption" +) + +// Service interface for the azure monitor service and mock for testing +type Service interface { + GetForcast(filter string) (consumption.ForecastsListResult, error) + GetUsageDetails(scope string, expand string, filter string, skiptoken string, top *int32, apply string) (consumption.UsageDetailsListResultPage, error) +} + +// MockService mock for the azure monitor services +type MockService struct { + mock.Mock +} + +// NewMockClient instantiates a new client with the mock billing service +func NewMockClient() *Client { + return &Client{ + new(MockService), + Config{}, + logp.NewLogger("test azure monitor"), + } +} + +// GetForcast is a mock function for the billing service +func (service *MockService) GetForcast(filter string) (consumption.ForecastsListResult, error) { + args := service.Called(filter) + return args.Get(0).(consumption.ForecastsListResult), args.Error(1) +} + +// GetUsageDetails is a mock function for the billing service +func (service *MockService) GetUsageDetails(scope string, expand string, filter string, skiptoken string, top *int32, apply string) (consumption.UsageDetailsListResultPage, error) { + args := service.Called(scope, expand, filter, skiptoken, top, apply) + return args.Get(0).(consumption.UsageDetailsListResultPage), args.Error(1) +} diff --git a/x-pack/metricbeat/module/azure/billing/service.go b/x-pack/metricbeat/module/azure/billing/service.go new file mode 100644 index 00000000000..ea7056e6c6f --- /dev/null +++ b/x-pack/metricbeat/module/azure/billing/service.go @@ -0,0 +1,52 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package billing + +import ( + "context" + + "github.com/Azure/azure-sdk-for-go/services/consumption/mgmt/2019-01-01/consumption" + "github.com/Azure/go-autorest/autorest/azure/auth" + + "github.com/elastic/beats/v7/libbeat/logp" +) + +// BillingService service wrapper to the azure sdk for go +type UsageService struct { + forcastsClient *consumption.ForecastsClient + usageClient *consumption.UsageDetailsClient + context context.Context + log *logp.Logger +} + +// NewService instantiates the Azure monitoring service +func NewService(clientId string, clientSecret string, tenantId string, subscriptionId string) (*UsageService, error) { + clientConfig := auth.NewClientCredentialsConfig(clientId, clientSecret, tenantId) + authorizer, err := clientConfig.Authorizer() + if err != nil { + return nil, err + } + forcastsClient := consumption.NewForecastsClient(subscriptionId) + usageDetailsClient := consumption.NewUsageDetailsClient(subscriptionId) + forcastsClient.Authorizer = authorizer + usageDetailsClient.Authorizer = authorizer + service := &UsageService{ + forcastsClient: &forcastsClient, + usageClient: &usageDetailsClient, + context: context.Background(), + log: logp.NewLogger("azure billing service"), + } + return service, nil +} + +// GetForcast +func (service *UsageService) GetForcast(filter string) (consumption.ForecastsListResult, error) { + return service.forcastsClient.List(service.context, filter) +} + +// GetUsageDetails +func (service *UsageService) GetUsageDetails(scope string, expand string, filter string, skiptoken string, top *int32, apply string) (consumption.UsageDetailsListResultPage, error) { + return service.usageClient.List(service.context, scope, expand, filter, skiptoken, top, apply) +} diff --git a/x-pack/metricbeat/module/azure/fields.go b/x-pack/metricbeat/module/azure/fields.go index 654ab4f460b..1c8cd1527b4 100644 --- a/x-pack/metricbeat/module/azure/fields.go +++ b/x-pack/metricbeat/module/azure/fields.go @@ -19,5 +19,5 @@ func init() { // AssetAzure returns asset data. // This is the base64 encoded gzipped contents of module/azure. func AssetAzure() string { - return "eJzUlb9u2zAQxnc/xcFjgPgBPBQI0KVDt+7CmTor10gkwTulcJ++kPUnlCVTSuPB1mDAIvl9v093JJ/hjU57wL91oA2Aspa0h+1L83+7AchJTGCv7Owevm0AoJ0LlcvrslkSqCQU2kOBG4AjU5nL/jzxGSxW9CHePHryzdTgat+9mXEYy8RSyhUVAdkOI73kG53+uJBH72eF2+fXK8FLG4M0sJnR7R0DiauDoYlhnGGFXa8D4snwkSlGvYw7inzyNBq4nngBo0dploM7gkZYs9aXEW/gPXyGqfYQGAvZPc3ausNvMnox1L7MUmDRlKxC79kW3fzt0/ZzIdq2GWKcYSdN0/yKx5mu+XSbDlIgVJLRqG96N6kPg0TG+dc9Y0H48X1imHNFVtjZcZ2u1GihPmtrk2AebeUIbgKO3mdshYtXlcUNPRxsB1JcB4Lel2zw/N1mfFLbPFo6rmGqjgs4fT1jrKicsb0oBs1y1PmzZmZghe9ZdLq29ySb39qRbH7dr20Q2T399+lyLB0mJnzxbGkCdIyTzjWu8rVS9l5d4I+v34VAyTA32IgflIkAmRgsSUgfI8mAO4zPZLOKbCk0h4uiNXTf0Tpa6GkTgQIVLBpOjxGop00EEgrv/CgF6mCnFzAqHlAoQ2Ncbe96J/Ws0LFOwlTOsrqw/j4uVt7GU+HUBXzvtwP8bAEhkNbBUr67fiCJuoDFXTd5hzh0xb8AAAD///4f3bg=" + return "eJzUV71u2zAQ3v0UB48BkgfwUCBolw7dugtn8qywkUiCPKV1n77QD2lKlGWnVgDHQ4CI5Pej+3ikHuGVjjvAv42jDQArrmgH2+f2/+0GQJIXTllWRu/gywYA+rlQG9lU7RJHFaGnHZS4ATgoqqTfdRMfQWNNJ/D2x0fbTnWmscOTGYYxTArFqqbSodJxJEC+0vG3cTJ5Pgvc/36+EDz3NoidEjO4gdGRN40TlBGmHq6gCzjgLQl1UJRKndodWT5aGg2cd3xBRpDSLgdzAE5kzVJPLa7AHV9Djh0NY+mfHmZpzf4XCZ4M9Q+LJWHJlKJGa5Uuh/nbh+37TPSxiTY6sVlo2r/e4kxq3h3TCAWeKhKc5Caw+WYfIQolb+dMAeH7t4xQqpq0V0aP63SmRhfqc21tFjSPtnIiLhOO1hZKe1W+sL+4oWNj2xPjdULQ2koJ7N7bDM/SNk+Wjmu4VMcLckI9U1lJOVN6z+i4kMjzvWZm4AreDjRfGzhJy7UZScvzfH1A/NPDf3eXQ2VwYcKNvaU1MGjMkrtXVaV0+RGhHaABtYTGY0kgiVFV1yZXNM6RFsd1MzuLGiitI8Y/hTB+Wo3zdbrA+XWKFZsdWXRck+aifbCuyxM4ZOAns0Y2WS5vJB5A89tFYO2SUHQ7eMX92efrQl/oqUnPd8FbiBfbw7APCktOGbl6Ew7brIeHCXw8BoQwzYdELW7znuF83lBwg9Wqm6s7hDpYyGAD7cE4Euh5deIAfJ66D9zKR9HQStO1sWOa2jZMxVs9OYvG31JjFcv3qum7WeFWdVK5YKDwAivyxJ/DSZQbx2e8aUalybU3RUYt6L6tDWohqF0w5KhUnt3xcxgKahcMeXJv6rMUaBCbf00h4x49FUNnvmc3QWs4RTIztdGKjbv+nlpeeUvNgZfupPd+1YcfvUBwxI3TJJ/ONyTPxmF51yEfJMZU/AsAAP//G9NOsw==" } diff --git a/x-pack/metricbeat/modules.d/azure.yml.disabled b/x-pack/metricbeat/modules.d/azure.yml.disabled index a17a0010af2..6ffaaa3ee96 100644 --- a/x-pack/metricbeat/modules.d/azure.yml.disabled +++ b/x-pack/metricbeat/modules.d/azure.yml.disabled @@ -94,6 +94,17 @@ # subscription_id: '${AZURE_SUBSCRIPTION_ID:""}' # refresh_list_interval: 600s +#- module: azure +# metricsets: +# - billing +# enabled: true +# period: 24h +# client_id: '${AZURE_CLIENT_ID:""}' +# client_secret: '${AZURE_CLIENT_SECRET:""}' +# tenant_id: '${AZURE_TENANT_ID:""}' +# subscription_id: '${AZURE_SUBSCRIPTION_ID:""}' +# refresh_list_interval: 600s + #- module: azure # metricsets: # - app_insights