SlideShare une entreprise Scribd logo
1  sur  36
Télécharger pour lire hors ligne
“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 @
{meet.php} since #8

2
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()
);

Override exception handler
set_exception_handler(
array($this, 'onException')
);

●

Use the shutdown
function
register_shutdown_function(
array($this, 'onShutdown')
);

meet.php #11

4
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
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
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
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
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
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
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
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 hosted at Heroku
freebie!
You know first when sth
is screwed up.
Setup takes one hour.

13
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
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
deploy

meet.php #11

BitBucket
Gitlab
Redmine

–

FogBugz

–

Mingle

–

Pivotal Labs

–

and replies with
notifications

Github

–
●

–

–

–

Sorry no Jira.
22
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
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
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
$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.

●

●

●

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
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
Q&A?

meet.php #11

35
Thank You!

meet.php #11

36

Contenu connexe

Tendances

Cowboy rabbit-websockets
Cowboy rabbit-websocketsCowboy rabbit-websockets
Cowboy rabbit-websocketsWade Mealing
 
BackPAN Archeology
BackPAN ArcheologyBackPAN Archeology
BackPAN Archeologybrian d foy
 
Proxying DBI with DBD::Gofer and App::Staticperl
Proxying DBI with DBD::Gofer and App::StaticperlProxying DBI with DBD::Gofer and App::Staticperl
Proxying DBI with DBD::Gofer and App::Staticperlnohuhu
 
Developing Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScriptDeveloping Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScriptnohuhu
 
"13 ways to run web applications on the Internet" Andrii Shumada
"13 ways to run web applications on the Internet" Andrii Shumada"13 ways to run web applications on the Internet" Andrii Shumada
"13 ways to run web applications on the Internet" Andrii ShumadaFwdays
 
#3 Hanoi Magento Meetup - Part 2: Scalable Magento Development With Containers
#3 Hanoi Magento Meetup - Part 2: Scalable Magento Development With Containers#3 Hanoi Magento Meetup - Part 2: Scalable Magento Development With Containers
#3 Hanoi Magento Meetup - Part 2: Scalable Magento Development With ContainersHanoi MagentoMeetup
 
Managing Complexity with Module::Release
Managing Complexity with Module::ReleaseManaging Complexity with Module::Release
Managing Complexity with Module::Releasebrian d foy
 
Docker for Developers - PNWPHP 2016 Workshop
Docker for Developers - PNWPHP 2016 WorkshopDocker for Developers - PNWPHP 2016 Workshop
Docker for Developers - PNWPHP 2016 WorkshopChris Tankersley
 
Bootify your spring application
Bootify your spring applicationBootify your spring application
Bootify your spring applicationJimmy Lu
 
Failing at Scale - PNWPHP 2016
Failing at Scale - PNWPHP 2016Failing at Scale - PNWPHP 2016
Failing at Scale - PNWPHP 2016Chris Tankersley
 
Chromium: NaCl and Pepper API
Chromium: NaCl and Pepper APIChromium: NaCl and Pepper API
Chromium: NaCl and Pepper APIChang W. Doh
 
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...Ortus Solutions, Corp
 
Composer | PHP Dependency Manager
Composer | PHP Dependency ManagerComposer | PHP Dependency Manager
Composer | PHP Dependency ManagerUjjwal Ojha
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovskyphp-user-group-minsk
 

Tendances (20)

Cowboy rabbit-websockets
Cowboy rabbit-websocketsCowboy rabbit-websockets
Cowboy rabbit-websockets
 
BackPAN Archeology
BackPAN ArcheologyBackPAN Archeology
BackPAN Archeology
 
Proxying DBI with DBD::Gofer and App::Staticperl
Proxying DBI with DBD::Gofer and App::StaticperlProxying DBI with DBD::Gofer and App::Staticperl
Proxying DBI with DBD::Gofer and App::Staticperl
 
Developing Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScriptDeveloping Rich Internet Applications with Perl and JavaScript
Developing Rich Internet Applications with Perl and JavaScript
 
"13 ways to run web applications on the Internet" Andrii Shumada
"13 ways to run web applications on the Internet" Andrii Shumada"13 ways to run web applications on the Internet" Andrii Shumada
"13 ways to run web applications on the Internet" Andrii Shumada
 
It gilde 20150209
It gilde 20150209It gilde 20150209
It gilde 20150209
 
