Funded by the EU.
This component receives, from a Kafka topic, either current data instances for anomaly detection or the location of the trained model in a S3 bucket. Once a model is loaded, anomaly detection can be performed to classify current metric instances as normal or anomalous. The instrumentation capabilities of Prometheus are leveraged to export the outputs of the models as new metrics so that custom rules may be written to trigger alerts. The following custom Prometheus metrics are exposed by this component:
microservice_anomaly_state{microservice_name="...",namespace="..."}
microservice_anomaly_score{microservice_name="...",namespace="..."}
Each metric is distinguished by the microservice_name and namespace pairs. The assumption is made that any microservice does not cross namespace boundaries. The word microservice in this context is used to refer, in short, to a microservices application. In other words, a microservice’s pods all reside within one Kubernetes namespace. In an environment where this assumption does not hold true our approach does not work. The microservice_anomaly_state metrics are assigned binary values; 0 for normal and 1 for anomaly. On the other hand, microservice_anomaly_score metrics are assigned the anomaly score produced by the anomaly detection models. The anomaly scores provide an insight into the degree of abnormality of a particular microservice.
