Honeycomb.io Integration

Prev Next

Introduction

Honeycomb delivers observability for modern engineering and DevOps teams to help them debug and improve production systems efficiently. With this integration, you can import and visualize metrics from Catchpoint within Honeycomb. This integration relies on the Test Data Webhook from Catchpoint and Events API from Honeycomb, learn more about Honeycomb.io here.

Prerequisites

  1. Catchpoint test with Test Data Webhook Enabled.
  2. Honeycomb.io account.

Installation & Configuration

Configure Catchpoint Portal - Test Data Webhook:

  1. Login into the Catchpoint Portal, then go to Settings > API.
  2. Click Add URL under Test Data Webhook.
  3. Enter a Name.
  4. Enter URL (the honeycomb API endpoint where the alert data will be sent.)
    • Syntax for the URL - https://api.honeycomb.io/1/batch/<DATASET_NAME>
  5. Select Template under Format.
  6. Click Add New to create a new template.
  7. Enter a Template Name.
  8. Paste the below sample template
[
    {
    "data":{
        "Timestamp" : "${timestamp(YYYY-MM-DDTHH:MI:SS.MSCZ)}",
        "NodeName" : "${nodename}",
        "TestId" : "${testid}",
        "TestName" : "${TestName}",
        "TestUrl" : "${testurl}",
        "ErrorCode" : "${errorcode}",
        "ErrorDescription" : "${errorconnection}${errordns}${errorload}${errorloadobjects}${errorssl}${errorsystemlimit}${errortimeout}${errortransaction}",
        "catchpoint.error.error" : ${if('${errorany}', 1, 0)},
        "catchpoint.frontend.client_time" : ${switch('${timingclient}','','"n/a"','${timingclient}')},
        "catchpoint.network.tcp_connect_time" : ${switch('${timingconnect}','','"n/a"','${timingconnect}')},
        "catchpoint.frontend.content_load_time" : ${switch('${timingcontentload}','','"n/a"','${timingcontentload}')},
        "catchpoint.network.dns_resolution_time" : ${switch('${timingdns}','','"n/a"','${timingdns}')},
        "catchpoint.frontend.document_complete_time" : ${switch('${timingdocumentcomplete}','','"n/a"','${timingdocumentcomplete}')},
        "catchpoint.frontend.dom_content_load_time" : ${switch('${timingdomcontentloadedevent}','','"n/a"','${timingdomcontentloadedevent}')},
        "catchpoint.frontend.dom_interactive_time" : ${switch('${timingdominteractive}','','"n/a"','${timingdominteractive}')},
        "catchpoint.frontend.dom_load_time" : ${switch('${timingdomload}','','"n/a"','${timingdomload}')},
        "catchpoint.frontend.first_party_zone_impact" : ${switch('${timingimpactself}','','"n/a"','${timingimpactself}')},
        "catchpoint.frontend.third_party_zone_impact" : ${switch('${timingimpactthirdparty}','','"n/a"','${timingimpactthirdparty}')},
        "catchpoint.frontend.load_time" : ${switch('${timingload}','','"n/a"','${timingload}')},
        "catchpoint.frontend.total_root_request_redirect_time" : ${switch('${timingredirect}','','"n/a"','${timingredirect}')},
        "catchpoint.frontend.render_start_time" : ${switch('${timingrenderstart}','','"n/a"','${timingrenderstart}')},
        "catchpoint.frontend.total_root_request_time" : ${switch('${timingresponse}','','"n/a"','${timingresponse}')},
        "catchpoint.network.send_time" : ${switch('${timingsend}','','"n/a"','${timingsend}')},
        "catchpoint.network.ssl_time" : ${switch('${timingssl}','','"n/a"','${timingssl}')},
        "catchpoint.frontend.time_to_title" : ${switch('${timingtimetotitle}','','"n/a"','${timingtimetotitle}')},
        "catchpoint.frontend.total_test_time" : ${switch('${timingtotal}','','"n/a"','${timingtotal}')},
        "catchpoint.network.wait_time" : ${switch('${timingwait}','','"n/a"','${timingwait}')},
        "catchpoint.frontend.webpage_response_time" : ${switch('${timingwebpageresponse}','','"n/a"','${timingwebpageresponse}')},
        "catchpoint.frontend.wire_time" : ${switch('${timingwire}','','"n/a"','${timingwire}')},
        "catchpoint.ping.percentage.ping_packet_loss" : ${switch('${pingpacketlosspct}','','"n/a"','${pingpacketlosspct}')},
        "catchpoint.ping.ping_round_trip_time" : ${switch('${pingroundtriptimeavg}','','"n/a"','${pingroundtriptimeavg}')},
        "catchpoint.imap.message_fetch_time" : ${switch('${timingfetch}','','"n/a"','${timingfetch}')},
        "catchpoint.imap.message_list_time" : ${switch('${timinglist}','','"n/a"','${timinglist}')},
        "catchpoint.imap.logout_time" : ${switch('${timinglogout}','','"n/a"','${timinglogout}')},
        "catchpoint.imap.message_search_time" : ${switch('${timingsearch}','','"n/a"','${timingsearch}')},
        "catchpoint.ftp.total_download_bytes" : ${switch('${bytedownload}','','"n/a"','${bytedownload}')},
        "catchpoint.ftp.total_get_bytes" : ${switch('${byteget}','','"n/a"','${byteget}')},
        "catchpoint.ftp.uploaded_bytes" : ${switch('${byteupload}','','"n/a"','${byteupload}')},
        "catchpoint.ftp.delete_time" : ${switch('${timingdelete}','','"n/a"','${timingdelete}')},
        "catchpoint.ftp.download_time" : ${switch('${timingdownload}','','"n/a"','${timingdownload}')},
        "catchpoint.ftp.get_time" : ${switch('${timingget}','','"n/a"','${timingget}')},
        "catchpoint.ftp.upload_time" : ${switch('${timingupload}','','"n/a"','${timingupload}')},
        "catchpoint.ntp.root_delay_time" : ${switch('${timingrootdelay}','','"n/a"','${timingrootdelay}')},
        "catchpoint.ntp.root_dispersion_time" : ${switch('${timingrootdispersion}','','"n/a"','${timingrootdispersion}')},
        "catchpoint.ntp.round_trip_delay_time" : ${switch('${timingroundtripdelay}','','"n/a"','${timingroundtripdelay}')},
        "catchpoint.ntp.ntp_time" : ${switch('${timinglocalclockoffset}','','"n/a"','${timinglocalclockoffset}')},
        "catchpoint.frontend.total_self_zone_bytes" : ${switch('${byteresponseselfzone}','','"n/a"','${byteresponseselfzone}')},
        "catchpoint.frontend.total_response_content_bytes" : ${switch('${byteresponsetotalcontent}','','"n/a"','${byteresponsetotalcontent}')},
        "catchpoint.frontend.total_response_header_bytes" : ${switch('${byteresponsetotalheaders}','','"n/a"','${byteresponsetotalheaders}')},
        "catchpoint.frontend.root_request_response_content_bytes" : ${switch('${byteresponsecontent}','','"n/a"','${byteresponsecontent}')},
        "catchpoint.frontend.root_request_response_header_bytes" : ${switch('${byteresponseheaders}','','"n/a"','${byteresponseheaders}')},
        "catchpoint.frontend.total_downloaded_bytes" : ${switch('${bytereceive}','','"n/a"','${bytereceive}')},
        "catchpoint.frontend.total_number_of_connections" : ${switch('${counterconnections}','','"n/a"','${counterconnections}')},
        "catchpoint.frontend.total_number_of_failed_requests" : ${switch('${counterfailedrequests}','','"n/a"','${counterfailedrequests}')},
        "catchpoint.frontend.total_number_of_filmstrip_images" : ${switch('${counterfilmstripimages}','','"n/a"','${counterfilmstripimages}')},
        "catchpoint.frontend.total_number_of_hosts" : ${switch('${counterhosts}','','"n/a"','${counterhosts}')},
        "catchpoint.frontend.total_number_of_js_errors" : ${switch('${counterjsfailures}','','"n/a"','${counterjsfailures}')},
        "catchpoint.frontend.total_number_of_redirect" : ${switch('${counterredirections}','','"n/a"','${counterredirections}')},
        "catchpoint.frontend.total_number_of_requests" : ${switch('${counterrequests}','','"n/a"','${counterrequests}')},
        "catchpoint.frontend.page_speed_score" : ${switch('${scorepagespeed}','','"n/a"','${scorepagespeed}')},
        "catchpoint.frontend.speed_index_score" : ${switch('${scorespeedindex}','','"n/a"','${scorespeedindex}')},
        "catchpoint.frontend.above_the_fold_time" : ${switch('${timingabovethefold}','','"n/a"','${timingabovethefold}')},
        "catchpoint.frontend.authentication_time" : ${switch('${timingauth}','','"n/a"','${timingauth}')}
        }
    }
]
  1. Click Save.
  2. Select the newly created template.
  3. Add an email address to On Failure Alert.
  4. Expand Request.
  5. Click Add API Request Headers.
  6. Add a header and set the key as Content-Type and value as application/json
  7. Add another header and set the key as X-Honeycomb-Team and value as your access token from honeycomb.
  8. Click Save.

Note: API key is found user Account & Profile page in Honeycomb.io.

Results

Honeycomb allows visualizing the metrics sent from Catchpoint by querying and charting them. This allows viewing data from Catchpoint with data from other monitoring tools.

mceclip0.png