Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
“Huston, we have an
AirBrake”
Application Error monitoring in PHP

meet.php #11
By @emgiezet
(c) 1995 Universal
$whoami
●

●
●

●

meet.php #11

Tech Lead @
Redexperts.net
With PHP since 2002
Sorry Ladies but I got
Wife.
Speaker @
{me...
Agenda
1. PHP error tracking
2. Airbrake
3. Errbit
4. emgiezet/errbitPHP
5. Case Study

meet.php #11

3
How I can track errors in PHP?
●

Override error handler

●

set_error_handler(
array($this, 'onError'),
error_reporting()...
How do you track the errors?
●

Common Strategies:
–

Read Apache / ngnix / PHP Logs

–

Read application logs (ex. monolo...
Sudden error rate of 50% for your
Application

http://devopsreactions.tumblr.com/post/67741920428/sudden-error-rate-of-50-...
How your customers reports an
error?
●

Link to the page is attached?

●

Time-stamp of the error occurrence to grep the l...
To repeat the error you must..
a) Play email ping-pong.
b) Dig the logs for the next few hours.
c) Daft Punk - Get Lucky?
...
AirBrake.io
●

Trusted by:
–

grupon
Oracle

–

SoundCloud +

–

●

Integrates with:
GitHub, Bitbucket, JIRA,
HipChat, Asa...
AirBrake.io Notifier API
<?xml version="1.0" encoding="UTF-8"?>
<notice version="2.3">
<api-key>76fdb93ab2cf276ec080671a8b...
Whoaaaa cool but give me the price
●

Small $39/Month

●

Enterprise $199/Month

–

–

30 Users

–

10 Projects

–

40 Pro...
Can't afford AirBrake.
No time for negotiations.
It's time for OpenSource solution.

meet.php #11

12
Errbit
●

●

●

●

●

meet.php #11

Compatible API with
Airbrake Notifier API
Written in Ruby srsly
must be cool
Can be ho...
AirBrake vs Errbit
●
●

●

●

●

●

App count limited by plan
(max 40)
Hosted in atomic bomb
proof shelter

Freebie

●

Un...
Results

3:3
Round Draw
OpenSource draw quite nice.
meet.php #11

15
Applications View

meet.php #11

16
Creating new App View

meet.php #11

17
Error View

meet.php #11

18
Backtrace Tab

meet.php #11

19
Environment tab

meet.php #11

20
Session tab

meet.php #11

21
Not enough?
●

Error Comments

●

Issue tracker integration:
–

Deploy hook
–

To clean your error
counter for previous
de...
But how can I integrate Errbit with
my PHP App?
Requires:

●

–
–

●

PHP >= 5.3.2
Without cURL

Integrates with
–
–

Symf...
History of errbit-php
●

Original concept was made
by:
flippa/errbit-php and
dbtlr/php-airbrake

●

90% of code were rewri...
Enough bullshit. Time to code!
●

Symfony2 Integration

●

Plain PHP Integration

1. Add to composer.json

1. Download

2....
$php->code('now');

meet.php #11

26
Feel free to contribute!

meet.php #11

27
Use Cases
●

Tracking errors

●

Support test team

●

meet.php #11

Production live debugging

28
Where to put Errbit during the development?

meet.php #11

29
How the flow looks like?

meet.php #11

30
How the workflow looks like?

meet.php #11

31
Can we make it better?

meet.php #11

32
Advantages of using Errbit
●

You know first that error occurred.

●

You know much more than customer will report you.

●...
Things to remember
“Writing tests is our
professional responsibility”

●

●

~@jakub_zalas

meet.php #11

This is your las...
Q&A?

meet.php #11

35
Thank You!

meet.php #11

36
Upcoming SlideShare
Loading in …5
×

meet.php #11 - Huston, we have an airbrake

20,177 views

Published on

Introducing airbrake.io or opensource errbit in to your company software development process. Word about error handling in php. Some more about integrating an php application with errbit.

The code in live coding show was: https://github.com/emgiezet/symfony2-errbit

Published in: Technology
  • Be the first to comment

