Class CosmosDiagnosticsThresholds

java.lang.Object
com.azure.cosmos.CosmosDiagnosticsThresholds

public final class CosmosDiagnosticsThresholds extends Object
This class describes the thresholds when more details diagnostics are emitted for an operation due to high latency, high RU consumption or high payload sizes.
  • Field Details

    • DEFAULT_REQUEST_CHARGE_THRESHOLD

      public static final float DEFAULT_REQUEST_CHARGE_THRESHOLD
      The default request charge (RU) threshold to determine whether to include request diagnostics or not
      See Also:
    • DEFAULT_POINT_OPERATION_LATENCY_THRESHOLD

      public static final Duration DEFAULT_POINT_OPERATION_LATENCY_THRESHOLD
      The default latency threshold to determine whether to include request diagnostics or not for point operations
    • DEFAULT_NON_POINT_OPERATION_LATENCY_THRESHOLD

      public static final Duration DEFAULT_NON_POINT_OPERATION_LATENCY_THRESHOLD
      The default latency threshold to determine whether to include request diagnostics or not for non-point operations
    • DEFAULT_PAYLOAD_SIZE_THRESHOLD_IN_BYTES

      public static final int DEFAULT_PAYLOAD_SIZE_THRESHOLD_IN_BYTES
      The default payload size (in bytes) threshold to determine whether to include request diagnostics or not
      See Also:
  • Constructor Details

    • CosmosDiagnosticsThresholds

      public CosmosDiagnosticsThresholds()
      Creates an instance of the CosmosDiagnosticsThresholds class with default values
  • Method Details

    • setPointOperationLatencyThreshold

      public CosmosDiagnosticsThresholds setPointOperationLatencyThreshold(Duration pointOperationLatencyThreshold)
      Can be used to define custom latency thresholds. When the latency threshold is exceeded more detailed diagnostics will be emitted (including the request diagnostics). There is some overhead of emitting the more detailed diagnostics - so recommendation is to choose latency thresholds that reduce the noise level and only emit detailed diagnostics when there is really business impact seen. The default value for the point operation latency threshold is DEFAULT_POINT_OPERATION_LATENCY_THRESHOLD, for non-point operations DEFAULT_NON_POINT_OPERATION_LATENCY_THRESHOLD.
      Parameters:
      pointOperationLatencyThreshold - the latency threshold for point operations (ReadItem, CreateItem, UpsertItem, ReplaceItem, PatchItem or DeleteItem)
      Returns:
      current CosmosDiagnosticsThresholds instance
    • setNonPointOperationLatencyThreshold

      public CosmosDiagnosticsThresholds setNonPointOperationLatencyThreshold(Duration nonPointOperationLatencyThreshold)
      Can be used to define custom latency thresholds. When the latency threshold is exceeded more detailed diagnostics will be emitted (including the request diagnostics). There is some overhead of emitting the more detailed diagnostics - so recommendation is to choose latency thresholds that reduce the noise level and only emit detailed diagnostics when there is really business impact seen. The default value for the point operation latency threshold is DEFAULT_POINT_OPERATION_LATENCY_THRESHOLD, for non-point operations DEFAULT_NON_POINT_OPERATION_LATENCY_THRESHOLD.
      Parameters:
      nonPointOperationLatencyThreshold - the latency threshold for all operations except (ReadItem, CreateItem, UpsertItem, ReplaceItem, PatchItem or DeleteItem)
      Returns:
      current CosmosDiagnosticsThresholds instance
    • setRequestChargeThreshold

      public CosmosDiagnosticsThresholds setRequestChargeThreshold(float requestChargeThreshold)
      Can be used to define a custom RU (request charge) threshold. When the threshold is exceeded more detailed diagnostics will be emitted (including the request diagnostics). There is some overhead of emitting the more detailed diagnostics - so recommendation is to choose a request charge threshold that reduces the noise level and only emits detailed diagnostics when the request charge is significantly higher thane expected. The default value for the request charge threshold are DEFAULT_REQUEST_CHARGE_THRESHOLD RUs.
      Parameters:
      requestChargeThreshold - The total request charge threshold for an operation. When this threshold is exceeded for an operation the corresponding detailed diagnostics will be emitted.
      Returns:
      current CosmosDiagnosticsThresholds instance
    • setPayloadSizeThreshold

      public CosmosDiagnosticsThresholds setPayloadSizeThreshold(int bytes)
      Can be used to define a payload size threshold. When the threshold is exceeded for either request or response payloads more detailed diagnostics will be emitted (including the request diagnostics). There is some overhead of emitting the more detailed diagnostics - so recommendation is to choose a payload size threshold that reduces the noise level and only emits detailed diagnostics when the payload size is significantly higher than expected. The default value for the payload size threshold are DEFAULT_PAYLOAD_SIZE_THRESHOLD_IN_BYTES bytes.
      Parameters:
      bytes - the threshold for the payload size in bytes
      Returns:
      current CosmosDiagnosticsThresholds instance
    • setFailureHandler

      public CosmosDiagnosticsThresholds setFailureHandler(BiPredicate<Integer,Integer> failureHandler)
      Can be used to customize the logic determining whether the outcome of an operation (based on statusCode + subStatusCode) is considered a failure (and diagnostics will be emitted) or not. By default, all status codes >= 400 except for (404/0 - item not found, 409/0 - conflict, document with same id+pk already exists, 412/0 - (etag) pre-condition failure and 429/3200 - throttling due to provisioned RU exceeded) are considered failures. Those exceptions can happen very frequently and are usually expected under certain circumstances by applications - so, the noise-level for emitting diagnostics would be too high. The first parameter will be the status code - the second parameter the subStatusCode. The returned boolean of the function would indicate whether the operation should be considered as failure form a diagnostics perspective.
      Parameters:
      failureHandler - the function that will be used to determine whether a status code/sub-status code tuple should be considered a failure.
      Returns:
      current CosmosDiagnosticsThresholds instance
    • toString

      public String toString()
      Overrides:
      toString in class Object