What do you use for client-side analytics?


#1

If you have a web console do you use standard analytics tools to monitor it? e.g. Mixpanel/ Amplitude/ Woopra/ Heap, etc. I imagine some of the above would not be happy if the web page is not a known domain (e.g you’re browsing at http://mydevice.local) - and pretty much all of those services are not targeted toward this use case. Of course we can send analytics from the device side but … I would rather offload that to the client.

Has anyone gone down this route and have any experience to share? What works and what does not?


#2

I send all my telemetry (soon to include device load and performance statistics) up to an ELK stack, using Filebeat. You can write a device-specific identifier into the json that goes into the log file (Resin device ID is easy enough, or have something you can set via an environment variable).

Kibana is a good option (especially since adding Timelion) for visualizing node health over time.


#3

Hey, I’m just trying to wrap my head around the question, the “web console” is a site/webserver is hosted on the device, and the device is on the local network? Or how does it work?

I have just tried Mixpanel - a simple website with a single Mixpanel event using their example code for in-browser analytics:

It seems to work fine, events show up in the console, and I’m guessing it can just be developed further

This is just a thing I wanted to quickly test based on what you mentioned.

On the other hand, @ashmastaflash sounds like he has more experience on this front :slight_smile: For some other monitoring @craig has done more work, show e.g. in this fleet-wide monitoring blogpost, for reference.


#4

Yup that’s exactly what I’m after - I’ve got a web server running on the device showing a UI on the local network. I can (1) integrate with something where I push from the device to cloud or (2) let the client/browser use a standard web analytics tool such as mixpanel. Thanks so much for the test and also the additional reference links!!


#5

@ashmastaflash: would you mind sharing your setup? I am also interested in forwarding logs to our ELK stack.

I am having a hard time just installing filebeat on our PiComputeModule 3. Getting my hands on armhf binaries is not so easy, and I would rather avoid compiling from source and install the whole go toolchain.

Thanks in advance!

EDIT: I might have figured out how to get Filebeat on our PCM3. Just not sure this is the easiest path. Anyway, here is what I did:

  1. Elastic does not provide Filebeat binaries for ARMv7, so you need to cross-compile Filebeat using the instructions below. I adjusted the version numbers of golang and filebeat to 1.9 and 6.2.2 respectively (golang because errors showed up during compilation with 1.8, and filebeat to match our ELK stack): https://gist.github.com/anis-campos/31864e8d3fe7e323c738a8c7160e64ad
  2. Upload the newly built Filebeat binary to the remote PCM3, for example with http://transfer.sh
  3. On the PCM3, download the official 32-bit Linux archive from https://www.elastic.co/downloads/beats/filebeat, extract it and replace the Filebeat binary with the one you cross-compiled and uploaded.
  4. Install Filebeat using the Mac instructions at https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-installation.html
  5. Configure Filebeat as described in the Using Filebeat section at https://logz.io/blog/docker-logging/
  6. Run Filebeat and confirm your logs show up in Kibana at elk_stack_ip:5601 with a filebeat-* index pattern.