Skip to content
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

Daily release/01 09 25 morning #19689

Merged
merged 23 commits into from
Jan 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
9cc1a8c
added the doc for webhook to teams workflow
WriteMayur Jan 9, 2025
9d23f6e
fix an issue
WriteMayur Jan 9, 2025
136cf54
fix: finish the .NET azure update/remove instructions
brnhensley Jan 9, 2025
00ae279
Update Korean cocreateinstance-errors-no-profiler-log.mdx
jmiraNR Jan 9, 2025
79f6640
chore: Adds Node.js agent v12.10.0 release notes.
newrelic-node-agent-team Jan 9, 2025
f81b008
Add databyte video to data explorer what's new
louisleungk Jan 9, 2025
6550094
chore: format nrql clauses
brnhensley Jan 9, 2025
6449237
chore: Add Browser agent v1.278.2 release notes
newrelic-browser-agent-team Jan 9, 2025
851705e
Merge pull request #19681 from brnhensley/patch-3
newrelic707195 Jan 10, 2025
6b5be7e
Merge pull request #19682 from newrelic/jmiraNR-patch-3-20250109
newrelic707195 Jan 10, 2025
fe73f4e
Merge pull request #19685 from brnhensley/patch-5
newrelic707195 Jan 10, 2025
9c8f409
Merge pull request #19684 from louisleungk/patch-16
newrelic707195 Jan 10, 2025
cb77686
incorporated-review-feedbacks
WriteMayur Jan 10, 2025
f3799ad
Merge pull request #19683 from newrelic/add-node-v12.10.0
newrelic707195 Jan 10, 2025
88efefd
Merge pull request #19686 from newrelic/add-browser-agent-v1.278.2
newrelic707195 Jan 10, 2025
3644268
Merge pull request #19679 from newrelic/nr-microsoft-teams-workflow
adutta-newrelic Jan 10, 2025
aea67be
chore[docs]: Release notes for week of 3-9, Jan (2025)
sujitnewrelic Jan 10, 2025
1b4518e
Update docs-1-9-2025.mdx
sujitnewrelic Jan 10, 2025
3d05af1
Update docs-1-9-2025.mdx
sujitnewrelic Jan 10, 2025
e024d1e
Update docs-1-9-2025.mdx
sujitnewrelic Jan 10, 2025
3517243
Update docs-1-9-2025.mdx
sujitnewrelic Jan 10, 2025
fecabe1
Update docs-1-9-2025.mdx
sujitnewrelic Jan 10, 2025
3edbf43
Merge pull request #19687 from newrelic/docs-release-notes-01-10-2025
newrelic707195 Jan 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
---
title: New Relic webhook for Microsoft Teams workflow
tags:
- Alerts
- Incident intelligence
- New Relic webhook for Microsoft Teams workflow
metaDescription: "Read about how to add a New Relic webhook for Microsoft Teams workflow."
freshnessValidatedDate: never
---