#3 Hanoi Magento Meetup - Part 2: Scalable Magento Development With Containers
#3 Hanoi Magento Meetup - Part 2: Scalable Magento Development With Containers#3 Hanoi Magento Meetup - Part 2: Scalable Magento Development With Containers
#3 Hanoi Magento Meetup - Part 2: Scalable Magento Development With Containers
 
Managing Complexity with Module::Release
Managing Complexity with Module::ReleaseManaging Complexity with Module::Release
Managing Complexity with Module::Release
 
Composer
ComposerComposer
Composer
 
Docker for Developers - PNWPHP 2016 Workshop
Docker for Developers - PNWPHP 2016 WorkshopDocker for Developers - PNWPHP 2016 Workshop
Docker for Developers - PNWPHP 2016 Workshop
 
OpenCms Days 2013 - Site Management Tool
OpenCms Days 2013 - Site Management ToolOpenCms Days 2013 - Site Management Tool
OpenCms Days 2013 - Site Management Tool
 
Bootify your spring application
Bootify your spring applicationBootify your spring application
Bootify your spring application
 
Failing at Scale - PNWPHP 2016
Failing at Scale - PNWPHP 2016Failing at Scale - PNWPHP 2016
Failing at Scale - PNWPHP 2016
 
Composer
ComposerComposer
Composer
 
OpenCms Days 2016: Keynote - Introducing OpenCms 10.5
OpenCms Days 2016:   Keynote - Introducing OpenCms 10.5OpenCms Days 2016:   Keynote - Introducing OpenCms 10.5
OpenCms Days 2016: Keynote - Introducing OpenCms 10.5
 
Chromium: NaCl and Pepper API
Chromium: NaCl and Pepper APIChromium: NaCl and Pepper API
Chromium: NaCl and Pepper API
 
Perl
PerlPerl
Perl
 
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
CBDW2014- Intro to CommandBox; The ColdFusion CLI, Package Manager, and REPL ...
 
Composer | PHP Dependency Manager
Composer | PHP Dependency ManagerComposer | PHP Dependency Manager
Composer | PHP Dependency Manager
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
 

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

Symfony2 - Request to Response
Symfony2 - Request to ResponseSymfony2 - Request to Response
Symfony2 - Request to ResponsePalko Lenard
 
Server Independent Programming
Server Independent ProgrammingServer Independent Programming
Server Independent ProgrammingZendCon
 
Introduction into PHP5 (Jeroen van Sluijs)
Introduction into PHP5 (Jeroen van Sluijs)Introduction into PHP5 (Jeroen van Sluijs)
Introduction into PHP5 (Jeroen van Sluijs)Stefan Koopmanschap
 
Owasp AppSecEU 2015 - BeEF Session
Owasp AppSecEU 2015 - BeEF SessionOwasp AppSecEU 2015 - BeEF Session
Owasp AppSecEU 2015 - BeEF SessionBart Leppens
 
Introduction to web and php mysql
Introduction to web and php mysqlIntroduction to web and php mysql
Introduction to web and php mysqlProgrammer Blog
 
What To Expect From PHP7
What To Expect From PHP7What To Expect From PHP7
What To Expect From PHP7Codemotion
 
Why we choose Symfony2
Why we choose Symfony2Why we choose Symfony2
Why we choose Symfony2Merixstudio
 
The why and how of moving to php 8
The why and how of moving to php 8The why and how of moving to php 8
The why and how of moving to php 8Wim Godden
 
(phpconftw2012) PHP as a Middleware in Embedded Systems
(phpconftw2012) PHP as a Middleware in Embedded Systems(phpconftw2012) PHP as a Middleware in Embedded Systems
(phpconftw2012) PHP as a Middleware in Embedded Systemssosorry
 
The why and how of moving to php 5.4
The why and how of moving to php 5.4The why and how of moving to php 5.4
The why and how of moving to php 5.4Wim Godden
 
Ob1k presentation at Java.IL
Ob1k presentation at Java.ILOb1k presentation at Java.IL
Ob1k presentation at Java.ILEran Harel
 
The why and how of moving to PHP 5.5/5.6
The why and how of moving to PHP 5.5/5.6The why and how of moving to PHP 5.5/5.6
The why and how of moving to PHP 5.5/5.6Wim Godden
 
DDD (Debugger Driven Development)
DDD (Debugger Driven Development)DDD (Debugger Driven Development)
DDD (Debugger Driven Development)Carlos Granados
 
Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009PHPBelgium
 
Last Month in PHP - June 2016
Last Month in PHP - June 2016Last Month in PHP - June 2016
Last Month in PHP - June 2016Eric Poe
 
