Data flow
The “end-to-end” data flow is described there (including Notification Writer service part):
- A customer cluster with Insights Operator installed sends new data containing info about the cluster into Ingress service
- The Ingress service consumes the data, writes them into an S3 Bucket, and produces a new message into a Kafka topic named
platform.upload.announce
. - The CCX Data pipeline service consumes the message from the
platform.upload.announce
Kafka topic. - That message represents an event that contains (among other things) an URL to S3 Bucket.
- Insights operator data is read from S3 Bucket and insights rules are applied to that data in
ccx-data-pipeline
service. - Results (basically
organization ID
+cluster name
+insights results JSON
) are stored back into Kafka, but into different topic namedccx.ocp.results
. - That results are consumed by
ccx-notification-writer
service. ccx-notification-writer
service stores insights results into AWS RDS database intonew_reports
table.- Content of that table is consumed by
ccx-notification-service
periodically. - Newest results from
new_reports
table is compared with results stored inreported
table. The records used for the comparison depend on the configured cooldown time. - If changes (new issues) has been found, notification message is sent into Kafka topic named
platform.notifications.ingress
. The expected format of the message can be found here. - New issues is also sent to Service Log via REST API. To use the Service Log API, the
ccx-notification-service
uses the credentials stored in vault. - The newest result is stored into
reported
table to be used in the nextccx-notification-service
iteration.
Remarks
- Steps 1 to 5 are shared with the CCX Data pipeline
- Steps 7 and 8 are performed by
ccx-notification-writer
service. - Steps 9 to 12 are performed by
ccx-notification-service
service.