Skip to content

Commit 2c6dc46

Browse files
committed
new SSLverver metrics
1 parent 003b151 commit 2c6dc46

4 files changed

Lines changed: 63 additions & 15 deletions

File tree

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
FROM alpine:latest
22
RUN apk update
33
RUN apk add python py-pip
4-
RUN apk add curl
4+
RUN apk add curl iputils
55
RUN pip install prometheus_client requests pyyaml retrying
66
COPY version/VERSION /exporter/
77
COPY exporter.py /exporter/

README.md

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,15 @@ In config.yaml, '--validate-cert' option should be set to 'yes', and certificate
8686
<summary>Usage as a Container</summary>
8787
<br>
8888

89-
In order to use the exporter as a container, the image ```quay.io/citrix/citrix-adc-metrics-exporter:1.4.3``` will need to be pulled using;
89+
In order to use the exporter as a container, the image ```quay.io/citrix/citrix-adc-metrics-exporter:1.4.4``` will need to be pulled using;
9090
```
91-
docker pull quay.io/citrix/citrix-adc-metrics-exporter:1.4.3
91+
docker pull quay.io/citrix/citrix-adc-metrics-exporter:1.4.4
9292
```
9393
**NOTE:** It can also be build locally using ```docker build -f Dockerfile -t <image_name>:<tag> ./```
9494

9595
Now, the exporter can be run using:
9696
```
97-
docker run -dt -p <host_port>:<container_port> --mount type=bind,source=<host-path-for-config-file>,target=/exporter/config.yaml quay.io/citrix/citrix-adc-metrics-exporter:1.4.3 [flags] --config-file=/exporter/config.yaml
97+
docker run -dt -p <host_port>:<container_port> --mount type=bind,source=<host-path-for-config-file>,target=/exporter/config.yaml quay.io/citrix/citrix-adc-metrics-exporter:1.4.4 [flags] --config-file=/exporter/config.yaml
9898
```
9999
where the flags are:
100100

@@ -117,7 +117,7 @@ flag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs
117117

118118
To setup the exporter as given in the diagram, the following command can be used:
119119
```
120-
docker run -dt -p 8888:8888 --mount type=bind,source=/path/to/config.yaml,target=/exporter/config.yaml --name citrix-adc-exporter quay.io/citrix/citrix-adc-metrics-exporter:1.4.3 --target-nsip=10.0.0.1 --port=8888 --config-file=/exporter/config.yaml
120+
docker run -dt -p 8888:8888 --mount type=bind,source=/path/to/config.yaml,target=/exporter/config.yaml --name citrix-adc-exporter quay.io/citrix/citrix-adc-metrics-exporter:1.4.4 --target-nsip=10.0.0.1 --port=8888 --config-file=/exporter/config.yaml
121121
```
122122
This directs the exporter container to scrape the 10.0.0.1 IP, and the expose the stats it collects on port 8888.
123123

@@ -139,7 +139,7 @@ In config.yaml, '--validate-cert' option should be set to 'yes', and certificate
139139
Certificate should then be mounted at the '--cacert-path' provided. For instance, if cert is 'cacert.pem' and '--cacert-path' provided in 'config.yaml' is '/exporter/cacert.pem'
140140

141141
```
142-
docker run -dt -p 8888:8888 --mount type=bind,source=/path/to/config.yaml,target=/exporter/config.yaml --mount type=bind,source=/path/to/cacert.pem,target=/exporter/cacert.pem --name citrix-adc-exporter quay.io/citrix/citrix-adc-metrics-exporter:1.4.3 --target-nsip=10.0.0.1 --port=8888 --config-file=/exporter/config.yaml
142+
docker run -dt -p 8888:8888 --mount type=bind,source=/path/to/config.yaml,target=/exporter/config.yaml --mount type=bind,source=/path/to/cacert.pem,target=/exporter/cacert.pem --name citrix-adc-exporter quay.io/citrix/citrix-adc-metrics-exporter:1.4.4 --target-nsip=10.0.0.1 --port=8888 --config-file=/exporter/config.yaml
143143
```
144144
Cert validation options can also be provided using environment variables using NS_VALIDATE_CERT, NS_CACERT_PATH. Thoughconfig file input is the preferred method.
145145

