assemblyline_models/messages/
service_heartbeat.rs

1use serde::{Deserialize, Serialize};
2
3// from assemblyline import odm
4
5// MSG_TYPES = {"ServiceHeartbeat"}
6// LOADER_CLASS = "assemblyline.odm.messages.service_heartbeat.ServiceMessage"
7
8
9
10/// Service Metrics
11#[derive(Serialize, Deserialize, Default)]
12pub struct Metrics {
13    /// Number of cache hits
14    pub cache_hit: i64,
15    /// Number of cache misses
16    pub cache_miss: i64,
17    /// Number of cache skips
18    pub cache_skipped: i64,
19    /// Number of service executes
20    pub execute: i64,
21    /// Number of recoverable fails
22    pub fail_recoverable: i64,
23    /// Number of non-recoverable fails
24    pub fail_nonrecoverable: i64,
25    /// Number of tasks scored
26    pub scored: i64,
27    /// Number of tasks not scored
28    pub not_scored: i64,
29}
30
31// @odm.model(description="Service Activity")
32// class Activity(odm.Model):
33//     busy = odm.Integer(description="Number of busy instances")
34//     idle = odm.Integer(description="Number of idle instances")
35
36
37// @odm.model(description="Heartbeat Model")
38// class Heartbeat(odm.Model):
39//     activity = odm.Compound(Activity, description="Service activity")
40//     instances = odm.Integer(description="Service instances")
41//     metrics = odm.Compound(Metrics, description="Service metrics")
42//     queue = odm.Integer(description="Service queue")
43//     service_name = odm.Keyword(description="Service name")
44
45
46// @odm.model(description="Model of Service Heartbeat Message")
47// class ServiceMessage(odm.Model):
48//     msg = odm.Compound(Heartbeat, description="Heartbeat message")
49//     msg_loader = odm.Enum(values={LOADER_CLASS}, default=LOADER_CLASS, description="Loader class for message")
50//     msg_type = odm.Enum(values=MSG_TYPES, default="ServiceHeartbeat", description="Type of message")
51//     sender = odm.Keyword(description="Sender of message")