Knowledge Base

cancel
Showing results for 
Search instead for 
Did you mean: 

How do I integrate Microsoft Teams with AppDynamics for alerts?

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
Version history
Revision #:
5 of 5
Last update:
‎11-09-2020 04:01 PM
Updated by:
 
Labels (1)


Found this article helpful? Click the Thumbs Up button.
Have an additional comment? Post it below.
Comments

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

@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 

@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

 

@Tes.Akinsipe  did you try it yet ? 

@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?

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.

@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

@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 ?