cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Islam.Hemdan
AppDynamics Team (Retired)

What are the steps to integrate Microsoft Teams to receive AppDynamics alerts?

 

Table of Contents

  1. Prepare Microsoft Teams
  2. Prepare AppDynamics HTTP alerts
  3. Complete the integration 

 

Prepare Microsoft Teams

  1. In Microsoft Teams, create a new team and note its name. This is the team that will receive AppDynamics events notifications.

  2. Go to Apps, and search for “webhook”

  3. Click the utility Incoming Webhook, then click Add to a team.

  4. From the drop-down, choose the team you created above and click Install.

  5. Set up the connector and choose a name for the webhook.

  6. Copy the generated URL, which will be something like this:
    https://outlook.office.com/webhook/37226f5b-90ac-40f8-a466- 83eec544c851@ca16bbdf-ec49-4885-b852- 6cdb00bef55c/IncomingWebhook/aa2649914f264baca894ad45728cdb84/3d9bab89 -1d3f-401b-9c0d-0daeb112f47b

Prepare AppDynamics

  1. In AppDynamics, create a new HTTP template (Alert & Respond > HTTP Request Templates > New)

  2. Set these Request URL parameters:

Method: POST
Raw URL: (paste the generated URL from step 6 above)
URL Encoding: UTF-8

  1. Scroll down to Payload (choose MIME type:Application/JSON, Encoding :UTF-8) and insert the following script: 
    {
    "@context": "http://schema.org/extensions",
    "@type": "MessageCard",
    "title": "Event Detected for ${latestEvent.application.name} on node
    ${latestEvent.node.name}",
    "text": "${latestEvent.displayName} - ${latestEvent.eventTime} :
    ${latestEvent.eventMessage} ",
    "themeColor": "#if($latestEvent.severity == "INFO")0075FF#elseif($latestEvent.severity ==
    "WARN" )ff9500#elseif($latestEvent.severity == "ERROR" )ff3b30#end", "sections": [
    {
    "activityTitle": "Severity: $latestEvent.severity",
    "images": [ {
    "image":"${latestEvent.severityImage.deepLink}"
    } ]
    }, {
    "value": "[here](${latestEvent.deepLink})" },
    {
    "facts": [
    {
    "name": "View Event",
    "value": "[click here](${latestEvent.deepLink})",
    },
    {
    "name": "Open Controller",
    "value": "[click here](${controllerUrl} )" }
    ] },
    ] }

  2. Click Save

 

Complete the Integration

  1. Generate some events on AppDynamics, then return to Microsoft Teams and check the Team’s notifications.

  2. You should see that the events you generated have been received.
    Xnip2020-04-12_19-25-42.png
Comments
Tes.Akinsipe
Discoverer

This is great. I tried your steps but failed with the error below. Our controller is Onprem and all outbound traffic needs to go through a webproxy. Is there a way to specify my webproxy details (host and port) for the controller? @Islam.Hemdan 

 

Error Message: Connect to outlook.office.com:443 [outlook.office.com/13.107.18.11] failed: connect timed out

Islam.Hemdan
AppDynamics Team (Retired)

@Tes.Akinsipe  For now, there is no option for web proxy . However, I will suggest to create a reverse proxy URL for webhook url . And let the reverse proxy handle the routing to webhook url. In that case, you will access Routing URL directly from AppDynamics server without a web client proxy and the created "reverse proxy" will do the job. I have not tried this but should work 

Tes.Akinsipe
Discoverer

@Islam.Hemdan I will check with our folks here if we have or can use reverse proxy. How about setting webproxy settings at host level. This is a RHEL server, so i am thinking 

echo "http_proxy=http://proxy.example.com:3128/" > /etc/environment

 

Islam.Hemdan
AppDynamics Team (Retired)

@Tes.Akinsipe  did you try it yet ? 

Tes.Akinsipe
Discoverer

@Islam.Hemdan I haven't gotten a chance to try this 

echo "http_proxy=http://proxy.example.com:3128/" > /etc/environment

But i tried adding the proxy settings so jvm options in domain.xml but no luck.

I will try setting it at the environment level at some point and will let you know. I do think AppDynamics should seriously consider adding this setting ASAP for Onprem controllers as we are having more needs for AppD to talk to external SaaS based platforms and we need to go through webproxy as we do not have a reverse proxy server set up. Can you please see to this?

Claudia.Landivar
Community Manager

Hi, @Tes.Akinsipe

I recommend you check out the Idea Exchange to give your recommendations the right exposure. There, you can "share, vote, and discuss product enhancements that need innovative thinking. Once an idea is submitted, customers are able to vote and comment on each other's ideas."

This article offers an overview of how to participate in the Idea Exchange, from submittal to discussion and voting, as well as what to expect from the process. 

Kind regards,
Claudia Landivar
Community Manager & Editor

 

C: @Islam.Hemdan 

Have there been any reports of the above payload sometimes not working? Specifically, when it hits the logic to color the message cards based off event severity? We copied this exact payload and it seems like it only works for informational cards. If it's something that is a warning or error we get a 400 bad request. We are using SaaS so we don't have an easy way to see what actually hits the controller to see what is malformed. We put the payload through a apache velocity syntax checker and everything seems to check out okay besides some inconsistencies with spacing where that logic gets applied.

Islam.Hemdan
AppDynamics Team (Retired)

@Julian.Caraballo , can you check for icons warning or critical , do a search on files across AppD folder. It should work for any alerts . 

 

AD_icon_logo.png
PI_WARNING_small.png
PI_CRITICAL_small.png

Islam.Hemdan
AppDynamics Team (Retired)

@Julian.Caraballo I just noticed that you are using SAAS , can you raise a case with support for this ? 

 

Also , do a test for HTTP template for critical alerts and share test output please ? 

Chetan.Nekkanti
AppDynamics Team

Proxy implementation for on-premise installations is available since 20.8 versions

 

Ref docs on how to enable proxy for external 3rd party integrations using Http Request Actions

https://docs.appdynamics.com/21.8/en/appdynamics-essentials/alert-and-respond/actions/configure-http...

I use SaaS controller and I did the below change to resolve the error I am getting.

In the themeColor property, inside the if-else statement, change double quote (") with single quote (') around the severity value. 

"themeColor": "#if($latestEvent.severity == 'INFO') 0075FF #elseif($latestEvent.severity == 'WARN') ff9500 #elseif($latestEvent.severity == 'ERROR') ff3b30 #end",

Claudia.Landivar
Community Manager

  @Ali Erdem.Solmaz , thanks for sharing what works! This communication helps everyone!  

Version history
Last update:
‎11-09-2020 04:01 PM
Updated by: