---
id: monitoring-newrelic
title: "New Relic"
shortTitle: "New Relic"
track: monitoring
trackTitle: "Monitoring & Alerting"
order: 6
level: normal
status: published
estimatedMinutes: 25
prerequisites:
  - monitoring-datadog
next: monitoring-checkmk
reviewedAgainst: 2026-10-12
sources:
  - title: "Intro to NRQL"
    url: https://docs.newrelic.com/docs/nrql/get-started/introduction-nrql-new-relics-query-language/
  - title: "Install New Relic"
    url: https://docs.newrelic.com/docs/new-relic-solutions/get-started/intro-new-relic/
---

# New Relic

New Relic nhận telemetry qua agent của họ, và NRQL là ngôn ngữ để query dữ liệu đó. Bài này chỉ đọc một câu NRQL. Bạn không cài agent và không lấy license key.

## Để làm gì

Bạn sẽ đọc được phần `SELECT` và `FROM` của một câu NRQL, và biết rằng câu đó không chạy được trên Log Analytics của Azure.

## Gồm những gì

- APM agent và infrastructure agent, đủ để biết đây là hai cách gửi dữ liệu khác nhau.
- NRQL: `SELECT`, `FROM`, `WHERE`, `SINCE`.
- License key là secret.

Bài không hướng dẫn đăng ký tài khoản.

## Dùng khi nào

App đã cài agent New Relic, và team có dashboard nội bộ viết bằng NRQL. Đừng cài thêm agent này bên cạnh Datadog và Prometheus cho cùng một lab, vì để học thì một nơi xem là đủ.

## Kiến thức cốt lõi

APM agent chạy bên trong process của app và gửi dữ liệu transaction. Infrastructure agent gửi số liệu của máy. Cả hai đều cần license key của tài khoản. Nếu key nằm trong repo, bất kỳ ai clone repo cũng gửi được dữ liệu vào tài khoản công ty.

NRQL trông giống SQL, nhưng `FROM` ở đây là một loại dữ liệu do New Relic định nghĩa, ví dụ `Transaction` hoặc `SystemSample`, chứ không phải bảng do bạn tạo. `SINCE 1 hour ago` là khoảng thời gian query. Khi cần dùng hàm nào, hãy tra docs NRQL thay vì đoán theo SQL.

Câu NRQL không chạy được trong Log Analytics, vì Kusto dùng `where` và dấu `|`. Trộn cú pháp hai bên thì query hoặc báo lỗi, hoặc trả về số liệu của một hệ khác mà bạn không ngờ tới.

## Lệnh và code mẫu

Câu dưới đây chỉ để đọc:

```sql
SELECT average(duration) FROM Transaction WHERE appName = 'shop' SINCE 1 hour ago
```

| Khóa | Giá trị |
| --- | --- |
| FROM | `Transaction` |
| WHERE | app `shop` |
| SINCE | 1 giờ |

## Thực hành

1. Điền bảng trên.
2. Viết một việc bạn sẽ không làm: dán câu này vào cửa sổ query Kusto.
3. Không cài agent.

## Kết quả mong đợi

Bạn điền đúng ba ô, và không có key nào được tạo ra.

## Checklist

- [ ] License key nằm trong nơi lưu secret của nền tảng deploy, không nằm trong Git.
- [ ] Khi thử query, luôn ghi `SINCE`, đừng để mặc định quét cả lịch sử.
- [ ] Không cài thêm agent nếu app đã có một hệ monitoring khác theo dõi.

## Lỗi thường gặp

**Query `FROM Transaction` trên app chưa cài APM agent.** Query không ra dữ liệu vì app chưa gửi gì, không phải vì bạn gõ sai. Hãy kiểm tra agent trước khi sửa câu query.

**Để key trong `NEW_RELIC_LICENSE_KEY` của Dockerfile.** Key sẽ nằm lại trong layer của image. Hãy truyền key qua biến môi trường lúc chạy, lấy từ secret store.

## Nguồn

1. [Introduction to NRQL](https://docs.newrelic.com/docs/nrql/get-started/introduction-nrql-new-relics-query-language/) — `SELECT`, `FROM`, `SINCE`.
2. [Intro to New Relic](https://docs.newrelic.com/docs/new-relic-solutions/get-started/intro-new-relic/) — agent và dữ liệu nó gửi.

## Tiếp theo

[Checkmk](./07-checkmk.md)