@@ -168,7 +168,7 @@ metadata:
168168
spec:
169169
containers:
170170
- name: exporter
171-
image: quay.io/citrix/citrix-adc-metrics-exporter:1.4.3
171+
image: quay.io/citrix/citrix-adc-metrics-exporter:1.4.4
172172
args:
173173
- "--target-nsip=10.0.0.1"
174174
- "--port=8888"
@@ -241,7 +241,7 @@ metadata:
241241
spec:
242242
containers:
243243
- name: exporter
244-
image: quay.io/citrix/citrix-adc-metrics-exporter:1.4.3
244+
image: quay.io/citrix/citrix-adc-metrics-exporter:1.4.4
245245
args:
246246
- "--target-nsip=10.0.0.1"
247247
- "--port=8888"
@@ -329,6 +329,10 @@ Sl. No. | STATS | NS nitro name
329329
8 | Service stats | "service"
330330
9 | Service group stats | "services"
331331
10 | Bandwidth Capacity stats | "nscapacity"
332+
11 | SSL vserver stats | "sslvserver"
333+
12 | System info stats | "system"
334+
13 | System cpu stats | "systemcpu"
335+
14 | aaa stats | "aaa"
332336

333337

334338
Exporting Additional Stats which are not Included by Default:

exporter.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -292,13 +292,17 @@ def __init__(self, nsip, metrics, username, password, protocol,
292292
self.k8s_cic_prefix = k8s_cic_prefix
293293
self.ns_cert = ns_cert
294294
self.ns_session = requests.Session()
295+
self.current_session = False
295296

296297
# Collect metrics from Citrix ADC
297298
def collect(self):
298299
nsip = self.nsip
299300
data = {}
300-
self.ns_session_login()
301301

302+
if self.current_session:
303+
return
304+
305+
self.ns_session_login()
302306
for entity in self.metrics.keys():
303307
logger.info('Collecting metric %s for %s' % (entity, nsip))
304308
try:
@@ -425,15 +429,19 @@ def get_svc_grp_services_stats(self):
425429
if servicegroup_list_ds:
426430
servicegroup_data = []
427431
for servicegroups_ds in servicegroup_list_ds['servicegroup']:
428-
_manual_servicegroup_name = servicegroups_ds['servicegroupname']
429-
url = '%s://%s/nitro/v1/stat/servicegroup/%s?statbindings=yes' % (self.protocol, self.nsip, _manual_servicegroup_name)
432+
_servicegroup_name = servicegroups_ds['servicegroupname']
433+
url = '%s://%s/nitro/v1/stat/servicegroup/%s?statbindings=yes' % (self.protocol, self.nsip, _servicegroup_name)
430434
data_tmp = self.get_entity_stat(url)
431435
if data_tmp:
432436
if 'servicegroupmember' in data_tmp['servicegroup'][0]:
433437
# create a list with stats of all services bound to NS of all servicegroups
434438
for individual_svc_binding_data in data_tmp['servicegroup'][0]['servicegroupmember']:
435439
# manually adding stats of a particular service
436-
individual_svc_binding_data['_manual_servicegroup_name'] = _manual_servicegroup_name
440+
individual_svc_binding_data['_servicegroup_name'] = _servicegroup_name
441+
svcgroupname = individual_svc_binding_data['servicegroupname']
442+
if svcgroupname.find('?'):
443+
servername = svcgroupname.split('?')[1]
444+
individual_svc_binding_data['server_name'] = servername
437445
servicegroup_data.append(individual_svc_binding_data)
438446
return servicegroup_data
439447

@@ -521,6 +529,7 @@ def ns_session_login(self):
521529
if data['errorcode'] == 0 :
522530
logger.info("ADC Session Login Successful")
523531
ns_login = True
532+
self.current_session = True
524533
else:
525534
logger.error("ADC Session Login Failed")
526535
except requests.exceptions.RequestException as err:
@@ -543,6 +552,7 @@ def ns_session_logout(self):
543552
if response.status_code == 201 or response.status_code == 200:
544553
ns_logout = True
545554
self.ns_session.close()
555+
self.current_session = False
546556
logger.info("ADC Session Logout Successful")
547557
break
548558
else:
@@ -598,7 +608,7 @@ def ns_session_logout(self):
598608

599609
# Get cert validation args provided
600610
ns_cert = get_cert_validation_args(args, ns_protocol)
601-
611+
602612
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
603613
requests.packages.urllib3.disable_warnings(SubjectAltNameWarning)
604614

metrics.json

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,10 +209,11 @@
209209
],
210210

