Skip to main content

Citrix NetScaler (REST)

Description

This connector monitors Citrix NetScaler ADC devices. It relies on Citrix ADC 13.0 NITRO API or higher.

citrix hardware netscaler

Enterprise Connector

This connector requires the Enterprise edition of MetricsHub.

Target

Typical platform: Citrix NetScaler

Operating system: Out-Of-Band

This connector is not available for the local host (it is applicable to remote hosts only).

Prerequisites

Leverages: Citrix ADC 13.0 NITRO API or higher

Technology and protocols: HTTP

Examples

CLI

metricshub HOSTNAME -t oob -c +CitrixNetScalerREST --https --http-port 443 -u USERNAME

metricshub.yaml

resourceGroups:
<RESOURCE_GROUP>:
resources:
<HOSTNAME-ID>:
attributes:
host.name: <HOSTNAME> # Change with actual host name
host.type: oob
connectors: [ +CitrixNetScalerREST ] # Optional, to load only this connector
protocols:
http:
https: true
port: 443 # or probably something else
username: <USERNAME> # Change with actual credentials
password: <PASSWORD> # Encrypted using metricshub-encrypt

Connector Activation Criteria

The Citrix NetScaler (REST) connector will be automatically activated, and its status will be reported as OK if all the below criteria are met:

  • The HTTP Request below to the managed host succeeds:
    • post nitro/v1/config/login
    • Request Header: Accept: application/json Content-Type: application/json
    • Request Body: ${file::httpBodyLogin}
    • The response header contains: Set-Cookie (regex)

Metrics

