Send alerts to Microsoft Teams Using Elastic Stack

In this article we will learn how to Send Microsoft Teams Alert Using Elastic Stack. Monitoring systems generate critical alerts that need immediate attention. While Kibana provides powerful visualization and alerting capabilities, integrating it with collaboration tools like Microsoft Teams ensures that the right people get notified in real time. Today, we’ll walk through setting up Kibana to send alerts directly to a Microsoft Teams channel using webhook connectors, keeping your team informed without switching platforms.

Prerequisites

  • AWS Account with Ubuntu 24.04 LTS EC2 Instance.
  • At least 2 CPU cores and 4 GB of RAM for smooth performance.
  • Docker and Docker Compose installed.

Step #1:Install Docker and Docker Compose

First update the package list.

sudo apt update
Send alerts to Microsoft Teams Using Elastic Stack 1

If Docker and Docker Compose are not already installed, you can install them using the following command.

sudo apt install -y docker.io docker-compose
Send alerts to Microsoft Teams Using Elastic Stack 2
  • docker.io: Installs the Docker engine.
  • docker-compose: Installs Docker Compose for managing multi-container applications.

Step #2:Create Docker Compose File

Create a Docker Compose YAML file to define the Elastic Stack services.

sudo nano docker-compose.yml
Send alerts to Microsoft Teams Using Elastic Stack 3

Paste the following content into the file.

version: "3"
services:
  elasticsearch:
    image: "docker.elastic.co/elasticsearch/elasticsearch:8.17.2"
    environment:
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
      - "discovery.type=single-node"
    ports:
      - "9200:9200"
    volumes:
      - elasticsearch_data:/usr/share/elasticsearch/data

  kibana:
    image: "docker.elastic.co/kibana/kibana:8.17.2"
    ports:
      - "5601:5601"

  filebeat:
    image: "docker.elastic.co/beats/filebeat:8.17.2"
    user: root
    volumes:
      - /MY_WORKDIR/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
      - /var/lib/docker:/var/lib/docker:ro
      - /var/run/docker.sock:/var/run/docker.sock

  metricbeat:
    image: docker.elastic.co/beats/metricbeat:8.17.2
    user: root
    volumes:
      - /MY_WORKDIR/metricbeat.yml:/usr/share/metricbeat/metricbeat.yml:ro
      - /var/run/docker.sock:/var/run/docker.sock
      - /sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro
      - /proc:/hostfs/proc:ro
      - /:/hostfs:ro

volumes:
  elasticsearch_data:
Observability Dashboard Overview in Elastic Stack (Logs and Infrastructure) – Part 2 4

Step #3:Prepare Configuration Files For Beats

Create a working directory for your configuration files.

sudo mkdir /MY_WORKDIR
Send alerts to Microsoft Teams Using Elastic Stack 4

Inside the directory create a filebeat.yml file.

sudo nano /MY_WORKDIR/filebeat.yml
Send alerts to Microsoft Teams Using Elastic Stack 5

Paste the following config in it.

filebeat.inputs:
- type: container
  paths:
    - '/var/lib/docker/containers/*/*.log'

processors:
- add_docker_metadata:
    host: "unix:///var/run/docker.sock"

- decode_json_fields:
    fields: ["message"]
    target: "json"
    overwrite_keys: true

output.elasticsearch:
  hosts: ["elasticsearch:9200"]
  indices:
    - index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"

logging.json: true
logging.metrics.enabled: false
Observability Dashboard Overview in Elastic Stack (Logs and Infrastructure) – Part 2 7

Create a metricbeat.yml file.

sudo nano /MY_WORKDIR/metricbeat.yml
Send alerts to Microsoft Teams Using Elastic Stack 6

Paste the following config in it.

metricbeat.modules:
- module: system
  metricsets:
    - cpu
    - memory
    - network
    - filesystem
    - process
    - process_summary
  enabled: true
  period: 10s
  processes: ['.*']
  hostfs: "/hostfs"

- module: docker
  metricsets:
    - container
    - cpu
    - diskio
    - healthcheck
    - info
    - memory
    - network
  hosts: ["unix:///var/run/docker.sock"]
  period: 10s
  enabled: true

output.elasticsearch:
  hosts: ["http://elasticsearch:9200"]

monitoring:
  enabled: true
Observability Dashboard Overview in Elastic Stack (Logs and Infrastructure) – Part 2 9

Step #4:Start the Elastic Stack using Docker Composer

Start the services using Docker Compose.

sudo docker-compose up -d
Send alerts to Microsoft Teams Using Elastic Stack 7

Verify that the containers are running.

sudo docker ps -a
Send alerts to Microsoft Teams Using Elastic Stack 8

Step #5:Set Password for Elastic User

Elasticsearch 8.x enables security by default. Reset the password for the elastic user using following command.

sudo docker exec -it ubuntu_elasticsearch_1 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -i
Send alerts to Microsoft Teams Using Elastic Stack 9

