avatarJen-Hsuan Hsieh (Sean)

总结

该网页主要介绍了New Relic的APM(Application Performance Monitoring)服务中的NRQL(New Relic Query Language)功能,并提供了一些实用的查询模板和数据分析方法。

摘要

网页详细介绍了New Relic APM服务的功能,包括记录transaction、end points、web页面的使用情况、错误信息、网站吞吐量以及基础设施的状态监控。文章重点讲解了New Relic中的NRQL查询语言,它允许用户像SQL一样编写查询语句,从而能够自定义查询并将结果以图表或统计数值的形式展现出来。例如,可以查询网站在不同设备上的访问比例、不同服务的事件数量百分比、服务在当前一周与前一周同期的status code为302的响应数量等。文章还提供了New Relic的数据探索器(Data Explorer)的使用方法,用户可以通过选择不同的数据源和字段来分析数据,如不同国家的Page view事件计数。最后,作者提供了相关文章和New Relic官方文档的链接作为参考资料。

观点

  • New Relic APM服务提供了全面的性能监控功能,能够记录和分析应用程序的各项性能指标。
  • NRQL是New Relic强大的查询语言,它类似于SQL,使得用户能够灵活地编写查询来满足特定的数据分析需求。
  • 文章提供了实际的NRQL查询示例,帮助用户了解如何使用NRQL来查询和分析数据。
  • New Relic的数据探索器是一个有用的工具,它可以帮助用户直观地查看和分析数据,即使对字段不熟悉。
  • 作者强调学习和使用这些工件可以提高软件工程师的工作效率,并鼓励读者在阅读过程中进行交流和讨论。

APM & Logging Services Part.2- New Relic Query Language

Copy right@A Layman

Introduction

New Relic是一套APM (Application Performance Monitoring),可以記錄transaction,哪些end points或web page被使用過以及被使用的頻率; 它也可以儲存error message,exception messages; 或是web site的在某時間區間的throughput; 以及Infrastructure: 機器CPU,IO,memory的狀態,功能非常多 。

本篇將簡短地介紹而New Relic的NRQL,這個功能是屬於INSIGHTS功能的一環,它可以像前一篇所介紹的Kibana提供客製化的query並劃出圖表,或是統計數值,例如我的網站在不同種類的device的訪問比例為何? 與去年同期的比較為何?

Enjoy it!

Source: https://newrelic.com/

Insight: New Relic Query Language (NRQL)

從New Relic上方的Nav bar中選擇INSIGHTS,進到NRQL的console畫面 。

Copy right@A Layman

NRQL是New Relic提供的一個與SQL十分相似的查詢語法,可用來查詢New Relic Insights Events database:

Source: https://newrelic.com/

這邊記錄一些實用的查詢templates:

  • 查詢web page在不同種類的device上unique session的訪問數量,例如一天前

查詢語句:

SELECT 
filter(uniquecount(session), WHERE deviceType = 'Desktop' and appName = 'Prod') as 'Desktop',
filter(uniquecount(session), WHERE deviceType = 'Mobile' and appName = 'Prod') as 'Mobile' from PageView since 7 day ago

查詢結果如下,可以看到Desktop的訪問次數有173,而行動裝置的訪問次數為0。

Copy right@A Layman
  • 查詢不同services的events數量百分比

查詢語句:

SELECT percentage(count(*), WHERE appName = 'Prod1') as 'WW', percentage(count(*), WHERE appName = 'Prod2') as 'China' from PageView since 7 day ago

查詢結果如下,可以看到worldwide的service的events比例有67.85%,而China的service的events比例有0.07%。

Copy right@A Layman
  • 查詢不同services的訪問次數

查詢語句:

SELECT count(*) FROM PageView FACET appName IN ('Prod1', 'Prod2')

查詢結果:

Copy right@A Layman
  • 查詢service在目前一周與前一周同期的status code為302 (暫時轉址)的Response

查詢語句:

SELECT count(*) from Transaction where appName = 'Prod1' AND `response.status` = 302 limit 1 since 1 week ago COMPARE WITH 1 week ago TIMESERIES 1 day

查詢結果:

Copy right@A Layman
  • 查詢SyntheticCheck的執行時間:

查詢語句:

SELECT average(duration) FROM SyntheticCheck SINCE 1 week ago TIMESERIES 1 hour

查詢結果:

Copy right@A Layman
  • Page view 與 Transaction的差異

前者是用戶透過瀏覽器訪問的次數,後者包含了end points被訪問的次數,因此雖然查詢語句相同,若來源不同結果也會有差異,例如:

Page view的查詢語句:

SELECT PageView FROM Transaction WHERE appName = 'Prod1' limit 1 since 1 week ago COMPARE WITH 1 week ago TIMESERIES 1 day

查詢結果:

Copy right@A Layman

Transaction的查詢語句:

SELECT count(*) FROM Transaction WHERE appName = 'Prod1' limit 1 since 1 week ago COMPARE WITH 1 week ago TIMESERIES 1 day

查詢結果:

Copy right@A Layman

Insight: Data Explorer

如果對欄位還不熟悉,New Relic也提供現成的查詢並提供視覺化的結果以供使用,選擇Data Explorer後可以看到來源與欄位都可以從選單中選擇:

Copy right@A Layman

選擇CountryCode後可以分析不同國家的Page view event count:

Copy right@A Layman

Summary

這算是我第二次寫關於工具的文章,基本上官方文件都有非常詳細的說明, 雖然我們只用了其中一小部分,但這一小部分也許也是大多人會常使用的, 便有值得寫成文章的價值。

謝謝你耐心地讀到Summary,我是Sean HS, 是位軟體工程師。 這片文章是我在研究過程時的筆記,若有錯誤之處,期待您的見解,與您交流討論。

Related topics

[Software as a Service] Modern APM & Logging Services

[Golang] Build A Simple Web Service

[React.js] Build A React App

[DevOps] Ansible Provisioning for Windows:

References

New Relic
SaaS
Visualization
Debugging
DevOps
Recommended from ReadMedium