TypeCollected MetricsSpecific Attributes
enclosurehw.status{hw.type="enclosure", state="degraded|failed|ok"}
hw.status{hw.type="enclosure", state="present"}
system.cpu.utilization
system.memory.limit{system.memory.state="cached"}
system.memory.utilization
system.memory.utilization{system.memory.state="cached"}
system.network.io{network.io.direction="received"}
system.network.io{network.io.direction="sent"}
id
name
numberOfCpu
fileSystemsystem.filesystem.usage{system.filesystem.state="free"}id
name
filter_policypolicy.hitsid
name
request_action
response_action
rule
http_protocolhttp.client.io{protocol.version="http1", network.io.direction="received"}
http.client.io{protocol.version="http1", network.io.direction="sent"}
http.client.requests{protocol.version="http3", network.io.direction="received"}
http.client.requests{protocol.version="http3", network.io.direction="sent"}
http.server.grpc.errors{protocol.version="http2"}
http.server.grpc.requests{protocol.version="http2", network.io.direction="received"}
http.server.grpc.requests{protocol.version="http2", network.io.direction="sent"}
http.server.io{protocol.version="http1", network.io.direction="received"}
http.server.io{protocol.version="http1", network.io.direction="sent"}
http.server.requests{protocol.version="http1", http.method.type="get"}
http.server.requests{protocol.version="http1", http.method.type="other"}
http.server.requests{protocol.version="http1", http.method.type="post"}
http.server.requests{protocol.version="http1", network.io.direction="received"}
http.server.requests{protocol.version="http1", network.io.direction="sent"}
http.server.requests{protocol.version="http2", network.io.direction="received"}
http.server.requests{protocol.version="http2", network.io.direction="sent"}
http.server.requests{protocol.version="http3", network.io.direction="received"}
http.server.requests{protocol.version="http3", network.io.direction="sent"}
id
lb_serverhw.status{hw.type="lb_server", state="degraded|failed|ok"}
lb_server.connections{connection.type="backend"}
lb_server.connections{connection.type="client"}
lb_server.hits
lb_server.io{network.io.direction="received"}
lb_server.io{network.io.direction="sent"}
lb_server.packets{network.io.direction="received"}
lb_server.packets{network.io.direction="sent"}
lb_server.queue_size{queue.type="surge"}
lb_server.requests{network.io.direction="received"}
lb_server.requests{network.io.direction="sent"}
lb_server.vserver.spillovers
address
id
name
port
type
lbvserver_service_bindinghw.status{hw.type="lbvserver_service_binding", state="degraded|failed|ok"}address
id
name
port
server.id
service.id
type
networkhw.errors{hw.type="network", direction="receive"}
hw.errors{hw.type="network", direction="transmit"}
hw.network.error_ratio{direction="receive"}
hw.network.error_ratio{direction="transmit"}
hw.network.io{direction="receive"}
hw.network.io{direction="transmit"}
hw.network.packets{direction="receive"}
hw.network.packets{direction="transmit"}
hw.network.up
hw.status{hw.type="network", state="degraded|failed|ok"}
hw.status{hw.type="network", state="present"}
id
name
responder_policypolicy.hits
policy.undefhits
id
name
servicehw.status{hw.type="service", state="degraded|failed|ok"}
service.connections{state="established"}
service.current_transactions
service.hits
service.limit
service.queue_size{queue.type="reuse"}
service.queue_size{queue.type="surge"}
service.response_time
service.transactions.io{transaction.type="request"}
service.transactions.io{transaction.type="response"}
service.transactions{transaction.type="request"}
service.transactions{transaction.type="response"}
service.utilization
address
id
name
port
type
sslssl.active_sessions
ssl.cards{card.type="crypto_card"}
ssl.cards{card.type="secondary_crypto_card"}
ssl.cards{card.type="secondary_ssl_card"}
ssl.cards{card.type="ssl_card"}
ssl.encryptions{encryption.type="decrypt"}
ssl.encryptions{encryption.type="encrypt"}
ssl.hashes{hash.layer="back-end", hash.protocol="md5"}
ssl.hashes{hash.layer="back-end", hash.protocol="sha"}
ssl.hashes{hash.layer="back-end", hash.protocol="sha256"}
ssl.hashes{hash.layer="back-end", hash.protocol="sha384"}
ssl.hashes{hash.layer="front-end", hash.protocol="md5"}
ssl.hashes{hash.layer="front-end", hash.protocol="sha"}
ssl.hashes{hash.layer="front-end", hash.protocol="sha256"}
ssl.hashes{hash.layer="front-end", hash.protocol="sha384"}
ssl.queue_size
ssl.sessions{ssl.version="dtls_v1"}
ssl.sessions{ssl.version="dtls_v1.2"}
ssl.sessions{ssl.version="ssl_v3"}
ssl.sessions{ssl.version="tls_v1"}
ssl.sessions{ssl.version="tls_v1.1"}
ssl.sessions{ssl.version="tls_v1.2"}
ssl.sessions{ssl.version="tls_v1.3"}
ssl.transactions{ssl.version="dtls_v1"}
ssl.transactions{ssl.version="dtls_v1.2"}
ssl.transactions{ssl.version="ssl_v3"}
ssl.transactions{ssl.version="tls_v1"}
ssl.transactions{ssl.version="tls_v1.1"}
ssl.transactions{ssl.version="tls_v1.2"}
ssl.transactions{ssl.version="tls_v1.3"}
id
tcp_protocolsystem.network.connections{network.connection.state="flushed", network.transport="tcp"}
system.network.connections{network.connection.state="opened", network.transport="tcp", network.io.direction="received"}
system.network.connections{network.connection.state="opened", network.transport="tcp", network.io.direction="sent"}
system.network.connections{network.connection.state="pending", network.transport="tcp"}
tcp.client.errors{network.io.direction="received", error.type="out_of_order"}
tcp.client.packets{tcp.method="FIN", network.io.direction="received"}
tcp.server.errors{network.io.direction="received", error.type="out_of_order"}
tcp.server.io{network.io.direction="received"}
tcp.server.io{network.io.direction="sent"}
tcp.server.packets{tcp.method="FIN", network.io.direction="received"}
tcp.server.packets{tcp.method="SYN", network.io.direction="received"}
tcp.server.packets{tcp.method="all", network.io.direction="received"}
tcp.server.packets{tcp.method="all", network.io.direction="sent"}
id
udp_protocoludp.server.errors{error.type="limit_exceeded"}
udp.server.io{network.io.direction="received"}
udp.server.io{network.io.direction="sent"}
udp.server.limit
udp.server.packets{network.io.direction="received"}
udp.server.packets{network.io.direction="sent"}
id