diff --git a/packages/citrix_adc/_dev/build/docs/README.md b/packages/citrix_adc/_dev/build/docs/README.md index 2306d8200f..bf62972620 100644 --- a/packages/citrix_adc/_dev/build/docs/README.md +++ b/packages/citrix_adc/_dev/build/docs/README.md @@ -4,13 +4,13 @@ The Citrix ADC integration allows you to monitor your Citrix ADC instance. Citrix ADC is an application delivery controller that performs application-specific traffic analysis to intelligently distribute, optimize, and secure Layer 4 - Layer 7 (L4–L7) network traffic for web applications. -Use the Citrix ADC integration to collect metrics related to the interface. Then visualize that data in Kibana, create alerts to notify you if something goes wrong, and reference logs when troubleshooting an issue. +Use the Citrix ADC integration to collect metrics related to the interface and service. Then visualize that data in Kibana, create alerts to notify you if something goes wrong, and reference logs when troubleshooting an issue. ## Data streams The Citrix ADC integration collects metrics data. -Metrics give you insight into the statistics of the Citrix ADC. Metrics data streams collected by the Citrix ADC integration include [interface](https://developer-docs.citrix.com/projects/netscaler-nitro-api/en/12.0/statistics/network/interface/), so that the user could monitor and troubleshoot the performance of the Citrix ADC instances. +Metrics give you insight into the statistics of the Citrix ADC. Metrics data streams collected by the Citrix ADC integration include [interface](https://developer-docs.citrix.com/projects/netscaler-nitro-api/en/12.0/statistics/network/interface/) and [service](https://developer-docs.citrix.com/projects/netscaler-nitro-api/en/12.0/statistics/basic/service/), so that the user could monitor and troubleshoot the performance of the Citrix ADC instances. Note: - Users can monitor and see the metrics inside the ingested documents for Citrix ADC in the logs-* index pattern from `Discover`. @@ -38,3 +38,11 @@ This is the `interface` data stream. The Citrix ADC interfaces are numbered in s {{event "interface"}} {{fields "interface"}} + +### Service + +This is the `service` data stream. With the help of the service endpoint, metrics like throughput, client-server connections, request bytes can be collected along with other statistics for Service resources. + +{{event "service"}} + +{{fields "service"}} diff --git a/packages/citrix_adc/_dev/deploy/docker/docker-compose.yml b/packages/citrix_adc/_dev/deploy/docker/docker-compose.yml old mode 100755 new mode 100644 diff --git a/packages/citrix_adc/_dev/deploy/docker/files/config.yml b/packages/citrix_adc/_dev/deploy/docker/files/config.yml index 122d4c6d40..c39fb8ffb6 100644 --- a/packages/citrix_adc/_dev/deploy/docker/files/config.yml +++ b/packages/citrix_adc/_dev/deploy/docker/files/config.yml @@ -5,3 +5,9 @@ rules: - status_code: 200 body: |- {"errorcode":0,"message":"Done","severity":"NONE","Interface":[{"id":"0/1","curintfstate":"UP","curlinkuptime":"4.06:45:16","curlinkdowntime":"00:00:11","totrxbytes":"1103884064","rxbytesrate":4603,"tottxbytes":"776571619","txbytesrate":1924,"totrxpkts":"5396347","rxpktsrate":38,"tottxpkts":"2511171","txpktsrate":5,"jumbopktsreceived":"0","jumbopktsreceivedrate":0,"jumbopktstransmitted":"0","jumbopktstransmittedrate":0,"trunkpktsreceived":"0","trunkpktsreceivedrate":0,"trunkpktstransmitted":"0","trunkpktstransmittedrate":0,"nictotmulticastpkts":"278537","nicmulticastpktsrate":0,"totnetscalerpkts":"2493179","netscalerpktsrate":6,"rxlacpdu":"0","rxlacpdurate":0,"txlacpdu":"0","txlacpdurate":0,"errpktrx":"0","errpktrxrate":0,"errpkttx":"0","errpkttxrate":0,"errifindiscards":"0","errifindiscardsrate":0,"nicerrifoutdiscards":"0","nicerrifoutdiscardsrate":0,"errdroppedrxpkts":"2797172","errdroppedrxpktsrate":32,"errdroppedtxpkts":"0","errdroppedtxpktsrate":0,"errlinkhangs":"0","nicstsstalls":"0","nictxstalls":"0","nicrxstalls":"0","nicerrdisables":"0","linkreinits":"0","totmacmoved":"0","macmovedrate":0,"errnicmuted":"0","rxcrcerrors":"0","rxcrcerrorsrate":0,"interfacealias":"","curlinkstate":"DOWN"},{"id":"LO/1","curintfstate":"UP","curlinkuptime":"4.06:45:27","curlinkdowntime":"00:00:00","totrxbytes":"5134180570","rxbytesrate":14597,"tottxbytes":"6826375522","txbytesrate":18601,"totrxpkts":"36267172","rxpktsrate":100,"tottxpkts":"71618978","txpktsrate":195,"jumbopktsreceived":"0","jumbopktsreceivedrate":0,"jumbopktstransmitted":"0","jumbopktstransmittedrate":0,"trunkpktsreceived":"0","trunkpktsreceivedrate":0,"trunkpktstransmitted":"0","trunkpktstransmittedrate":0,"nictotmulticastpkts":"0","nicmulticastpktsrate":0,"totnetscalerpkts":"36267172","netscalerpktsrate":100,"rxlacpdu":"0","rxlacpdurate":0,"txlacpdu":"0","txlacpdurate":0,"errpktrx":"0","errpktrxrate":0,"errpkttx":"0","errpkttxrate":0,"errifindiscards":"0","errifindiscardsrate":0,"nicerrifoutdiscards":"0","nicerrifoutdiscardsrate":0,"errdroppedrxpkts":"0","errdroppedrxpktsrate":0,"errdroppedtxpkts":"0","errdroppedtxpktsrate":0,"errlinkhangs":"0","nicstsstalls":"0","nictxstalls":"0","nicrxstalls":"0","nicerrdisables":"0","linkreinits":"0","totmacmoved":"0","macmovedrate":0,"errnicmuted":"0","rxcrcerrors":"0","rxcrcerrorsrate":0,"interfacealias":"","curlinkstate":"DOWN"}]} + - path: /nitro/v1/stat/service + methods: ['GET'] + responses: + - status_code: 200 + body: |- + {"errorcode": 0, "message": "Done", "severity": "NONE", "service": [{"name": "nshttpd-gui-127.0.0.1-80", "throughput": "0", "throughputrate": 0, "avgsvrttfb": "34", "primaryipaddress": "127.0.0.1", "primaryport": 80, "servicetype": "HTTP", "state": "UP", "totalrequests": "15133", "requestsrate": 0, "totalresponses": "15133", "responsesrate": 0, "totalrequestbytes": "8334520", "requestbytesrate": 139, "totalresponsebytes": "26482988", "responsebytesrate": 316, "curclntconnections": "8", "surgecount": "0", "cursrvrconnections": "2", "svrestablishedconn": "2", "curreusepool": "2", "maxclients": "0", "curload": "0", "totalconnreassemblyqueue75": "0", "totalconnreassemblyqueueflush": "0", "httpmaxhdrszpkts": "0", "httpmaxhdrfldlenpkts": "0", "tcpmaxooopkts": "0", "curtflags": "0", "totsvrttlbtransactions": "0", "toleratingttlbtransactions": "0", "frustratingttlbtransactions": "0", "vsvrservicehits": "0", "vsvrservicehitsrate": 0, "activetransactions": "0", "serviceorder": "0"}, {"name": "nshttpd-vpn-127.0.0.1-81", "throughput": "0", "throughputrate": 0, "avgsvrttfb": "0", "primaryipaddress": "127.0.0.1", "primaryport": 81, "servicetype": "HTTP", "state": "DOWN", "totalrequests": "0", "requestsrate": 0, "totalresponses": "0", "responsesrate": 0, "totalrequestbytes": "0", "requestbytesrate": 0, "totalresponsebytes": "0", "responsebytesrate": 0, "curclntconnections": "0", "surgecount": "0", "cursrvrconnections": "0", "svrestablishedconn": "0", "curreusepool": "0", "maxclients": "30", "curload": "0", "totalconnreassemblyqueue75": "0", "totalconnreassemblyqueueflush": "0", "httpmaxhdrszpkts": "0", "httpmaxhdrfldlenpkts": "0", "tcpmaxooopkts": "0", "curtflags": "0", "totsvrttlbtransactions": "0", "toleratingttlbtransactions": "0", "frustratingttlbtransactions": "0", "vsvrservicehits": "0", "vsvrservicehitsrate": 0, "activetransactions": "0", "serviceorder": "0"}]} diff --git a/packages/citrix_adc/changelog.yml b/packages/citrix_adc/changelog.yml index 8889e4246c..36af7dff20 100644 --- a/packages/citrix_adc/changelog.yml +++ b/packages/citrix_adc/changelog.yml @@ -1,4 +1,9 @@ # newer versions go on top +- version: "0.2.0" + changes: + - description: Citrix ADC integration package with "service" data stream. + type: enhancement + link: https://github.com/elastic/integrations/pull/4364 - version: "0.1.0" changes: - description: Citrix ADC integration package with "interface" data stream. diff --git a/packages/citrix_adc/data_stream/service/_dev/test/pipeline/test-common-config.yml b/packages/citrix_adc/data_stream/service/_dev/test/pipeline/test-common-config.yml new file mode 100644 index 0000000000..4da2264165 --- /dev/null +++ b/packages/citrix_adc/data_stream/service/_dev/test/pipeline/test-common-config.yml @@ -0,0 +1,3 @@ +fields: + tags: + - preserve_original_event diff --git a/packages/citrix_adc/data_stream/service/_dev/test/pipeline/test-service-metrics.log b/packages/citrix_adc/data_stream/service/_dev/test/pipeline/test-service-metrics.log new file mode 100644 index 0000000000..82bc265049 --- /dev/null +++ b/packages/citrix_adc/data_stream/service/_dev/test/pipeline/test-service-metrics.log @@ -0,0 +1 @@ +{"name":"nshttpd-gui-127.0.0.1-80","throughput":"0","throughputrate":0,"avgsvrttfb":"17","primaryipaddress":"127.0.0.1","primaryport":80,"servicetype":"HTTP","state":"UP","totalrequests":"12578","requestsrate":0,"totalresponses":"12578","responsesrate":0,"totalrequestbytes":"7091409","requestbytesrate":69,"totalresponsebytes":"23688619","responsebytesrate":151,"curclntconnections":"5","surgecount":"0","cursrvrconnections":"1","svrestablishedconn":"1","curreusepool":"1","maxclients":"0","curload":"0","totalconnreassemblyqueue75":"0","totalconnreassemblyqueueflush":"0","httpmaxhdrszpkts":"0","httpmaxhdrfldlenpkts":"0","tcpmaxooopkts":"0","curtflags":"0","totsvrttlbtransactions":"0","toleratingttlbtransactions":"0","frustratingttlbtransactions":"0","vsvrservicehits":"0","vsvrservicehitsrate":0,"activetransactions":"0","serviceorder":"0"} \ No newline at end of file diff --git a/packages/citrix_adc/data_stream/service/_dev/test/pipeline/test-service-metrics.log-expected.json b/packages/citrix_adc/data_stream/service/_dev/test/pipeline/test-service-metrics.log-expected.json new file mode 100644 index 0000000000..9fed4ef8ea --- /dev/null +++ b/packages/citrix_adc/data_stream/service/_dev/test/pipeline/test-service-metrics.log-expected.json @@ -0,0 +1,93 @@ +{ + "expected": [ + { + "citrix_adc": { + "service": { + "client_connection": { + "count": 5.0 + }, + "primary": { + "ip_address": "127.0.0.1", + "port": 80 + }, + "request": { + "bytes": { + "rate": 69, + "value": 7091409.0 + }, + "count": 12578.0, + "rate": 0 + }, + "response": { + "bytes": { + "rate": 151, + "value": 2.368862E7 + }, + "count": 12578.0, + "rate": 0 + }, + "reuse_pool": 1.0, + "server": { + "connection": { + "count": 1.0, + "established": { + "count": 1.0 + } + }, + "time_to_first_byte": { + "avg": 17.0 + } + }, + "surge_queue": { + "count": 0.0 + }, + "throughput": { + "rate": 0, + "value": 0.0 + }, + "transaction": { + "active": { + "count": 0.0 + }, + "frustrating": { + "count": 0.0 + }, + "time_to_last_byte": { + "count": 0.0 + }, + "tolerable": { + "count": 0.0 + } + } + } + }, + "ecs": { + "version": "8.4.0" + }, + "event": { + "category": [ + "web" + ], + "kind": "event", + "module": "citrix_adc", + "original": "{\"name\":\"nshttpd-gui-127.0.0.1-80\",\"throughput\":\"0\",\"throughputrate\":0,\"avgsvrttfb\":\"17\",\"primaryipaddress\":\"127.0.0.1\",\"primaryport\":80,\"servicetype\":\"HTTP\",\"state\":\"UP\",\"totalrequests\":\"12578\",\"requestsrate\":0,\"totalresponses\":\"12578\",\"responsesrate\":0,\"totalrequestbytes\":\"7091409\",\"requestbytesrate\":69,\"totalresponsebytes\":\"23688619\",\"responsebytesrate\":151,\"curclntconnections\":\"5\",\"surgecount\":\"0\",\"cursrvrconnections\":\"1\",\"svrestablishedconn\":\"1\",\"curreusepool\":\"1\",\"maxclients\":\"0\",\"curload\":\"0\",\"totalconnreassemblyqueue75\":\"0\",\"totalconnreassemblyqueueflush\":\"0\",\"httpmaxhdrszpkts\":\"0\",\"httpmaxhdrfldlenpkts\":\"0\",\"tcpmaxooopkts\":\"0\",\"curtflags\":\"0\",\"totsvrttlbtransactions\":\"0\",\"toleratingttlbtransactions\":\"0\",\"frustratingttlbtransactions\":\"0\",\"vsvrservicehits\":\"0\",\"vsvrservicehitsrate\":0,\"activetransactions\":\"0\",\"serviceorder\":\"0\"}", + "type": [ + "info" + ] + }, + "related": { + "ip": [ + "127.0.0.1" + ] + }, + "service": { + "name": "nshttpd-gui-127.0.0.1-80", + "state": "UP", + "type": "HTTP" + }, + "tags": [ + "preserve_original_event" + ] + } + ] +} \ No newline at end of file diff --git a/packages/citrix_adc/data_stream/service/_dev/test/system/test-default-config.yml b/packages/citrix_adc/data_stream/service/_dev/test/system/test-default-config.yml new file mode 100644 index 0000000000..b18d4e7d1d --- /dev/null +++ b/packages/citrix_adc/data_stream/service/_dev/test/system/test-default-config.yml @@ -0,0 +1,9 @@ +input: httpjson +service: citrix_adc +vars: + hostname: http://{{Hostname}}:{{Port}} + username: nsroot + password: nsroot +data_stream: + vars: + preserve_original_event: true diff --git a/packages/citrix_adc/data_stream/service/agent/stream/stream.yml.hbs b/packages/citrix_adc/data_stream/service/agent/stream/stream.yml.hbs new file mode 100644 index 0000000000..13592b6e7c --- /dev/null +++ b/packages/citrix_adc/data_stream/service/agent/stream/stream.yml.hbs @@ -0,0 +1,29 @@ +config_version: 2 +interval: {{period}} +request.url: {{hostname}}/nitro/v1/stat/service +request.method: GET +{{#if username}} +{{#if password}} +auth.basic.user: {{username}} +auth.basic.password: {{password}} +{{/if}} +{{/if}} +response.split: + target: body.service +{{#if ssl}} +request.ssl: {{ssl}} +{{/if}} +tags: +{{#if preserve_original_event}} + - preserve_original_event +{{/if}} +{{#each tags as |tag|}} + - {{tag}} +{{/each}} +{{#contains "forwarded" tags}} +publisher_pipeline.disable_host: true +{{/contains}} +{{#if processors}} +processors: +{{processors}} +{{/if}} \ No newline at end of file diff --git a/packages/citrix_adc/data_stream/service/elasticsearch/ingest_pipeline/default.yml b/packages/citrix_adc/data_stream/service/elasticsearch/ingest_pipeline/default.yml new file mode 100644 index 0000000000..f3a754ceb7 --- /dev/null +++ b/packages/citrix_adc/data_stream/service/elasticsearch/ingest_pipeline/default.yml @@ -0,0 +1,217 @@ +--- +description: Pipeline for parsing Citrix ADC Service metrics. +processors: + - set: + field: ecs.version + value: 8.4.0 + ignore_failure: true + ignore_empty_value: true + - set: + field: event.type + value: ["info"] + ignore_failure: true + ignore_empty_value: true + - set: + field: event.kind + value: event + ignore_failure: true + ignore_empty_value: true + - set: + field: event.category + value: ["web"] + ignore_failure: true + ignore_empty_value: true + - set: + field: event.module + value: citrix_adc + ignore_failure: true + ignore_empty_value: true + - rename: + field: message + target_field: event.original + ignore_missing: true + ignore_failure: true + - json: + field: event.original + target_field: json + ignore_failure: true + - rename: + field: json.primaryport + target_field: citrix_adc.service.primary.port + ignore_missing: true + ignore_failure: true + - rename: + field: json.name + target_field: service.name + ignore_missing: true + ignore_failure: true + - rename: + field: json.requestbytesrate + target_field: citrix_adc.service.request.bytes.rate + ignore_missing: true + ignore_failure: true + - rename: + field: json.requestsrate + target_field: citrix_adc.service.request.rate + ignore_missing: true + ignore_failure: true + - rename: + field: json.responsebytesrate + target_field: citrix_adc.service.response.bytes.rate + ignore_missing: true + ignore_failure: true + - rename: + field: json.responsesrate + target_field: citrix_adc.service.response.rate + ignore_missing: true + ignore_failure: true + - rename: + field: json.state + target_field: service.state + ignore_missing: true + ignore_failure: true + - rename: + field: json.throughputrate + target_field: citrix_adc.service.throughput.rate + ignore_missing: true + ignore_failure: true + - rename: + field: json.servicetype + target_field: service.type + ignore_missing: true + ignore_failure: true + - remove: + field: event.original + if: ctx.tags == null || !(ctx.tags.contains('preserve_original_event')) + ignore_missing: true + ignore_failure: true + # Renaming and converting fields to float + - convert: + field: json.curclntconnections + target_field: citrix_adc.service.client_connection.count + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.totalrequestbytes + target_field: citrix_adc.service.request.bytes.value + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.totalrequests + target_field: citrix_adc.service.request.count + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.totalresponsebytes + target_field: citrix_adc.service.response.bytes.value + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.totalresponses + target_field: citrix_adc.service.response.count + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.curreusepool + target_field: citrix_adc.service.reuse_pool + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.cursrvrconnections + target_field: citrix_adc.service.server.connection.count + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.svrestablishedconn + target_field: citrix_adc.service.server.connection.established.count + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.avgsvrttfb + target_field: citrix_adc.service.server.time_to_first_byte.avg + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.surgecount + target_field: citrix_adc.service.surge_queue.count + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.throughput + target_field: citrix_adc.service.throughput.value + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.activetransactions + target_field: citrix_adc.service.transaction.active.count + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.frustratingttlbtransactions + target_field: citrix_adc.service.transaction.frustrating.count + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.totsvrttlbtransactions + target_field: citrix_adc.service.transaction.time_to_last_byte.count + type: float + ignore_missing: true + ignore_failure: true + - convert: + field: json.toleratingttlbtransactions + target_field: citrix_adc.service.transaction.tolerable.count + type: float + ignore_missing: true + ignore_failure: true + # Renaming and converting field to ip + - convert: + field: json.primaryipaddress + target_field: citrix_adc.service.primary.ip_address + type: ip + ignore_missing: true + ignore_failure: true + - append: + field: related.ip + value: "{{{citrix_adc.service.primary.ip_address}}}" + if: ctx.citrix_adc?.service?.primary?.ip_address != null + allow_duplicates: false + ignore_failure: true + - script: + description: Drops null/empty values recursively. + lang: painless + source: | + boolean drop(Object o) { + if (o == null || o == "") { + return true; + } else if (o instanceof Map) { + ((Map) o).values().removeIf(v -> drop(v)); + return (((Map) o).size() == 0); + } else if (o instanceof List) { + ((List) o).removeIf(v -> drop(v)); + return (((List) o).length == 0); + } + return false; + } + drop(ctx); + - remove: + field: + - json + ignore_missing: true + ignore_failure: true +on_failure: + - set: + field: error.message + value: "{{{_ingest.on_failure_message}}}" \ No newline at end of file diff --git a/packages/citrix_adc/data_stream/service/fields/base-fields.yml b/packages/citrix_adc/data_stream/service/fields/base-fields.yml new file mode 100644 index 0000000000..71df896d68 --- /dev/null +++ b/packages/citrix_adc/data_stream/service/fields/base-fields.yml @@ -0,0 +1,15 @@ +- name: data_stream.type + type: constant_keyword + description: Data stream type. +- name: data_stream.dataset + type: constant_keyword + description: Data stream dataset. +- name: data_stream.namespace + type: constant_keyword + description: Data stream namespace. +- name: input.type + type: keyword + description: Type of Filebeat input. +- name: '@timestamp' + type: date + description: Event timestamp. diff --git a/packages/citrix_adc/data_stream/service/fields/ecs.yml b/packages/citrix_adc/data_stream/service/fields/ecs.yml new file mode 100644 index 0000000000..bbe5cd2ab7 --- /dev/null +++ b/packages/citrix_adc/data_stream/service/fields/ecs.yml @@ -0,0 +1,26 @@ +- external: ecs + name: ecs.version +- external: ecs + name: error.message +- external: ecs + name: event.category +- external: ecs + name: event.dataset +- external: ecs + name: event.ingested +- external: ecs + name: event.kind +- external: ecs + name: event.module +- external: ecs + name: event.type +- external: ecs + name: related.ip +- external: ecs + name: service.name +- external: ecs + name: service.state +- external: ecs + name: service.type +- external: ecs + name: tags diff --git a/packages/citrix_adc/data_stream/service/fields/fields.yml b/packages/citrix_adc/data_stream/service/fields/fields.yml new file mode 100644 index 0000000000..8908125926 --- /dev/null +++ b/packages/citrix_adc/data_stream/service/fields/fields.yml @@ -0,0 +1,114 @@ +- name: citrix_adc + type: group + fields: + - name: service + type: group + fields: + - name: client_connection.count + type: float + description: Number of current client connections. + metric_type: counter + - name: primary + type: group + fields: + - name: ip_address + type: ip + description: The IP address on which specific service is running. + - name: port + type: long + description: The port on which the service is running. + - name: request + type: group + fields: + - name: bytes.rate + type: float + description: Rate (/s) counter for totalrequestbytes. + metric_type: gauge + - name: bytes.value + type: float + description: Total number of request bytes received on specific service or virtual server. + metric_type: counter + unit: byte + - name: count + type: float + description: Total number of requests received on specific service or virtual server. + metric_type: counter + - name: rate + type: float + description: Rate (/s) counter for totalrequests. + metric_type: gauge + - name: response + type: group + fields: + - name: bytes.rate + type: float + description: Rate (/s) counter for totalresponsebytes. + metric_type: gauge + - name: bytes.value + type: float + description: Number of response bytes received by specific service or virtual server. + metric_type: counter + unit: byte + - name: count + type: float + description: Number of responses received on specific service or virtual server. + metric_type: counter + - name: rate + type: float + description: Rate (/s) counter for totalresponses. + metric_type: gauge + - name: reuse_pool + type: float + description: Number of requests in the idle queue/reuse pool. + - name: server + type: group + fields: + - name: connection + type: group + fields: + - name: count + type: float + description: Number of current connections to the actual servers behind the virtual server. + metric_type: counter + - name: established.count + type: float + description: Number of server connections in ESTABLISHED state. + metric_type: counter + - name: time_to_first_byte.avg + type: float + description: Average TTFB (Time To First Byte) between the NetScaler appliance and the server. + metric_type: gauge + - name: surge_queue.count + type: float + description: Number of requests in the surge queue. + metric_type: counter + - name: throughput + type: group + fields: + - name: rate + type: float + description: Rate (/s) counter for throughput. + metric_type: gauge + - name: value + type: float + description: Number of bytes received or sent by specific service (Mbps). + metric_type: counter + - name: transaction + type: group + fields: + - name: active.count + type: float + description: Number of active transactions handled by specific service. + metric_type: counter + - name: frustrating.count + type: float + description: Frustrating transactions based on APDEX (Application Performance Index) threshold (>4T). + metric_type: gauge + - name: time_to_last_byte.count + type: float + description: Total transactions where server TTLB (Time To Last Byte) is calculated. + metric_type: counter + - name: tolerable.count + type: float + description: Tolerable transactions based on APDEX (Application Performance Index) threshold (>T ;; <4T). + metric_type: counter diff --git a/packages/citrix_adc/data_stream/service/manifest.yml b/packages/citrix_adc/data_stream/service/manifest.yml new file mode 100644 index 0000000000..1d34c5e91c --- /dev/null +++ b/packages/citrix_adc/data_stream/service/manifest.yml @@ -0,0 +1,38 @@ +title: Citrix ADC Service metrics +type: logs +streams: + - input: httpjson + template_path: stream.yml.hbs + title: Citrix ADC Service metrics + description: Collect Citrix ADC Service metrics. + vars: + - name: period + type: text + required: true + title: Period + default: 10s + description: Period of fetching metrics, i.e. 1s/1m/1h. + - name: tags + type: text + title: Tags + multi: true + required: false + show_user: false + default: + - citrix_adc-service + - forwarded + - name: preserve_original_event + required: true + show_user: true + title: Preserve original event + description: Preserves a raw copy of the original event, added to the field `event.original`. + type: bool + multi: false + default: false + - name: processors + type: yaml + title: Processors + multi: false + required: false + show_user: false + description: Processors are used to reduce the number of fields in the exported event or to enhance the event with metadata. This executes in the agent before the logs are parsed. See [Processors](https://www.elastic.co/guide/en/beats/filebeat/current/filtering-and-enhancing-data.html) for details. diff --git a/packages/citrix_adc/data_stream/service/sample_event.json b/packages/citrix_adc/data_stream/service/sample_event.json new file mode 100644 index 0000000000..f71e0f12f5 --- /dev/null +++ b/packages/citrix_adc/data_stream/service/sample_event.json @@ -0,0 +1,116 @@ +{ + "@timestamp": "2022-10-07T06:26:11.339Z", + "agent": { + "ephemeral_id": "2fa2a685-d35a-40a6-8212-7a9dd581d647", + "id": "6713ae74-2a36-4e79-bc7b-954d6b48d5bd", + "name": "docker-fleet-agent", + "type": "filebeat", + "version": "8.4.1" + }, + "citrix_adc": { + "service": { + "client_connection": { + "count": 8 + }, + "primary": { + "ip_address": "127.0.0.1", + "port": 80 + }, + "request": { + "bytes": { + "rate": 139, + "value": 8334520 + }, + "count": 15133, + "rate": 0 + }, + "response": { + "bytes": { + "rate": 316, + "value": 26482988 + }, + "count": 15133, + "rate": 0 + }, + "reuse_pool": 2, + "server": { + "connection": { + "count": 2, + "established": { + "count": 2 + } + }, + "time_to_first_byte": { + "avg": 34 + } + }, + "surge_queue": { + "count": 0 + }, + "throughput": { + "rate": 0, + "value": 0 + }, + "transaction": { + "active": { + "count": 0 + }, + "frustrating": { + "count": 0 + }, + "time_to_last_byte": { + "count": 0 + }, + "tolerable": { + "count": 0 + } + } + } + }, + "data_stream": { + "dataset": "citrix_adc.service", + "namespace": "ep", + "type": "logs" + }, + "ecs": { + "version": "8.4.0" + }, + "elastic_agent": { + "id": "6713ae74-2a36-4e79-bc7b-954d6b48d5bd", + "snapshot": false, + "version": "8.4.1" + }, + "event": { + "agent_id_status": "verified", + "category": [ + "web" + ], + "created": "2022-10-07T06:26:11.339Z", + "dataset": "citrix_adc.service", + "ingested": "2022-10-07T06:26:14Z", + "kind": "event", + "module": "citrix_adc", + "original": "{\"activetransactions\":\"0\",\"avgsvrttfb\":\"34\",\"curclntconnections\":\"8\",\"curload\":\"0\",\"curreusepool\":\"2\",\"cursrvrconnections\":\"2\",\"curtflags\":\"0\",\"frustratingttlbtransactions\":\"0\",\"httpmaxhdrfldlenpkts\":\"0\",\"httpmaxhdrszpkts\":\"0\",\"maxclients\":\"0\",\"name\":\"nshttpd-gui-127.0.0.1-80\",\"primaryipaddress\":\"127.0.0.1\",\"primaryport\":80,\"requestbytesrate\":139,\"requestsrate\":0,\"responsebytesrate\":316,\"responsesrate\":0,\"serviceorder\":\"0\",\"servicetype\":\"HTTP\",\"state\":\"UP\",\"surgecount\":\"0\",\"svrestablishedconn\":\"2\",\"tcpmaxooopkts\":\"0\",\"throughput\":\"0\",\"throughputrate\":0,\"toleratingttlbtransactions\":\"0\",\"totalconnreassemblyqueue75\":\"0\",\"totalconnreassemblyqueueflush\":\"0\",\"totalrequestbytes\":\"8334520\",\"totalrequests\":\"15133\",\"totalresponsebytes\":\"26482988\",\"totalresponses\":\"15133\",\"totsvrttlbtransactions\":\"0\",\"vsvrservicehits\":\"0\",\"vsvrservicehitsrate\":0}", + "type": [ + "info" + ] + }, + "input": { + "type": "httpjson" + }, + "related": { + "ip": [ + "127.0.0.1" + ] + }, + "service": { + "name": "nshttpd-gui-127.0.0.1-80", + "state": "UP", + "type": "HTTP" + }, + "tags": [ + "preserve_original_event", + "citrix_adc-service", + "forwarded" + ] +} \ No newline at end of file diff --git a/packages/citrix_adc/docs/README.md b/packages/citrix_adc/docs/README.md index e06de6b5b6..ce50c3f9fd 100644 --- a/packages/citrix_adc/docs/README.md +++ b/packages/citrix_adc/docs/README.md @@ -4,13 +4,13 @@ The Citrix ADC integration allows you to monitor your Citrix ADC instance. Citrix ADC is an application delivery controller that performs application-specific traffic analysis to intelligently distribute, optimize, and secure Layer 4 - Layer 7 (L4–L7) network traffic for web applications. -Use the Citrix ADC integration to collect metrics related to the interface. Then visualize that data in Kibana, create alerts to notify you if something goes wrong, and reference logs when troubleshooting an issue. +Use the Citrix ADC integration to collect metrics related to the interface and service. Then visualize that data in Kibana, create alerts to notify you if something goes wrong, and reference logs when troubleshooting an issue. ## Data streams The Citrix ADC integration collects metrics data. -Metrics give you insight into the statistics of the Citrix ADC. Metrics data streams collected by the Citrix ADC integration include [interface](https://developer-docs.citrix.com/projects/netscaler-nitro-api/en/12.0/statistics/network/interface/), so that the user could monitor and troubleshoot the performance of the Citrix ADC instances. +Metrics give you insight into the statistics of the Citrix ADC. Metrics data streams collected by the Citrix ADC integration include [interface](https://developer-docs.citrix.com/projects/netscaler-nitro-api/en/12.0/statistics/network/interface/) and [service](https://developer-docs.citrix.com/projects/netscaler-nitro-api/en/12.0/statistics/basic/service/), so that the user could monitor and troubleshoot the performance of the Citrix ADC instances. Note: - Users can monitor and see the metrics inside the ingested documents for Citrix ADC in the logs-* index pattern from `Discover`. @@ -243,3 +243,174 @@ An example event for `interface` looks as following: | interface.id | Interface ID as reported by an observer (typically SNMP interface ID). | keyword | | | | tags | List of keywords used to tag each event. | keyword | | | + +### Service + +This is the `service` data stream. With the help of the service endpoint, metrics like throughput, client-server connections, request bytes can be collected along with other statistics for Service resources. + +An example event for `service` looks as following: + +```json +{ + "@timestamp": "2022-10-07T06:26:11.339Z", + "agent": { + "ephemeral_id": "2fa2a685-d35a-40a6-8212-7a9dd581d647", + "id": "6713ae74-2a36-4e79-bc7b-954d6b48d5bd", + "name": "docker-fleet-agent", + "type": "filebeat", + "version": "8.4.1" + }, + "citrix_adc": { + "service": { + "client_connection": { + "count": 8 + }, + "primary": { + "ip_address": "127.0.0.1", + "port": 80 + }, + "request": { + "bytes": { + "rate": 139, + "value": 8334520 + }, + "count": 15133, + "rate": 0 + }, + "response": { + "bytes": { + "rate": 316, + "value": 26482988 + }, + "count": 15133, + "rate": 0 + }, + "reuse_pool": 2, + "server": { + "connection": { + "count": 2, + "established": { + "count": 2 + } + }, + "time_to_first_byte": { + "avg": 34 + } + }, + "surge_queue": { + "count": 0 + }, + "throughput": { + "rate": 0, + "value": 0 + }, + "transaction": { + "active": { + "count": 0 + }, + "frustrating": { + "count": 0 + }, + "time_to_last_byte": { + "count": 0 + }, + "tolerable": { + "count": 0 + } + } + } + }, + "data_stream": { + "dataset": "citrix_adc.service", + "namespace": "ep", + "type": "logs" + }, + "ecs": { + "version": "8.4.0" + }, + "elastic_agent": { + "id": "6713ae74-2a36-4e79-bc7b-954d6b48d5bd", + "snapshot": false, + "version": "8.4.1" + }, + "event": { + "agent_id_status": "verified", + "category": [ + "web" + ], + "created": "2022-10-07T06:26:11.339Z", + "dataset": "citrix_adc.service", + "ingested": "2022-10-07T06:26:14Z", + "kind": "event", + "module": "citrix_adc", + "original": "{\"activetransactions\":\"0\",\"avgsvrttfb\":\"34\",\"curclntconnections\":\"8\",\"curload\":\"0\",\"curreusepool\":\"2\",\"cursrvrconnections\":\"2\",\"curtflags\":\"0\",\"frustratingttlbtransactions\":\"0\",\"httpmaxhdrfldlenpkts\":\"0\",\"httpmaxhdrszpkts\":\"0\",\"maxclients\":\"0\",\"name\":\"nshttpd-gui-127.0.0.1-80\",\"primaryipaddress\":\"127.0.0.1\",\"primaryport\":80,\"requestbytesrate\":139,\"requestsrate\":0,\"responsebytesrate\":316,\"responsesrate\":0,\"serviceorder\":\"0\",\"servicetype\":\"HTTP\",\"state\":\"UP\",\"surgecount\":\"0\",\"svrestablishedconn\":\"2\",\"tcpmaxooopkts\":\"0\",\"throughput\":\"0\",\"throughputrate\":0,\"toleratingttlbtransactions\":\"0\",\"totalconnreassemblyqueue75\":\"0\",\"totalconnreassemblyqueueflush\":\"0\",\"totalrequestbytes\":\"8334520\",\"totalrequests\":\"15133\",\"totalresponsebytes\":\"26482988\",\"totalresponses\":\"15133\",\"totsvrttlbtransactions\":\"0\",\"vsvrservicehits\":\"0\",\"vsvrservicehitsrate\":0}", + "type": [ + "info" + ] + }, + "input": { + "type": "httpjson" + }, + "related": { + "ip": [ + "127.0.0.1" + ] + }, + "service": { + "name": "nshttpd-gui-127.0.0.1-80", + "state": "UP", + "type": "HTTP" + }, + "tags": [ + "preserve_original_event", + "citrix_adc-service", + "forwarded" + ] +} +``` + +**Exported fields** + +| Field | Description | Type | Unit | Metric Type | +|---|---|---|---|---| +| @timestamp | Event timestamp. | date | | | +| citrix_adc.service.client_connection.count | Number of current client connections. | float | | counter | +| citrix_adc.service.primary.ip_address | The IP address on which specific service is running. | ip | | | +| citrix_adc.service.primary.port | The port on which the service is running. | long | | | +| citrix_adc.service.request.bytes.rate | Rate (/s) counter for totalrequestbytes. | float | | gauge | +| citrix_adc.service.request.bytes.value | Total number of request bytes received on specific service or virtual server. | float | byte | counter | +| citrix_adc.service.request.count | Total number of requests received on specific service or virtual server. | float | | counter | +| citrix_adc.service.request.rate | Rate (/s) counter for totalrequests. | float | | gauge | +| citrix_adc.service.response.bytes.rate | Rate (/s) counter for totalresponsebytes. | float | | gauge | +| citrix_adc.service.response.bytes.value | Number of response bytes received by specific service or virtual server. | float | byte | counter | +| citrix_adc.service.response.count | Number of responses received on specific service or virtual server. | float | | counter | +| citrix_adc.service.response.rate | Rate (/s) counter for totalresponses. | float | | gauge | +| citrix_adc.service.reuse_pool | Number of requests in the idle queue/reuse pool. | float | | | +| citrix_adc.service.server.connection.count | Number of current connections to the actual servers behind the virtual server. | float | | counter | +| citrix_adc.service.server.connection.established.count | Number of server connections in ESTABLISHED state. | float | | counter | +| citrix_adc.service.server.time_to_first_byte.avg | Average TTFB (Time To First Byte) between the NetScaler appliance and the server. | float | | gauge | +| citrix_adc.service.surge_queue.count | Number of requests in the surge queue. | float | | counter | +| citrix_adc.service.throughput.rate | Rate (/s) counter for throughput. | float | | gauge | +| citrix_adc.service.throughput.value | Number of bytes received or sent by specific service (Mbps). | float | | counter | +| citrix_adc.service.transaction.active.count | Number of active transactions handled by specific service. | float | | counter | +| citrix_adc.service.transaction.frustrating.count | Frustrating transactions based on APDEX (Application Performance Index) threshold (\>4T). | float | | gauge | +| citrix_adc.service.transaction.time_to_last_byte.count | Total transactions where server TTLB (Time To Last Byte) is calculated. | float | | counter | +| citrix_adc.service.transaction.tolerable.count | Tolerable transactions based on APDEX (Application Performance Index) threshold (\>T ;; \<4T). | float | | counter | +| data_stream.dataset | Data stream dataset. | constant_keyword | | | +| data_stream.namespace | Data stream namespace. | constant_keyword | | | +| data_stream.type | Data stream type. | constant_keyword | | | +| ecs.version | ECS version this event conforms to. `ecs.version` is a required field and must exist in all events. When querying across multiple indices -- which may conform to slightly different ECS versions -- this field lets integrations adjust to the schema version of the events. | keyword | | | +| error.message | Error message. | match_only_text | | | +| event.category | This is one of four ECS Categorization Fields, and indicates the second level in the ECS category hierarchy. `event.category` represents the "big buckets" of ECS categories. For example, filtering on `event.category:process` yields all events relating to process activity. This field is closely related to `event.type`, which is used as a subcategory. This field is an array. This will allow proper categorization of some events that fall in multiple categories. | keyword | | | +| event.dataset | Name of the dataset. If an event source publishes more than one type of log or events (e.g. access log, error log), the dataset is used to specify which one the event comes from. It's recommended but not required to start the dataset name with the module name, followed by a dot, then the dataset name. | keyword | | | +| event.ingested | Timestamp when an event arrived in the central data store. This is different from `@timestamp`, which is when the event originally occurred. It's also different from `event.created`, which is meant to capture the first time an agent saw the event. In normal conditions, assuming no tampering, the timestamps should chronologically look like this: `@timestamp` \< `event.created` \< `event.ingested`. | date | | | +| event.kind | This is one of four ECS Categorization Fields, and indicates the highest level in the ECS category hierarchy. `event.kind` gives high-level information about what type of information the event contains, without being specific to the contents of the event. For example, values of this field distinguish alert events from metric events. The value of this field can be used to inform how these kinds of events should be handled. They may warrant different retention, different access control, it may also help understand whether the data coming in at a regular interval or not. | keyword | | | +| event.module | Name of the module this data is coming from. If your monitoring agent supports the concept of modules or plugins to process events of a given source (e.g. Apache logs), `event.module` should contain the name of this module. | keyword | | | +| event.type | This is one of four ECS Categorization Fields, and indicates the third level in the ECS category hierarchy. `event.type` represents a categorization "sub-bucket" that, when used along with the `event.category` field values, enables filtering events down to a level appropriate for single visualization. This field is an array. This will allow proper categorization of some events that fall in multiple event types. | keyword | | | +| input.type | Type of Filebeat input. | keyword | | | +| related.ip | All of the IPs seen on your event. | ip | | | +| service.name | Name of the service data is collected from. The name of the service is normally user given. This allows for distributed services that run on multiple hosts to correlate the related instances based on the name. In the case of Elasticsearch the `service.name` could contain the cluster name. For Beats the `service.name` is by default a copy of the `service.type` field if no name is specified. | keyword | | | +| service.state | Current state of the service. | keyword | | | +| service.type | The type of the service data is collected from. The type can be used to group and correlate logs and metrics from one service type. Example: If logs or metrics are collected from Elasticsearch, `service.type` would be `elasticsearch`. | keyword | | | +| tags | List of keywords used to tag each event. | keyword | | | + diff --git a/packages/citrix_adc/img/citrix_adc-logo.svg b/packages/citrix_adc/img/citrix_adc-logo.svg old mode 100755 new mode 100644 diff --git a/packages/citrix_adc/img/citrix_adc-overview-dashboard.png b/packages/citrix_adc/img/citrix_adc-overview-dashboard.png index f22e7ec45e..07efd0dc9a 100644 Binary files a/packages/citrix_adc/img/citrix_adc-overview-dashboard.png and b/packages/citrix_adc/img/citrix_adc-overview-dashboard.png differ diff --git a/packages/citrix_adc/img/citrix_adc-service-dashboard.png b/packages/citrix_adc/img/citrix_adc-service-dashboard.png new file mode 100644 index 0000000000..4fb2b232cc Binary files /dev/null and b/packages/citrix_adc/img/citrix_adc-service-dashboard.png differ diff --git a/packages/citrix_adc/kibana/dashboard/citrix_adc-8d0661f0-4fa4-11ed-8fa7-7bab33159b99.json b/packages/citrix_adc/kibana/dashboard/citrix_adc-8d0661f0-4fa4-11ed-8fa7-7bab33159b99.json new file mode 100644 index 0000000000..629e94f213 --- /dev/null +++ b/packages/citrix_adc/kibana/dashboard/citrix_adc-8d0661f0-4fa4-11ed-8fa7-7bab33159b99.json @@ -0,0 +1,706 @@ +{ + "attributes": { + "description": "This Citrix ADC dashboard visualizes Service metrics.", + "hits": 0, + "kibanaSavedObjectMeta": { + "searchSourceJSON": { + "filter": [], + "query": { + "language": "kuery", + "query": "" + } + } + }, + "optionsJSON": { + "hidePanelTitles": false, + "syncColors": false, + "syncTooltips": false, + "useMargins": true + }, + "panelsJSON": [ + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-a008374b-1b33-4196-9e28-a4bcb3c6a702", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "6b649adf-bd72-407d-9a43-72766a54483f", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "a008374b-1b33-4196-9e28-a4bcb3c6a702": { + "columnOrder": [ + "bbbc12cd-1574-49b2-ac83-1ff292b6dbe6", + "40bd5270-9256-46f7-9c80-74680ab31ad2", + "2ba6f7c0-7e89-4e5c-8883-cd2383ac530c" + ], + "columns": { + "2ba6f7c0-7e89-4e5c-8883-cd2383ac530c": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "citrix_adc.service.request.count: *" + }, + "isBucketed": false, + "label": "Requests", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "citrix_adc.service.request.count" + }, + "40bd5270-9256-46f7-9c80-74680ab31ad2": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "dropPartials": false, + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + }, + "bbbc12cd-1574-49b2-ac83-1ff292b6dbe6": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Top 10 values of Service name", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "2ba6f7c0-7e89-4e5c-8883-cd2383ac530c", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "parentFormat": { + "id": "terms" + }, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "service.name" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "index": "6b649adf-bd72-407d-9a43-72766a54483f", + "key": "event.dataset", + "negate": false, + "params": { + "query": "citrix_adc.service" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.dataset": "citrix_adc.service" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "2ba6f7c0-7e89-4e5c-8883-cd2383ac530c" + ], + "layerId": "a008374b-1b33-4196-9e28-a4bcb3c6a702", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "splitAccessor": "bbbc12cd-1574-49b2-ac83-1ff292b6dbe6", + "xAccessor": "40bd5270-9256-46f7-9c80-74680ab31ad2" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "line", + "title": "Empty XY chart", + "valueLabels": "hide" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "9c9cb657-e287-4214-82c0-f0e7cdc96956", + "w": 24, + "x": 0, + "y": 0 + }, + "panelIndex": "9c9cb657-e287-4214-82c0-f0e7cdc96956", + "title": "Requests over time [Metrics Citrix ADC]", + "type": "lens", + "version": "8.4.1" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-65ecbe10-9b4b-41aa-b4e6-c6def5d0fdbd", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "c5e654ca-86ee-4e91-a1ef-fa5f4f530346", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "65ecbe10-9b4b-41aa-b4e6-c6def5d0fdbd": { + "columnOrder": [ + "83fa5738-92a7-4061-8e33-f70258438e00", + "1de9b4f8-6a0f-4311-8981-2aaa33eebcba", + "6721c20a-5b3e-49f1-8595-3cbcd82c7d6b" + ], + "columns": { + "1de9b4f8-6a0f-4311-8981-2aaa33eebcba": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "dropPartials": false, + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + }, + "6721c20a-5b3e-49f1-8595-3cbcd82c7d6b": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "citrix_adc.service.response.count: *" + }, + "isBucketed": false, + "label": "Responses", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "citrix_adc.service.response.count" + }, + "83fa5738-92a7-4061-8e33-f70258438e00": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Top 10 values of Service name", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "6721c20a-5b3e-49f1-8595-3cbcd82c7d6b", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "parentFormat": { + "id": "terms" + }, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "service.name" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "index": "c5e654ca-86ee-4e91-a1ef-fa5f4f530346", + "key": "event.dataset", + "negate": false, + "params": { + "query": "citrix_adc.service" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.dataset": "citrix_adc.service" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "axisTitlesVisibilitySettings": { + "x": true, + "yLeft": true, + "yRight": true + }, + "fittingFunction": "None", + "gridlinesVisibilitySettings": { + "x": true, + "yLeft": true, + "yRight": true + }, + "labelsOrientation": { + "x": 0, + "yLeft": 0, + "yRight": 0 + }, + "layers": [ + { + "accessors": [ + "6721c20a-5b3e-49f1-8595-3cbcd82c7d6b" + ], + "layerId": "65ecbe10-9b4b-41aa-b4e6-c6def5d0fdbd", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "splitAccessor": "83fa5738-92a7-4061-8e33-f70258438e00", + "xAccessor": "1de9b4f8-6a0f-4311-8981-2aaa33eebcba" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "line", + "tickLabelsVisibilitySettings": { + "x": true, + "yLeft": true, + "yRight": true + }, + "valueLabels": "hide" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "af88c732-5baa-4abc-98e1-716c060f6fba", + "w": 24, + "x": 24, + "y": 0 + }, + "panelIndex": "af88c732-5baa-4abc-98e1-716c060f6fba", + "title": "Responses over time [Metrics Citrix ADC]", + "type": "lens", + "version": "8.4.1" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-97504ab3-bd69-4e81-828f-08a558bdb997", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "36c85bfd-905f-43ae-b648-10281c69dcdf", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "97504ab3-bd69-4e81-828f-08a558bdb997": { + "columnOrder": [ + "098c7e9d-750f-4d8f-8b33-f5d01de0aeb8", + "c49860cf-0326-4c09-ab48-a9bd3a27c4dd", + "650a9bae-bc1f-4af1-8517-4b3cf41d6c7d" + ], + "columns": { + "098c7e9d-750f-4d8f-8b33-f5d01de0aeb8": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Top 10 values of Service name", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "650a9bae-bc1f-4af1-8517-4b3cf41d6c7d", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "parentFormat": { + "id": "terms" + }, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "service.name" + }, + "650a9bae-bc1f-4af1-8517-4b3cf41d6c7d": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "citrix_adc.service.transaction.frustrating.count: *" + }, + "isBucketed": false, + "label": "Frustrating transactions", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "citrix_adc.service.transaction.frustrating.count" + }, + "c49860cf-0326-4c09-ab48-a9bd3a27c4dd": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "dropPartials": false, + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "index": "36c85bfd-905f-43ae-b648-10281c69dcdf", + "key": "event.dataset", + "negate": false, + "params": { + "query": "citrix_adc.service" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.dataset": "citrix_adc.service" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "650a9bae-bc1f-4af1-8517-4b3cf41d6c7d" + ], + "layerId": "97504ab3-bd69-4e81-828f-08a558bdb997", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "splitAccessor": "098c7e9d-750f-4d8f-8b33-f5d01de0aeb8", + "xAccessor": "c49860cf-0326-4c09-ab48-a9bd3a27c4dd" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "line", + "title": "Empty XY chart", + "valueLabels": "hide" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "5e55cf5f-7d94-40be-924e-d765364c10bf", + "w": 24, + "x": 0, + "y": 15 + }, + "panelIndex": "5e55cf5f-7d94-40be-924e-d765364c10bf", + "title": "Frustrating transactions over time [Metrics Citrix ADC]", + "type": "lens", + "version": "8.4.1" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-b2603ad2-974e-47f2-9854-58e22c7220ee", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "78112888-4d32-4867-b33f-a6d5933d5fb3", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "b2603ad2-974e-47f2-9854-58e22c7220ee": { + "columnOrder": [ + "b4fce60b-16aa-41f2-a940-39bf54778daf", + "0e133700-37a6-4946-9259-474b4519cef6", + "36a59ac4-c6fa-47d6-8a5f-e4b91bfaf555" + ], + "columns": { + "0e133700-37a6-4946-9259-474b4519cef6": { + "dataType": "date", + "isBucketed": true, + "label": "@timestamp", + "operationType": "date_histogram", + "params": { + "dropPartials": false, + "includeEmptyRows": true, + "interval": "auto" + }, + "scale": "interval", + "sourceField": "@timestamp" + }, + "36a59ac4-c6fa-47d6-8a5f-e4b91bfaf555": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "citrix_adc.service.transaction.tolerable.count: *" + }, + "isBucketed": false, + "label": "Tolerable transactions", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "citrix_adc.service.transaction.tolerable.count" + }, + "b4fce60b-16aa-41f2-a940-39bf54778daf": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Top 10 values of Service name", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "36a59ac4-c6fa-47d6-8a5f-e4b91bfaf555", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "parentFormat": { + "id": "terms" + }, + "size": 10 + }, + "scale": "ordinal", + "sourceField": "service.name" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "index": "78112888-4d32-4867-b33f-a6d5933d5fb3", + "key": "event.dataset", + "negate": false, + "params": { + "query": "citrix_adc.service" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.dataset": "citrix_adc.service" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "layers": [ + { + "accessors": [ + "36a59ac4-c6fa-47d6-8a5f-e4b91bfaf555" + ], + "layerId": "b2603ad2-974e-47f2-9854-58e22c7220ee", + "layerType": "data", + "position": "top", + "seriesType": "line", + "showGridlines": false, + "splitAccessor": "b4fce60b-16aa-41f2-a940-39bf54778daf", + "xAccessor": "0e133700-37a6-4946-9259-474b4519cef6" + } + ], + "legend": { + "isVisible": true, + "position": "right" + }, + "preferredSeriesType": "line", + "title": "Empty XY chart", + "valueLabels": "hide" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsXY" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 15, + "i": "11da9dae-38f1-4570-b0bf-9ed7d5283c80", + "w": 24, + "x": 24, + "y": 15 + }, + "panelIndex": "11da9dae-38f1-4570-b0bf-9ed7d5283c80", + "title": "Tolerable transactions over time [Metrics Citrix ADC]", + "type": "lens", + "version": "8.4.1" + } + ], + "timeRestore": false, + "title": "[Metrics Citrix ADC] Service", + "version": 1 + }, + "coreMigrationVersion": "8.4.1", + "id": "citrix_adc-8d0661f0-4fa4-11ed-8fa7-7bab33159b99", + "migrationVersion": { + "dashboard": "8.4.0" + }, + "references": [ + { + "id": "logs-*", + "name": "9c9cb657-e287-4214-82c0-f0e7cdc96956:indexpattern-datasource-layer-a008374b-1b33-4196-9e28-a4bcb3c6a702", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "9c9cb657-e287-4214-82c0-f0e7cdc96956:6b649adf-bd72-407d-9a43-72766a54483f", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "af88c732-5baa-4abc-98e1-716c060f6fba:indexpattern-datasource-layer-65ecbe10-9b4b-41aa-b4e6-c6def5d0fdbd", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "af88c732-5baa-4abc-98e1-716c060f6fba:c5e654ca-86ee-4e91-a1ef-fa5f4f530346", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "5e55cf5f-7d94-40be-924e-d765364c10bf:indexpattern-datasource-layer-97504ab3-bd69-4e81-828f-08a558bdb997", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "5e55cf5f-7d94-40be-924e-d765364c10bf:36c85bfd-905f-43ae-b648-10281c69dcdf", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "11da9dae-38f1-4570-b0bf-9ed7d5283c80:indexpattern-datasource-layer-b2603ad2-974e-47f2-9854-58e22c7220ee", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "11da9dae-38f1-4570-b0bf-9ed7d5283c80:78112888-4d32-4867-b33f-a6d5933d5fb3", + "type": "index-pattern" + } + ], + "type": "dashboard" +} \ No newline at end of file diff --git a/packages/citrix_adc/kibana/dashboard/citrix_adc-c4b9b970-3d99-11ed-9f8b-1bc5a55dfeec.json b/packages/citrix_adc/kibana/dashboard/citrix_adc-c4b9b970-3d99-11ed-9f8b-1bc5a55dfeec.json index eac0aaf13c..3feab122ea 100644 --- a/packages/citrix_adc/kibana/dashboard/citrix_adc-c4b9b970-3d99-11ed-9f8b-1bc5a55dfeec.json +++ b/packages/citrix_adc/kibana/dashboard/citrix_adc-c4b9b970-3d99-11ed-9f8b-1bc5a55dfeec.json @@ -1,6 +1,6 @@ { "attributes": { - "description": "This Citrix ADC dashboard visualizes metrics related to Interface.", + "description": "This Citrix ADC dashboard visualizes metrics related to Interface and Service.", "hits": 0, "kibanaSavedObjectMeta": { "searchSourceJSON": { @@ -29,7 +29,7 @@ }, { "id": "logs-*", - "name": "c0c0998f-cb89-4faf-a781-7cfb0f15d9e6", + "name": "802ec8a4-5bc0-486d-999d-4fbdfda1a1c8", "type": "index-pattern" } ], @@ -46,46 +46,41 @@ "c9d033a4-ab3e-4b06-a633-a63fef3f9a17", "a1b0e1f8-f305-46ed-8a54-b4cbe83a9547", "116d3cab-755b-4dc8-9096-ae999f308cbb", - "0f11bcb5-f319-4755-b7ce-6a2a0dc047c7", "3bbdc287-5eaf-49d0-bbb9-7d886740bc7a", - "8f6e3690-8117-45c5-b580-b79eafb78c00", - "d645ea71-7cdc-45c7-a44a-7f7139112d96", - "ae2f455c-6691-435c-b367-0666c31d537d", - "b8d0794c-64f6-4f75-bc2b-44697d7299fd", - "e9e18c8d-1fb5-42c2-84ea-5eb418f0099e" + "0fb6690c-9d94-4d0a-a8bf-12dc5694d8dd" ], "columns": { - "0f11bcb5-f319-4755-b7ce-6a2a0dc047c7": { + "0f75ad17-5296-4ba1-ae56-5cd7a8c8b36e": { "customLabel": true, - "dataType": "number", + "dataType": "string", "filter": { "language": "kuery", - "query": "citrix_adc.interface.packets.received.jumbo.rate: *" + "query": "citrix_adc.interface.state: *" }, "isBucketed": false, - "label": "Jumbo Packets received (Rate)", + "label": "State", "operationType": "last_value", "params": { "sortField": "@timestamp" }, - "scale": "ratio", - "sourceField": "citrix_adc.interface.packets.received.jumbo.rate" + "scale": "ordinal", + "sourceField": "citrix_adc.interface.state" }, - "0f75ad17-5296-4ba1-ae56-5cd7a8c8b36e": { + "0fb6690c-9d94-4d0a-a8bf-12dc5694d8dd": { "customLabel": true, - "dataType": "string", + "dataType": "number", "filter": { "language": "kuery", - "query": "citrix_adc.interface.state: *" + "query": "citrix_adc.interface.packets.transmission.dropped.count: *" }, "isBucketed": false, - "label": "State", + "label": "Transmission Packets Dropped", "operationType": "last_value", "params": { "sortField": "@timestamp" }, - "scale": "ordinal", - "sourceField": "citrix_adc.interface.state" + "scale": "ratio", + "sourceField": "citrix_adc.interface.packets.transmission.dropped.count" }, "116d3cab-755b-4dc8-9096-ae999f308cbb": { "customLabel": true, @@ -95,7 +90,7 @@ "query": "citrix_adc.interface.packets.received.jumbo.count: *" }, "isBucketed": false, - "label": "Jumbo Packets received", + "label": "Jumbo Packets Received", "operationType": "last_value", "params": { "sortField": "@timestamp" @@ -111,7 +106,7 @@ "query": "citrix_adc.interface.packets.received.multicast.count: *" }, "isBucketed": false, - "label": "Multicast packets received", + "label": "Multicast Packets Received", "operationType": "last_value", "params": { "sortField": "@timestamp" @@ -136,10 +131,10 @@ "parentFormat": { "id": "terms" }, - "size": 10 + "size": 10000 }, "scale": "ordinal", - "sourceField": "citrix_adc.interface.id" + "sourceField": "interface.id" }, "7f2c20e0-ed28-4f93-b52a-43e220b88ed1": { "customLabel": true, @@ -149,141 +144,394 @@ "query": "citrix_adc.interface.transmitted.bytes.value: *" }, "isBucketed": false, - "label": "Bytes transmitted", + "label": "Transmitted Bytes", "operationType": "last_value", "params": { + "format": { + "id": "bytes", + "params": { + "decimals": 2 + } + }, "sortField": "@timestamp" }, "scale": "ratio", "sourceField": "citrix_adc.interface.transmitted.bytes.value" }, - "8f6e3690-8117-45c5-b580-b79eafb78c00": { + "a1b0e1f8-f305-46ed-8a54-b4cbe83a9547": { "customLabel": true, "dataType": "number", "filter": { "language": "kuery", - "query": "citrix_adc.interface.packets.received.multicast.rate: *" + "query": "citrix_adc.interface.received.bytes.rate: *" }, "isBucketed": false, - "label": "Multicast packets received (Rate)", + "label": "Received Bytes (Rate)", "operationType": "last_value", "params": { + "format": { + "id": "bytes", + "params": { + "decimals": 2 + } + }, "sortField": "@timestamp" }, "scale": "ratio", - "sourceField": "citrix_adc.interface.packets.received.multicast.rate" + "sourceField": "citrix_adc.interface.received.bytes.rate" }, - "a1b0e1f8-f305-46ed-8a54-b4cbe83a9547": { + "c9d033a4-ab3e-4b06-a633-a63fef3f9a17": { "customLabel": true, "dataType": "number", "filter": { "language": "kuery", - "query": "citrix_adc.interface.received.bytes.rate: *" + "query": "citrix_adc.interface.received.bytes.value: *" }, "isBucketed": false, - "label": "Bytes received (Rate)", + "label": "Received Bytes", "operationType": "last_value", "params": { + "format": { + "id": "bytes", + "params": { + "decimals": 2 + } + }, "sortField": "@timestamp" }, "scale": "ratio", - "sourceField": "citrix_adc.interface.received.bytes.rate" + "sourceField": "citrix_adc.interface.received.bytes.value" + }, + "e6048fed-80f9-48f0-8e42-fdd13a3a7575": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "citrix_adc.interface.transmitted.bytes.rate: *" + }, + "isBucketed": false, + "label": "Transmitted Bytes (Rate)", + "operationType": "last_value", + "params": { + "format": { + "id": "bytes", + "params": { + "decimals": 2 + } + }, + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "citrix_adc.interface.transmitted.bytes.rate" + } + }, + "incompleteColumns": {} + } + } + } + }, + "filters": [ + { + "$state": { + "store": "appState" + }, + "meta": { + "alias": null, + "disabled": false, + "index": "802ec8a4-5bc0-486d-999d-4fbdfda1a1c8", + "key": "event.dataset", + "negate": false, + "params": { + "query": "citrix_adc.interface" + }, + "type": "phrase" + }, + "query": { + "match_phrase": { + "event.dataset": "citrix_adc.interface" + } + } + } + ], + "query": { + "language": "kuery", + "query": "" + }, + "visualization": { + "columns": [ + { + "columnId": "487e1d5e-656b-45d6-b5f8-25b8028b123d", + "isTransposed": false + }, + { + "columnId": "0f75ad17-5296-4ba1-ae56-5cd7a8c8b36e", + "isTransposed": false + }, + { + "alignment": "left", + "columnId": "116d3cab-755b-4dc8-9096-ae999f308cbb", + "isTransposed": false + }, + { + "alignment": "left", + "columnId": "3bbdc287-5eaf-49d0-bbb9-7d886740bc7a", + "isTransposed": false + }, + { + "alignment": "left", + "columnId": "7f2c20e0-ed28-4f93-b52a-43e220b88ed1", + "isTransposed": false, + "width": 114 + }, + { + "alignment": "left", + "columnId": "e6048fed-80f9-48f0-8e42-fdd13a3a7575", + "isTransposed": false, + "width": 112 + }, + { + "alignment": "left", + "columnId": "c9d033a4-ab3e-4b06-a633-a63fef3f9a17", + "isTransposed": false + }, + { + "alignment": "left", + "columnId": "a1b0e1f8-f305-46ed-8a54-b4cbe83a9547", + "isTransposed": false + }, + { + "alignment": "left", + "columnId": "0fb6690c-9d94-4d0a-a8bf-12dc5694d8dd", + "isTransposed": false + } + ], + "headerRowHeight": "auto", + "layerId": "22de67d8-7da7-4d4e-b3b7-19d0c462fdcd", + "layerType": "data", + "paging": { + "enabled": true, + "size": 10 + }, + "rowHeight": "auto" + } + }, + "title": "", + "type": "lens", + "visualizationType": "lnsDatatable" + }, + "enhancements": {}, + "hidePanelTitles": false + }, + "gridData": { + "h": 10, + "i": "5045d28a-6fd1-46b5-ae46-e25867d3829a", + "w": 48, + "x": 0, + "y": 0 + }, + "panelIndex": "5045d28a-6fd1-46b5-ae46-e25867d3829a", + "title": "Statistics of interfaces [Metrics Citrix ADC]", + "type": "lens", + "version": "8.4.1" + }, + { + "embeddableConfig": { + "attributes": { + "references": [ + { + "id": "logs-*", + "name": "indexpattern-datasource-layer-65ab4dd9-9ddd-436a-a66a-7adf8ff767c3", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "f1433360-560a-42da-b29a-af88bb2e71d1", + "type": "index-pattern" + } + ], + "state": { + "datasourceStates": { + "indexpattern": { + "layers": { + "65ab4dd9-9ddd-436a-a66a-7adf8ff767c3": { + "columnOrder": [ + "44b79e68-c2b7-4913-8c44-d0f632d5c2b5", + "db884d0d-babd-4d70-be51-1556b76ba19e", + "ff2f199f-8434-4207-9c16-27a093c9d5c2", + "e20e0be0-e1e8-41fe-b672-5e943748a18e", + "da4d1f51-7c91-4fe0-baf5-9193da555dcc", + "a021ace4-795d-4585-9f83-a19dbd2ad0fd", + "365a4603-98cc-40e9-a001-2c696a5841e8", + "12fe0501-53e2-4ec4-99d1-cc8c39aeb137", + "2e89aa64-5ee1-4b87-986a-6705ee93f4a5", + "1ed84043-ebe6-4673-a417-e32be17687c5" + ], + "columns": { + "12fe0501-53e2-4ec4-99d1-cc8c39aeb137": { + "customLabel": true, + "dataType": "number", + "filter": { + "language": "kuery", + "query": "citrix_adc.service.server.connection.count: *" + }, + "isBucketed": false, + "label": "Server Connections", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "citrix_adc.service.server.connection.count" }, - "ae2f455c-6691-435c-b367-0666c31d537d": { + "1ed84043-ebe6-4673-a417-e32be17687c5": { "customLabel": true, "dataType": "number", "filter": { "language": "kuery", - "query": "citrix_adc.interface.packets.received.tagged.rate: *" + "query": "citrix_adc.service.surge_queue.count: *" }, "isBucketed": false, - "label": "Tagged Packets received (Rate)", + "label": "Surge Queue", "operationType": "last_value", "params": { "sortField": "@timestamp" }, "scale": "ratio", - "sourceField": "citrix_adc.interface.packets.received.tagged.rate" + "sourceField": "citrix_adc.service.surge_queue.count" }, - "b8d0794c-64f6-4f75-bc2b-44697d7299fd": { + "2e89aa64-5ee1-4b87-986a-6705ee93f4a5": { "customLabel": true, "dataType": "number", "filter": { "language": "kuery", - "query": "citrix_adc.interface.packets.transmitted.tagged.count: *" + "query": "citrix_adc.service.server.connection.established.count: *" }, "isBucketed": false, - "label": "Tagged Packets transmitted", + "label": "Established Server Connections", "operationType": "last_value", "params": { "sortField": "@timestamp" }, "scale": "ratio", - "sourceField": "citrix_adc.interface.packets.transmitted.tagged.count" + "sourceField": "citrix_adc.service.server.connection.established.count" }, - "c9d033a4-ab3e-4b06-a633-a63fef3f9a17": { + "365a4603-98cc-40e9-a001-2c696a5841e8": { "customLabel": true, "dataType": "number", "filter": { "language": "kuery", - "query": "citrix_adc.interface.received.bytes.value: *" + "query": "citrix_adc.service.client_connection.count: *" }, "isBucketed": false, - "label": "Bytes received", + "label": "Client Connections", "operationType": "last_value", "params": { "sortField": "@timestamp" }, "scale": "ratio", - "sourceField": "citrix_adc.interface.received.bytes.value" + "sourceField": "citrix_adc.service.client_connection.count" + }, + "44b79e68-c2b7-4913-8c44-d0f632d5c2b5": { + "customLabel": true, + "dataType": "string", + "isBucketed": true, + "label": "Name", + "operationType": "terms", + "params": { + "missingBucket": false, + "orderBy": { + "columnId": "da4d1f51-7c91-4fe0-baf5-9193da555dcc", + "type": "column" + }, + "orderDirection": "desc", + "otherBucket": true, + "parentFormat": { + "id": "terms" + }, + "size": 10000 + }, + "scale": "ordinal", + "sourceField": "service.name" }, - "d645ea71-7cdc-45c7-a44a-7f7139112d96": { + "a021ace4-795d-4585-9f83-a19dbd2ad0fd": { "customLabel": true, "dataType": "number", "filter": { "language": "kuery", - "query": "citrix_adc.interface.packets.received.tagged.count: *" + "query": "citrix_adc.service.transaction.active.count: *" }, "isBucketed": false, - "label": "Tagged Packets received", + "label": "Active Transactions Handled", "operationType": "last_value", "params": { "sortField": "@timestamp" }, "scale": "ratio", - "sourceField": "citrix_adc.interface.packets.received.tagged.count" + "sourceField": "citrix_adc.service.transaction.active.count" }, - "e6048fed-80f9-48f0-8e42-fdd13a3a7575": { + "da4d1f51-7c91-4fe0-baf5-9193da555dcc": { "customLabel": true, "dataType": "number", "filter": { "language": "kuery", - "query": "citrix_adc.interface.transmitted.bytes.rate: *" + "query": "citrix_adc.service.throughput.value: *" }, "isBucketed": false, - "label": "Bytes transmitted (Rate)", + "label": "Throughput", "operationType": "last_value", "params": { "sortField": "@timestamp" }, "scale": "ratio", - "sourceField": "citrix_adc.interface.transmitted.bytes.rate" + "sourceField": "citrix_adc.service.throughput.value" + }, + "db884d0d-babd-4d70-be51-1556b76ba19e": { + "customLabel": true, + "dataType": "ip", + "filter": { + "language": "kuery", + "query": "citrix_adc.service.primary.ip_address: *" + }, + "isBucketed": false, + "label": "Primary IP Address", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ratio", + "sourceField": "citrix_adc.service.primary.ip_address" + }, + "e20e0be0-e1e8-41fe-b672-5e943748a18e": { + "customLabel": true, + "dataType": "string", + "filter": { + "language": "kuery", + "query": "service.state: *" + }, + "isBucketed": false, + "label": "State", + "operationType": "last_value", + "params": { + "sortField": "@timestamp" + }, + "scale": "ordinal", + "sourceField": "service.state" }, - "e9e18c8d-1fb5-42c2-84ea-5eb418f0099e": { + "ff2f199f-8434-4207-9c16-27a093c9d5c2": { "customLabel": true, "dataType": "number", "filter": { "language": "kuery", - "query": "citrix_adc.interface.packets.transmitted.tagged.rate: *" + "query": "citrix_adc.service.primary.port: *" }, "isBucketed": false, - "label": "Tagged Packets transmitted (Rate)", + "label": "Primary Port", "operationType": "last_value", "params": { "sortField": "@timestamp" }, "scale": "ratio", - "sourceField": "citrix_adc.interface.packets.transmitted.tagged.rate" + "sourceField": "citrix_adc.service.primary.port" } }, "incompleteColumns": {} @@ -299,17 +547,17 @@ "meta": { "alias": null, "disabled": false, - "index": "c0c0998f-cb89-4faf-a781-7cfb0f15d9e6", + "index": "f1433360-560a-42da-b29a-af88bb2e71d1", "key": "event.dataset", "negate": false, "params": { - "query": "citrix_adc.interface" + "query": "citrix_adc.service" }, "type": "phrase" }, "query": { "match_phrase": { - "event.dataset": "citrix_adc.interface" + "event.dataset": "citrix_adc.service" } } } @@ -321,80 +569,55 @@ "visualization": { "columns": [ { - "columnId": "487e1d5e-656b-45d6-b5f8-25b8028b123d", - "isTransposed": false - }, - { - "columnId": "0f75ad17-5296-4ba1-ae56-5cd7a8c8b36e", - "isTransposed": false + "columnId": "44b79e68-c2b7-4913-8c44-d0f632d5c2b5" }, { "alignment": "left", - "columnId": "116d3cab-755b-4dc8-9096-ae999f308cbb", + "columnId": "da4d1f51-7c91-4fe0-baf5-9193da555dcc", "isTransposed": false }, { "alignment": "left", - "columnId": "0f11bcb5-f319-4755-b7ce-6a2a0dc047c7", + "columnId": "e20e0be0-e1e8-41fe-b672-5e943748a18e", "isTransposed": false }, { "alignment": "left", - "columnId": "3bbdc287-5eaf-49d0-bbb9-7d886740bc7a", + "columnId": "365a4603-98cc-40e9-a001-2c696a5841e8", "isTransposed": false }, { "alignment": "left", - "columnId": "8f6e3690-8117-45c5-b580-b79eafb78c00", + "columnId": "a021ace4-795d-4585-9f83-a19dbd2ad0fd", "isTransposed": false }, { "alignment": "left", - "columnId": "7f2c20e0-ed28-4f93-b52a-43e220b88ed1", - "isTransposed": false, - "width": 114 - }, - { - "alignment": "left", - "columnId": "e6048fed-80f9-48f0-8e42-fdd13a3a7575", - "isTransposed": false, - "width": 112 - }, - { - "alignment": "left", - "columnId": "d645ea71-7cdc-45c7-a44a-7f7139112d96", + "columnId": "12fe0501-53e2-4ec4-99d1-cc8c39aeb137", "isTransposed": false }, { "alignment": "left", - "columnId": "ae2f455c-6691-435c-b367-0666c31d537d", + "columnId": "2e89aa64-5ee1-4b87-986a-6705ee93f4a5", "isTransposed": false }, { - "alignment": "left", - "columnId": "b8d0794c-64f6-4f75-bc2b-44697d7299fd", - "isTransposed": false, - "width": 115 - }, - { - "alignment": "left", - "columnId": "e9e18c8d-1fb5-42c2-84ea-5eb418f0099e", - "isTransposed": false, - "width": 112 + "columnId": "db884d0d-babd-4d70-be51-1556b76ba19e", + "isTransposed": false }, { "alignment": "left", - "columnId": "c9d033a4-ab3e-4b06-a633-a63fef3f9a17", + "columnId": "ff2f199f-8434-4207-9c16-27a093c9d5c2", "isTransposed": false }, { "alignment": "left", - "columnId": "a1b0e1f8-f305-46ed-8a54-b4cbe83a9547", + "columnId": "1ed84043-ebe6-4673-a417-e32be17687c5", "isTransposed": false } ], "headerRowHeight": "auto", - "layerId": "22de67d8-7da7-4d4e-b3b7-19d0c462fdcd", + "layerId": "65ab4dd9-9ddd-436a-a66a-7adf8ff767c3", "layerType": "data", "paging": { "enabled": true, @@ -411,20 +634,20 @@ "hidePanelTitles": false }, "gridData": { - "h": 15, - "i": "5045d28a-6fd1-46b5-ae46-e25867d3829a", + "h": 12, + "i": "c12f2a4e-eed5-4d01-8d43-ce0370f1e27c", "w": 48, "x": 0, - "y": 0 + "y": 10 }, - "panelIndex": "5045d28a-6fd1-46b5-ae46-e25867d3829a", - "title": "Statistics of interfaces [Metrics Citrix ADC]", + "panelIndex": "c12f2a4e-eed5-4d01-8d43-ce0370f1e27c", + "title": "Statistics of services [Metrics Citrix ADC]", "type": "lens", "version": "8.4.1" } ], "timeRestore": false, - "title": "[Metrics Citrix ADC] Interface", + "title": "[Metrics Citrix ADC] Overview", "version": 1 }, "coreMigrationVersion": "8.4.1", @@ -440,7 +663,17 @@ }, { "id": "logs-*", - "name": "5045d28a-6fd1-46b5-ae46-e25867d3829a:c0c0998f-cb89-4faf-a781-7cfb0f15d9e6", + "name": "5045d28a-6fd1-46b5-ae46-e25867d3829a:802ec8a4-5bc0-486d-999d-4fbdfda1a1c8", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "c12f2a4e-eed5-4d01-8d43-ce0370f1e27c:indexpattern-datasource-layer-65ab4dd9-9ddd-436a-a66a-7adf8ff767c3", + "type": "index-pattern" + }, + { + "id": "logs-*", + "name": "c12f2a4e-eed5-4d01-8d43-ce0370f1e27c:f1433360-560a-42da-b29a-af88bb2e71d1", "type": "index-pattern" } ], diff --git a/packages/citrix_adc/manifest.yml b/packages/citrix_adc/manifest.yml index e8a3e2f6e7..ee6689805d 100644 --- a/packages/citrix_adc/manifest.yml +++ b/packages/citrix_adc/manifest.yml @@ -1,7 +1,7 @@ format_version: 2.0.0 name: citrix_adc title: Citrix ADC -version: 0.1.0 +version: 0.2.0 description: This Elastic integration collects metrics from Citrix ADC product. type: integration categories: @@ -25,6 +25,10 @@ screenshots: title: Citrix ADC Interface dashboard size: 600x600 type: image/png + - src: /img/citrix_adc-service-dashboard.png + title: Citrix ADC Service dashboard + size: 600x600 + type: image/png policy_templates: - name: Citrix ADC title: Citrix ADC metrics @@ -32,7 +36,7 @@ policy_templates: inputs: - type: httpjson title: Collect Citrix ADC metrics - description: Collect interface metrics from Citrix ADC product. + description: Collect interface and service metrics from Citrix ADC product. vars: - name: hostname type: text