The Google Workspace (formerly G Suite) API generates account activities for these applications and sources. The collector process the Google API responses and send them to the Devo platform that will categorize all information received on tables along rows and columns on your Devo domain.
Parameter alert_type = User suspended (spam through relay)
user_suspended_spam_through_relay
cloud.gsuite.alerts.
super
user_suspended_
admin
spam_
password
through_
reset
relay
v1.
3
0.0
Vendor setup
The Google Workspace Alerts collector needs to be configured in the Google Cloud Platform APIs console and also in the Google Admin console.
In the Google Cloud Platform APIs console, you need to enable the Google Workspace Alert Center API (formerly G Suite Alert Center API) and create the proper credentials for the collector.
In the Google Admin console, you must give the proper permissions to the previously created credentials.
Follow the instructions below to learn how to configure the services and allow the required permissions:
Search Google Workspace Alert Center API in the search box.
Image Removed
Click Enable.
Go to the Credentials section (You can type credentials api services on the search box or choose the section from the left panel).
Image Removed
Then, click Manage Service Accounts.
Image Removed
Click Create Service Account and fill in the required fields (the optional steps can be omitted).
Click on the previously created Service Account and make sure you are in the DETAILS section.
Click on SHOW DOMAIN-WIDE DELEGATION, then enable the option called Enable Google Workspace Domain-wide Delegation. Click Save and copy the value in the Client ID box (this value will be used in the Assigning proper permissions to credentials section).
Once saved, go to KEYS section, click ADD KEY → Create a new key and choose the JSON file type. Then, click CREATE (a .json file will be downloaded).
Rename the downloaded file to credentials-gsuite-alerts.json and move it to the collector credentials directory (<any_directory>/devo-collector/gsuite-alerts/credentials/).
Assigning the required permissions to the credentials
Now, you must associate a scope to the previously created Client ID. Follow these steps to do it:
Note
You must have the proper admin permissions to follow the next steps.
From your Google Workspace domain’s Admin console, go to Main menu → Security → API Controls.
In the Domain-wide delegation pane, select Manage Domain Wide Delegation.
Click Add new.
In the Client ID field, enter the service account's Client ID. You can find your service account's client ID in the Service accounts page.
In the OAuth scopes (comma-delimited) field, enter the next scope : https://www.googleapis.com/auth/apps.alerts
Click Authorize.
...
Accepted authentication methods with Google Oauth2
A service account is a method used by Google to make server-to-server connections instead of user-to-server. In Google Workspace Collector Alerts, a service account is used for the API connection to GCP. That is, it is a way to authenticate to work with GCP's own data. This uses delegation of authority to allow applications to access user data in your organization's Google Workspace environment. Google Workspace Collector Alerts use the following delegated credentials:
delegated_email field should contain the email of an real user (you cannot use a Service Account here) with enough access to display the alerts in the Google WorkSpace Admin Console → Alert Center. (https://admin.google.com/ac/ac).
Once the data source is configured, you can either send us the required information if you want us to host and manage the collector for you (Cloud collector), or deploy and host the collector in your own machine using a Docker image (On-premise collector).
...
Rw tab
title
Cloud collector
We use a piece of software called Collector Server to host and manage all our available collectors. If you want us to host this collector for you, get in touch with us and we will guide you through the configuration.
Rw tab
title
On-premise collector
This data collector can be run in any machine that has the Docker service available because it should be executed as a docker container. The following sections explain how to prepare all the required setup for having the data collector running.
Structure
The following directory structure should be created for being used when running the collector:
In Devo, go to Administration → Credentials → X.509 Certificates, download the Certificate, Private key and Chain CA and save them in <product_name>/certs/. Learn more about security credentials in Devo here.
...
Note
Replace <product_name> with the proper value.
Editing the config.yaml file
Code Block
globals:
debug: True # <- Setup as True or False for debugging mode
id: not_used
name: gsuite
persistence: # <- Persistence setup filesystem
type: filesystem
config:
directory_name: state # <- Persistence directory
outputs:
devo_1:
type: devo_platform
config:
address: eu.elb.relay.logtrust.net # <- Devo platform address EU/US
port: 443
type: SSL
chain: chain.crt
cert: <your_domain>.crt # <- Please, replace with the certificate from your Devo domain (Administration>Credentials>x.509)
key: <your_domain>.key # <- Please, replace with the certificate from your Devo domain (Administration>Credentials>x.509)
inputs:
gsuite_alerts:
id: <short_unique_identifier> # <- "input_id", used for internal identifications
enabled: true # <- G Suite alerts service enabled
requests_per_second: 5 # <- Setting up requests per second. 5 recommended.
autoconfig: # <- "autoconfiguration" will be executed (connector doesn't support this attribute, set is "true" by default).
enabled: true # <- Autocofig setting up - True or False
refresh_interval_in_seconds: 180 # <- Time wait in second between requests - 180s recommended.
credentials:
filename: credentials-gsuite-alerts.json # <- Service Account credentials json file that you named on the getting credentials section
delegated_email: <delegated_email_value> # <- Email that will be used to delegate G Suite Alerts Viewer permissions to the Service Account
source_id: <source_id_value> # <- This value will be used for adding to message "tag" as fourth level
services: # <- List with the Alerts that you want to collect
customer_takeout_initiated:
request_period_in_seconds: 60 # <- Controls waiting time for to the next request
start_time: "9999-12-31T23:59:59.999Z"
malware_reclassification:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
misconfigured_whitelist:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
phishing_reclassification:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
suspicious_message_reported:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
user_reported_phishing:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
user_reported_spam_spike:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
leaked_password:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
suspicious_login:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
suspicious_login_less_secure_app:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
suspicious_programmatic_login:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
user_suspended:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
user_suspended_spam:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
user_suspended_spam_through_relay:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
user_suspended_suspicious_activity:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
google_operations:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
government_attack_warning:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
device_compromised:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
suspicious_activity:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
appmaker_default_cloud_sql_setup:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
activity_rule:
request_period_in_seconds: 60
start_time: "9999-12-31T23:59:59.999Z"
Note
The start_time fields are optional. If you would like to establish any value, the required format is 0000-00-00T00:00:00.000Z.
Note
delegated_email field should contain the email of a real user (you cannot use a Service Account here) with enough access to display the alerts in the Google WorkSpace Admin Console >> Alert Center (https://admin.google.com/ac/ac).
Info
All defined service entities will be executed by the collector. If you do not want to run any of them, just remove the entity from the services object.
Download the Docker image
The collector should be deployed as a Docker container. Download the Docker image of the collector as a .tgz file by clicking the link in the following table:
Once the Docker image is imported, it will show the real name of the Docker image (including version info). Replace <image_file> and <version> with a proper value.
The Docker image can be deployed on the following services:
Docker
Execute the following command on the root directory <any_directory>/devo-collectors/<product_name>/
Replace <product_name>, <image_name> and <version> with the proper values.
Docker Compose
The following Docker Compose file can be used to execute the Docker container. It must be created in the <any_directory>/devo-collectors/<product_name>/ directory.
In the left menu select Security → Access and data control → API controls.
Click Manage domain wide delegation in the Domain wide delegation section.
Click on Add new. A pop-up window will open to enter the details.
In Client ID field enter the previously copied Service Account Unique ID.
In OAuth scopes field add the following: https://www.googleapis.com/auth/apps.alerts.
Finally click on Authorize.
Info
You can copy the email used to login to https://accounts.google.com/ to later use it as delegated_email in the collector configuration.
Note
Note for later: delegated_email field should contain the email of an real user (you cannot use a Service Account here) with enough access to display the alerts in the Google WorkSpace Admin Console → Alert Center (https://admin.google.com/ac/ac).
Minimum configuration required for basic pulling
Although this collector supports advanced configuration, the fields required to retrieve data with basic configuration are defined below.
Info
This minimum configuration refers exclusively to those specific parameters of this integration. There are more required parameters related to the generic behavior of the collector.
Setting
Details
filename_value
This parameter is the name that you want to give to the token generated by the Collector. For example: token.pickle
content_base64
This parameter is the credentials in base64 format. To know how to obtain this value review the section How to enable the collection in the vendor.
delegated_email
This parameter is the email of the user whose domain is delegated to authorize the Service Account to access the alerts. To know how to obtain this value review the section How to enable the collection in the vendor.
Note
Note for later: delegated_email field should contain the email of an real user (you cannot use a Service Account here) with enough access to display the alerts in the Google WorkSpace Admin Console >> Alert Center (https://admin.google.com/ac/ac).
source_id_value
This parameter will be used when {source_id} placeholder is present when using custom tags. Please use "abc" value when not used.
Info
See the Accepted authentication methodssection to verify what settings are required based on the desired authentication method.
Accepted authentication methods
Depending on how did you obtain your credentials, you will have to either fill or delete the following properties on the JSON credentials configuration block.
Authentication Method
Filename
Base64 credentials
Delegated email
Service Account with Base64
Status
colour
Green
title
REQUIRED
Status
colour
Green
title
REQUIRED
Status
colour
Green
title
REQUIRED
Run the collector
Once the data source is configured, you can either send us the required information if you want us to host and manage the collector for you (Cloud collector), or deploy and host the collector in your own machine using a Docker image (On-premise collector).
Rw ui tabs macro
Rw tab
title
Cloud collector
We use a piece of software called Collector Server to host and manage all our available collectors. If you want us to host this collector for you, get in touch with us and we will guide you through the configuration.
Rw tab
title
On-premise collector
This data collector can be run in any machine that has the Docker service available because it should be executed as a docker container. The following sections explain how to prepare all the required setup for having the data collector running.
Structure
The following directory structure should be created for being used when running the collector:
In Devo, go to Administration → Credentials → X.509 Certificates, download the Certificate, Private key and Chain CA and save them in <product_name>/certs/. Learn more about security credentials in Devo here.
All defined service entities will be executed by the collector. If you do not want to run any of them, just remove the entity from the services object.
Replace the placeholders with your required values following the description table below:
Parameter
Data Type
Type
Value Range
Details
debug_status
bool
Mandatory
false / true
If the value is true, the debug logging traces will be enabled when running the collector. If the value is false, only the info, warning and error logging levels will be printed.
collector_id
int
Mandatory
Minimum length: 1 Maximum length: 5
Use this param to give an unique id to this collector.
collector_name
str
Mandatory
Minimum length: 1 Maximum length: 10
Use this param to give a valid name to this collector.
devo_address
str
Mandatory
collector-us.devo.io collector-eu.devo.io
Use this param to identify the Devo Cloud where the events will be sent.
chain_filename
str
Mandatory
Minimum length: 4 Maximum length: 20
Use this param to identify the chain.cert file downloaded from your Devo domain. Usually this file's name is: chain.crt
cert_filename
str
Mandatory
Minimum length: 4 Maximum length: 20
Use this param to identify the file.cert downloaded from your Devo domain.
key_filename
str
Mandatory
Minimum length: 4 Maximum length: 20
Use this param to identify the file.key downloaded from your Devo domain.
input_id
int
Mandatory
Minimum length: 1 Maximum length: 5
Use this param to give an unique id to this input service.
Note
This parameter is used to build the persistence address, do not use the same value for multiple collectors. It could cause a collision.
input_status
bool
Mandatory
false / true
Use this param to enable or disable the given input logic when running the collector. If the value is true, the input will be run. If the value is false, it will be ignored.
requests_per_second_value
int
Optional
Minimum value: 1
Customize the maximum number of API requests per second. If not used, the default setting will be used: 100000 requests/sec.
Info
This parameter should be removed if it is not used.
environment_value
str
Optional
Minimum length: 1
This parameter is used to create the Devo tag. It corresponds to the sixth level of the tag: cloud.gsuite.alerts.<alert_type>.<format_version>.<environment>. If this parameter is removed, the sixth level of the tag will have the value unknown.
Info
This parameter should be removed if it is not used.
filename_value
str
Mandatory
Minimum length: 1
This parameter is the name that you want to give to the token generated by the Collector. For example: token.pickle
content_base64_value
str
Mandatory
Minimum length: 1
This parameter is the credentials in base64 format. To know how to obtain this value review the section How to enable the collection in the vendor.
delegated_email_value
str
Mandatory
Minimum length: 1
This parameter is the email of the user whose domain is delegated to authorize the Service Account to access the alerts. To know how to obtain this value review the section How to enable the collection in the vendor.
Note
Note for later: delegated_email field should contain the email of an real user (you cannot use a Service Account here) with enough access to display the alerts in the Google WorkSpace Admin Console >> Alert Center (https://admin.google.com/ac/ac).
source_id
str
Mandatory
Minimum value: 1
This parameter will be used when {source_id} placeholder is present when using custom tags. Please use abc value when not used.
collector_service_name
str
Mandatory
Any collector service names described in the Data sources section.
This parameter can be set to any collector service name described in the Data sources section. It is also important to note that there may be more than one service.
Period in seconds used between each data pulling, this value will overwrite the default value (60 seconds)
Info
This parameter should be removed if it is not used.
start_time_override_value
str
Optional
UTC with format: YYYY-mm-ddTHH:MM:SS.sssZ
This configuration allows you to set a custom date as the beginning of the period to download. This allows downloading historical data (1 month back for example) before downloading new events.
Info
This parameter should be removed if it is not used.
custom_tag
str
Optional
A Devo tag. See for more information see Devo tags.
This parameter is used to override the default tag with a new customer defined tag.
Info
This parameter should be removed if it is not used.
Download the Docker image
The collector should be deployed as a Docker container. Download the Docker image of the collector as a .tgz file by clicking the link in the following table:
Once the Docker image is imported, it will show the real name of the Docker image (including version info). Replace <image_file> and <version> with a proper value.
The Docker image can be deployed on the following services:
Docker
Execute the following command on the root directory <any_directory>/devo-collectors/<product_name>/
Replace <product_name>, <image_name> and <version> with the proper values.
Docker Compose
The following Docker Compose file can be used to execute the Docker container. It must be created in the <any_directory>/devo-collectors/<product_name>/ directory.
To run the container using docker-compose, execute the following command from the <any_directory>/devo-collectors/<product_name>/ directory:
Code Block
IMAGE_VERSION=<version> docker-compose up -d
Note
Replace <product_name>, <image_name> and <version> with the proper values.
Collector services detail
This section is intended to explain how to proceed with specific actions for services.
Events service
Expand
title
Verify data collection
Once the collector has been launched, it is important to check if the ingestion is performed in a proper way. To do so, go to the collector’s logs console.
This service has the following components:
Component
Description
Setup
The setup module is in charge of authenticating the service and managing the token expiration when needed.
Puller
The setup module is in charge of pulling the data in a organized way and delivering the events via SDK.
Setup output
A successful run has the following output messages for the setup module:
Code Block
INFO InputProcess::GSuiteAlertsPullerSetup(gsuite_collector,gsuite_alerts#1234,activity_rule#predefined) -> Path for credentials file has been transformed to absolute: "token.pickle" -> "/../devo-collector-gsuite-google-workspace-alerts/credentials/token.pickle"
INFO InputProcess::GSuiteAlertsPullerSetup(gsuite_collector,gsuite_alerts#1234,activity_rule#predefined) -> File "/../devo-collector-gsuite-google-workspace-alerts/credentials/token.pickle" has been created from base64 content
INFO InputProcess::GSuiteAlertsPuller(gsuite_alerts,1234,activity_rule,predefined) -> PrePull method started
Puller output
A successful initial run has the following output messages for the puller module:
Info
Note that the PrePull action is executed only one time before the first run of the Pull action.
Code Block
INFO InputProcess::GSuiteAlertsPuller(gsuite_alerts,1234,activity_rule,predefined) -> PrePull method started
INFO InputProcess::GSuiteAlertsPuller(gsuite_alerts,1234,activity_rule,predefined) -> Retrieving persisted data
INFO InputProcess::GSuiteAlertsPuller(gsuite_alerts,1234,activity_rule,predefined) -> No persisted data found. The content will be initialized.
INFO InputProcess::GSuiteAlertsPuller(gsuite_alerts,1234,activity_rule,predefined) -> The <initial_start_time> did not change, so the persistence will not be reset
WARNING InputProcess::GSuiteAlertsPuller(gsuite_alerts,1234,activity_rule,predefined) -> The persistence changed and it will be updated. Current -> None | New -> {'initial_start_time': '2022-05-26T00:00:00.000Z', 'last_alert_timestamp': '2022-05-26T00:00:00.000Z', 'last_alert_ids': []}
INFO InputProcess::GSuiteAlertsPuller(gsuite_alerts,1234,activity_rule,predefined) -> PrePull method completed
INFO InputProcess::GSuiteAlertsPuller(gsuite_alerts,1234,activity_rule,predefined) -> Starting data collection every 60 seconds
INFO InputProcess::GSuiteAlertsPuller(gsuite_alerts,1234,activity_rule,predefined) -> Unpacking messages to start the delivery
INFO InputProcess::GSuiteAlertsPuller(gsuite_alerts,1234,activity_rule,predefined) -> Made 1 request(s), received 24 message(s), filtered 0 message(s), delivered 24 message(s), tag used: "cloud.gsuite.alerts.activity_rule.1.unknown". avg_time_per_source_message: 61.463 ms
INFO InputProcess::GSuiteAlertsPuller(gsuite_alerts,1234,activity_rule,predefined) -> Data collection completed. Elapsed time: 1.480 seconds. Waiting for 58.520 second(s) until the next one
After a successful collector’s execution (that is, no error logs found), you will see the following log message:
Code Block
INFO InputProcess::GSuiteAlertsPuller(gsuite_alerts,1234,activity_rule,predefined) -> Made 1 request(s), received 24 message(s), filtered 0 message(s), delivered 24 message(s), tag used: "cloud.gsuite.alerts.activity_rule.1.unknown". avg_time_per_source_message: 61.463 ms
Info
The value @devo_pulling_id is injected in each event to group all events ingested by the same pull action. You can use it to get the exact events downloaded in that Pull action in Devo’s search window.
Expand
title
Restart the persistence
This collector uses persistent storage to download events in an orderly fashion and avoid duplicates. In case you want to re-ingest historical data or recreate the persistence, you can restart the persistence of this collector by following these steps:
Edit the configuration file.
Change the value of the start_time parameter to a different one.
Save the changes.
Restart the collector.
The collector will detect this change and will restart the persistence using the parameters of the configuration file or the default configuration in case it has not been provided.
Note
Note that this action clears the persistence and cannot be recovered in any way. Resetting persistence could result in duplicate or lost events.
Expand
title
Troubleshooting
This collector has different security layers that detect both an invalid configuration and abnormal operation. This table will help you detect and resolve the most common errors.
This error is raised when unknown error occurs while loading token.pickle
Check that the token.pickle is in the correct format and if not, regenerate it again.
GSuiteAlertsPullerCredentialsException
0
HTTP error: <error_message>
This error is raised when an HTTP error appears during setup.
The solution depends on the type of error.. Contact with Devo Support team.
2
File <filename> does not exist. Please, learn how to generate a token pickle on: https://docs.devo.com/confluence/ndt/latest/sending-data-to-devo/collectors/g-suite-collectors/g-suite-alerts-collector
This error is raised when token.pickle does not exist.
Regenerate the token.json and save it in the file devo-collector-gsuite-google-workspace-alerts/credentials/.
To know how the token is regenerated, consult the section How to enable the collection in the vendor.
1
Unable to refresh token or client Auth was deleted. Detail: <error_message>
This error is raised when the token cannot be refreshed. The reason may be that it has been deleted.
Regenerate the token.json and save it in the file devo-collector-gsuite-google-workspace-alerts/credentials/.
To know how the token is regenerated, consult the section How to enable the collection in the vendor.
InputConfigurationError
70
<input_config_environment_key_path> property must be a string
This error is raised when optional value environment is not in the str format.
Edit the value of environment in the configuration file so it is of valid str format.
71
<input_config_environment_key_path> property must fulfil the regex pattern r'^[A-Za-z0-9_-]{1,32}$'
This error is raised when optional value environment does not match the required regex.
Make the value of environment in the configuration file match the indicated format.
GSuiteAlertsPullerConnectionLostException
0
Operation timed out: <error_message>
This error is raised when the maximum time to wait for the connection has been exceeded.
Check that the connection is working properly.
1
HTTP/1.1 503 Service Unavailable at moment - Retrying reconnection: <error_message>
This error is raised when the service is not available.
This is an internal issue. Contact the support team.
2
DefaultCredentials: <error_message>
This error is raised when credentials cannot be automatically determined.
This is an internal issue. Contact the support team.
0
Operation timed out
This error is raised when the maximum time to wait for the connection has been exceeded.
Check that the connection is working properly.
1
HTTP/1.1 503 Service Unavailable at moment - Retrying reconnection.
This error is raised when the service is not available.
This is an internal issue. Contact the support team.
3
<error_message>
This error is raised when credentials cannot be automatically determined.
This is an internal issue. Contact the support team.
GSuiteAlertsPullerCreationException
1
<module_properties_key_path> mandatory property is missing or empty'
This error is raised when module_properties property is not found in collector_definitions.yaml
This is an internal issue. Contact the support team.
2
<module_properties_key_path> property must be a dictionary
This error is raised when module_properties is defined in the collector_definitions.yaml file but the format is not dict.
This is an internal issue. Contact the support team.
3
<module_properties_key_path>.alert_type mandatory property is missing or empty
This error is raised when alert_type property is not found in collector_definitions.yaml
This is an internal issue. Contact the support team.
4
<module_properties_key_path>.alert_type property must be a string
This error is raised when alert_type is defined in the collector_definitions.yaml file but the format is not str.
This is an internal issue. Contact the support team.
5
<module_properties_key_path>.tag_base mandatory property is missing or empty
This error is raised when tag_base property is not found in collector_definitions.yaml
This is an internal issue. Contact the support team.
6
<module_properties_key_path>.tag_base property must be a string
This error is raised when tag_base is defined in the collector_definitions.yaml file but the format is not str.
This is an internal issue. Contact the support team.
7
<module_properties_key_path>.credentials_scopes" mandatory property is missing or empty
This error is raised when credentials_scopes property is not found in collector_definitions.yaml
This is an internal issue. Contact the support team.
8
<module_properties_key_path>.credentials_scopes" property must be a string
This error is raised when credentials_scopes is defined in the collector_definitions.yaml file but the format is not str.
This is an internal issue. Contact the support team.
9
<input_config_key_path> property must be a dictionary
This error is raised when the required property input_config_key_path is not found in the config file.
Add input_config_key_path to config file, for example: gsuit_alerts:
10
<input_config_credentials_key_path> mandatory property is missing or empty
This error is raised when the required property credentials is not found in the config file.
Add credentials dictionary in config.
11
<input_config_credentials_key_path> property must be a dictionary
This error is raised when credentials is defined in the configfile but the format is not dict.
Edit the value of credentials in config file, so it is of valid dict format.
12
<input_config_credentials_key_path>.filename mandatory property is missing or empty
This error is raised when the required property filename is not found in the config file, into credentials dictionary.
Add filename property in config file, into credentials dictionary.
13
<input_config_credentials_key_path>.filename property must be a string
This error is raised when filename is defined in the configfile but the format is not str.
Edit the value of filename in config file, so it is of valid str format.
14
<input_config_credentials_key_path>.content_base64" property must be a string
This error is raised when content_base64 is defined in the configfile but the format is not str.
Edit the value of content_base64 in config file, so it is of valid str format.
15
<input_config_credentials_key_path>.content_base64" must be in a valid base64 format
This error is raised when content_base64 is defined in the configfile but the format is not base64 string.
Edit the value of content_base64 in config file, so it is of valid base64 string format.
16
<input_config_credentials_key_path>.delegated_email mandatory property is missing or empty
This error is raised when the required property delegated_email is not found in the config file, into credentials dictionary.
Add delegated_email property in config file, into credentials dictionary.
17
<input_config_credentials_key_path>.delegated_email property must be a string
This error is raised when delegated_email is defined in the configfile but the format is not str.
Edit the value of delegated_email in config file, so it is of valid str format.
18
<input_config_credentials_key_path>.source_id mandatory property is missing or empty
This error is raised when the required property source_id is not found in the config file, into credentials dictionary.
Add source_id property in config file, into credentials dictionary.
19
<input_config_credentials_key_path}.source_id> property must be a string'
This error is raised when source_id is defined in the configfile but the format is not str.
Edit the value of source_id in config file, so it is of valid str format.
20
\"start_time\" property from configuration file format is invalid
This error is raised when start_time is defined in the configfile but the format is not "%Y-%m-%dT%H:%M:%S.%fZ" or "%Y-%m-%dT%H:%M:%SZ".
Edit the value of start_time in config file, so it is of valid "%Y-%m-%dT%H:%M:%S.%fZ" or "%Y-%m-%dT%H:%M:%SZ" format.
PrePullError
200
The <state> does not meet the structure requirements of this collector version. ' f'The keys <last_alert_timestamp> and <last_alerts_id> are mandatory. State = <state>
This error is raised when the collector is upgraded or downgraded to an incompatible version.
Go back to a compatible version.
Remove persistence by modifying the start_time property.
PullError
300
Puller action cannot be executed when PrePull step failed
This error is raised when the prepull fails for whatever reason.
Check the logs to find the PrePull error.
301
Could not automatically determine credentials. Cause:<exception_message>. Aborting...
This error is raised when credentials cannot be automatically determined.
This is an internal issue. Contact the support team.
302
The <next_timestamp> value cannot be calculated, please check the related error logs.
This error is raised when next_timestampt cannot be calculated for the next request.
Check the logs to find the related errors.
Collector operations
This section is intended to explain how to proceed with specific operations of this collector.
Expand
title
Verify collector operations
Initialization
The initialization module is in charge of setup and running the input (pulling logic) and output (delivering logic) services and validating the given configuration.
A successful run has the following output messages for the initializer module:
Code Block
INFO MainProcess::MainThread -> [OUTPUT] OutputMultiprocessingController::__init__ Configuration -> {'devo_1': {'type': 'devo_platform', 'config': {'address': ..
INFO MainProcess::MainThread -> OutputProcess - Starting thread (executing_period=300s)
INFO MainProcess::MainThread -> InputProcess - Starting thread (executing_period=300s)
INFO OutputProcess::MainThread -> Process started
INFO InputProcess::MainThread -> Process Started
INFO OutputProcess::MainThread -> [INTERNAL LOGIC] DevoSender::_validate_kwargs_for_method__init__ -> The <address> does not appear to be an IP address and cannot be verified: collector-eu.devo.io
INFO OutputProcess::MainThread -> [INTERNAL LOGIC] DevoSender::_validate_kwargs_for_method__init__ -> The <address> does not appear to be an IP address and cannot be verified: collector-eu.devo.io
INFO InputProcess::MainThread -> InputThread(gsuite_alerts,1234) - Starting thread (execution_period=600s)
INFO InputProcess::MainThread -> ServiceThread(gsuite_alerts,1234,activity_rule,predefined) - Starting thread (execution_period=600s)
INFO InputProcess::MainThread -> GSuiteAlertsPullerSetup(gsuite_collector,gsuite_alerts#1234,activity_rule#predefined) -> Starting thread
INFO InputProcess::MainThread -> GSuiteAlertsPuller(gsuite_alerts,1234,activity_rule,predefined) - Starting thread
INFO InputProcess::GSuiteAlertsPullerSetup(gsuite_collector,gsuite_alerts#1234,activity_rule#predefined) -> Path for credentials file has been transformed to absolute: "token.pickle" -> "/../devo-collector-gsuite-google-workspace-alerts/credentials/token.pickle"
WARNING InputProcess::GSuiteAlertsPuller(gsuite_alerts,1234,activity_rule,predefined) -> Waiting until setup will be executed
INFO OutputProcess::MainThread -> [INTERNAL LOGIC] DevoSender::_validate_kwargs_for_method__init__ -> The <address> does not appear to be an IP address and cannot be verified: collector-eu.devo.io
INFO OutputProcess::MainThread -> DevoSender(standard_senders,devo_sender_0) -> Starting thread
INFO OutputProcess::MainThread -> DevoSenderManagerMonitor(standard_senders,devo_1) -> Starting thread (every 300 seconds)
INFO OutputProcess::MainThread -> DevoSenderManager(standard_senders,manager,devo_1) -> Starting thread
INFO OutputProcess::MainThread -> DevoSender(lookup_senders,devo_sender_0) -> Starting thread
INFO OutputProcess::MainThread -> DevoSenderManagerMonitor(lookup_senders,devo_1) -> Starting thread (every 300 seconds)
INFO OutputProcess::MainThread -> DevoSenderManager(lookup_senders,manager,devo_1) -> Starting thread
INFO OutputProcess::MainThread -> DevoSender(internal_senders,devo_sender_0) -> Starting thread
INFO OutputProcess::MainThread -> DevoSenderManagerMonitor(internal_senders,devo_1) -> Starting thread (every 300 seconds)
INFO OutputProcess::MainThread -> DevoSenderManager(internal_senders,manager,devo_1) -> Starting thread
INFO InputProcess::MainThread -> [GC] global: 20.4% -> 20.4%, process: RSS(42.63MiB -> 42.69MiB), VMS(439.63MiB -> 503.63MiB)
INFO InputProcess::GSuiteAlertsPullerSetup(gsuite_collector,gsuite_alerts#1234,activity_rule#predefined) -> File "/../devo-collector-gsuite-google-workspace-alerts/credentials/token.pickle" has been created from base64 content
INFO OutputProcess::MainThread -> [GC] global: 20.4% -> 20.4%, process: RSS(42.19MiB -> 44.24MiB), VMS(935.90MiB -> 935.90MiB)
INFO OutputProcess::DevoSender(internal_senders,devo_sender_0) -> Created a sender: {..
INFO OutputProcess::DevoSender(standard_senders,devo_sender_0) -> Created a sender: {..
Events delivery and Devo ingestion
The event delivery module is in charge of receiving the events from the internal queues where all events are injected by the pullers and delivering them using the selected compatible delivery method.
A successful run has the following output messages for the initializer module:
Code Block
INFO OutputProcess::SyslogSenderManagerMonitor(standard_senders,sidecar_0) -> Number of available senders: 1, sender manager internal queue size: 0
INFO OutputProcess::SyslogSenderManagerMonitor(standard_senders,sidecar_0) -> enqueued_elapsed_times_in_seconds_stats: {}
INFO OutputProcess::SyslogSenderManagerMonitor(standard_senders,sidecar_0) -> Sender: SyslogSender(standard_senders,syslog_sender_0), status: {"internal_queue_size": 0, "is_connection_open": True}
INFO OutputProcess::SyslogSenderManagerMonitor(standard_senders,sidecar_0) -> Standard - Total number of messages sent: 44, messages sent since "2022-06-28 10:39:22.511671+00:00": 44 (elapsed 0.007 seconds)
INFO OutputProcess::SyslogSenderManagerMonitor(internal_senders,sidecar_0) -> Number of available senders: 1, sender manager internal queue size: 0
INFO OutputProcess::SyslogSenderManagerMonitor(internal_senders,sidecar_0) -> enqueued_elapsed_times_in_seconds_stats: {}
INFO OutputProcess::SyslogSenderManagerMonitor(internal_senders,sidecar_0) -> Sender: SyslogSender(internal_senders,syslog_sender_0), status: {"internal_queue_size": 0, "is_connection_open": True}
INFO OutputProcess::SyslogSenderManagerMonitor(internal_senders,sidecar_0) -> Internal - Total number of messages sent: 1, messages sent since "2022-06-28 10:39:22.516313+00:00": 1 (elapsed 0.019 seconds)
Info
By default, these information traces will be displayed every 10 minutes.
Sender services
The Integrations Factory Collector SDK has 3 different senders services depending on the event type to delivery (internal, standard, and lookup). This collector uses the following Sender Services:
Sender services
Description
internal_senders
In charge of delivering internal metrics to Devo such as logging traces or metrics.
standard_senders
In charge of delivering pulled events to Devo.
Sender statistics
Each service displays its own performance statistics that allow checking how many events have been delivered to Devo by type:
Logging trace
Description
Number of available senders: 1
Displays the number of concurrent senders available for the given Sender Service.
sender manager internal queue size: 0
Displays the items available in the internal sender queue.
Info
This value helps detect bottlenecks and needs to increase the performance of data delivery to Devo. This last can be made by increasing the concurrent senders.
Total number of messages sent: 44, messages sent since "2022-06-28 10:39:22.511671+00:00": 21 (elapsed 0.007 seconds)
Displayes the number of events from the last time and following the given example, the following conclusions can be obtained:
44 events were sent to Devo since the collector started.
The last checkpoint timestamp was 2022-06-28 10:39:22.511671+00:00.
21 events where sent to Devo between the last UTC checkpoint and now.
Those 21 events required 0.007 seconds to be delivered.
Info
By default these traces will be shown every 10 minutes.
Expand
title
Check memory usage
To check the memory usage of this collector, look for the following log records in the collector which are displayed every 5 minutes by default, always after running the memory-free process.
The used memory is displayed by running processes and the sum of both values will give the total used memory for the collector.
The global pressure of the available memory is displayed in the global value.
All metrics (Global, RSS, VMS) include the value before freeing and after previous -> after freeing memory
RSS is the Resident Set Size, which is the actual physical memory the process is using
VMS is the Virtual Memory Size which is the virtual memory that process is using
Expand
title
Enable/disable the logging debug mode
Sometimes it is necessary to activate the debug mode of the collector's logging. This debug mode increases the verbosity of the log and allows you to print execution traces that are very helpful in resolving incidents or detecting bottlenecks in heavy download processes.
To enable this option you just need to edit the configuration file and change the debug_status parameter from false to true and restart the collector.
To disable this option, you just need to update the configuration file and change the debug_status parameter from true to false and restart the collector.
For more information, visit the configuration and parameterization section corresponding to the chosen deployment mode.
Change log for v1.x.x
Release
Released on
Release type
Details
Recommendations
v1.2.0
Status
colour
Purple
title
NEW FEATURE
Status
colour
Green
title
IMPROVEMENT
New features:
We added to the Alerts puller the feature to restart the persistence when the config start_time is updated at service level.
Improvements:
The performance has been improved after switching the internal delivery method. The events are delivered in batches instead of one by one.
Update
v1.3.0
Status
colour
Purple
title
NEW FEATURE
New features:
Added new alert types:
Data Loss Prevention
Apps outage
Primary admin changed
SSO profile added
SSO profile updated
SSO profile deleted
Super admin password reset
Update
v1.4.1
Status
colour
Green
title
IMPROVEMENT
Improvements:
Upgraded underlay Devo Collector SDK from v1.1.4 to v1.4.1.
The resilience has been improved with a new feature that restart the collector when the Devo connections is lost and it cannot be recovered.
When an exception is raised by the Collector Setup, the collector retries after 5 seconds. For consecutive exceptions, the waiting time is multiplied by 5 until hits 1800 seconds, which is the maximum waiting time allowed. No maximum retries are applied.
When an exception is raised by the Collector Pull method, the collector retries after 5 seconds. For consecutive exceptions, the waiting time is multiplied by 5 until hits 1800 seconds, which is the maximum waiting time allowed. No maximum retries are applied.
When an exception is raised by the Collector pre-pull method, the collector retries after 30 seconds. No maximum retries are applied.
Updated the underlying DevoSDK package to v3.6.4 and dependencies, this upgrade increases the resilience of the collector when the connection with Devo or the Syslog server is lost. The collector is able to reconnect in some scenarios without running the self-kill feature.
Support for stopping the collector when a GRACEFULL_SHUTDOWN system signal is received.
Re-enabled the logging to devo.collector.out for Input threads.
Improved self-kill functionality behavior.
Added more details in log traces.
Added log traces for knowing system memory usage.
Update
v1.4.2
Status
colour
Red
title
BUG FIX
Bugs fixes:
Fixed a bug that prevented Syslog output from being enabled.
Update
v1.5.0
Status
colour
Green
title
IMPROVEMENT
Improvements:
The Google Workspace Collector has been divided into two: Google Workspace Alerts and Google Workspace Reports to improve the user experience.
Added base64 validation: Validates whether the credentials token is in the correct base64 format.
Recommended version
Configuration checklist
Here you will find a brief checklist of the important configurations that need to be done for deploying this collector:
Configuration
Requirements
GPC console
You have the right credentials to access the GCP console.
Perimissions
You have administrator permissions in the GCP console.