-
Notifications
You must be signed in to change notification settings - Fork 5.4k
Add “Query Logs” Action to New Relic Component #16968
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Add “Query Logs” Action to New Relic Component #16968
Conversation
@edward-rosado is attempting to deploy a commit to the Pipedreamers Team on Vercel. A member of the Team first needs to authorize it. |
The latest updates on your projects. Learn more about Vercel for Git ↗︎ 1 Skipped Deployment
|
WalkthroughA new "Query Logs" action was added to the New Relic component, enabling users to execute NRQL queries for log data retrieval and analysis. The README was updated to document this new action, including its usage, required inputs, example scenarios for log analysis and alerting. Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant Workflow
participant QueryLogsAction
participant NewRelicAPI
User->>Workflow: Triggers workflow with Query Logs action
Workflow->>QueryLogsAction: Passes app instance, accountId, and NRQL query
QueryLogsAction->>NewRelicAPI: Sends GraphQL POST with NRQL query and accountId
NewRelicAPI-->>QueryLogsAction: Returns query results (with pagination)
QueryLogsAction->>NewRelicAPI: Requests next page if nextCursor present
QueryLogsAction-->>Workflow: Returns aggregated results and summary
Workflow-->>User: Provides log query results
Poem
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
components/new_relic/actions/query-logs/query-logs.mjsOops! Something went wrong! :( ESLint: 8.57.1 Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'jsonc-eslint-parser' imported from /eslint.config.mjs ✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
Thank you so much for submitting this! We've added it to our backlog to review, and our team has been notified. |
Thanks for submitting this PR! When we review PRs, we follow the Pipedream component guidelines. If you're not familiar, here's a quick checklist:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 5
🧹 Nitpick comments (2)
components/new_relic/actions/query-logs/query-logs.mjs (1)
40-41
: Improve return value structure.The current implementation returns the entire GraphQL response, but it would be more useful to return just the query results with better structure.
- $.export("$summary", `Queried logs with NRQL: ${this.nrql}`); - return response.data; + const results = response.data.data.actor.account.nrql.results; + $.export("$summary", `Queried logs with NRQL: ${this.nrql} - Found ${results?.length || 0} results`); + return { + query: this.nrql, + accountId: this.accountId, + results: results, + metadata: { + executedAt: new Date().toISOString(), + resultCount: results?.length || 0 + } + };components/new_relic/README.md (1)
18-19
: Enhance the log analysis example with more practical scenarios.The current example is good, but could benefit from additional real-world use cases.
- **Log Analysis and Alerting**: Use the Query Logs action to search for error patterns or specific events in your New Relic logs. For example, you can run an NRQL query like `SELECT * FROM Log WHERE message LIKE '%error%' LIMIT 10` to find recent error logs and trigger downstream actions or notifications. + **Log Analysis and Alerting**: Use the Query Logs action to search for error patterns or specific events in your New Relic logs. Examples include: + - Finding recent errors: `SELECT * FROM Log WHERE message LIKE '%error%' LIMIT 10` + - Monitoring failed logins: `SELECT * FROM Log WHERE message LIKE '%authentication failed%' SINCE 1 hour ago` + - Tracking performance issues: `SELECT * FROM Log WHERE duration > 5000 SINCE 30 minutes ago LIMIT 20` + These queries can trigger downstream actions like Slack notifications, PagerDuty alerts, or automatic scaling decisions.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
components/new_relic/README.md
(1 hunks)components/new_relic/actions/query-logs/query-logs.mjs
(1 hunks)
🔇 Additional comments (1)
components/new_relic/README.md (1)
5-9
: LGTM! Well-structured documentation.The new "Available Actions" section clearly documents both existing and new actions with helpful descriptions.
8a8dd8b
to
0ca86c5
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
♻️ Duplicate comments (1)
components/new_relic/actions/query-logs/query-logs.mjs (1)
31-34
: Add missing description for Account ID prop.The
accountId
prop lacks a description, which was identified in past review comments. This affects usability and documentation completeness.Apply this diff to add the missing description:
accountId: { type: "string", label: "Account ID", + description: "Your New Relic account ID (numeric)", },
🧹 Nitpick comments (1)
components/new_relic/actions/query-logs/query-logs.mjs (1)
7-21
: Enhance NRQL validation and add JSDoc documentation.The helper functions provide basic security measures but could be improved:
- The sanitization regex could be more comprehensive to handle additional injection vectors
- The functions lack JSDoc documentation for better maintainability
Apply this diff to enhance the validation and add documentation:
+/** + * Sanitizes NRQL query by removing potentially dangerous characters + * @param {string} nrql - The NRQL query to sanitize + * @returns {string} - The sanitized NRQL query + */ function sanitizeNrql(nrql) { - // Remove dangerous characters and trim whitespace - return nrql.replace(/[;`$\\]/g, "").trim(); + // Remove dangerous characters including quotes, semicolons, and trim whitespace + return nrql.replace(/[;`$\\'"/]/g, "").trim(); } +/** + * Validates if the NRQL query meets basic security and format requirements + * @param {string} nrql - The NRQL query to validate + * @returns {boolean} - True if valid, false otherwise + */ function isValidNrql(nrql) { // Basic validation: must start with SELECT, not empty, and not contain forbidden patterns - const forbidden = /[;`$\\]/; + const forbidden = /[;`$\\'"/]/; return ( typeof nrql === "string" && nrql.trim().length > 0 && /^SELECT\s+/i.test(nrql.trim()) && !forbidden.test(nrql) ); }
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (2)
components/new_relic/README.md
(1 hunks)components/new_relic/actions/query-logs/query-logs.mjs
(1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
- components/new_relic/README.md
🔇 Additional comments (1)
components/new_relic/actions/query-logs/query-logs.mjs (1)
41-102
: LGTM! Comprehensive implementation addressing security and functionality concerns.The run method successfully addresses all major concerns from past reviews:
✅ Security: Uses GraphQL variables instead of string interpolation
✅ Validation: Validates both Account ID and NRQL input
✅ Error Handling: Comprehensive try-catch with specific error messages
✅ Pagination: Properly implements cursor-based pagination
✅ Response Validation: Validates GraphQL response structureThe implementation demonstrates robust error handling, proper data sanitization, and follows GraphQL best practices. The pagination logic correctly accumulates results across multiple API calls.
Add “Query Logs” Action to New Relic Component
Overview
This PR introduces a new Query Logs action to the New Relic component, enabling users to query logs from New Relic using NRQL (New Relic Query Language). This action allows for advanced log analysis and monitoring workflows directly within Pipedream.
What’s Included
components/new_relic/actions/query-logs/query-logs.mjs
README.md
to document the new action, its usage, and example use cases.Usage
Inputs:
Account ID
: The New Relic account to query.NRQL Query
: The NRQL query to run (e.g.,SELECT * FROM Log WHERE message LIKE '%error%' LIMIT 10
).Output:
Example Use Case
Motivation
This addition expands the observability and automation capabilities of the New Relic component, making it easier for users to monitor, analyze, and respond to log data within their Pipedream workflows.
Summary by CodeRabbit
New Features
Documentation