meet.php #11 - Huston, we have an airbrake

  1. 1. “Huston, we have an AirBrake” Application Error monitoring in PHP meet.php #11 By @emgiezet (c) 1995 Universal
  2. 2. $whoami ● ● ● ● meet.php #11 Tech Lead @ Redexperts.net With PHP since 2002 Sorry Ladies but I got Wife. Speaker @ {meet.php} since #8 2
  3. 3. Agenda 1. PHP error tracking 2. Airbrake 3. Errbit 4. emgiezet/errbitPHP 5. Case Study meet.php #11 3
  4. 4. How I can track errors in PHP? ● Override error handler ● set_error_handler( array($this, 'onError'), error_reporting() ); Override exception handler set_exception_handler( array($this, 'onException') ); ● Use the shutdown function register_shutdown_function( array($this, 'onShutdown') ); meet.php #11 4
  5. 5. How do you track the errors? ● Common Strategies: – Read Apache / ngnix / PHP Logs – Read application logs (ex. monolog) – Emails with Stack Traces – Wait until customer report some errors. – I'm so PRO that my application never crash on production. xoxo meet.php #11 5
  6. 6. Sudden error rate of 50% for your Application http://devopsreactions.tumblr.com/post/67741920428/sudden-error-rate-of-50-for-your-application meet.php #11 6
  7. 7. How your customers reports an error? ● Link to the page is attached? ● Time-stamp of the error occurrence to grep the log? ● Is there any screen-shot or screen-cast attached? ● Maybe some unicorns are dancing on rainbow? meet.php #11 7
  8. 8. To repeat the error you must.. a) Play email ping-pong. b) Dig the logs for the next few hours. c) Daft Punk - Get Lucky? d) Have a Error tracking application. meet.php #11 8
  9. 9. AirBrake.io ● Trusted by: – grupon Oracle – SoundCloud + – ● Integrates with: GitHub, Bitbucket, JIRA, HipChat, Asana, Pivotal, Flowdock, Campfire, Lighthouse ● Webhooks ● Customer Support meet.php #11 9
  10. 10. AirBrake.io Notifier API <?xml version="1.0" encoding="UTF-8"?> <notice version="2.3"> <api-key>76fdb93ab2cf276ec080671a8b3d3866</api-key> <notifier> <name>Airbrake Notifier</name> <version>3.1.6</version> <url>http://api.airbrake.io</url> </notifier> <error> <class>RuntimeError</class> <message>RuntimeError: I've made a huge mistake</message> <backtrace> <line method="public" file="/testapp/app/models/user.rb" number="53"/> <line method="index" file="/testapp/app/controllers/users_controller.rb" number="14"/> </backtrace> </error> <request> <url>http://example.com</url> <component/> <action/> <cgi-data> <var key="SERVER_NAME">example.org</var> <var key="HTTP_USER_AGENT">Mozilla</var> </cgi-data> </request> <server-environment> <project-root>/testapp</project-root> <environment-name>production</environment-name> <app-version>1.0.0</app-version> </server-environment> </notice> meet.php #11 ● XML Based ● RESTFull 10
  11. 11. Whoaaaa cool but give me the price ● Small $39/Month ● Enterprise $199/Month – – 30 Users – 10 Projects – 40 Projects – ● 5 Users Phone support – Custom setup Medium $89/Month – 20 Users – 15 Projects – Phone support – Custom setup meet.php #11 11
  12. 12. Can't afford AirBrake. No time for negotiations. It's time for OpenSource solution. meet.php #11 12
  13. 13. Errbit ● ● ● ● ● meet.php #11 Compatible API with Airbrake Notifier API Written in Ruby srsly must be cool Can be hosted at Heroku freebie! You know first when sth is screwed up. Setup takes one hour. 13
  14. 14. AirBrake vs Errbit ● ● ● ● ● ● App count limited by plan (max 40) Hosted in atomic bomb proof shelter Freebie ● Unlimited Apps and Users ● God damn expensive Can be hosted on heroku Unlimited error retention ● Super-fast notifications. Application don't lags on error reporting ● meet.php #11 15 MB of MongoDB on heroku free plan Sleeping after 5 min of inactivity 14
  15. 15. Results 3:3 Round Draw OpenSource draw quite nice. meet.php #11 15
  16. 16. Applications View meet.php #11 16
  17. 17. Creating new App View meet.php #11 17
  18. 18. Error View meet.php #11 18
  19. 19. Backtrace Tab meet.php #11 19
  20. 20. Environment tab meet.php #11 20
  21. 21. Session tab meet.php #11 21
  22. 22. Not enough? ● Error Comments ● Issue tracker integration: – Deploy hook – To clean your error counter for previous deploy meet.php #11 BitBucket Gitlab Redmine – FogBugz – Mingle – Pivotal Labs – and replies with notifications Github – ● – – – Sorry no Jira. 22
  23. 23. But how can I integrate Errbit with my PHP App? Requires: ● – – ● PHP >= 5.3.2 Without cURL Integrates with – – Symfony2 – Kohana 3 – meet.php #11 Plain PHP esoteric mutants ... 23
  24. 24. History of errbit-php ● Original concept was made by: flippa/errbit-php and dbtlr/php-airbrake ● 90% of code were rewritten to match psr-2. ● 80% LOC were covered by unit tests. ● Added TravisCI build for – – ● ● But both of them doesn't work at all. And wasn't OOP. Flippa don't accept any pull-requests so: PHP 5.4 – ● PHP 5.3 PHP 5.5 Already have merged few pull request ● Got more than 200 Installs ● Is linked in a readme of errbit/errbit ;) meet.php #11 24
  25. 25. Enough bullshit. Time to code! ● Symfony2 Integration ● Plain PHP Integration 1. Add to composer.json 1. Download 2. Composer update 2. Add the “use” in your “kernel” file 3. Create a Listener onKernelException 3. Create an Errbit instance 4. Register a service 4. Call the start() 5. Set the api key in parameters.yml 5. Collect the errors 6. Collect the errors meet.php #11 25
  26. 26. $php->code('now'); meet.php #11 26
  27. 27. Feel free to contribute! meet.php #11 27
  28. 28. Use Cases ● Tracking errors ● Support test team ● meet.php #11 Production live debugging 28
  29. 29. Where to put Errbit during the development? meet.php #11 29
  30. 30. How the flow looks like? meet.php #11 30
  31. 31. How the workflow looks like? meet.php #11 31
  32. 32. Can we make it better? meet.php #11 32
  33. 33. Advantages of using Errbit ● You know first that error occurred. ● You know much more than customer will report you. ● ● ● You can fix the bug and make a #ninja deploy before customer will notice the error. Cloud solution friendly – no more grep'ing the error logs from all PHP nodes You care about the support and maintenance you gain lots of professional #swag meet.php #11 33
  34. 34. Things to remember “Writing tests is our professional responsibility” ● ● ~@jakub_zalas meet.php #11 This is your last line of defense. Fix bugs and do the homework in your next projects 34
  35. 35. Q&A? meet.php #11 35
  36. 36. Thank You! meet.php #11 36

×