Microsoft is retiring Microsoft 365 webhook-based Connectors service in Teams by the end of 2025. To continue receiving New Relic alert notifications, you can create a workflow within Microsoft Teams using the Workflows app. This document provides instructions for updating your New Relic alert destinations and workflows to ensure a smooth transition and uninterrupted alerts in your Teams channels. For more information about retiring the Office 365 Connectors services, refer [Microsoft developer blog](https://devblogs.microsoft.com/microsoft365dev/retirement-of-office-365-connectors-within-microsoft-teams/).



**Prerequisites:**

* Create a new workflow in Microsoft Teams for New Relic alerts. After creating the workflow, copy the POST request URL. You will need this URL in New Relic. For more information, refer to [Microsoft's documentation to create workflows in Teams](https://support.microsoft.com/en-us/office/create-incoming-webhooks-with-workflows-for-microsoft-teams-8ae491c7-0394-4861-ba59-055e33f75498).


**To add a New Relic webhook for Microsoft Teams workflow:**


1. Update existing webhook destination:
1. Go to **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > Alerts > Enrich and Notify > Destinations**.
2. Click the required webhook destination linked to Microsoft Teams to edit.
3. After creating workflows in Teams, in the **Endpoint URL** field, replace the existing URL with a new URL.
<img
title="Destinations update page"
alt="Destinations update page."
src="/images/alerts_destination_enpointurl.webp"
/>
4. Click **Update destination**.
2. Update existing webhook workflow:
1. Go to **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > Alerts > Enrich and Notify > Workflows**.
2. To edit the notification payload, click the required workflow linked with the destination.
<img
title="Workflow update page"
alt="Workflow update page."
src="/images/alerts_workflow_payload.webp"
/>
3. On the <dnt>Edit notification message</dnt> screen, in the **Template** field, copy and paste the following payload:
```json
{
"type": "message",
"attachments": [
{
"contentType": "application/vnd.microsoft.card.adaptive",
"contentUrl": null,
"content": {
"$schema": "https://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.2",
"body": [
{
"type": "ColumnSet",
"columns": [
{
"type": "Column",
"items": [
{
"type": "Image",
"style": "Person",
"url": "https://avatars.slack-edge.com/2022-06-02/3611814361970_f6a28959c2e7258660ea_512.png",
"size": "medium"
}
],
"width": "auto"
},
{
"type": "Column",
"items": [
{
"type": "TextBlock",
"size": "large",
"weight": "bolder",
"text": "{{ priorityText }} priority issue is {{#if issueClosedAt}}CLOSED{{else}}{{#if issueAcknowledgedAt}}ACKNOWLEDGED{{else}}ACTIVATED{{/if}}{{/if}}"
},
{
"type": "TextBlock",
"size": "large",
"wrap": "true",
"maxLines": "2",
"weight": "bolder",
"text": "[{{ issueTitle }}]({{ issuePageUrl }})"
}
],
"width": "stretch"
}
]
},
{{#if accumulations.conditionDescription.[0]}}
{
"type": "TextBlock",
"text": {{ json accumulations.conditionDescription.[0] }},
"wrap": true
},
{{/if}}
{{#eq "Not Available" violationChartUrl}}
{{else}}
{
"type": "Image",
"url": {{ json violationChartUrl }}
},
{{/eq}}
{
"type": "FactSet",
"facts": [
{
"title": "*Impacted entities:*",
"value": "{{#each entitiesData.names}}{{#lt @index 5}}{{this}}{{#unless @last}},{{/unless}}{{/lt}}{{/each}}"
},
{{#if accumulations.policyName }}
{
"title": "*Policy:*",
"value": {{ json accumulations.policyName.[0]}}
},
{{/if}}
{{#if accumulations.conditionName }}
{
"title": "*Condition:*",
"value": {{ json accumulations.conditionName.[0]}}
},
{{#eq impactedEntitiesCount 1}}
{{else}}
{
"title": "*Total Incidents:*",
"value": {{ json impactedEntitiesCount}}
},
{{/eq}}
{{/if}}
{
"title": "Workflow Name:",
"value": {{ json workflowName }}
}
]
},
{
"type": "ActionSet",
"actions": [
{
"type": "Action.OpenUrl",
"title": "📥 Acknowledge",
"url": {{ json issueAckUrl }}
},
{
"type": "Action.OpenUrl",
"title": "✔️ Close",
"url": {{ json issueCloseUrl }}
},
{{#if accumulations.deepLinkUrl}}
{
"type": "Action.OpenUrl",
"title": "🔎 View Query",
"url": {{ json accumulations.deepLinkUrl.[0] }},
"mode": "secondary"
},
{{/if}}
{{#if accumulations.runbookUrl}}
{
"type": "Action.OpenUrl",
"title": "📕 View Runbook",
"url": {{ json accumulations.runbookUrl.[0] }},
"mode": "secondary"
}
{{/if}}
]
}
]
}
}
]
}
}
```
4. Click **Save message**.

Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ There are several ways you can install the .NET agent, which means there are sev

If you have other installations, see these install docs for those setups for more context:

* [Azure Web Apps](/docs/apm/agents/net-agent/azure-installation/install-net-agent-azure-web-apps/#site-extention-update)
* Docker: [for Windows](/install/dotnet/?deployment=windowsInstall&docker=yesDocker) | for [Linux](/install/dotnet/?deployment=linux&docker=yesDocker)
* [Nuget](/docs/apm/agents/net-agent/install-guides/install-net-agent-using-nuget)

Expand Down Expand Up @@ -77,7 +76,8 @@ Follow the update instructions for your agent:
>
To update the .NET agent for an Azure Web App using the New Relic Azure site extension follow the installation instructions to:

* Install the latest version of the New Relic Azure site extension, which updates the agent files to the latest version.
* Remove the New Relic Azure site extension, this uninstalls the agent
* Re-install the latest version of the New Relic Azure site extension using [these installation instructions](/install/dotnet/?deployment=azure&azure=azuresiteextension), which installs the latest version of the agent.
* Restart the web app to start the updated agent.
</Collapser>
</CollapserGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,18 +52,18 @@ Consider a query that filters results based on a `countryCode` variable. If you

Original query:

```sql
FROM PageAction
SELECT count(*) AS 'views'
WHERE countryCode IN ({{countryCode}}) and appName = 'Test App' FACET countryCode
```
```sql
FROM PageAction
SELECT count(*) AS 'views'
WHERE countryCode IN ({{countryCode}}) AND appName = 'Test App' FACET countryCode
```

Query with an excluded variable:

```sql
FROM PageAction
SELECT count(*) AS 'views'
WHERE true and appName = 'Test App' FACET countryCode
FROM PageAction
SELECT count(*) AS 'views'
WHERE true AND appName = 'Test App' FACET countryCode
```

This feature is particularly useful when:
Expand All @@ -77,7 +77,7 @@ Limitations on include variable:

* When used in FACET cases, the condition is replaced with true and converts it to an always-true condition.

* When used in other contexts like functions or with the SELECT statement, you'll get the following error: `"Unknown function Disable_variable()"`. This is because the disable variable function isn't implemented for these specific cases yet.
* When used in other contexts like functions or with the `SELECT` statement, you'll get the following error: `"Unknown function Disable_variable()"`. This is because the disable variable function isn't implemented for these specific cases yet.

## Requirements and limitations [#requirements]

Expand All @@ -92,7 +92,7 @@ Important points to note about adding a query:
* The variable generates a string value.

* To help you when you're creating a query, there's a color code:
* Clauses, `from`, `select`, `facet`, and `where`, are in pink.
* Clauses, `FROM`, `SELECT`, `FACET`, and `WHERE`, are in pink.
* Identifiers are in black.
* Functions are in blue.
* Strings are in green.
Expand Down Expand Up @@ -203,7 +203,7 @@ First, you'll define a template variable. This is the variable that you'll use i
</td>

<td>
Write here your query using `uniques (attribute)`.
Write here your query using `uniques(attribute)`.
</td>
</tr>

Expand Down Expand Up @@ -306,7 +306,7 @@ First, you'll define a template variable. This is the variable that you'll use i

Notice that these are the NRQL clauses that will accept template variables as values: `SELECT`, `FROM`, `FACET`, `ORDER BY` and `WHERE`.

Instead, the following list of NRQL clauses will not accept template variables as arguments: `AS`, `COMPARE WITH`, `LIMIT`, `OFFSET`, `SINCE`, `SLIDE BY`, `TIMESERIES`, `UNTIL` and `WITH...`.
Instead, the following list of NRQL clauses will not accept template variables as arguments: `AS`, `COMPARE WITH`, `LIMIT`, `OFFSET`, `SINCE`, `SLIDE BY`, `TIMESERIES`, `UNTIL` and `WITH`....

5. Click <DNT>**Save**</DNT>

Expand All @@ -332,7 +332,7 @@ You can use almost any NRQL query as long as it returns a list of values. For th
With [`uniques`](/docs/nrql/nrql-syntax-clauses-functions/#func-uniques):

```sql
From PageAction select uniques(countryCode)
FROM PageAction SELECT uniques(countryCode)
```

```sql
Expand All @@ -343,8 +343,8 @@ With [`uniques`](/docs/nrql/nrql-syntax-clauses-functions/#func-uniques):
With [`keyset`](/docs/nrql/nrql-syntax-clauses-functions/#keyset):

```sql
-- with `keyset`, you'll get a list with all of the attributes from the table you're querying from
From PageAction select keyset() SINCE 1 day ago
-- with `keyset`, you'll get a list with all of the attributes from the table you're querying from
FROM PageAction SELECT keyset() SINCE 1 day ago
```

Keep in mind that nested variables are not supported as there can't be variables within variables.
Expand Down Expand Up @@ -396,7 +396,8 @@ Here are some different types of template variable implementations.
Here's an example of a query that uses two template variables. Note that this assumes the `countryCode` and `city` template variables would have already been created and that they have a single value.

```sql
SELECT countryCode, city FROM PageAction WHERE countryCode = {{countryCode}} and city = {{city}}
SELECT countryCode, city FROM PageAction
WHERE countryCode = {{countryCode}} AND city = {{city}}
```

<img
Expand All @@ -408,7 +409,8 @@ Here are some different types of template variable implementations.
If you have multiple values for your variables, such as `Chicago`, `New York`, `Paris` for your `city` variable, you need to use `IN`:

```sql
SELECT countryCode, city FROM PageAction WHERE countryCode IN ({{countryCode}}) and city IN ({{city}})
SELECT countryCode, city FROM PageAction
WHERE countryCode IN ({{countryCode}}) AND city IN ({{city}})
```
</Collapser>

Expand All @@ -418,14 +420,14 @@ Here are some different types of template variable implementations.
>
Using variables and [regex](/docs/query-your-data/nrql-new-relic-query-language/get-started/nrql-syntax-clauses-functions/#func-capture), you can create a filter, provided you're sure that a part of the filter is fixed.

You need to use this partial match if you want to use `like`.
You need to use this partial match if you want to use `LIKE`.

Let's say you want to filter by release version. The query returns something like: `release-1234`.

You can create a variable using [`aparse`](/docs/query-your-data/nrql-new-relic-query-language/get-started/nrql-syntax-clauses-functions/#func-aparse) to parse the version number:

```sql
SELECT uniques(aparse(platformVersion , 'release-*')) FROM PageView
SELECT uniques(aparse(platformVersion, 'release-*')) FROM PageView
```

<img
Expand All @@ -438,7 +440,8 @@ Here are some different types of template variable implementations.
Then create a widget with the following query:

```sql
SELECT count(*) FROM PageAction WHERE aparse(platformVersion, 'release-*') IN ({{releaseversion}}) facet platformVersion
SELECT count(*) FROM PageAction
WHERE aparse(platformVersion, 'release-*') IN ({{releaseversion}}) FACET platformVersion
```

<img
Expand All @@ -450,7 +453,8 @@ Here are some different types of template variable implementations.
Or if you prefer, you could use the [`capture`](/docs/query-your-data/nrql-new-relic-query-language/get-started/nrql-syntax-clauses-functions/#func-capture) command:

```sql
SELECT count(*) FROM PageAction WHERE capture(platformVersion, r'release-(?P<platformVersion>\d+)') IN ({{releaseversion}}) Facet platformVersion
SELECT count(*) FROM PageAction
WHERE capture(platformVersion, r'release-(?P<platformVersion>\d+)') IN ({{releaseversion}}) FACET platformVersion
```

<img
Expand Down Expand Up @@ -498,7 +502,7 @@ Here are some different types of template variable implementations.
id="variables-dynamic-grouping"
title={<>Use variable <InlineCode>facet</InlineCode> with a NRQL query</>}
>
You can create a variable of type NRQL with a string output format and use it after a `facet` clause to group by different values.
You can create a variable of type NRQL with a string output format and use it after a `FACET` clause to group by different values.

For example, you might create a variable named `{{userAgentName}}` that would look like:

Expand All @@ -516,7 +520,8 @@ Here are some different types of template variable implementations.
Then you'd create a widget with the following query:

```sql
SELECT count(*) FROM PageAction WHERE userAgentName={{userAgentName}} FACET userAgentName
SELECT count(*) FROM PageAction
WHERE userAgentName={{userAgentName}} FACET userAgentName
```

<img
Expand Down Expand Up @@ -603,7 +608,7 @@ Here are some different types of template variable implementations.
id="ignore-time-picker"
title="Use ignore time picker option"
>
By default the “ignore time picker” option is enabled, meaning that the query is always run using the default 1 `HOUR` time range value, even if the time picker in the dashboard has a different value selected (ex. 5 minutes, 3 hours, etc). The exception for that case is when the query has an explicit time range set with a `SINCE` clause, like for example:
By default the “ignore time picker” option is enabled, meaning that the query is always run using the default `1 hour` time range value, even if the time picker in the dashboard has a different value selected (ex. `5 minutes`, `3 hours`, etc). The exception for that case is when the query has an explicit time range set with a `SINCE` clause, like for example:

```sql
SELECT uniques(eventId)
Expand All @@ -613,7 +618,7 @@ Here are some different types of template variable implementations.

The results will be in the range of the last 5 minutes.

When the ignore time picker option is turned off, the query will run with the value selected in the time picker. For example, if you set the time picker to 30 minutes, such as in the screenshot below, in the form for editing the variables, the "ignore time picker" field will set to off.
When the "ignore time picker" option is turned off, the query will run with the value selected in the time picker. For example, if you set the time picker to 30 minutes, such as in the screenshot below, in the form for editing the variables, the "ignore time picker" field will set to off.

<img
title="Example time picker"
Expand Down
Loading
Loading