anchor.diff:          description: |
             The current total number of routes registered with the Gorouter, emitted per Gorouter instance
   
  -          **Use**: The aggregation of these values across all Gorouters indicates uptake and gives a picture of the overall growth of the environment for capacity planning.
  -
  -          It's also recommended alerting on this metric if the number of routes falls outside of the normal range for your deployment. Dramatic decreases in this metric volume may indicate a problem with the route registration process, such as an app outage, or that something in the route register management plane has failed.
  -
  -          If visualizing these metrics on a dashboard, `gorouter.total_routes` can be helpful for visualizing dramatic drops. However, for alerting purposes, the `gorouter.ms_since_last_registry_update metric` is more valuable for quicker identification of Gorouter issues. Alerting thresholds for `gorouter.total_routes` should focus on dramatic increases or decreases out of expected range.
  +          **Use**: The aggregation of these values across all
  +            Gorouters indicates uptake and gives a picture of the
  +            overall growth of the environment for capacity planning.
  +
  +          It's also recommended alerting on this metric if the number
  +          of routes falls outside of the normal range for your
  +          deployment. Dramatic decreases in this metric volume may
  +          indicate a problem with the route registration process, such
  +          as an app outage, or that something in the route register
  +          management plane has failed.
  +
  +          If visualizing these metrics on a dashboard,
  +          `gorouter.total_routes` can be helpful for visualizing
  +          dramatic drops. However, for alerting purposes, the
  +          `gorouter.ms_since_last_registry_update metric` is more
  +          valuable for quicker identification of Gorouter
  +          issues. Alerting thresholds for `gorouter.total_routes`
  +          should focus on dramatic increases or decreases out of
  +          expected range.
   
             **Origin**: Firehose
             **Type**: Gauge (Float)
  
positive.code:           The lifetime number of requests completed by the Gorouter VM for HTTP status family 5xx, server errors, emitted
            per Gorouter instance.
  
            **Use**: A repeatedly crashing app is often the cause of a big increase in 5xx responses. However, response
            issues from apps can also cause an increase in 5xx responses. Always investigate an unexpected increase in this
            metric.
  
            **Origin**: Firehose
            **Type**: Counter (Integer)
  
negative.code:         description: |
            The number of file descriptors currently used by the Gorouter job.
  
            **Use**: Indicates an impending issue with the
              Gorouter. Without proper mitigation, it is possible for an
              unresponsive app to eventually exhaust available Gorouter
              file descriptors and cause route starvation for other apps
              running on PAS. Under heavy load, this unmitigated
              situation can also result in the Gorouter losing its
              connection to NATS and all routes being pruned.
  
            While a drop in `gorouter.total_routes` or an increase in
            `gorouter.ms_since_last_registry_update` helps to surface
            that the issue may already be occurring, alerting on
            `gorouter.file_descriptors` indicates that such an issue is
            impending.
  
            The Gorouter limits the number of file descriptors to
            100,000 per job. Once the limit is met, the Gorouter is
            unable to establish any new connections.
  
            To reduce the risk of DDoS attacks, we recommend doing one
            or both of the following:
  
            * Within PAS, set **Max Connections Per Backend** to define
            how many requests can be routed to any particular app
            instance. This prevents a single app from using all Gorouter
            connections. The value specified should be determined by the
            operator based on the use cases for that foundation.
  
            * Add rate limiting at the load balancer level.
  
            **Origin**: Firehose
  