// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
syntax = "proto2";
option optimize_for = LITE_RUNTIME;
package reporting;
// |Destination| indicates which handler a |Record| should be delivered to.
// These values are persisted to logs. Entries should not be renumbered and
// numeric values should never be reused.
// This must be kept in sync with EnterpriseCloudReportingDestination in
// //tools/metrics/histograms/enums.xml in the Chromium repo.
// You must also add any new destinations to
// `Browser.ERP.EventEnqueueResult.{Destination}` in
// //tools/metrics/histograms/metadata/browser/histograms.xml
enum Destination {
UNDEFINED_DESTINATION = 0;
// |UPLOAD_EVENTS| handler sends records to the Eventing pipeline.
UPLOAD_EVENTS = 1;
// |MEET_DEVICE_TELEMETRY| handler is for telemetry data sent by Meet
// Devices. For more information, see go/reliable-meet-device-telemetry.
MEET_DEVICE_TELEMETRY = 2;
// |WEB_PROTECT| legacy web protect event handler that will be deleted and
// replaced by the |CHROME_BROWSER_ENTERPRISE| destination.
WEB_PROTECT = 3 [deprecated = true];
// |ARC_INSTALL| legacy arc app installation event handler
ARC_INSTALL = 4;
// |POLICY_VALIDATION| legacy policy validation event handler
POLICY_VALIDATION = 5;
// |EXTENSION_INSTALL| legacy extension installation event handler
EXTENSION_INSTALL = 6;
// |REPORTING_RECORD| Temporary group for Encrypted Reporting Pipeline
REPORTING_RECORD = 7;
// |PRINT_JOBS| handler is for print jobs.
PRINT_JOBS = 9;
// |EXTENSIONS_WORKFLOW| handler is for sending extension requests events,
// sent for Chrome Browser Cloud Management (CBCM).
EXTENSIONS_WORKFLOW = 10;
// |DLP_EVENTS| events send from data leakage protection for Chrome OS
DLP_EVENTS = 11;
// |LOGIN_LOGOUT_EVENTS| is for login/logout events.
LOGIN_LOGOUT_EVENTS = 12;
// |HEARTBEAT_EVENT| event used with manual and integration tests to ensure
// that messages are being uploaded and processed correctly.
HEARTBEAT_EVENTS = 13;
// |INFO_METRIC| handler for device info which is sent by ChromeOS devices.
INFO_METRIC = 14;
// |TELEMETRY_METRIC| handler for device telemetry which is sent by ChromeOS
// devices.
TELEMETRY_METRIC = 15;
// |EVENT_METRIC| handler for device event which is sent by ChromeOS devices.
EVENT_METRIC = 16;
// |ADDED_REMOVED_EVENTS| is for events when a user is added or removed.
ADDED_REMOVED_EVENTS = 17;
// |CRD_EVENTS| are sent for Chrome remote desktop connect and disconnect.
CRD_EVENTS = 18;
// |PERIPHERAL_EVENTS| is for both event and telemetry data from peripherals
// connected to ChromeOS devices.
PERIPHERAL_EVENTS = 19;
// |SUSPICIOUS_EVENTS| is for events when a suspicious mount or process
// is detected by the security daemon.
SUSPICIOUS_EVENTS = 20;
// |LOCK_UNLOCK_EVENTS| is for lock/unlock events.
LOCK_UNLOCK_EVENTS = 21;
// |CROS_SECURITY_AGENT| is for events that starts the secagentd agent or
// indicates that it is running.
CROS_SECURITY_AGENT = 22;
// |CROS_SECURITY_PROCESS| is for events that exec or terminate process.
CROS_SECURITY_PROCESS = 23;
// |OS_EVENTS| is for events regarding updates, rollbacks or powerwashes.
OS_EVENTS = 24;
// |LEGACY_TECH| is for chrome deprecated features encountered on the
// client side.
LEGACY_TECH = 25;
// |CROS_SECURITY_NETWORK| is for events that are occurring over
// the network.
CROS_SECURITY_NETWORK = 26;
// |LOG_UPLOAD| is for events to initiate and track uploading file to GCS.
// The file is expected to be a zipped set of logs prepared by Support Tool.
LOG_UPLOAD = 27;
// |CROS_SECURITY_USER| is for events that are occurring from user actions.
CROS_SECURITY_USER = 28;
// |KIOSK_HEARTBEAT_EVENTS| is for events from Kiosk/MGS devices that write
// heartbeats to dds based on the telemetry pipeline using ERP
KIOSK_HEARTBEAT_EVENTS = 29;
// |CHROME_BROWSER_ENTERPRISE| is for CBE Security and Integrations events
CHROME_BROWSER_ENTERPRISE = 30;
// |CRASH_EVENTS| is for fatal crash events.
CRASH_EVENTS = 31;
// |CHROME_CRASH_EVENTS| is for fatal chrome crash events.
CHROME_CRASH_EVENTS = 32;
// |CROS_SECURITY_FILE| is for events that read or modify sensitive files.
CROS_SECURITY_FILE = 33;
reserved 8;
}
// |Priority| is used to determine when items from the queue should be rate
// limited or shed. Rate limiting indicates that fewer records will be sent due
// to message volume, records of the lowest priority are limited first. Shedding
// records occurs when disk space is at or near the limt, records of the lowest
// priority are shed first.
enum Priority {
UNDEFINED_PRIORITY = 0;
// |IMMEDIATE| queues should transfer small amounts of immediately necessary
// information. These are the events that will be rate limited before
// |SECURITY| records. |IMMEDIATE| records are shed before |SECURITY| records.
IMMEDIATE = 1;
// |FAST_BATCH| queues should transfer small amounts of information that may
// be critical for administrative experience. These records will be rate
// limited before |IMMEDIATE| records.
// |FAST_BATCH| records are shed before |IMMEDIATE| records.
// Resource utilization and failed application installation are perfect
// examples of records that need to be |FAST_BATCH|.
FAST_BATCH = 2;
// |SLOW_BATCH| queues should transfer small amounts of non-immediate data.
// These records will be rate limited before |FAST_BATCH| records.
// |SLOW_BATCH| records are shed before |FAST_BATCH| records.
// Application metrics are a good example of records that should be
// |SLOW_BATCH|.
SLOW_BATCH = 3;
// |BACKGROUND_BATCH| queues transfer large amounts of non-immediate data.
// These records will be rate limited before |SLOW_BATCH| records.
// |BACKGROUND_BATCH| records are shed before |SLOW_BATCH| records.
// Log files are a perfect examples of records that need to be
// |BACKGROUND_BATCH|.
BACKGROUND_BATCH = 4;
// |MANUAL_BATCH| queues transfer data only on explicit request.
// Note that since a queue can hold records submitted by multiple clients,
// one client requesting to transfer data will do so for all collected
// records of the same priority, including those enqueued by other clients.
// |MANUAL_BATCH| records are the first to be rate limited, and since there
// is no automatic transfer, it is important to explicitly flush them often
// enough to avoid loss of data.
// |MANUAL_BATCH| records are one of the first few ones to be shed.
MANUAL_BATCH = 5;
// |SECURITY| queues should transfer information indicating potential security
// issue; like |IMMEDIATE| they are uploaded right after recording.
// The difference from |IMMEDIATE| is that any sequencing breach (record
// digest mismatch, lost events, generation switch) in |SECURITY| queue will
// be exposed to the domain admin. These are the events that will be rate
// limited last. |SECURITY| records are the last ones to be shed.
SECURITY = 6;
// |MANUAL_BATCH_LACROS| queues transfer data only on explicit request in
// Lacros. Note that since a queue can hold records submitted by multiple
// clients, one client requesting to transfer data will do so for all
// collected records of the same priority, including those enqueued by other
// clients within Lacros. |MANUAL_BATCH_LACROS| records, like those with
// |MANUAL_BATCH|, are the first to be rate limited, and since there
// is no automatic transfer, it is important to explicitly flush them often
// enough to avoid loss of data.
// |MANUAL_BATCH_LACROS| records are one of the first few ones to be shed.
MANUAL_BATCH_LACROS = 7;
}