
Show HN: Errorship, use datadog as an error tracker - RabbitmqGuy
https://errorship.com/
======
kcmastrpc
Why not use distributed tracing? You get the context of entire request in
addition to the exception.

~~~
inetknght
Do you have examples of how that might work with other languages or tools?

------
MastrChefRocks
How does this compare to Datadog's APM[0]? APM looks like it has far more
features and is already integrated with Datadog.

[0] [https://www.datadoghq.com/apm/](https://www.datadoghq.com/apm/)

~~~
sa46
This looks like an admittedly clever hack to avoid the fantastically expensive
APM and still get some useful exception logging. I really wanted to use
Datadog’s APM but $31 per host was too much. The downsides to logging to the
event stream like Errorship is that you can’t associate exceptions with
requests and aggregation is limited to tags. I think event tags have a low-ish
cardinality limit similar to metrics.

------
karmakaze
For Java I'd written a Logback exception sender[0] that creates metrics tagged
by level, class, exception class, cause classes. I'll say that it is a quick
and convenient way to see changes in system error characteristics. I had used
a similar setup for Graphite but didn't work as well without tags.

Since DataDog charges by number of metrics and each tag combination counts as
one, actual exception messages should only be included in tags if they don't
have instance-varying text.

[0] [https://github.com/karmakaze/logback-metrics-
datadog](https://github.com/karmakaze/logback-metrics-datadog)

------
RabbitmqGuy
Hey HN!

errorShip is a python library that sends exceptions/errors generated by your
application to your datadog account.

Are you tired of looking at metrics in datadog and then switching over to
another website to track your applications exceptions? errorship exists to
solve that context-switching problem, among others. It's a bit like sentry,
bugsnag, rollbar etc; except implemented in your own datadog account.

I'm happy to receive any feedback or just chat about it.

~~~
tyingq
Can you add a little more color commentary? I haven't used datadog, but they
seem clear that there's both a logging and metrics (apm) side to their
product. Is the logging side neglected somehow?

I see, for example, docs on how to log from Python:
[https://www.datadoghq.com/blog/python-logging-best-
practices...](https://www.datadoghq.com/blog/python-logging-best-practices/)

~~~
RabbitmqGuy
Hi.

> but they seem clear that there's both a logging and metrics (apm) side to
> their product.

yes they have those two sides. what they do not have is an error tracking
side; something like sentry[1]. errorship exists to bring the error tracking
side into datadog.

The logging side of datadog is like splunk or elasticsearch, and their APM
side is like newrelic. errorship is bringing the error tracking side.

some of the analogies may not apply 100%, but I hope I'm making sense.

1\. [https://sentry.io/](https://sentry.io/)

~~~
tyingq
That's helpful. Basically zero-config central logging of
exceptions/stderr/whatever?

~~~
RabbitmqGuy
Yeah.

But also, errorship will still capture(and send to datadog) any exceptions
that you may have forgot to capture or log.

------
jere
Incredibly dumb question, but doesn't datadog monitor errors out of the box?

~~~
sputnikus
IMO only if you are using the Logs functionality. You can log
exceptions/errors, and it should be pretty easy to set-up monitoring around
these events.

~~~
stingraycharles
As a Datadog customer, I still use Sentry next to it, mostly for the top notch
exception grouping, reporting etc. It’s just their core product, they’re
better at it when you need to zoom in and actually debug.

For the bird’s eye view, Datadog is fine.

------
sa46
I’m going to make the classic engineer mistake and assume that it’s almost as
easy to implement this myself. My understanding is that errorship does
something like:

\- register a global exception handler, probably tweaked to hook into
framework specific exception mechanisms.

\- make the exceptions “pretty”

\- send the exceptions to the datadog event log.

The benefits of rolling my own is avoiding a soft dependency on errorship and
that I can tweak exception aggregation and reporting. Is the primary defense
that errorship only costs $10 per month or is there additional complexity I’ve
missed?

~~~
RabbitmqGuy
Hi. That's a good summary of what errorship does. The pricing [1] page has an
faq that touches on the build vs buy question

1\. [https://errorship.com/pricing.html](https://errorship.com/pricing.html)

------
oefrha
Can you resolve exceptions like in Sentry? Having to look at the list of all
exceptions and figure out which ones are of interest wouldn’t be ideal. (In
the demo I did notice the level/priorities filters, but nothing resembling an
unresolved filter.)

Also, nitpick: it’s 2020, maybe update the front page screenshot to Python 3?
My immediate reaction seeing that py27 screenshot: is this even maintained?

~~~
RabbitmqGuy
> Having to look at the list of all exceptions and figure out which ones are
> of interest wouldn’t be ideal.

You can filter for exceptions by tags. You can also use full text search to
filter for exceptions. ie all the functionality provided[1] by the datadog
eventstream[1] is available for your errors.

> Also, nitpick: it’s 2020, maybe update the front page screenshot to Python
> 3: is this even maintained?

errorship is compatible with both python2 and python3. Yes it is maintained.
We have a testsuite that is ran in CI under both python2 and python3. Some of
our customers during early trials still had some python2 applications that
they had yet to port over.

1\. [https://docs.datadoghq.com/events/#event-
stream](https://docs.datadoghq.com/events/#event-stream)

------
reinkaos
Doesn't sending the exception as tags increase metrics cardinality slowing
down other queries?

------
ohnoesjmr
Benefits over sentry?

~~~
RabbitmqGuy
The main benefit is that you do not have to context switch from datadog
metrics/logs to go look at your exceptions in sentry.

With errorship, all these are made available in one place; in your datadog
account.

You also do not need to maintain two services. If you are already using
datadog(maybe their APM and their logging and metrics service) then you might
as well use them for error tracking instead of maintaining an additional
account with sentry.

However, it is not a must that you give up sentry to use errorship. errorship
will work just as fine, if you choose to continue with sentry.

~~~
exhaze
> The main benefit is that you do not have to context switch from datadog
> metrics/logs to go look at your exceptions in sentry.

Sentry lets you send exceptions to Datadog though?

------
AtroxDev
The library calls back home to validate the key (URL:
[https://errorship.com/api/?errorshipLicensekey={errorship_li...](https://errorship.com/api/?errorshipLicensekey={errorship_license_key})).
If it fails it raises an Exception. I don't think that this is the correct way
to do this.

If your server is down, my application would crash too. Just cut the license
validation out of the library. If I wanted to use the library without an
license I could do so anyway.

edit: as noted by the author below, this is not the case :). If the server is
not available, it won't raise an exception. I did miss that part somehow.

~~~
RabbitmqGuy
Hi.

> If your server is down, my application would crash too.

The errorship library is written in such a way that it fails open. If our
servers are down(or any other failure), it does not affect your application
and your application continues to work okay.

~~~
AtroxDev
Hey, I edited my comment. I did miss the part in http.py somehow :). Thank you
for clarifying.

