Usage
This page contains all the documentation needed to use pyATS Health Check
.
Currently, pyATS Health Check
is only supported via integrated mode (run via pyATS job). Standalone
mode and more are coming in a future release!
Prerequisites
sourced pyATS virtual environment
testbed yaml
health yaml
Integrated
Running pyATS Health Check
integrated with pyATS scripts is the way if a user wants to collect and monitor device status on a testbed through a pyATS job.
just add --health-checks
then run this command:
pyats run job <job file> --testbed-file <testbed file> --health-checks cpu memory logging core
Or once you have both the testbed yaml and health yaml for custom health checks then run this command. URL with token can be given like below example:
pyats run job <job file> --testbed-file <testbed file> --health-file /path/to/health.yaml
pyats run job <job file> --testbed-file <testbed file> --health-file "http://<url>/health.yaml"
pyats run job <job file> --testbed-file <testbed file> --health-file "http://<token>@<url>/health.yaml"
Standalone
Coming in a future release.
pyATS Health Check YAML Validation
To validate
Once you have a pyats health check yaml then run this command:
pyats validate datafile /path/to/health.yaml
pyats validate datafile "http://<url>/health.yaml"
pyATS Health Check Examples
pyATS Health Check examples can be found in our Github repo.
Here is how to leverage those example for your case. Let’s look at cpu/memory custom check.
This example will check CPU load and Memory usage for BGP processes. If multiple processes are hit by regex BGP.*
. The result value will be returned each process’s cpu load percentage as python dictionary. (This behavior depends on which API is used)
All the examples has device uut
or something else. To use these examples for your device, what you need to do is to change device name to yours. Device name or alias in testbed yaml needs to be given to the device
.
And for memory
section, added OSPF.*
regex to select OSPF related processes addition to BGP ones. Based on API arguments, contents of pyATS Health Check are very customizable/flexible.
Most of Blitz actions support include
/exclude
to indicate what the criteria is for the action. In below case, by using Dq
, sum_value_operator('value', '<', 90)
means that sum up returned each process’s percentage from API is expected to be less than 90.
pyats_health_processors:
source:
pkg: genie.libs.health
class: health.Health
test_sections:
- cpu:
- api:
device: ASR1K-1 # <<< changed from `uut`
function: health_cpu
arguments:
processes: ['BGP.*']
include:
- sum_value_operator('value', '<', 90)
- memory:
- api:
device: ASR1K-1 # <<< changed from `uut`
function: health_memory
arguments:
processes: ['BGP.*', 'OSPF.*']
include:
- sum_value_operator('value', '<', 90)
By default, pyATS Health Check will run these health checks every testcase/section. You might want to narrow down where pyATS Health Check runs. For example, above example is checking BGP processes CPU/Memory. So, let’s narrow down to run only for related testcases/section.
pyats_health_processors:
source:
pkg: genie.libs.health
class: health.Health
test_sections:
- cpu:
- api:
device: ASR1K-1
function: health_cpu
arguments:
processes: ['BGP.*']
include:
- sum_value_operator('value', '<', 90)
health_tc_groups: '.*bgp.*' # <<< use regex to match any BGP processes
- memory:
- api:
device: ASR1K-1 # <<< changed from `uut`
function: health_memory
arguments:
processes: ['BGP.*', 'OSPF.*']
include:
- sum_value_operator('value', '<', 90)
health_tc_sections: 'bgp_full_route_check' # <<< specify exact section name
For cpu
action, health_tc_groups: '.*bgp.*'
is given to run the action only for testcases which the regex *bgp.*
match its group.
For memory
action, health_tc_sections: 'bgp_full_route_check'
is given. Exact section name without regex is provided, so the memory
action will run only for the exact same section name but effective for all the testcases. Please check for the detail of pyATS Health Check arguments health_tc_uids
/health_tc_groups
/health_tc_sections
from Selecting Testcase/Section
pyATS Health Check is very flexible because you can leverage any features in Blitz. You can create your own Health Check by using any of the Blitz feature, give it a try! Quick Trigger (Blitz).
The examples repo is open-sourced. Any contributions for pyATS Health Check examples are encouraged!