Hi!
I'm having some fun trying to integrate some metrics into our GAE application, so we can build alerting and dashboard around them. Some of these metrics are performance (which will eventually get replaced by the new Google Cloud Monitoring), and some which are business Analytics.
I was looking at
https://github.com/rcrowley/go-metrics for metrics needs - but this will need to remain in memory while the application is running. I'm wondering if that is going to be a problem? (Obviously it could get cut short as a VM goes down)
func (self *Reporter) Run() {
ticker := time.Tick(self.Interval)
for now := range ticker {
// send metrics
}
}
Within a go block so it runs concurrently.
Is this sort of approach even a good idea on GAE? I'm wondering if it's a good idea or not. Instances can come and go any time, and the go runtime is limited to 1 thread.
The other options I'm floating is running a small StatsD server on a Cloud VM instance, and just sending it my data, which can then be sent on wherever I want, but that could potentially be more work, and has to be monitored, etc.
Feedback would be great, I'm not quite sure what the best approach is here.
Thanks!