Connectors directory[1]   Full listing of connectors[2]

Citrix NetScaler (REST)

Description

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

citrix[3] enterprise[4] hardware[5] netscaler[6]

Target

Typical platform: Citrix NetScaler[7]

Operating system: Out-Of-Band

Prerequisites

Leverages: Citrix ADC 13.0 NITRO API or higher

Technology and protocols: HTTP/REST

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

Examples

CLI

metricshub HOSTNAME -t management -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: management
        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

Type Collected Metrics Specific Attributes
enclosure
  • hw.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
fileSystem
  • system.filesystem.usage{system.filesystem.state="free"}
  • id
  • name
filter_policy
  • policy.hits
  • id
  • name
  • request_action
  • response_action
  • rule
http_protocol
  • http.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_server
  • hw.status{hw.type="lb_server", state="degraded|failed|ok"}
  • 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.requests{network.io.direction="received"}
  • lb_server.requests{network.io.direction="sent"}
  • address
  • id
  • name
  • port
  • type
lbvserver_service_binding
  • hw.status{hw.type="lbvserver_service_binding", state="degraded|failed|ok"}
  • address
  • id
  • name
  • port
  • server.id
  • service.id
  • type
network
  • hw.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_policy
  • policy.hits
  • policy.undefhits
  • id
  • name
service
  • hw.status{hw.type="service", state="degraded|failed|ok"}
  • service.hits
  • service.limit
  • service.queue_size
  • 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
ssl
  • ssl.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_protocol
  • system.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_protocol
  • udp.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
No results.