kezhenxu94 commented on a change in pull request #6183:
URL: https://github.com/apache/skywalking/pull/6183#discussion_r556374825



##########
File path: docs/en/concepts-and-designs/event.md
##########
@@ -0,0 +1,53 @@
+# Events
+
+SkyWalking already supports the three pillars of observability, namely logs, 
metrics, and traces.
+While in a production system in reality, there are many other events that may 
affect the performance of the system, such as upgrading, rebooting, chaos 
testing, etc.
+Although some of these events can reflect from the logs, there are also many 
other events that can not, hence SkyWalking provides a more native way to 
collect these events.
+This doc covers the design of how the SkyWalking collect events and what 
events look lik in SkyWalking.
+
+## How to Report Events
+
+SkyWalking backend supports three protocols to collect events, gRPC, HTTP, and 
Kafka. Any agent or CLI that implements one of these protocols can report 
events to the SkyWalking.
+Currently, the officially supported clients to report events are:
+
+- [ ] Java Agent Toolkit: Use the Java agent toolkit to report events from 
inside the applications.
+- [ ] SkyWalking CLI: Use the CLI to report events from the command line 
interface.
+- [ ] Kubernetes Event Exporter: Deploy an event exporter to refine and report 
Kubernetes events.
+
+## Event Definition
+
+An event contains the following fields. The definitions of event can be found 
at the [protocol repo](#TODO)
+
+### UUID
+
+Unique ID of the event. Because an event may span a long period of time, the 
UUID is necessary to associate the start time with the end time of the same 
event. 
+
+### Object
+
+The object that the event occurs on. In the concepts of SkyWalking, the object 
is typically service, service instance, etc.
+
+### Name
+
+The name of the event. For example, `Start`, `Stop`, `Crash`, `Reboot`, 
`Upgrade` etc.
+
+### Type
+
+The type of the event. This field is friendly for UI visualization, where 
events of type `Normal` is considered as normal operations,
+while `Error` is considered as unexpected operations, such as `Crash` events, 
therefore we can mark them with different colors to be easier identified.
+
+### Message
+
+The detail of the event that describes why this event happened. This should be 
a one-line message that briefly describes why the event is reported. Examples 
of a `Crash` event may be something like `Run out of memory`.
+It's NOT encouraged to include the detailed logs of this event, such as the 
exception stack trace.

Review comment:
       > I just don't see how you do that with something as simple as `Run out 
of memory`. That's good for a summary but IMO it would be nice to have the 
ability to attribute additional information. I don't mind if it's through some 
JSON field, meta-map, etc.
   
   Having a JSON / meta-map field sounds good to me, but because we don't have 
static typings for that field, users are free to report random text of that 
JSON / meta-map field.
   
   I'm also wondering how will the structured field be used. There are many 
events (some may be unknown for now), whose JSON field properties are 
indeterministic.
   
   If we want to provide a JSON field, we may need to list (recommended) 
properties of the JSON field for some common events, right?




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to