Update the Filebeat configuration to include the Elasticsearch credentials.

sudo nano /MY_WORKDIR/filebeat.yml
Send alerts to Microsoft Teams Using Elastic Stack 10

Add the username and password fields under output.elasticsearch.

output.elasticsearch:
  hosts: ["elasticsearch:9200"]
  username: "elastic"
  password: "devopshint"
  indices:
    - index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
Observability Dashboard Overview in Elastic Stack (Logs and Infrastructure) – Part 2 14

Save and exit the file.

Update the Metricbeat configuration to include the Elasticsearch credentials.

sudo nano /MY_WORKDIR/metricbeat.yml
Send alerts to Microsoft Teams Using Elastic Stack 11

Add the username and password fields under output.elasticsearch.

output.elasticsearch:
  hosts: ["elasticsearch:9200"]
  username: "elastic"
  password: "devopshint"
Observability Dashboard Overview in Elastic Stack (Logs and Infrastructure) – Part 2 16

Restart the containers. First shut down the containers.

sudo docker-compose down
Send alerts to Microsoft Teams Using Elastic Stack 12

Then start them again.

sudo docker-compose up -d
Send alerts to Microsoft Teams Using Elastic Stack 13

Step #6:Secure Kibana with Service Token

To securely connect Kibana to Elasticsearch, generate a service account token.

curl -u elastic:devopshint -X POST "http://localhost:9200/_security/service/elastic/kibana/credential/token/my-token"; echo
Send alerts to Microsoft Teams Using Elastic Stack 14

Save the value field from the response.

Generate an encryption key.

openssl rand -hex 32
Send alerts to Microsoft Teams Using Elastic Stack 15

Save the generated encryption key.

Update the docker-compose.yml file to include the service account token and encryption keys.

sudo nano docker-compose.yml
Send alerts to Microsoft Teams Using Elastic Stack 16

Add the following environment variables to the kibana service.

kibana:
  image: "docker.elastic.co/kibana/kibana:8.17.2"
  ports:
    - "5601:5601"
  environment:
    - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
    - ELASTICSEARCH_SERVICEACCOUNTTOKEN=AAEAAWVsYXN0aWMva2liYW5hL215LXRva2VuOnEwby1YUGlyU1JhZnFxaEozS012aVE
    - XPACK_SECURITY_ENCRYPTIONKEY=2145ee3c3cc4e7853c77e96a7cd7e0fe102ea5ffa948e368132b525af018db0c
    - XPACK_ENCRYPTEDSAVEDOBJECTS_ENCRYPTIONKEY=2145ee3c3cc4e7853c77e96a7cd7e0fe102ea5ffa948e368132b525af018db0c
    - XPACK_REPORTING_ENCRYPTIONKEY=2145ee3c3cc4e7853c77e96a7cd7e0fe102ea5ffa948e368132b525af018db0c
    - XPACK_SECURITY_SECURE_COOKIES=true
  depends_on:
    - elasticsearch
Observability Dashboard Overview in Elastic Stack (Logs and Infrastructure) – Part 2 23

Save and exit the file.

Restart the services.

sudo docker-compose down
Send alerts to Microsoft Teams Using Elastic Stack 17
sudo docker-compose up -d
Send alerts to Microsoft Teams Using Elastic Stack 18

Verify that the containers are running.

sudo docker ps -a
Send alerts to Microsoft Teams Using Elastic Stack 19

Step #7:Access Kibana Observability

Open your browser and navigate to http://<EC2-PUBLIC-IP>:5601. Log in using the elastic username and the password you set earlier.

Send alerts to Microsoft Teams Using Elastic Stack 20

Click on Explore on my own.

Observability Dashboard Overview in Elastic Stack (Logs and Infrastructure) – Part 2 28

Go to Observability.

Send alerts to Microsoft Teams Using Elastic Stack 21

You will see the Overview there.

Send alerts to Microsoft Teams Using Elastic Stack 22

Now lets go to Infrastructure Inventory to see the metrics.

Send alerts to Microsoft Teams Using Elastic Stack 23

Step #8:Create an Alert

Next lets set up alert for that go to Alerts as shown below and click on Manage Rules.

Send alerts to Microsoft Teams Using Elastic Stack 24

Click on Create rule to create a rule for alert.

Send alerts to Microsoft Teams Using Elastic Stack 25

We will create a Metric threshold rule.

Send alerts to Microsoft Teams Using Elastic Stack 26

Write a Name for your rule like Microsoft Teams Alert. As conditions as

  • WHEN Average
  • OF system.cpu.total.pct
  • IS ABOVE 0.9 %

And click on Save.

Send alerts to Microsoft Teams Using Elastic Stack 27

You can see the rule is created successfully. Now go back to Alerts.

Send alerts to Microsoft Teams Using Elastic Stack 28

As you can see below alert is triggered.

Send alerts to Microsoft Teams Using Elastic Stack 29