Symfony Nano Framework
Symfony Nano FrameworkSymfony Nano Framework
Symfony Nano FrameworkLoïc Faugeron
 
Codeception: introduction to php testing
Codeception: introduction to php testingCodeception: introduction to php testing
Codeception: introduction to php testingEngineor
 
Php through the eyes of a hoster confoo
Php through the eyes of a hoster confooPhp through the eyes of a hoster confoo
Php through the eyes of a hoster confooCombell NV
 

Similaire à meet.php #11 - Huston, we have an airbrake (20)

Symfony2 - Request to Response
Symfony2 - Request to ResponseSymfony2 - Request to Response
Symfony2 - Request to Response
 
Server Independent Programming
Server Independent ProgrammingServer Independent Programming
Server Independent Programming
 
Introduction into PHP5 (Jeroen van Sluijs)
Introduction into PHP5 (Jeroen van Sluijs)Introduction into PHP5 (Jeroen van Sluijs)
Introduction into PHP5 (Jeroen van Sluijs)
 
Owasp AppSecEU 2015 - BeEF Session
Owasp AppSecEU 2015 - BeEF SessionOwasp AppSecEU 2015 - BeEF Session
Owasp AppSecEU 2015 - BeEF Session
 
Introduction to web and php mysql
Introduction to web and php mysqlIntroduction to web and php mysql
Introduction to web and php mysql
 
What To Expect From PHP7
What To Expect From PHP7What To Expect From PHP7
What To Expect From PHP7
 
Why we choose Symfony2
Why we choose Symfony2Why we choose Symfony2
Why we choose Symfony2
 
The why and how of moving to php 8
The why and how of moving to php 8The why and how of moving to php 8
The why and how of moving to php 8
 
Php7
Php7Php7
Php7
 
(phpconftw2012) PHP as a Middleware in Embedded Systems
(phpconftw2012) PHP as a Middleware in Embedded Systems(phpconftw2012) PHP as a Middleware in Embedded Systems
(phpconftw2012) PHP as a Middleware in Embedded Systems
 
The why and how of moving to php 5.4
The why and how of moving to php 5.4The why and how of moving to php 5.4
The why and how of moving to php 5.4
 
Ob1k presentation at Java.IL
Ob1k presentation at Java.ILOb1k presentation at Java.IL
Ob1k presentation at Java.IL
 
The why and how of moving to PHP 5.5/5.6
The why and how of moving to PHP 5.5/5.6The why and how of moving to PHP 5.5/5.6
The why and how of moving to PHP 5.5/5.6
 
DDD (Debugger Driven Development)
DDD (Debugger Driven Development)DDD (Debugger Driven Development)
DDD (Debugger Driven Development)
 
Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009
 
Last Month in PHP - June 2016
Last Month in PHP - June 2016Last Month in PHP - June 2016
Last Month in PHP - June 2016
 
Symfony Nano Framework
Symfony Nano FrameworkSymfony Nano Framework
Symfony Nano Framework
 
Codeception: introduction to php testing
Codeception: introduction to php testingCodeception: introduction to php testing
Codeception: introduction to php testing
 
Symfony 2.0 on PHP 5.3
Symfony 2.0 on PHP 5.3Symfony 2.0 on PHP 5.3
Symfony 2.0 on PHP 5.3
 
Php through the eyes of a hoster confoo
Php through the eyes of a hoster confooPhp through the eyes of a hoster confoo
Php through the eyes of a hoster confoo
 

Dernier

Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 

Dernier (20)

Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 

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

  • 1. “Huston, we have an AirBrake” Application Error monitoring in PHP meet.php #11 By @emgiezet (c) 1995 Universal
  • 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. Agenda 1. PHP error tracking 2. Airbrake 3. Errbit 4. emgiezet/errbitPHP 5. Case Study meet.php #11 3
  • 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. 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. 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. 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. 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. 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. 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. 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. Can't afford AirBrake. No time for negotiations. It's time for OpenSource solution. meet.php #11 12
  • 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. 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. Results 3:3 Round Draw OpenSource draw quite nice. meet.php #11 15
  • 17. Creating new App View meet.php #11 17
  • 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. 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. 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. 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
  • 27. Feel free to contribute! meet.php #11 27
  • 28. Use Cases ● Tracking errors ● Support test team ● meet.php #11 Production live debugging 28
  • 29. Where to put Errbit during the development? meet.php #11 29
  • 30. How the flow looks like? meet.php #11 30
  • 31. How the workflow looks like? meet.php #11 31
  • 32. Can we make it better? meet.php #11 32
  • 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. 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