glooshot.proto

Package: glooshot.solo.io

Types:

Source File: github.com/solo-io/glooshot/api/v1/glooshot.proto

Experiment

Describes an Experiment that GlooShot should run

"metadata": .core.solo.io.Metadata
"status": .core.solo.io.Status
"spec": .glooshot.solo.io.ExperimentSpec
"result": .glooshot.solo.io.ExperimentResult
Field Type Description Default
metadata .core.solo.io.Metadata the object metadata for this resource
status .core.solo.io.Status indicates whether or not the spec is valid set by glooshot, intended to be read by clients
spec .glooshot.solo.io.ExperimentSpec configuration for the Experiment
result .glooshot.solo.io.ExperimentResult the result of the experiment

ExperimentResult

"state": .glooshot.solo.io.ExperimentResult.State
"failureReport": map<string, string>
"timeStarted": .google.protobuf.Timestamp
"timeFinished": .google.protobuf.Timestamp
Field Type Description Default
state .glooshot.solo.io.ExperimentResult.State the current state of the experiment as reported by glooshot
failureReport map<string, string> arbitrary data summarizing a failure in case one occurred
timeStarted .google.protobuf.Timestamp time the experiment was started
timeFinished .google.protobuf.Timestamp the time the experiment completed

State

Name Description
Pending Experiment has not started
Started Experiment started but threshold not met
Failed Experiment failed, threshold was exceeded
Succeeded Experiment succeeded, duration elapsed If duration is not specified, the Experiment will never be marked Succeeded

ExperimentSpec

"faults": []glooshot.solo.io.ExperimentSpec.InjectedFault
"failureConditions": []glooshot.solo.io.FailureCondition
"duration": .google.protobuf.Duration
"targetMesh": .core.solo.io.ResourceRef
Field Type Description Default
faults []glooshot.solo.io.ExperimentSpec.InjectedFault the faults this experiment will inject if empty, Glooshot will run a “control” experiment with no faults injected
failureConditions []glooshot.solo.io.FailureCondition conditions on which to stop the experiment and mark it as failed at least one must be specified
duration .google.protobuf.Duration the duration for which to run the experiment if missing or set to 0 the experiment will run indefinitely only Experiments with a timeout can succeed
targetMesh .core.solo.io.ResourceRef The mesh to which the experiment will be applied. Must match a mesh.supergloo.solo.io CRD. If a cluster only has a single mesh, this value is not needed, Glooshot will default to the only possible option.

InjectedFault

decribes a single fault to inject

"originServices": []core.solo.io.ResourceRef
"destinationServices": []core.solo.io.ResourceRef
"fault": .supergloo.solo.io.FaultInjection
Field Type Description Default
originServices []core.solo.io.ResourceRef if specified, the fault will only apply to requests sent from these services
destinationServices []core.solo.io.ResourceRef if specified, the fault will only apply to requests sent to these services
fault .supergloo.solo.io.FaultInjection the type of fault to inject

FailureCondition

a condition based on an observed prometheus metric

"webhookUrl": string
"prometheusTrigger": .glooshot.solo.io.PrometheusTrigger
Field Type Description Default
webhookUrl string if HTTP GET returns non-200 status code, the condition was met
prometheusTrigger .glooshot.solo.io.PrometheusTrigger trigger a failure on observed prometheus metric

PrometheusTrigger

"customQuery": string
"successRate": .glooshot.solo.io.PrometheusTrigger.SuccessRateQuery
"thresholdValue": float
"comparisonOperator": string
Field Type Description Default
customQuery string a user-specified query as an inline string
successRate .glooshot.solo.io.PrometheusTrigger.SuccessRateQuery query the success rate for a specific service
thresholdValue float consider the failure condition met if the metric falls below this threshold
comparisonOperator string the comparison operator to use when comparing the threshold and observed metric values if the comparison evaluates to true, the failure condition will be considered met possible values are ‘==’, ‘>’, ‘<‘, ‘>=’, and ‘<=’ defaults to ‘<’

SuccessRateQuery

returns the # of non-5XX requests / total requests for the given interval

"service": .core.solo.io.ResourceRef
"interval": .google.protobuf.Duration
Field Type Description Default
service .core.solo.io.ResourceRef the service whose success rate Glooshot should monitor
interval .google.protobuf.Duration the time interval over which the success rate should be measured defaults to 1 minute