Step #9:Create a Microsoft Teams Channel

Open your Microsoft Teams Account.

Send alerts to Microsoft Teams Using Elastic Stack 30

Go to Teams . Then Click on Join or create team from the top-right corner. After this click on Create team.

Send alerts to Microsoft Teams Using Elastic Stack 31

Select Other as a template to create a team.

Send alerts to Microsoft Teams Using Elastic Stack 32

Click on Use this template. It will create a General Channel.

Send alerts to Microsoft Teams Using Elastic Stack 33

Then we will create a Private team.

Send alerts to Microsoft Teams Using Elastic Stack 34

Enter the Team name like ELK Alerts and add a Description like Focused on Monitoring and Alerting. Then Click on Create.

Send alerts to Microsoft Teams Using Elastic Stack 35

As you can see our team “ELK Alerts” is created.

Send alerts to Microsoft Teams Using Elastic Stack 36

Now lets create a channel for our alerts, for that click “” next to the ELK Alerts and select Add channel option.

Send alerts to Microsoft Teams Using Elastic Stack 37

Enter the Channel name like MS Teams Alert. Choose a channel type as Standard. Then click on Create.

Send alerts to Microsoft Teams Using Elastic Stack 38

Step #10:Configure Microsoft Teams Alert in Kibana

As you can see our MS Teams channel is created.

Send alerts to Microsoft Teams Using Elastic Stack 39

Now go to Apps.

Send alerts to Microsoft Teams Using Elastic Stack 40

Search for Incoming Webhooks and click on it.

Send alerts to Microsoft Teams Using Elastic Stack 41

Click on Add to add it in Microsoft Teams.

Send alerts to Microsoft Teams Using Elastic Stack 42

Then Select a channel MS Teams Alert which we have created to use the app. And click on Go.

Send alerts to Microsoft Teams Using Elastic Stack 43

Now To set up an Incoming Webhook, you need to provide a name so give it like Kibana Alerts. Click on Create.

Send alerts to Microsoft Teams Using Elastic Stack 44

Scroll down and you will see the URL generate. Copy it cause we will use it in Kibana Connector.

Send alerts to Microsoft Teams Using Elastic Stack 45

Now go back to kibana dashboard and select the Stack Management.

Send alerts to Microsoft Teams Using Elastic Stack 46

Go to the Connectors.

Send alerts to Microsoft Teams Using Elastic Stack 47

Click on Create connector.

Send alerts to Microsoft Teams Using Elastic Stack 48

To set up an Slack connector you need to upgrade your license so go to Manage license.

Send alerts to Microsoft Teams Using Elastic Stack 49

Select Start trial to Start a 30-day trial.

Send alerts to Microsoft Teams Using Elastic Stack 50

Click on Start my trial.

Send alerts to Microsoft Teams Using Elastic Stack 51

Now you can see Our Trial license is active.

Send alerts to Microsoft Teams Using Elastic Stack 52

Now again go back to connectors and select Microsoft Teams as a connector.

Send alerts to Microsoft Teams Using Elastic Stack 53

Enter the Connector name like MS ELK Connector. And in Connector settings Enter the webhook URL which we have copied. Click on Save and test.

Send alerts to Microsoft Teams Using Elastic Stack 54

You need to enter the message CRITICAL: High CPU Usage !! then Run the Test.

Send alerts to Microsoft Teams Using Elastic Stack 55

you will see the Test was successful message.

Send alerts to Microsoft Teams Using Elastic Stack 56

Now go back to Microsoft Teams you will see the alert as shown below.

Send alerts to Microsoft Teams Using Elastic Stack 57

Now go back to MS Teams Alerts and Click on Action – Edit rule.

Send alerts to Microsoft Teams Using Elastic Stack 58

Select Microsoft Teams as a Connector.

Send alerts to Microsoft Teams Using Elastic Stack 59

Click on Save.

Send alerts to Microsoft Teams Using Elastic Stack 60

You can see in below image our action has been added.

Send alerts to Microsoft Teams Using Elastic Stack 61

Now when alert is triggered you will get the message in format specified in Microsoft Teams Alert Connector. Shown below.

Send alerts to Microsoft Teams Using Elastic Stack 62

Conclusion:

Now that your Elastic Stack alerts are connected to Microsoft Teams, your team will be instantly notified when an issue arises. This setup helps you respond to problems faster and keep your systems healthy. You no longer have to rely only on dashboards or emails to catch critical issues. Whether it’s a spike in error logs or an infrastructure anomaly, Teams alerts ensure that the right people are notified instantly. With this simple integration, your alerts go straight to your collaboration space. It saves time and improves teamwork.

Related Articles:

Send Email Alerts Using Elastic Stack

Observability Dashboard Overview in Elastic Stack

Observability Dashboard Overview in Elastic Stack (Logs and Infrastructure) – Part 2

Reference:

Elastic Stack official page

Prasad Hole

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Share via
Copy link
Powered by Social Snap