Events push out of the platform for analysis (kafka, BI, API)


I’m working on an app to push events and info logs to a Kafka topic, so these can be easily consumed by multiple BI software, etc for analysis and reporting.

The problem that I’m having right now is architectural, as I don’t know whether to embed the Kafka communication inside the Overwolf TS app or to push the events to a stateful medium and catch them from there (which would add unnecessary latency).

I tried embedding the logic into the app using KafkaJS but it’s such a server-side app that even with browerified libs it fails everywhere as it’s not meant to run in a browser.

In an Overwolf app dev’s expert opinion, what’s the fastest way to extract the events generated by games into another external medium / bus?

Any suggestions? thanks!

Hey @FerMelon,

It depends on when you want to send the info to your servers (in “real-time,” or at the end of the match, for example). I also recommend you discuss this matter with the community in our Discord channels - as many people send some data to their servers, and it will be insightful to hear a couple of opinions about it.


Hi @eransharv, thank you for your answer. I came in here because someone on discord said “hey, you should actually post this on discuss (referring to this forum)” haha, so kind of a recursive problem here.

Is there any section of the documentation that talks about / gives directions on how to access these events apart from “in-flight”/“in-code”? does Overwolf persist these events somewhere, like a log file I can then pickup? (post-mortem, batch-like, like you said).

Real-time I guess I have no option but to push the events somehow, maybe to an API using requestJS or something.


@FerMelon Regarding Discord/Discuss: you can do both… here, we are focused on specific development issues, bugs in the API, and feature requests. In Discord, you can discuss different ways to implement things, etc.

Regarding your question - OW saves some of the logs and some partial logging of the events. But the right way will be to keep the events that interested you in a file or in-memory and send them to an external server using some of the available APIS (web API or other libraries). Regarding when to send it - well, that is a different question that depends on many params. You can do that on X time, on exit, on the fly, etc. If you give me more details, I will maybe direct you more precisely. The most important thing to remember is - that you don’t want to create any performance degradation for the gamer/user - therefore, you need to be efficient as you can.