Ping Poller

Overview

The Ping Poller microservice performs ICMP discovery for the discovery request and pings the device for availability and performance.

Prerequisites

  1. A microservices cluster must be setup. Refer to Microservice Cluster Setup.

  2. Apache Pulsar must be installed. Refer to Apache Pulsar microservice.

  3. The following core microservices must be installed as per the requirement

Setup

su - assure1
export NAMESPACE=a1-zone1-pri
export WEBFQDN=<Primary Presentation Web FQDN> 
a1helm install ping-poller assure1/ping-poller -n $NAMESPACE --set global.imageRegistry=$WEBFQDN

Default Configuration

Name Value Possible Values Notes
LOG_LEVEL INFO FATAL, ERROR, WARN, INFO, DEBUG Workder level logging level used by application.
REDUNDANCY_POLL_PERIOD 5 Integer How often the secondary service checks to see if the primary is online, in seconds.
REDUNDANCY_FAILOVER_THRESHOLD 4 Integer The number of failed polls before the secondary becomes the active application.
REDUNDANCY_FALLBACK_THRESHOLD 1 Integer The number of successful polls before the secondary goes back to sleep.
POLL_BY_IP true Bool Use IP Address for ping polling instead of hostname

Configurations can be changed by passing the values to the a1helm install prefixed with the configData.

Default Configuration for Coordinator

Name Value Possible Values Notes
LOG_LEVEL "" FATAL, ERROR, WARN, INFO, DEBUG Coordinator level logging level used by application.
PING_COUNT "10" Integer Packet count to ping a device.
PING_TIMEOUT "4" Integer Time in seconds to timeout ping
PORT_COORDINATOR "" Integer Coordinator Port
GRPC_FALLBACK_USE_IP "" Text Connect to workers using ip address else fqdn
PULSAR_PING_CONTROL_OVERRIDE "" persistent://assure1/discovery/ping-poller-zoneX Overrides the pulsar topic from which ping poller requests to be received (same as where discovery service sends the request). Example- ping-poller-zone1
REDUNDANCY_POLL_PERIOD 5 Integer How often the secondary service checks to see if the primary is online, in seconds.
REDUNDANCY_FAILOVER_THRESHOLD 4 Integer The number of failed polls before the secondary becomes the active application.
REDUNDANCY_FALLBACK_THRESHOLD 1 Integer The number of successful polls before the secondary goes back to sleep.
PING_ASYNC_CASCADE 10 Integer Delay (in ms) between sending ping requests (avoids socket congestion)
DISCOVERY_WORKERS_PERCENTAGE 10 Integer Percentage of workers dedicated strictly to discovery tasks.
GRPC_IDLE_TIMEOUT_M 0 Integer Timeout for idle grpc connections

Configurations can be changed by passing the values to the a1helm install prefixed with the coordinator.configData.

Default Configuration for worker

Name Value Possible Values Notes
LOG_LEVEL "info" FATAL, ERROR, WARN, INFO, DEBUG Worker level logging level used by application.
PORT_COORDINATOR "" Integer Coordinator Port
PORT_WORKER "" Integer Worker port
GRPC_GRACEFUL_CONN_TIME "" 60(default value) Before attempting to dial to coordinator, for specified time, try checking coordinator readiness.
PING_MIN_PACKET_SIZE "53" Integer Minimum packet size for pinging
METRICS_TOPIC "" Text Pulsar output topic for metrics
RCA_TOPIC "" Text Pulsar output topic for availablity
PULSAR_DISCOVERY_CALLBACK_OVERRIDE "" persistent://assure1/discovery/discovery-service-zoneX value to override the default discovery callback topic
PING_TTL 0 (Auto) Integer Ping packets TTL
GRPC_IDLE_TIMEOUT_M 0 Timeout for idle grpc connections

Configurations can be changed by passing the values to the a1helm install prefixed with the worker.configData parent key respectively.

Example of setting the log level to DEBUG

a1helm install ... --set configData.LOG_LEVEL=DEBUG

Example of enabling redundancy

Redundancy will not be enabled by default. To enable this functionality, pass the following to the installation command:

a1helm install ... --set redundancy.enabled=true

Autoscaling

Autoscaling configurations can be changed by passing the values prefixed with worker.autoscaling.
For microservice scaling options, please refer to the autoscaling docs.

On top of the standard autoscaling options, this microservice supports the following additional configurations:

Name Value Possible Values Notes
totalTargetsPerWorker 2000 Integer Number of targets that should be polled by each worker.

Example of changing the auto-scaling value

To change the thresholds used for this functionality, pass the following to the installation command:

a1helm install ... --set worker.autoscaling.totalTargetsPerWorker=4000

Microservice self-metrics

The Ping Poller microservice exposes the following self-metrics to Prometheus.

Coordinator metrics table

Note:

Each of the below metrics is prefixed with ping_coordinator prefix. Example of a full metric name: ping_coordinator_acom_targets

Metric Name Type Description
acom_targets Gauge The number of acom targets that are to be polled
polling_queue_length Gauge The length of the queue to be polled
discovery_queue_length Gauge The length of the discovery queue to be polled
total_availability_poll_cycle_time Gauge The total duration of the availability work done by all the workers
total_discovery_poll_cycle_time Gauge The total duration of the discovery work done polled by all the workers
polling_workers_count Gauge The number of polling workers being used
discovery_workers_count Gauge The number of discovery workers being used