211211
"labels": [
212-
["_manual_servicegroup_name", "citrixadc_servicegroup_name"],
212+
["_servicegroup_name", "citrixadc_servicegroup_name"],
213213
["servicetype", "citrixadc_service_type"],
214214
["state", "citrixadc_service_state"],
215-
["primaryipaddress", "citrixadc_service_ip"]
215+
["primaryipaddress", "citrixadc_service_ip"],
216+
["server_name", "citrixadc_server_name"]
216217
]
217218
},
218219

@@ -523,5 +524,38 @@
523524
["type", "citrixadc_k8s_ing_lb_type"],
524525
["state", "citrixadc_k8s_ing_lb_state"]
525526
]
527+
},
528+
529+
"sslvserver": {
530+
"counters": [
531+
["sslctxtotdecbytes", "citrixadc_sslvserver_decrypt_bytes_total"],
532+
["sslctxtotencbytes", "citrixadc_sslvserver_encrypt_bytes_total"],
533+
["sslctxtothwdec_bytes", "citrixadc_sslvserver_decrypt_hardware_bytes_total"],
534+
["sslctxtothwencbytes", "citrixadc_sslvserver_encrypt_hardware_bytes_total"],
535+
["sslctxtotsessionnew", "citrixadc_sslvserver_session_new_total"],
536+
["sslctxtotsessionhits", "citrixadc_sslvserver_session_hits_total"],
537+
["ssltotclientauthsuccess", "citrixadc_sslvserver_auth_success_total"],
538+
["ssltotclientauthfailure", "citrixadc_sslvserver_auth_failure_total"]
539+
],
540+
541+
"gauges": [
542+
["vslbhealth", "citrixadc_sslvserver_health"],
543+
["actsvcs", "citrixadc_sslvserver_active_services"],
544+
["sslclientauthsuccessrate", "citrixadc_sslvserver_auth_success_rate"],
545+
["sslclientauthfailurerate", "citrixadc_sslvserver_auth_failure_rate"],
546+
["sslctxencbytesrate", "citrixadc_sslvserver_encrypt_bytes_rate"],
547+
["sslctxdecbytesrate", "citrixadc_sslvserver_decrypt_bytes_rate"],
548+
["sslctxhwencbytesrate", "citrixadc_sslvserver_hw_encrypt_bytes_rate"],
549+
["sslctxhwdec_bytesrate", "citrixadc_sslvserver_hw_decrypt_bytes_rate"],
550+
["sslctxsessionnewrate", "citrixadc_sslvserver_session_new_rate"],
551+
["sslctxsessionhitsrate", "citrixadc_sslvserver_session_hits_rate"]
552+
],
553+
554+
"labels": [
555+
["vservername", "citrixadc_sslvserver_name"],
556+
["type", "citrixadc_sslvserver_type"],
557+
["primaryipaddress", "citrixadc_sslvserver_ip"],
558+
["state", "citrixadc_sslvserver_state"]
559+
]
526560
}
527561
}

0 commit comments

Comments
 (0)