<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community:  Ganiyat Olagoke Adebayo</title>
    <description>The latest articles on DEV Community by  Ganiyat Olagoke Adebayo (@adebayo_ganiyatoladunjoy).</description>
    <link>https://dev.to/adebayo_ganiyatoladunjoy</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3584704%2F2a2dcf71-5340-4039-8c1b-69395fed3081.jpg</url>
      <title>DEV Community:  Ganiyat Olagoke Adebayo</title>
      <link>https://dev.to/adebayo_ganiyatoladunjoy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adebayo_ganiyatoladunjoy"/>
    <language>en</language>
    <item>
      <title>End-to-End Monitoring in Azure: From Logs to Alerts</title>
      <dc:creator> Ganiyat Olagoke Adebayo</dc:creator>
      <pubDate>Sat, 14 Feb 2026 21:03:26 +0000</pubDate>
      <link>https://dev.to/adebayo_ganiyatoladunjoy/end-to-end-monitoring-in-azure-from-logs-to-alerts-40oh</link>
      <guid>https://dev.to/adebayo_ganiyatoladunjoy/end-to-end-monitoring-in-azure-from-logs-to-alerts-40oh</guid>
      <description>&lt;p&gt;Monitoring is essential for maintaining application reliability, performance, and security in the cloud.&lt;br&gt;
With Azure Monitor, organizations can collect telemetry from applications, virtual machines, and networks, analyze it centrally, and trigger alerts when issues arise.&lt;/p&gt;

&lt;p&gt;This walkthrough follows a practical implementation that moves from creating a Log Analytics workspace to configuring full monitoring and alerting. However, before delving into the project proper, we need to prepare the environment. &lt;/p&gt;


&lt;h1&gt;
  
  
  Environment Preparation for Azure Monitor Project (Step-by-Step)
&lt;/h1&gt;

&lt;p&gt;Before configuring monitoring, we must deploy the infrastructure that will generate telemetry.&lt;br&gt;
This setup includes resource groups, security identities, virtual machines, and web applications.&lt;/p&gt;

&lt;p&gt;All resources in this guide are deployed using the Azure portal.&lt;/p&gt;


&lt;h1&gt;
  
  
  Step 1 – Create the Resource Group
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;In the portal search bar, type &lt;strong&gt;Resource groups&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3tisnil9lir3gx36l8hp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3tisnil9lir3gx36l8hp.png" alt=" " width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0beocja8kco645clargo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0beocja8kco645clargo.png" alt=" " width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select your &lt;strong&gt;Subscription&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Enter &lt;strong&gt;rg-alpha&lt;/strong&gt; as the name.&lt;/li&gt;
&lt;li&gt; Choose &lt;strong&gt;East US&lt;/strong&gt; as the region.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvrpold36dme5gwktnc5k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvrpold36dme5gwktnc5k.png" alt=" " width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;Review + Create&lt;/strong&gt; → &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcp02uoqag955mmikl3jz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcp02uoqag955mmikl3jz.png" alt=" " width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  Result
&lt;/h3&gt;

&lt;p&gt;A container is available to hold all lab resources.&lt;/p&gt;




&lt;h1&gt;
  
  
  Step 2 – Create the App Log Examiners Security Group
&lt;/h1&gt;

&lt;p&gt;This group will later be granted permissions to review monitoring data.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Search for &lt;strong&gt;Microsoft Entra ID&lt;/strong&gt; (Azure Active Directory).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frowdfjawk8f2nnrdop31.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frowdfjawk8f2nnrdop31.png" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Groups&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft6drk4ysipmk08jfsvvh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft6drk4ysipmk08jfsvvh.png" alt=" " width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;New group&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0jbub6fzawkb787akl7c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0jbub6fzawkb787akl7c.png" alt=" " width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Configure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Group type: &lt;strong&gt;Security&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Group name: &lt;strong&gt;App Log Examiners&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Description: &lt;strong&gt;App Log Examiners&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Create&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fut26lrvr2b80m2neo0hm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fut26lrvr2b80m2neo0hm.png" alt=" " width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  Result
&lt;/h3&gt;

&lt;p&gt;An identity group exists for access delegation.&lt;/p&gt;


&lt;h1&gt;
  
  
  Step 3 – Deploy and Configure Windows VM (WS-VM1)
&lt;/h1&gt;

&lt;p&gt;This VM will host IIS and generate logs for monitoring.&lt;/p&gt;


&lt;h2&gt;
  
  
  Create the VM
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; Search &lt;strong&gt;Virtual Machines&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Click &lt;strong&gt;Create&lt;/strong&gt; → &lt;strong&gt;Azure virtual machine&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuomgakju0nxnrheini29.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuomgakju0nxnrheini29.png" alt=" " width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Basics configuration:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Resource group: &lt;strong&gt;rg-alpha&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;VM name: &lt;strong&gt;WS-VM1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Region: &lt;strong&gt;East US&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdmgf0v3c6lp4g5eh030q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdmgf0v3c6lp4g5eh030q.png" alt=" " width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Availability: No infrastructure redundancy&lt;/li&gt;
&lt;li&gt;Security type: Standard&lt;/li&gt;
&lt;li&gt;Image: &lt;strong&gt;Windows Server 2022 Datacenter: Azure Edition&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5qxds1z9oywc4biwswq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5qxds1z9oywc4biwswq.png" alt=" " width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Size: &lt;strong&gt;Standard_D4s_v3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Username: &lt;strong&gt;prime&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Password: your secure password&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbjkwu3fpx5ms7gl73m4i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbjkwu3fpx5ms7gl73m4i.png" alt=" " width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inbound port: &lt;strong&gt;RDP (3389)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgp19k54gi5woevy639yr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgp19k54gi5woevy639yr.png" alt=" " width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;Review + Create&lt;/strong&gt; → &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbximv8c70w7ksg112e7h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbximv8c70w7ksg112e7h.png" alt=" " width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Restrict RDP access
&lt;/h2&gt;

&lt;p&gt;After deployment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Open the VM → &lt;strong&gt;Networking&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Select the RDP rule.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkkhwhx9n6s8krhp3sovl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkkhwhx9n6s8krhp3sovl.png" alt=" " width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Change &lt;strong&gt;Source&lt;/strong&gt; to &lt;strong&gt;My IP address&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feqhvfx34ru99c2wc1gko.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feqhvfx34ru99c2wc1gko.png" alt=" " width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Save.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fghgttcb67d0czxr3cxwe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fghgttcb67d0czxr3cxwe.png" alt=" " width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Add HTTP inbound rule
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; From Networking → &lt;strong&gt;Add inbound port rule&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frclmv4hk8kthdkiklqhi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frclmv4hk8kthdkiklqhi.png" alt=" " width="800" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Configure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Source: Any&lt;/li&gt;
&lt;li&gt;Service: HTTP&lt;/li&gt;
&lt;li&gt;Action: Allow&lt;/li&gt;
&lt;li&gt;Priority: 310&lt;/li&gt;
&lt;li&gt;Name: AllowAnyHTTPInbound&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Add&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmak5cr6doy71vl0us8zc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmak5cr6doy71vl0us8zc.png" alt=" " width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpqqx1ghm1sz2pu4imjzs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpqqx1ghm1sz2pu4imjzs.png" alt=" " width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Connect to the VM
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; Open the VM → &lt;strong&gt;Connect&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Under &lt;strong&gt;Native RDP&lt;/strong&gt;, choose &lt;strong&gt;Download RDP file&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnr2zpl3q0w86cn43k3mr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnr2zpl3q0w86cn43k3mr.png" alt=" " width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Open it.&lt;/li&gt;
&lt;li&gt; Username: &lt;code&gt;.\prime&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt; Enter your password.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgul4k33wdbav4kz1le22.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgul4k33wdbav4kz1le22.png" alt=" " width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fel8gglo9gfj4z6dq46rz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fel8gglo9gfj4z6dq46rz.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Install IIS
&lt;/h2&gt;

&lt;p&gt;Inside the VM:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Right-click &lt;strong&gt;Start&lt;/strong&gt; → &lt;strong&gt;Windows PowerShell (Admin)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Run as Admin:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyu2gyw96guhj2dhi33e8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyu2gyw96guhj2dhi33e8.png" alt=" " width="800" height="435"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Install-WindowsFeature&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Web-Server&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-IncludeAllSubFeature&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-IncludeManagementTools&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnc8gnqjszfujgbq5dqc0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnc8gnqjszfujgbq5dqc0.png" alt=" " width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Deploy sample website
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;c:\inetpub\wwwroot\&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;wget&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://raw.githubusercontent.com/Azure-Samples/html-docs-hello-world/master/index.html&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-OutFile&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;index.html&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcbtl1k3mxeqqblb3pxje.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcbtl1k3mxeqqblb3pxje.png" alt=" " width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3n4pq6gt81m3iaxobxp4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3n4pq6gt81m3iaxobxp4.png" alt=" " width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhib8ys1nyldsbnn1xitf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhib8ys1nyldsbnn1xitf.png" alt=" " width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Result
&lt;/h3&gt;

&lt;p&gt;A Windows web server is now producing logs.&lt;/p&gt;







&lt;h1&gt;
  
  
  Step 4 – Deploy Linux VM (Linux-VM2)
&lt;/h1&gt;

&lt;p&gt;This machine will be used later for network and monitoring configuration.&lt;/p&gt;




&lt;h2&gt;
  
  
  Create the VM
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; Go to &lt;strong&gt;Virtual Machines&lt;/strong&gt; → &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Basics:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Resource group: &lt;strong&gt;rg-alpha&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Name: &lt;strong&gt;Linux-VM2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Region: East US&lt;/li&gt;
&lt;li&gt;Image: &lt;strong&gt;Ubuntu Server 20.04&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhsxwycf1bn4n9t6ks7d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvhsxwycf1bn4n9t6ks7d.png" alt=" " width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Size: &lt;strong&gt;Standard_D2s_v3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Authentication: Password&lt;/li&gt;
&lt;li&gt;Username: &lt;strong&gt;Prime&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhw9v2dbm3fnysq0bmvbr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhw9v2dbm3fnysq0bmvbr.png" alt=" " width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Public inbound ports: &lt;strong&gt;None&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Review and create.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkg43stu52ku1j01qtrw1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkg43stu52ku1j01qtrw1.png" alt=" " width="800" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb1rws7dso381gbpfj1cq.png" alt=" " width="800" height="424"&gt;
&lt;/h2&gt;




&lt;h2&gt;
  
  
  Install Network Watcher Agent
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Open the VM.&lt;/li&gt;
&lt;li&gt; Select &lt;strong&gt;Extensions + applications&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Click &lt;strong&gt;Add&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4kuyllsoxpb1ghgq02q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4kuyllsoxpb1ghgq02q.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Choose &lt;strong&gt;Network Watcher Agent for Linux&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy1cwgrz6ooo94btt1xnm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy1cwgrz6ooo94btt1xnm.png" alt=" " width="800" height="564"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Create.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj51aur6apbgddxnk7qcj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj51aur6apbgddxnk7qcj.png" alt=" " width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Result
&lt;/h3&gt;

&lt;p&gt;Linux VM ready for monitoring integration.&lt;/p&gt;







&lt;h1&gt;
  
  
  Step 5 – Deploy Web App with SQL Database
&lt;/h1&gt;

&lt;p&gt;This deployment provides application + database telemetry.&lt;br&gt;
Ensure that you’re signed into the Azure Portal.&lt;/p&gt;

&lt;p&gt;In your browser, open a new browser tab and navigate to &lt;a href="https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.web/web-app-sql-database" rel="noopener noreferrer"&gt;https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.web/web-app-sql-database&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Open the GitHub quickstart.&lt;/li&gt;
&lt;li&gt; Click &lt;strong&gt;Deploy to Azure&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F209yxuyyf9rjeaf92vz4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F209yxuyyf9rjeaf92vz4.png" alt=" " width="774" height="678"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjtrmd5802la8q2u245u4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjtrmd5802la8q2u245u4.png" alt=" " width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; If prompted, sign in.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Edit the template
&lt;/h2&gt;

&lt;p&gt;Select &lt;strong&gt;Edit template&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4kjly4loyeg6lhgfhut0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4kjly4loyeg6lhgfhut0.png" alt=" " width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7cvvp9jxrfzuw6tzvyuz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7cvvp9jxrfzuw6tzvyuz.png" alt=" " width="800" height="444"&gt;&lt;/a&gt;&lt;br&gt;
Delete lines 158–174 and the comma on line 157.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwlj7hywaschuw4164n9i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwlj7hywaschuw4164n9i.png" alt=" " width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fobu86h9pxa76v00qimy2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fobu86h9pxa76v00qimy2.png" alt=" " width="800" height="431"&gt;&lt;/a&gt;&lt;br&gt;
Click &lt;strong&gt;Save&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Provide parameters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Resource group: &lt;strong&gt;rg-alpha&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Region: East US&lt;/li&gt;
&lt;li&gt;SKU: F1&lt;/li&gt;
&lt;li&gt;SQL admin: prime&lt;/li&gt;
&lt;li&gt;Password: your secure password&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg152z5rspcmmbp4y52d6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg152z5rspcmmbp4y52d6.png" alt=" " width="800" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Create&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiz9t4zeczdnrrab5nbr5.png" alt=" " width="800" height="413"&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Result
&lt;/h3&gt;

&lt;p&gt;A web application backed by SQL is deployed.&lt;/p&gt;







&lt;h1&gt;
  
  
  Step 6 – Deploy Linux Web App
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt; Open the quickstart link.&lt;/li&gt;
&lt;li&gt; Click &lt;strong&gt;Deploy to Azure&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4t7o30ekau0tiikkzo78.png" alt=" " width="800" height="592"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Provide configuration
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Resource group: &lt;strong&gt;rg-alpha&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Region: East US&lt;/li&gt;
&lt;li&gt;Web app name: AzureLinuxAppXXXX&lt;/li&gt;
&lt;li&gt;SKU: S1&lt;/li&gt;
&lt;li&gt;Runtime: PHP 7.4&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fod08obgaj7wt3ktwgik8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fod08obgaj7wt3ktwgik8.png" alt=" " width="800" height="541"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Create&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femvku4k8bornyx2e26wo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Femvku4k8bornyx2e26wo.png" alt=" " width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F508lh5zovhel940b8ix1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F508lh5zovhel940b8ix1.png" alt=" " width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;







&lt;h1&gt;
  
  
  Environment Setup Complete
&lt;/h1&gt;

&lt;p&gt;At this point, your lab includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resource group&lt;/li&gt;
&lt;li&gt;Identity security group&lt;/li&gt;
&lt;li&gt;Windows IIS VM&lt;/li&gt;
&lt;li&gt;Linux VM&lt;/li&gt;
&lt;li&gt;Web app with SQL&lt;/li&gt;
&lt;li&gt;Linux web app&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These components will generate the telemetry required for Log Analytics, Application Insights, data collection rules, and alerts.&lt;/p&gt;







&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;The environment is now fully prepared to support centralized monitoring.&lt;br&gt;
The next phases will connect these resources to Azure Monitor, enable diagnostics, and implement alerting mechanisms.&lt;/p&gt;

&lt;p&gt;This preparation stage ensures realistic, production-style visibility across both PaaS and IaaS services.&lt;/p&gt;




&lt;h2&gt;
  
  
  Project Exercises
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Deploy Log Analytics&lt;/li&gt;
&lt;li&gt;Monitor web applications&lt;/li&gt;
&lt;li&gt;Configure monitoring for compute services&lt;/li&gt;
&lt;li&gt;Configure alerts&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each exercise builds on the previous one.&lt;/p&gt;







&lt;h1&gt;
  
  
  Step 1 – Deploy Log Analytics Workspace
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Create the workspace
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; Sign in to the Azure portal.&lt;/li&gt;
&lt;li&gt; In the search bar, type &lt;strong&gt;Log Analytics workspaces&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foahfrmdpj7ed7x8nl9cm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foahfrmdpj7ed7x8nl9cm.png" alt=" " width="800" height="442"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6d0slmbmshjgagjug768.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6d0slmbmshjgagjug768.png" alt=" " width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Choose your &lt;strong&gt;Subscription&lt;/strong&gt; and &lt;strong&gt;Resource Group&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Enter a &lt;strong&gt;Workspace name&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Select a &lt;strong&gt;Region&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwpi5rrptpws9zchxasru.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwpi5rrptpws9zchxasru.png" alt=" " width="800" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;Review + create&lt;/strong&gt; → &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbbny829jupo2o9uijo2x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbbny829jupo2o9uijo2x.png" alt=" " width="800" height="595"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqzkj764wq7hj6utmu4d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhqzkj764wq7hj6utmu4d.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;







&lt;h1&gt;
  
  
  Step 2 – Install and Configure the Azure Monitor Agent on Linux-VM Using a Data Collection Rule (DCR)
&lt;/h1&gt;

&lt;p&gt;Once the Linux VM is deployed, the next step is to enable monitoring by installing the &lt;strong&gt;Azure Monitor Agent&lt;/strong&gt; (AMA) and configuring a &lt;strong&gt;Data Collection Rule&lt;/strong&gt; (DCR) to send telemetry to the Log Analytics workspace.&lt;/p&gt;

&lt;p&gt;This ensures that performance data from the Linux VM is automatically collected and available for analysis.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2.1 – Create a Data Collection Rule
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; In the Azure Portal search bar, type &lt;strong&gt;Data Collection Rules&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flt445wgraydatky6cv9x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flt445wgraydatky6cv9x.png" alt=" " width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;+ Create&lt;/strong&gt; to start a new DCR.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fptnidcno418tamul80xn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fptnidcno418tamul80xn.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Basics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rule name:&lt;/strong&gt; DCR-Linux-VM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subscription:&lt;/strong&gt; Your subscription&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource Group:&lt;/strong&gt; rg-alpha&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Region:&lt;/strong&gt; East US (or the region matching your VM/workspace)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform type:&lt;/strong&gt; Linux&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frmf3277xr1z4i9o2ye44.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frmf3277xr1z4i9o2ye44.png" alt=" " width="800" height="508"&gt;&lt;/a&gt;&lt;br&gt;
Click &lt;strong&gt;Next: Resources &amp;gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;+ Add resources&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv6k9yg4bzgrjh19dyyc9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv6k9yg4bzgrjh19dyyc9.png" alt=" " width="800" height="476"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Search for &lt;strong&gt;Linux-VM2&lt;/strong&gt; and select it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxyvnvfo8271cdkohieus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxyvnvfo8271cdkohieus.png" alt=" " width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;Apply&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Click &lt;strong&gt;Next: Collect and deliver &amp;gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Collect and Deliver
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;+ Add data source&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fytevzobiy6dhgvsis0kx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fytevzobiy6dhgvsis0kx.png" alt=" " width="800" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;Data source type:&lt;/strong&gt; Performance Counters&lt;/li&gt;
&lt;li&gt; Click &lt;strong&gt;Next: Destination &amp;gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7yae2cewkjqjeveh2snv.png" alt=" " width="800" height="421"&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Destination
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;+ Add destination&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fscvonv5sn9txw6ix7c68.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fscvonv5sn9txw6ix7c68.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;strong&gt;Destination type:&lt;/strong&gt; Azure Monitor Logs&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Destination Details:&lt;/strong&gt; Select &lt;strong&gt;LogAnalytics1 (rg-alpha)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; Click &lt;strong&gt;Add data source&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcs45lek620mhwb3fgiq2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcs45lek620mhwb3fgiq2.png" alt=" " width="800" height="380"&gt;&lt;/a&gt;&lt;br&gt;
Click &lt;strong&gt;Next: Review + create&lt;/strong&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  Review and Deploy
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Review all settings.&lt;/li&gt;
&lt;li&gt; Click &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0oxvdl4w2m8irkjzygia.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0oxvdl4w2m8irkjzygia.png" alt=" " width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8tqzju2d48vq2jgwyl6b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8tqzju2d48vq2jgwyl6b.png" alt=" " width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Assigning the DCR automatically deploys the Azure Monitor Agent to the VM. You do &lt;strong&gt;not&lt;/strong&gt; need to manually add the agent under Extensions.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Step 2.2 – Verify Agent Installation and Data Ingestion
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; Search for &lt;strong&gt;Log Analytics workspaces&lt;/strong&gt; in the portal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr0dae4a4c3lxom9tarih.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr0dae4a4c3lxom9tarih.png" alt=" " width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;LogAnalytics1&lt;/strong&gt; from the workspace list.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkg7o0du8pbyrr7ufq541.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkg7o0du8pbyrr7ufq541.png" alt=" " width="800" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; In the left-hand menu, select &lt;strong&gt;Logs&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flj9rripyg331bjh8cqnx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flj9rripyg331bjh8cqnx.png" alt=" " width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvqq0ft7uz6xmjcb0cv50.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvqq0ft7uz6xmjcb0cv50.png" alt=" " width="800" height="405"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Switch the mode from &lt;strong&gt;Simple&lt;/strong&gt; to &lt;strong&gt;KQL&lt;/strong&gt; (Query Language mode).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6u57eqd7nm2t2zhkw8lg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6u57eqd7nm2t2zhkw8lg.png" alt=" " width="800" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; In the query window, enter:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Heartbeat
| where Computer contains "Linux-VM2"
| sort by TimeGenerated desc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ialwslgapbadgi2mjpq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ialwslgapbadgi2mjpq.png" alt=" " width="800" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;Run&lt;/strong&gt; or press &lt;strong&gt;Shift + Enter&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkagout7011iu2zcpqh82.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkagout7011iu2zcpqh82.png" alt=" " width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt;&lt;br&gt;
If results are returned, the Azure Monitor Agent is installed correctly, and performance data is flowing into the Log Analytics workspace.&lt;/p&gt;




&lt;h3&gt;
  
  
  Outcome
&lt;/h3&gt;

&lt;p&gt;The Linux VM is now fully monitored:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance data is automatically collected.&lt;/li&gt;
&lt;li&gt;Logs are centralized in LogAnalytics1.&lt;/li&gt;
&lt;li&gt;The VM is ready for inclusion in further monitoring exercises, alerts, and analysis.&lt;/li&gt;
&lt;/ul&gt;







&lt;h1&gt;
  
  
  Step 3 – Configure Log Analytics Data Retention and Daily Cap
&lt;/h1&gt;

&lt;p&gt;After creating the &lt;strong&gt;Log Analytics workspace&lt;/strong&gt;, it is important to configure &lt;strong&gt;how long data is kept&lt;/strong&gt; and &lt;strong&gt;how much data can be ingested daily&lt;/strong&gt;. This helps control costs and ensures compliance with organizational policies.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3.1 – Set Data Retention
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; In the Azure Portal search bar, type &lt;strong&gt;Log Analytics&lt;/strong&gt; and select &lt;strong&gt;Log Analytics workspaces&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Click on &lt;strong&gt;LogAnalytics1&lt;/strong&gt; from the workspace list.&lt;/li&gt;
&lt;li&gt; In the left-hand menu, under &lt;strong&gt;Settings&lt;/strong&gt;, select &lt;strong&gt;Usage and estimated costs&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Click &lt;strong&gt;Data Retention&lt;/strong&gt;.
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F51z1d3a24zzvz10jr7dj.png" alt=" " width="800" height="384"&gt;
&lt;/li&gt;
&lt;li&gt; Set the retention slider to &lt;strong&gt;60 days&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpf19f3otet2ns9qe9gqr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpf19f3otet2ns9qe9gqr.png" alt=" " width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step 3.2 – Configure Daily Data Cap
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; On the &lt;strong&gt;LogAnalytics1&lt;/strong&gt; workspace page, under &lt;strong&gt;Settings → Usage and estimated costs&lt;/strong&gt;, select &lt;strong&gt;Daily cap&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Switch the setting to &lt;strong&gt;On&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Set the daily cap to &lt;strong&gt;10 GB&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkou2nsbv51w3w055gjpd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkou2nsbv51w3w055gjpd.png" alt=" " width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Outcome
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Data will be retained for &lt;strong&gt;60 days&lt;/strong&gt; in the workspace.&lt;/li&gt;
&lt;li&gt;Daily ingestion will be limited to &lt;strong&gt;10 GB&lt;/strong&gt;, preventing unexpected costs.&lt;/li&gt;
&lt;li&gt;The workspace is now ready for all subsequent monitoring tasks.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Step 4 – Enable Access to the Log Analytics Workspace
&lt;/h1&gt;

&lt;p&gt;After creating and configuring the workspace, you need to assign permissions to users or groups who will be analyzing the data. In this lab, the &lt;strong&gt;App Log Examiners&lt;/strong&gt; security group will be granted read access.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4.1 – Open the Workspace
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; In the Azure Portal search bar, type &lt;strong&gt;Log Analytics&lt;/strong&gt; and select &lt;strong&gt;Log Analytics workspaces&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Click &lt;strong&gt;LogAnalytics1&lt;/strong&gt; from the list of workspaces.&lt;/li&gt;
&lt;li&gt; In the workspace menu, select &lt;strong&gt;Access control (IAM)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Click &lt;strong&gt;Add → Add role assignment&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7zfvbu4avo5jonekow2i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7zfvbu4avo5jonekow2i.png" alt=" " width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; From the list of roles, select &lt;strong&gt;Log Analytics Reader&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmoy0qkddwdselnp1cykc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmoy0qkddwdselnp1cykc.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;Next&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; On the &lt;strong&gt;Members&lt;/strong&gt; page, click &lt;strong&gt;Select members&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Search for and select &lt;strong&gt;App Log Examiners&lt;/strong&gt; security group.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwu1a6srm0jo1yw55vl6l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwu1a6srm0jo1yw55vl6l.png" alt=" " width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;Select&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Click &lt;strong&gt;Review + Assign&lt;/strong&gt; to complete the assignment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyxb05k4s6w6utd4i8nw8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyxb05k4s6w6utd4i8nw8.png" alt=" " width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Outcome
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;App Log Examiners&lt;/strong&gt; group now has &lt;strong&gt;read access&lt;/strong&gt; to the Log Analytics workspace.&lt;/li&gt;
&lt;li&gt;Members of this group can view and query telemetry data without having write permissions.&lt;/li&gt;
&lt;li&gt;The workspace is ready for monitoring and analytics tasks.&lt;/li&gt;
&lt;/ul&gt;







&lt;h1&gt;
  
  
  Step 5 – Configure Monitoring for the Web App and SQL Database
&lt;/h1&gt;

&lt;p&gt;After preparing the infrastructure and the Log Analytics workspace, the next objective is to ensure that the application layer sends telemetry for analysis.&lt;/p&gt;

&lt;p&gt;In this section, you will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enable Application Insights&lt;/li&gt;
&lt;li&gt;Disable unnecessary debugging features&lt;/li&gt;
&lt;li&gt;Route HTTP logs to Log Analytics&lt;/li&gt;
&lt;li&gt;Send SQL Insights data to the workspace&lt;/li&gt;
&lt;/ul&gt;







&lt;h2&gt;
  
  
  Step 5.1 – Enable Application Insights
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; In the Azure Portal search bar, type &lt;strong&gt;rg-alpha&lt;/strong&gt; and open the resource group.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqoj3oai73u3705udu7dp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqoj3oai73u3705udu7dp.png" alt=" " width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; From the resource list, select the &lt;strong&gt;App Service&lt;/strong&gt; associated with the Web App and SQL Database deployment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9ccwf0dmui0z6s6js1l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff9ccwf0dmui0z6s6js1l.png" alt=" " width="800" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Under &lt;strong&gt;Monitoring&lt;/strong&gt;, choose &lt;strong&gt;Application Insights&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F350r8243n3mj2qot87po.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F350r8243n3mj2qot87po.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;Turn on Application Insights&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5yriwim9r7l1er0b0e4b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5yriwim9r7l1er0b0e4b.png" alt=" " width="800" height="538"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Ensure &lt;strong&gt;Create new resource&lt;/strong&gt; is selected.&lt;/li&gt;
&lt;li&gt; Confirm the &lt;strong&gt;Log Analytics workspace&lt;/strong&gt; is set to &lt;strong&gt;LogAnalytics1&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbgffn2zlfzuhkzl1c2mu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbgffn2zlfzuhkzl1c2mu.png" alt=" " width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;Apply&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; In the confirmation dialog, select &lt;strong&gt;Yes&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftf59dxn3mpodma9lyxoa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftf59dxn3mpodma9lyxoa.png" alt=" " width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Outcome
&lt;/h3&gt;

&lt;p&gt;The web application can now collect request rates, failures, dependencies, and performance metrics.&lt;/p&gt;







&lt;h2&gt;
  
  
  Step 5.2 – Disable .NET Core Snapshot Debugger
&lt;/h2&gt;

&lt;p&gt;In lab environments, this feature is not required and may generate unnecessary overhead.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Stay within the App Service.&lt;/li&gt;
&lt;li&gt; Under &lt;strong&gt;Monitoring&lt;/strong&gt;, open &lt;strong&gt;Application Insights&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; In &lt;strong&gt;Instrument your application&lt;/strong&gt;, select &lt;strong&gt;.NET Core&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F15kgw7284ggkc1bwn6ue.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F15kgw7284ggkc1bwn6ue.png" alt=" " width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Set &lt;strong&gt;Snapshot Debugger&lt;/strong&gt; to &lt;strong&gt;Off&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Click &lt;strong&gt;Apply&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Confirm by choosing &lt;strong&gt;Yes&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Outcome
&lt;/h3&gt;

&lt;p&gt;Diagnostic capture is optimized for essential telemetry only.&lt;/p&gt;







&lt;h2&gt;
  
  
  Step 5.3 – Send Web App HTTP Logs to Log Analytics
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; From the App Service menu, select &lt;strong&gt;Diagnostic settings&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Click &lt;strong&gt;+ Add diagnostic setting&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fptd3fecjgbexnld1hhdn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fptd3fecjgbexnld1hhdn.png" alt=" " width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Configure the following:&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Diagnostic setting name&lt;/td&gt;
&lt;td&gt;httplogs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Categories&lt;/td&gt;
&lt;td&gt;HTTP logs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Destination&lt;/td&gt;
&lt;td&gt;Send to Log Analytics workspace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscription&lt;/td&gt;
&lt;td&gt;Your subscription&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Workspace&lt;/td&gt;
&lt;td&gt;LogAnalytics1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7kgkrzggwt05mkj0e9e1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7kgkrzggwt05mkj0e9e1.png" alt=" " width="800" height="434"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Outcome
&lt;/h3&gt;

&lt;p&gt;Web traffic logs are now centralized in the workspace.&lt;/p&gt;







&lt;h2&gt;
  
  
  Step 5.4 – Send SQL Insights to Log Analytics
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; Return to the &lt;strong&gt;rg-alpha&lt;/strong&gt; resource group.&lt;/li&gt;
&lt;li&gt; Select the &lt;strong&gt;SQL database&lt;/strong&gt; created during deployment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffiaiwqip5lm62p1o684g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffiaiwqip5lm62p1o684g.png" alt=" " width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Under &lt;strong&gt;Monitoring&lt;/strong&gt;, choose &lt;strong&gt;Diagnostic settings&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdehnzq3lsg3pui7gj6rb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdehnzq3lsg3pui7gj6rb.png" alt=" " width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;Add diagnostic setting&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1m9xwpentxfm831ahgx8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1m9xwpentxfm831ahgx8.png" alt=" " width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Provide:&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Diagnostic setting name&lt;/td&gt;
&lt;td&gt;InsightLogAnalytics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Categories&lt;/td&gt;
&lt;td&gt;SQL Insights&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Destination&lt;/td&gt;
&lt;td&gt;Send to Log Analytics workspace&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscription&lt;/td&gt;
&lt;td&gt;Your subscription&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Workspace&lt;/td&gt;
&lt;td&gt;LogAnalytics1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93a500e503ae2pfwmlt1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93a500e503ae2pfwmlt1.png" alt=" " width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Click &lt;strong&gt;Save&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Outcome
&lt;/h3&gt;

&lt;p&gt;Database performance and behavior can now be correlated with application activity.&lt;/p&gt;







&lt;h1&gt;
  
  
  Result of Step 5
&lt;/h1&gt;

&lt;p&gt;At this point, you have achieved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Application performance monitoring&lt;/li&gt;
&lt;li&gt;Centralized HTTP request logging&lt;/li&gt;
&lt;li&gt;SQL telemetry integration&lt;/li&gt;
&lt;li&gt;Unified visibility across app and database&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your Log Analytics workspace is becoming the &lt;strong&gt;single source of truth&lt;/strong&gt; for operational data.&lt;/p&gt;







&lt;h1&gt;
  
  
  6. Configure Monitoring for Compute Services
&lt;/h1&gt;




&lt;h2&gt;
  
  
  step 6.1 – Create a Data Collection Endpoint
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; In the Azure portal search bar, type &lt;strong&gt;Monitor&lt;/strong&gt; and open &lt;strong&gt;Azure Monitor&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhm7i0wvbwftoqw9nr07b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhm7i0wvbwftoqw9nr07b.png" alt=" " width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Under &lt;strong&gt;Settings&lt;/strong&gt;, select &lt;strong&gt;Data Collection Endpoints&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxadtd8p8von1c73ykvg3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxadtd8p8von1c73ykvg3.png" alt=" " width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3b5fjzsdp4xz07y9uqw9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3b5fjzsdp4xz07y9uqw9.png" alt=" " width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Basics tab
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Endpoint name&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;IaaSVMCollectionEndpoint&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscription&lt;/td&gt;
&lt;td&gt;Your subscription&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resource Group&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;rg-alpha&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Region&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;East US&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjjnnrmswnq6d1uqxm7sl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjjnnrmswnq6d1uqxm7sl.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Review + Create&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Select &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6.2 – Create a Data Collection Rule
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; In the Azure portal search bar, type &lt;strong&gt;Monitor&lt;/strong&gt; and open it.&lt;/li&gt;
&lt;li&gt; Under &lt;strong&gt;Settings&lt;/strong&gt;, select &lt;strong&gt;Data Collection Rules&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Select &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjlne8lcjw9gyct166f0y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjlne8lcjw9gyct166f0y.png" alt=" " width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Basics tab
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rule name&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;WinVMDCR&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscription&lt;/td&gt;
&lt;td&gt;Your subscription&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resource Group&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;rg-alpha&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Region&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;East US&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Platform type&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Windows&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data collection endpoint&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;IaaSVMCollectionEndpoint&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh4ip8zpvm66g3r5l0ulq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh4ip8zpvm66g3r5l0ulq.png" alt=" " width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Next&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Add resources&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; On &lt;strong&gt;Select a scope&lt;/strong&gt;, check &lt;strong&gt;WS-VM1&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft754lk3ilmkpqzti14y6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft754lk3ilmkpqzti14y6.png" alt=" " width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Apply&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Select &lt;strong&gt;Next&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Collect and deliver
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Add data source&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Choose &lt;strong&gt;Windows Event Logs&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Configure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Application&lt;/strong&gt; → Critical, Error&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security&lt;/strong&gt; → Audit Failure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System&lt;/strong&gt; → Critical, Error&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxd8ufc0z2fjzg3ze783.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxd8ufc0z2fjzg3ze783.png" alt=" " width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Next&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fltt2w0khgwsmucmh531x.png" alt=" " width="800" height="497"&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Destination
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Destination type&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Azure Monitor Logs&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscription&lt;/td&gt;
&lt;td&gt;Your subscription&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Account or namespace&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;LogAnalytics1&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Add data source&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuaktleh07e5etggg0co3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuaktleh07e5etggg0co3.png" alt=" " width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Review + Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fex2sgxpcykot46wy6pv2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fex2sgxpcykot46wy6pv2.png" alt=" " width="800" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The rule will now begin sending VM logs to the workspace.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 6.3 – Add IIS Log Collection to the Existing Rule
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; In the Azure portal search bar, type &lt;strong&gt;Monitor&lt;/strong&gt; and open it.&lt;/li&gt;
&lt;li&gt; Select &lt;strong&gt;Data Collection Rules&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Choose &lt;strong&gt;WinVMDCR&lt;/strong&gt; in resource group &lt;strong&gt;rg-alpha&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Add source
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Under &lt;strong&gt;Configuration&lt;/strong&gt;, select &lt;strong&gt;Data sources&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo85838fojg9v6ld2i3uo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo85838fojg9v6ld2i3uo.png" alt=" " width="800" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Add&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2pmba48pg0xszz9wa3al.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2pmba48pg0xszz9wa3al.png" alt=" " width="800" height="484"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Choose &lt;strong&gt;IIS Logs&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Select &lt;strong&gt;Next&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv9rvupdkz3osnzcwq6ty.png" alt=" " width="800" height="413"&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Destination
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Destination type&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Azure Monitor Logs&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscription&lt;/td&gt;
&lt;td&gt;Your subscription&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Account or namespace&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;LogAnalytics1&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Add data source&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbs2lt583ox5ujdi7fk0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbs2lt583ox5ujdi7fk0.png" alt=" " width="800" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn8zip8a93gyp8kmzk69x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn8zip8a93gyp8kmzk69x.png" alt=" " width="800" height="423"&gt;&lt;/a&gt;&lt;br&gt;
IIS telemetry is now included in the rule.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 7 – Configure Connection Monitor for the Linux VM
&lt;/h2&gt;

&lt;p&gt;This validates network connectivity between machines and stores results in &lt;strong&gt;LogAnalytics1&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; In the Azure portal search bar, type &lt;strong&gt;Network Watcher&lt;/strong&gt; and open &lt;strong&gt;Azure Network Watcher&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff3qe46u1229ze2x3ou9d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff3qe46u1229ze2x3ou9d.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Under &lt;strong&gt;Monitoring&lt;/strong&gt;, select &lt;strong&gt;Connection Monitor&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flezc78943ngim08567vi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flezc78943ngim08567vi.png" alt=" " width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Basics
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Connection Monitor name&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;LinuxVMPubIP&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Subscription&lt;/td&gt;
&lt;td&gt;Your subscription&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Region&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;East US 2&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Workspace&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;LogAnalytics1&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5wsg8xvu5q6f5rqjs9ih.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5wsg8xvu5q6f5rqjs9ih.png" alt=" " width="800" height="563"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Next&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Test group
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Enter name &lt;strong&gt;LinuxIPTest&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Select &lt;strong&gt;Add sources&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhnb49c6zyj8c9sj5ltl2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhnb49c6zyj8c9sj5ltl2.png" alt=" " width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Azure Endpoints&lt;/li&gt;
&lt;li&gt;Type → Virtual machines&lt;/li&gt;
&lt;li&gt;Select Subnet&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check &lt;strong&gt;Linux-VM&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;Add endpoints&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ez7jpwoa9fta6djqt5a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ez7jpwoa9fta6djqt5a.png" alt=" " width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Test configuration
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Add Test Configuration&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyq25p3gtwiwt9p7a01qc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyq25p3gtwiwt9p7a01qc.png" alt=" " width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Name → &lt;strong&gt;DefaultHTTP&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Select &lt;strong&gt;Add Test Configuration&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6tt0kwmnfq7dyff07j9q.png" alt=" " width="800" height="430"&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Destinations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Add destinations&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyk5yh54124p9m3el1t43.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyk5yh54124p9m3el1t43.png" alt=" " width="800" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Azure Endpoints&lt;/li&gt;
&lt;li&gt;Type → Virtual machines&lt;/li&gt;
&lt;li&gt;Select Subnet&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check &lt;strong&gt;WS-VM1&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select &lt;strong&gt;Add endpoints&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6olc959asi03kups9m5z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6olc959asi03kups9m5z.png" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Add Test Group&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqrf4ivwbi30xprxrw2lz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqrf4ivwbi30xprxrw2lz.png" alt=" " width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Finish
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Review + Create&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Select &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrjmkk20cpo9493cnpak.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flrjmkk20cpo9493cnpak.png" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm1s3451s5snuf2aay9tw.png" alt=" " width="800" height="366"&gt;
&lt;/h2&gt;

&lt;p&gt;You have now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connected Windows event logs&lt;/li&gt;
&lt;li&gt;Connected IIS logs&lt;/li&gt;
&lt;li&gt;Configured VM telemetry&lt;/li&gt;
&lt;li&gt;Enabled network performance monitoring&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your compute environment is fully integrated with Log Analytics.&lt;/p&gt;







&lt;h1&gt;
  
  
  8 Configure Alerts and Notifications
&lt;/h1&gt;




&lt;h2&gt;
  
  
  Step 8.1 – Create an Action Group to Send Email
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt; In the Azure portal search bar, type &lt;strong&gt;Monitor&lt;/strong&gt; and open &lt;strong&gt;Azure Monitor&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyodxptzylseiuc8jxo2c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyodxptzylseiuc8jxo2c.png" alt=" " width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; From the left menu, select &lt;strong&gt;Alerts&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1vegw4hen1r7k5r02oui.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1vegw4hen1r7k5r02oui.png" alt=" " width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Choose &lt;strong&gt;Action groups&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flcvyw81wutc76e93ik05.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flcvyw81wutc76e93ik05.png" alt=" " width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Basics
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Subscription&lt;/td&gt;
&lt;td&gt;Your subscription&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Resource Group&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;rg-alpha&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Region&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Global&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Action group name&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;NotifyCPU&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Display name&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;NotifyCPU&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9s5f9zmp6qr7mp36se1i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9s5f9zmp6qr7mp36se1i.png" alt=" " width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Next: Notifications&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Notifications
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Notification type → &lt;strong&gt;Email/SMS message/Push/Voice&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; Name → &lt;strong&gt;NotificationEmail&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt; Select the &lt;strong&gt;pencil (edit)&lt;/strong&gt; icon.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Inside the pane:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✔ Email&lt;/li&gt;
&lt;li&gt;Enter → &lt;strong&gt;&lt;a href="mailto:prime@fabrikam.com"&gt;prime@fabrikam.com&lt;/a&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe4c838wm87zt00zuzrvv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe4c838wm87zt00zuzrvv.png" alt=" " width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;OK&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Review + Create&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Select &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcp5csmt3768ecgg1qzuf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcp5csmt3768ecgg1qzuf.png" alt=" " width="800" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;**Your email notification channel is ready.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 8.2 – Create an Alert for VM CPU Utilization
&lt;/h2&gt;

&lt;p&gt;We will trigger an email when CPU usage is high.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt; In the Azure portal search bar, type &lt;strong&gt;rg-alpha&lt;/strong&gt; and open the resource group.&lt;/li&gt;
&lt;li&gt; From the resources list, select &lt;strong&gt;Linux-VM2&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1xcmcbrw2auioku4v8cz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1xcmcbrw2auioku4v8cz.png" alt=" " width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Under &lt;strong&gt;Monitoring&lt;/strong&gt;, select &lt;strong&gt;Alerts&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsn7hzlcjrd0ur1l1w575.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsn7hzlcjrd0ur1l1w575.png" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Choose &lt;strong&gt;Create&lt;/strong&gt; → &lt;strong&gt;Alert rule&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feeopsok8c8fjuk98xaxa.png" alt=" " width="800" height="386"&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Condition
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Signal name → &lt;strong&gt;Percentage CPU&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fju1q452mk80hwn748lwm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fju1q452mk80hwn748lwm.png" alt=" " width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Keep default threshold values.&lt;/li&gt;
&lt;li&gt; Select &lt;strong&gt;Next&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Actions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Select action group&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt; Choose &lt;strong&gt;NotifyCPU&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbweixh8atzyh43o209wg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbweixh8atzyh43o209wg.png" alt=" " width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Select&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Details
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Alert rule name&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;HighCPU&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Review + Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzvwz9bt26dgfkl83hk2t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzvwz9bt26dgfkl83hk2t.png" alt=" " width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Select &lt;strong&gt;Create&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;** Now, whenever CPU crosses the threshold, an email goes to &lt;strong&gt;&lt;a href="mailto:prime@fabrikam.com"&gt;prime@fabrikam.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 9 – Clean Up the Subscription
&lt;/h2&gt;

&lt;p&gt;Important for labs and cost control.&lt;/p&gt;




&lt;h3&gt;
  
  
  Delete the Resource Group
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;In the Azure portal search bar, type &lt;strong&gt;Resource groups&lt;/strong&gt; and open it.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;rg-alpha&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Delete resource group&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Type &lt;strong&gt;rg-alpha&lt;/strong&gt; to confirm.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Delete&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Delete the Security Group
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Search for &lt;strong&gt;Microsoft Entra ID&lt;/strong&gt; and open &lt;strong&gt;Microsoft Entra ID&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Groups&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;App Log Examiners&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Delete&lt;/strong&gt; → &lt;strong&gt;Yes&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h1&gt;
  
  
  Executive Summary – Azure Monitoring &amp;amp; Observability Implementation
&lt;/h1&gt;

&lt;p&gt;This project delivered an end-to-end monitoring and observability framework across application, database, and infrastructure resources using &lt;strong&gt;Azure Monitor&lt;/strong&gt; in &lt;strong&gt;Microsoft Azure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The engagement established centralized telemetry collection, standardized data ingestion, controlled access to operational data, and proactive alerting. The result is improved service reliability, faster incident response, and stronger cost governance.&lt;/p&gt;




&lt;h2&gt;
  
  
  Objectives
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Centralize logs and metrics into a single analytics platform&lt;/li&gt;
&lt;li&gt;Enable performance visibility for web and database workloads&lt;/li&gt;
&lt;li&gt;Collect security and system events from virtual machines&lt;/li&gt;
&lt;li&gt;Monitor network connectivity between resources&lt;/li&gt;
&lt;li&gt;Implement automated alerts for critical conditions&lt;/li&gt;
&lt;li&gt;Apply role-based access and data retention policies&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Solution Delivered
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Centralized Log Platform
&lt;/h3&gt;

&lt;p&gt;A Log Analytics workspace was configured as the unified destination for platform logs, application diagnostics, performance counters, and network telemetry.&lt;/p&gt;

&lt;p&gt;Retention policies and a daily ingestion cap were implemented to balance operational insight with financial control.&lt;/p&gt;




&lt;h3&gt;
  
  
  Application &amp;amp; Database Observability
&lt;/h3&gt;

&lt;p&gt;Application performance monitoring was enabled through &lt;strong&gt;Azure Application Insights&lt;/strong&gt;, providing visibility into requests, dependencies, and failures.&lt;/p&gt;

&lt;p&gt;Diagnostic pipelines were configured so that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web server HTTP logs&lt;/li&gt;
&lt;li&gt;SQL Insights&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;flow into the central workspace for correlation and investigation.&lt;/p&gt;




&lt;h3&gt;
  
  
  Infrastructure Monitoring
&lt;/h3&gt;

&lt;p&gt;Using Data Collection Rules and endpoints, virtual machines were onboarded to send:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows event logs (critical, error, audit failures)&lt;/li&gt;
&lt;li&gt;IIS operational data&lt;/li&gt;
&lt;li&gt;Linux performance telemetry&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agent deployment was automated through rule association, ensuring consistency and reducing administrative overhead.&lt;/p&gt;




&lt;h3&gt;
  
  
  Network Visibility
&lt;/h3&gt;

&lt;p&gt;Connectivity monitoring between Linux and Windows workloads was implemented via &lt;strong&gt;Azure Network Watcher&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This provides continuous validation of reachability and supports rapid isolation of communication failures.&lt;/p&gt;




&lt;h3&gt;
  
  
  Proactive Alerting
&lt;/h3&gt;

&lt;p&gt;An action group was created to deliver email notifications when CPU utilization breaches defined thresholds.&lt;br&gt;
This converts raw telemetry into actionable operations signals.&lt;/p&gt;




&lt;h3&gt;
  
  
  Governance &amp;amp; Security
&lt;/h3&gt;

&lt;p&gt;Access to monitoring data followed least-privilege principles by assigning read-only rights to a designated security group.&lt;br&gt;
Temporary lab resources were removed at the end of the project to eliminate unnecessary spend.&lt;/p&gt;




&lt;h2&gt;
  
  
  Business Impact
&lt;/h2&gt;

&lt;p&gt;The implementation enables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster troubleshooting through correlated data&lt;/li&gt;
&lt;li&gt;Reduced downtime via early detection&lt;/li&gt;
&lt;li&gt;Improved accountability with auditable logs&lt;/li&gt;
&lt;li&gt;Predictable monitoring costs&lt;/li&gt;
&lt;li&gt;Scalable onboarding of future workloads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The environment now reflects a production-ready monitoring baseline aligned with cloud operational best practices.&lt;/p&gt;




</description>
      <category>ai</category>
      <category>cloud</category>
      <category>devops</category>
      <category>aws</category>
    </item>
    <item>
      <title>Getting Started with Azure App Service: Deploying Your First Web App</title>
      <dc:creator> Ganiyat Olagoke Adebayo</dc:creator>
      <pubDate>Mon, 02 Feb 2026 17:44:38 +0000</pubDate>
      <link>https://dev.to/adebayo_ganiyatoladunjoy/getting-started-with-azure-app-service-deploying-your-first-web-app-1c3m</link>
      <guid>https://dev.to/adebayo_ganiyatoladunjoy/getting-started-with-azure-app-service-deploying-your-first-web-app-1c3m</guid>
      <description>&lt;p&gt;Introduction: What Is Azure App Service?&lt;/p&gt;

&lt;p&gt;Azure App Service is a fully managed Platform as a Service (PaaS) offering that allows you to build, deploy, and host web applications without managing servers or infrastructure. With App Service, Microsoft handles the underlying operating system, patching, scaling, and availability, so developers and learners can focus entirely on the application itself.&lt;/p&gt;

&lt;p&gt;Unlike Virtual Machines—where you are responsible for configuring and maintaining the server—Azure App Service abstracts away those complexities. It supports multiple programming languages and frameworks, offers built-in security, and provides easy integration with deployment tools, making it ideal for web apps, APIs, and backend services.&lt;/p&gt;

&lt;p&gt;One of the most powerful aspects of Azure App Service is its flexibility. Applications can be deployed in several ways, including GitHub Actions, ZIP deployment, FTP, and even directly through the Azure portal using the Advanced Tools (Kudu) PowerShell console. This makes App Service especially suitable for learning, rapid prototyping, and simple production workloads.&lt;/p&gt;

&lt;p&gt;In this guide, I demonstrate a hands-on approach to deploying a web application by creating an App Service in the Azure portal and copying application code directly into the wwwroot folder using PowerShell. This method helps beginners understand how App Service works behind the scenes while keeping the deployment process simple and visual.&lt;/p&gt;




&lt;p&gt;In this guide, I walk through a &lt;strong&gt;hands-on, beginner-friendly approach&lt;/strong&gt; to deploying a web app by directly &lt;strong&gt;copying and pasting application code&lt;/strong&gt; into Azure using the &lt;strong&gt;PowerShell Debug Console&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This method is ideal for &lt;strong&gt;learning, quick tests, and simple applications&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Prepare the Application Code
&lt;/h2&gt;

&lt;p&gt;Before going to Azure, ensure your &lt;strong&gt;application code is ready&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This could be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A simple HTML/CSS/JavaScript web app&lt;/li&gt;
&lt;li&gt;A basic landing page&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;My Azure App&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Hello from Azure App Service&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Having your code ready makes deployment fast and smooth.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Create an App Service in Azure
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Sign in to the &lt;strong&gt;Azure Portal&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;App Services&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbhe8380mbw3mk392fpt9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbhe8380mbw3mk392fpt9.png" alt=" " width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsety92u622lunvn9i129.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsety92u622lunvn9i129.png" alt=" " width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Enter the required details:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subscription&lt;/li&gt;
&lt;li&gt;Resource Group&lt;/li&gt;
&lt;li&gt;App name (must be globally unique)&lt;/li&gt;
&lt;li&gt;Runtime stack&lt;/li&gt;
&lt;li&gt;Region&lt;/li&gt;
&lt;li&gt;App Service Plan (Free or Basic for learning)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxooiecp41xte29fb1doo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxooiecp41xte29fb1doo.png" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjwjxu8ukpd37mpmtgr8n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjwjxu8ukpd37mpmtgr8n.png" alt=" " width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Review + Create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F16xw3wbie4w9imx0h4sj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F16xw3wbie4w9imx0h4sj.png" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Create&lt;/strong&gt;
Azure will deploy your App Service in a few minutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd2k2d6kmivavk23nleq4.png" alt=" " width="800" height="390"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Step 3: Confirm App Creation Status
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;In the App Service menu, locate &lt;strong&gt;Default domain&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click the domain link&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9yrgf3vo2miq2hnguswx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9yrgf3vo2miq2hnguswx.png" alt=" " width="800" height="382"&gt;&lt;/a&gt;&lt;br&gt;
At this stage, you should see the &lt;strong&gt;default Azure App Service page&lt;/strong&gt;, confirming the app was created successfully.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3rg3z0tvcys3uox5tkca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3rg3z0tvcys3uox5tkca.png" alt=" " width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Open Advanced Tools (Kudu)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;In the App Service menu, search for &lt;strong&gt;Advanced Tools&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Go&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7jedbaaimvpo65h6yvcx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7jedbaaimvpo65h6yvcx.png" alt=" " width="800" height="394"&gt;&lt;/a&gt;&lt;br&gt;
This opens the &lt;strong&gt;Kudu environment&lt;/strong&gt;, which provides debugging and file management tools.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 5: Open PowerShell Debug Console
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;In Kudu, click &lt;strong&gt;Debug Console&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;PowerShell&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxlw7jsf5vifttapu97gu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxlw7jsf5vifttapu97gu.png" alt=" " width="800" height="417"&gt;&lt;/a&gt;&lt;br&gt;
This gives you direct access to the App Service file system.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 6: Navigate to the Application Folder
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In PowerShell:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;site&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3dnkx3pafin6ydl1xtgx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3dnkx3pafin6ydl1xtgx.png" alt=" " width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;wwwroot&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0s6k1q66jpiiksm60ti.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0s6k1q66jpiiksm60ti.png" alt=" " width="800" height="401"&gt;&lt;/a&gt;&lt;br&gt;
The &lt;code&gt;wwwroot&lt;/code&gt; folder contains the files served by your web app.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 7: Replace the Default App Code
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Locate the &lt;strong&gt;hostingstart.html&lt;/strong&gt; file&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Edit&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft54pnf4l0tkdr5ss3s2r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft54pnf4l0tkdr5ss3s2r.png" alt=" " width="800" height="401"&gt;&lt;/a&gt;&lt;br&gt;
Clear the existing content&lt;br&gt;
Paste your application code&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr983b59tur2sttwk65c9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr983b59tur2sttwk65c9.png" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save the file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This replaces the default Azure page with your own app.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 8: Verify the Application Is Running
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Return to the &lt;strong&gt;Azure Portal&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Open your &lt;strong&gt;App Service&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidywl1fozqy8agl0npt7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidywl1fozqy8agl0npt7.png" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click the &lt;strong&gt;Default domain&lt;/strong&gt; again&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fngyk7lcb1bq6t0ufmz1p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fngyk7lcb1bq6t0ufmz1p.png" alt=" " width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You should now see &lt;strong&gt;your custom application live and running&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv7khg04bqy17ovic8v03.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv7khg04bqy17ovic8v03.png" alt=" " width="800" height="486"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F34k8fbkawp1r6nyh6ie6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F34k8fbkawp1r6nyh6ie6.png" alt=" " width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 9: Clean Up Resources (Cost Awareness)
&lt;/h2&gt;

&lt;p&gt;After testing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Delete the App Service&lt;/li&gt;
&lt;li&gt;Delete the App Service Plan&lt;/li&gt;
&lt;li&gt;Or delete the entire Resource Group&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;In Azure, unused resources continue to incur costs — cleaning up is part of responsible cloud usage.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  How This Fits into the Bigger Azure Journey
&lt;/h2&gt;

&lt;p&gt;This exercise builds naturally on previous Azure concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Virtual Machines&lt;/strong&gt; → full control, more management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Virtual Machine Scale Sets&lt;/strong&gt; → scalable infrastructure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;App Service&lt;/strong&gt; → managed platform with faster deployment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From creating virtual machines, capturing images, building scale sets, and now deploying applications using App Service, this journey highlights how Azure supports &lt;strong&gt;multiple levels of abstraction&lt;/strong&gt; — from infrastructure to fully managed platforms.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Deploying an application using Azure App Service and the PowerShell Debug Console is a simple yet powerful way to understand how &lt;strong&gt;platform-as-a-service works in practice&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;By preparing the code, creating the App Service, enabling authentication, and deploying directly into &lt;code&gt;wwwroot&lt;/code&gt;, you can quickly get an application live without worrying about servers.&lt;/p&gt;

&lt;p&gt;This hands-on approach reinforces an important cloud principle:&lt;br&gt;
&lt;strong&gt;choose the service that matches your workload — not every solution needs a virtual machine.&lt;/strong&gt;&lt;/p&gt;




</description>
      <category>webdev</category>
      <category>cloud</category>
      <category>devops</category>
      <category>ai</category>
    </item>
    <item>
      <title>From Virtual Machines to Virtual Machine Scale Sets</title>
      <dc:creator> Ganiyat Olagoke Adebayo</dc:creator>
      <pubDate>Wed, 28 Jan 2026 16:12:00 +0000</pubDate>
      <link>https://dev.to/adebayo_ganiyatoladunjoy/from-virtual-machines-to-virtual-machine-scale-sets-2i2i</link>
      <guid>https://dev.to/adebayo_ganiyatoladunjoy/from-virtual-machines-to-virtual-machine-scale-sets-2i2i</guid>
      <description>&lt;p&gt;After exploring Azure Virtual Machines and resource management, the next logical step is creating &lt;strong&gt;Azure Virtual Machine Scale Sets (VMSS)&lt;/strong&gt; — a service designed to deploy and manage &lt;strong&gt;multiple identical VMs&lt;/strong&gt; automatically.&lt;/p&gt;

&lt;p&gt;VMSS builds on the same VM fundamentals but introduces &lt;strong&gt;scalability, availability, and automation&lt;/strong&gt;, which are essential in real-world cloud environments.&lt;/p&gt;




&lt;h3&gt;
  
  
  What Is Azure VM Scale Set?
&lt;/h3&gt;

&lt;p&gt;Explain simply:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A VMSS is a group of &lt;strong&gt;identical VMs&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Managed as &lt;strong&gt;one unit&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Automatically scales based on demand&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;One VM handles traffic. VMSS handles growth.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Why VM Scale Sets Matter
&lt;/h3&gt;

&lt;p&gt;Cover real-world benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatic scaling (up &amp;amp; down)&lt;/li&gt;
&lt;li&gt;High availability&lt;/li&gt;
&lt;li&gt;Load balancing integration&lt;/li&gt;
&lt;li&gt;Cost efficiency (pay only for what you need)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  VM vs VM Scale Set (Simple Comparison)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Azure VM&lt;/th&gt;
&lt;th&gt;VM Scale Set&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Single instance&lt;/td&gt;
&lt;td&gt;Multiple instances&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manual scaling&lt;/td&gt;
&lt;td&gt;Auto-scaling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Basic availability&lt;/td&gt;
&lt;td&gt;High availability&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h3&gt;
  
  
  Core Components of VMSS
&lt;/h3&gt;

&lt;p&gt;Introduce key concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instance count&lt;/li&gt;
&lt;li&gt;Scaling rules&lt;/li&gt;
&lt;li&gt;Load Balancer&lt;/li&gt;
&lt;li&gt;Availability Zones&lt;/li&gt;
&lt;li&gt;Upgrade policies&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  When to Use VM Scale Sets
&lt;/h3&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web applications&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;li&gt;Background processing&lt;/li&gt;
&lt;li&gt;Seasonal or unpredictable traffic&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Here is A step-by-step guide&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Create a Virtual Machine (Foundation)
&lt;/h2&gt;

&lt;p&gt;Every scalable system starts with a &lt;strong&gt;single, well-configured VM&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a Virtual Machine in Azure Portal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0oqxtr7k2z8d8k0v1ber.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0oqxtr7k2z8d8k0v1ber.png" alt=" " width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffk9ynh6gck3w6xg02xw9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffk9ynh6gck3w6xg02xw9.png" alt=" " width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Choose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Image (Windows/Linux)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26yc1lf2mrjghinftniv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26yc1lf2mrjghinftniv.png" alt=" " width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VM size&lt;/li&gt;
&lt;li&gt;Authentication (password or SSH key)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4t8g37mecnc899fxf5q7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4t8g37mecnc899fxf5q7.png" alt=" " width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configure networking and security rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgg0xsn33vlytgpng2ts3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgg0xsn33vlytgpng2ts3.png" alt=" " width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foet1oeum0j3t0mrcilu5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foet1oeum0j3t0mrcilu5.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi959vb3cd3q9v3x9piym.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi959vb3cd3q9v3x9piym.png" alt=" " width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploy the VM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzf2cklirlpmg6vq971qp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzf2cklirlpmg6vq971qp.png" alt=" " width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fskl6mki6t5djajumhvwq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fskl6mki6t5djajumhvwq.png" alt=" " width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnas1foyrxzidia72xuv2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnas1foyrxzidia72xuv2.png" alt=" " width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb8b393yaxxf1ppd0ueli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb8b393yaxxf1ppd0ueli.png" alt=" " width="800" height="309"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;br&gt;
This VM becomes the &lt;strong&gt;template&lt;/strong&gt; for scaling later.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Add and Configure an Additional Disk
&lt;/h2&gt;

&lt;p&gt;Once the VM is running, you can extend its storage.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the VM → &lt;strong&gt;Disks&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft7d77inidvu4w98uub55.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft7d77inidvu4w98uub55.png" alt=" " width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Create and attach a new disk&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select disk type (Standard / Premium)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhnlsb4lu884uotydj3sp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhnlsb4lu884uotydj3sp.png" alt=" " width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Attach and save&lt;/li&gt;
&lt;li&gt;Initialize and format the disk inside the VM (OS level)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo4pwc8o83oy8ush15jfx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo4pwc8o83oy8ush15jfx.png" alt=" " width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu0km2nlt91fptw7ki4e5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu0km2nlt91fptw7ki4e5.png" alt=" " width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7dkkzekweg0myr1zw3o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7dkkzekweg0myr1zw3o.png" alt=" " width="781" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To complete this set up check out my Blog on &lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/adebayo_ganiyatoladunjoy/how-to-add-a-data-disk-to-an-azure-virtual-machine-windows-linux-331n"&gt;https://dev.to/adebayo_ganiyatoladunjoy/how-to-add-a-data-disk-to-an-azure-virtual-machine-windows-linux-331n&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;br&gt;
Real workloads often require &lt;strong&gt;multiple disks&lt;/strong&gt; — OS + data + logs.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Prepare the VM for Imaging
&lt;/h2&gt;

&lt;p&gt;Before capturing an image, the VM must be cleaned and generalized.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Windows:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run &lt;strong&gt;Sysprep&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Shut down the VM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;For Linux:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deprovision the VM&lt;/li&gt;
&lt;li&gt;Shut down the VM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;VM must be &lt;strong&gt;Stopped (deallocated)&lt;/strong&gt; before capture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;br&gt;
This ensures every future VM created from the image starts fresh.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Create an Azure Compute Gallery
&lt;/h2&gt;

&lt;p&gt;Azure Compute Gallery (formerly Shared Image Gallery) helps manage VM images.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create an &lt;strong&gt;Azure Compute Gallery&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3p63n7jby36iqwfta71.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3p63n7jby36iqwfta71.png" alt=" " width="800" height="413"&gt;&lt;/a&gt;&lt;br&gt;
 Create an &lt;strong&gt;Image Definition&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabwu92allwcfzmzj5xsd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabwu92allwcfzmzj5xsd.png" alt=" " width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq5kk3qjfilj6g9dc0mnl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq5kk3qjfilj6g9dc0mnl.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OS type&lt;/li&gt;
&lt;li&gt;VM generation&lt;/li&gt;
&lt;li&gt;Publisher / Offer / SKU&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmph54918uzdssd66bhp0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmph54918uzdssd66bhp0.png" alt=" " width="800" height="528"&gt;&lt;/a&gt;&lt;br&gt;
 Capture the VM into the gallery as an &lt;strong&gt;Image Version&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbkg3vkr1f623zcz5qclq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbkg3vkr1f623zcz5qclq.png" alt=" " width="707" height="588"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;br&gt;
The gallery makes your image:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reusable&lt;/li&gt;
&lt;li&gt;Versioned&lt;/li&gt;
&lt;li&gt;Scalable across regions&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Step 5: Capture the VM Image
&lt;/h2&gt;

&lt;p&gt;Now you turn your configured VM into a reusable image.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From the VM → &lt;strong&gt;Capture&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cfwkx2cdugmfaqi48rk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3cfwkx2cdugmfaqi48rk.png" alt=" " width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;Azure Compute Gallery&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F70w3ev4kxe6v3fvm5ga4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F70w3ev4kxe6v3fvm5ga4.png" alt=" " width="800" height="476"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose the image definition&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkv7fc8p35dybb96x9466.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkv7fc8p35dybb96x9466.png" alt=" " width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a new image version&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F46dc1oxxvr7u9etym4ye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F46dc1oxxvr7u9etym4ye.png" alt=" " width="800" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once completed:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzcyry7pq1ctyefaselkh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzcyry7pq1ctyefaselkh.png" alt=" " width="743" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfz7wog7a3bqq6e021y9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frfz7wog7a3bqq6e021y9.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From the image created, we can further create a virtual machine or a virtual machine skill set. Here, as the title implies, we are creating a ** virtual machine skill sets&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmli1nr9im80dbjmysy2n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmli1nr9im80dbjmysy2n.png" alt=" " width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The VM image is ready&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;The original VM is no longer needed for scaling&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 6: Create a Virtual Machine Scale Set (VMSS)
&lt;/h2&gt;

&lt;p&gt;Now comes the scaling part &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create **Virtual Machine Scale Set&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frc6rkvmtlyo12r0azkrk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frc6rkvmtlyo12r0azkrk.png" alt=" " width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmwei7cpavd8exc3a4x9i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmwei7cpavd8exc3a4x9i.png" alt=" " width="800" height="476"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvyyc4ramc0e6jecuzo1d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvyyc4ramc0e6jecuzo1d.png" alt=" " width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6txr5hqr90xrilr8qmnr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6txr5hqr90xrilr8qmnr.png" alt=" " width="800" height="423"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Choose the **custom image&lt;/strong&gt; from the Compute Gallery&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0j8c2u6fy4t7poqs5za.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0j8c2u6fy4t7poqs5za.png" alt=" " width="800" height="497"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Configure:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fryeaedocwkt3jtzfctaz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fryeaedocwkt3jtzfctaz.png" alt=" " width="800" height="581"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instance count (min / max)&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Autoscaling rules&lt;br&gt;
&lt;strong&gt;Attach:&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Load Balancer&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Networking&lt;br&gt;
&lt;strong&gt;Review and deploy&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgyhti4cqh6fd789cnel8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgyhti4cqh6fd789cnel8.png" alt=" " width="749" height="611"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1o31i7851qxjvkv2lmv2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1o31i7851qxjvkv2lmv2.png" alt=" " width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt;&lt;br&gt;
Azure deploys &lt;strong&gt;multiple identical VMs automatically&lt;/strong&gt; based on demand.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fue87kgbp20qkczazqm6c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fue87kgbp20qkczazqm6c.png" alt=" " width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fplu7kl1p7egb944atqhu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fplu7kl1p7egb944atqhu.png" alt=" " width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 7: Monitor and Scale
&lt;/h2&gt;

&lt;p&gt;Once deployed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitor CPU, memory, and traffic&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Azure automatically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scales out during high demand&lt;/li&gt;
&lt;li&gt;Scales in when demand drops&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why this matters:&lt;/strong&gt;&lt;br&gt;
This is how &lt;strong&gt;production-grade cloud applications&lt;/strong&gt; are built.&lt;/p&gt;




&lt;h2&gt;
  
  
  Clean-Up: Delete Resources to Optimize Cost
&lt;/h2&gt;

&lt;p&gt;After creating the virtual machine skill sets and confirmed that it  works as expected, it’s important to &lt;strong&gt;clean up unused resources&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For learning and practice environments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Virtual Machines&lt;/li&gt;
&lt;li&gt;Disks&lt;/li&gt;
&lt;li&gt;Public IPs&lt;/li&gt;
&lt;li&gt;Load Balancers&lt;/li&gt;
&lt;li&gt;Image versions (if no longer needed)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…can continue to &lt;strong&gt;incur costs if left running&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Deleting resources you no longer need helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Control cloud spending&lt;/li&gt;
&lt;li&gt;Practice good cloud governance habits&lt;/li&gt;
&lt;li&gt;Build cost-awareness early in your cloud journey&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;In the cloud, what you don’t delete, you pay for.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Bringing It All Together
&lt;/h2&gt;

&lt;p&gt;This hands-on process connects multiple Azure concepts into one complete workflow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create a Virtual Machine&lt;/strong&gt; – the foundation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add and initialize a data disk&lt;/strong&gt; – realistic storage setup&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prepare and capture the VM image&lt;/strong&gt; – consistency and reusability&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Store the image in Azure Compute Gallery&lt;/strong&gt; – versioned image management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a Virtual Machine Scale Set&lt;/strong&gt; – scalability and high availability&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What starts as a &lt;strong&gt;single virtual machine&lt;/strong&gt; evolves into a &lt;strong&gt;scalable, automated system&lt;/strong&gt; capable of handling real-world workloads.&lt;/p&gt;

&lt;p&gt;This journey reinforced an important lesson for me:&lt;br&gt;
&lt;strong&gt;scalability isn’t a separate feature — it’s the result of intentional, well-planned steps.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Takeaways (Perfect Blog Closing)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;single VM&lt;/strong&gt; can become a &lt;strong&gt;scalable system&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Azure Compute Gallery enables consistency&lt;/li&gt;
&lt;li&gt;VM Scale Sets automate availability and scaling&lt;/li&gt;
&lt;li&gt;Planning images correctly saves time and cost&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;This journey helped me understand that scaling isn’t magic — it’s structured preparation.&lt;/p&gt;
&lt;/blockquote&gt;




</description>
      <category>ai</category>
      <category>cloudcomputing</category>
      <category>aws</category>
      <category>devops</category>
    </item>
    <item>
      <title>AWS CloudTrail: Tracking Activity and Changes in Your AWS Account</title>
      <dc:creator> Ganiyat Olagoke Adebayo</dc:creator>
      <pubDate>Mon, 26 Jan 2026 14:21:54 +0000</pubDate>
      <link>https://dev.to/adebayo_ganiyatoladunjoy/aws-cloudtrail-tracking-activity-and-changes-in-your-aws-account-5614</link>
      <guid>https://dev.to/adebayo_ganiyatoladunjoy/aws-cloudtrail-tracking-activity-and-changes-in-your-aws-account-5614</guid>
      <description>&lt;h1&gt;
  
  
  AWS CloudTrail: Tracking Activity and Changes in Your AWS Account
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Quick Recap: Where We Are in Our AWS Journey
&lt;/h2&gt;

&lt;p&gt;In previous posts, we:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created an &lt;strong&gt;EC2 instance&lt;/strong&gt; to run an application&lt;/li&gt;
&lt;li&gt;Used &lt;strong&gt;Auto Scaling&lt;/strong&gt; to manage traffic automatically&lt;/li&gt;
&lt;li&gt;Set up &lt;strong&gt;CloudWatch&lt;/strong&gt; to monitor performance and receive alerts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Monitoring performance is important, but it doesn’t tell us &lt;strong&gt;who did what&lt;/strong&gt; inside our AWS account.&lt;br&gt;
This is where &lt;strong&gt;AWS CloudTrail&lt;/strong&gt; comes in.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is AWS CloudTrail?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;AWS CloudTrail&lt;/strong&gt; is a service that records &lt;strong&gt;all actions&lt;/strong&gt; taken in your AWS account.&lt;/p&gt;

&lt;p&gt;It helps you answer questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who launched or stopped an EC2 instance?&lt;/li&gt;
&lt;li&gt;Who modified a security group?&lt;/li&gt;
&lt;li&gt;When was Auto Scaling changed?&lt;/li&gt;
&lt;li&gt;Which IAM user or role made the change?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CloudTrail is essential for &lt;strong&gt;security, auditing, and troubleshooting&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why CloudTrail Is Important
&lt;/h2&gt;

&lt;p&gt;CloudTrail helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track user and API activity&lt;/li&gt;
&lt;li&gt;Investigate security incidents&lt;/li&gt;
&lt;li&gt;Meet compliance and auditing requirements&lt;/li&gt;
&lt;li&gt;Understand changes made across AWS services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unlike CloudWatch (which monitors performance), &lt;strong&gt;CloudTrail monitors actions&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step-by-Step: Creating a CloudTrail Trail
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Open CloudTrail
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Sign in to the &lt;strong&gt;AWS Management Console&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;CloudTrail&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;CloudTrail&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnap3wxxa6jx0x6doeh5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnap3wxxa6jx0x6doeh5.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Create a Trail
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Trails&lt;/strong&gt; from the left menu&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create trail&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq86jzf9j5v9we378rq1s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq86jzf9j5v9we378rq1s.png" alt=" " width="800" height="372"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Configure Trail Settings
&lt;/h3&gt;

&lt;p&gt;Fill in the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Trail name&lt;/strong&gt;:&lt;br&gt;
Example: &lt;code&gt;management-event&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Storage location&lt;/strong&gt;:&lt;br&gt;
Select &lt;strong&gt;Create new S3 bucket&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AWS will automatically store your logs in this bucket.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmqpedaj8xbcfxa3tm3uc.png" alt=" " width="800" height="320"&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 4: Choose Log Events
&lt;/h3&gt;

&lt;p&gt;Select:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Management events&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Read and Write events&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Leave other options as default for beginners.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 5: Enable Trail for All Regions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Check &lt;strong&gt;Enable for all regions&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This ensures all activity across AWS regions is logged.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 6: Create the Trail
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Create trail&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7nrwyf88asr4w8di7ihy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7nrwyf88asr4w8di7ihy.png" alt=" " width="800" height="320"&gt;&lt;/a&gt;&lt;br&gt;
CloudTrail starts logging activity immediately.&lt;/p&gt;




&lt;h2&gt;
  
  
  Viewing CloudTrail Events
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhlg6zrnzswxtydvv2zbb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhlg6zrnzswxtydvv2zbb.png" alt=" " width="800" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Open Event History
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In CloudTrail, click &lt;strong&gt;Event history&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dzm8hxlqoqiosao763j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dzm8hxlqoqiosao763j.png" alt=" " width="800" height="370"&gt;&lt;/a&gt;&lt;br&gt;
Here you’ll see:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Figy11x6bntcpditnjpc8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Figy11x6bntcpditnjpc8.png" alt=" " width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fevcr4e5y1i8fq9xffq9l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fevcr4e5y1i8fq9xffq9l.png" alt=" " width="800" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Event name (e.g., &lt;code&gt;StartInstances&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;AWS service used&lt;/li&gt;
&lt;li&gt;IAM user or role&lt;/li&gt;
&lt;li&gt;Time of the event&lt;/li&gt;
&lt;li&gt;Source IP address&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Step 2: Filter Events
&lt;/h3&gt;

&lt;p&gt;You can filter by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Event name&lt;/li&gt;
&lt;li&gt;User name&lt;/li&gt;
&lt;li&gt;Resource type&lt;/li&gt;
&lt;li&gt;Time range&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is very useful when investigating issues.&lt;/p&gt;




&lt;h2&gt;
  
  
  Example: What CloudTrail Can Show You
&lt;/h2&gt;

&lt;p&gt;If you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start or stop an EC2 instance&lt;/li&gt;
&lt;li&gt;Modify a security group&lt;/li&gt;
&lt;li&gt;Create an Auto Scaling group&lt;/li&gt;
&lt;li&gt;Change CloudWatch alarms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CloudTrail records &lt;strong&gt;who performed the action and when&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  How CloudTrail Complements CloudWatch
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CloudWatch&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Monitors performance and triggers alarms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CloudTrail&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tracks user actions and API calls&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Together, they provide &lt;strong&gt;visibility + accountability&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Best Practice for Beginners
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Always enable CloudTrail&lt;/li&gt;
&lt;li&gt;Store logs securely in S3&lt;/li&gt;
&lt;li&gt;Review event history regularly&lt;/li&gt;
&lt;li&gt;Use CloudTrail when troubleshooting unexpected changes&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;CloudTrail gives you &lt;strong&gt;confidence and control&lt;/strong&gt; over your AWS account by recording every important action.&lt;/p&gt;

&lt;p&gt;With &lt;strong&gt;EC2, Auto Scaling, CloudWatch, and CloudTrail&lt;/strong&gt;, you now have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compute&lt;/li&gt;
&lt;li&gt;Scalability&lt;/li&gt;
&lt;li&gt;Monitoring&lt;/li&gt;
&lt;li&gt;Auditing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A solid foundation for working in AWS &lt;/p&gt;




</description>
      <category>devops</category>
      <category>aws</category>
      <category>cloud</category>
      <category>gcp</category>
    </item>
    <item>
      <title>Amazon CloudWatch: Monitoring Your EC2 Instances</title>
      <dc:creator> Ganiyat Olagoke Adebayo</dc:creator>
      <pubDate>Mon, 26 Jan 2026 13:50:03 +0000</pubDate>
      <link>https://dev.to/adebayo_ganiyatoladunjoy/amazon-cloudwatch-monitoring-your-ec2-instances-3c0g</link>
      <guid>https://dev.to/adebayo_ganiyatoladunjoy/amazon-cloudwatch-monitoring-your-ec2-instances-3c0g</guid>
      <description>&lt;h2&gt;
  
  
  Step 1: Recap – Creating an Amazon EC2 Instance
&lt;/h2&gt;

&lt;p&gt;Before we get into Amazon CloudWatch, let’s quickly recap how we created an &lt;strong&gt;EC2 instance&lt;/strong&gt;, since CloudWatch monitors resources like EC2.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1.1: Open the EC2 Dashboard
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Log in to the &lt;strong&gt;AWS Management Console&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;EC2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;EC2&lt;/strong&gt; to open the dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvpr2vl2uawy17mr5fys8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvpr2vl2uawy17mr5fys8.png" alt=" " width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 1.2: Launch an EC2 Instance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Launch instance&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F278ryimp1pgkod86d5tp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F278ryimp1pgkod86d5tp.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enter an instance name&lt;/li&gt;
&lt;li&gt;Choose an &lt;strong&gt;Amazon Machine Image (AMI)&lt;/strong&gt; (for example, Amazon Linux)&lt;/li&gt;
&lt;li&gt;Select an &lt;strong&gt;instance type&lt;/strong&gt; (e.g., &lt;code&gt;t2.micro&lt;/code&gt; for free tier)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn8xw3gzz2n05vgpj7abg.png" alt=" " width="800" height="432"&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1.3: Configure Key Pair and Security Group
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create or select a &lt;strong&gt;key pair&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Configure a &lt;strong&gt;security group&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcdocj5p9esp05r1qucaz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcdocj5p9esp05r1qucaz.png" alt=" " width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbcfanzr9pofg5r7jkhc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpbcfanzr9pofg5r7jkhc.png" alt=" " width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Allow SSH (port 22)&lt;/li&gt;
&lt;li&gt;Allow HTTP (port 80) if running a web app&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Step 1.4: Launch and Verify
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Launch instance&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5wb9g2nb31rnm490rpjn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5wb9g2nb31rnm490rpjn.png" alt=" " width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wait for the instance status to show &lt;strong&gt;Running&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhz9gi9mlxf8psj9vead.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjhz9gi9mlxf8psj9vead.png" alt=" " width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fee6iy077kpy2ccmwx16m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fee6iy077kpy2ccmwx16m.png" alt=" " width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point, your application is running on EC2.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F68f9civbyu1ubwfslggr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F68f9civbyu1ubwfslggr.png" alt=" " width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Monitoring Is Important After Creating EC2
&lt;/h2&gt;

&lt;p&gt;Once an EC2 instance is running, it’s important to understand how it performs. Without monitoring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You won’t know when CPU usage is high&lt;/li&gt;
&lt;li&gt;Performance issues can go unnoticed&lt;/li&gt;
&lt;li&gt;Auto Scaling cannot work effectively&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This leads us to &lt;strong&gt;Amazon CloudWatch&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Introduction to Amazon CloudWatch
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Amazon CloudWatch&lt;/strong&gt; is a monitoring service that collects metrics, logs, and events from AWS resources. It helps you monitor EC2 performance and respond to changes automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Viewing EC2 Metrics in CloudWatch
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 3.1: Open CloudWatch
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Search for &lt;strong&gt;CloudWatch&lt;/strong&gt; in the AWS console&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;CloudWatch&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu5mvaj334zcykta8pq3t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu5mvaj334zcykta8pq3t.png" alt=" " width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3.2: View EC2 Metrics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Metrics&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fohf4wzzhj498d9kk6akr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fohf4wzzhj498d9kk6akr.png" alt=" " width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;EC2&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg1rr7l13970wpz9mn6r7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg1rr7l13970wpz9mn6r7.png" alt=" " width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose &lt;strong&gt;Per-Instance Metrics&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fenh9lsb8itaqgfbebl5e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fenh9lsb8itaqgfbebl5e.png" alt=" " width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;CPUUtilization&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7emqoi9rlv1529yo7b5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7emqoi9rlv1529yo7b5.png" alt=" " width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll see a graph showing how your EC2 instance is performing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4: Create a CloudWatch Alarm for EC2
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9s7n1kv5icj70x48rb2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9s7n1kv5icj70x48rb2.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4.1: Create Alarm
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Alarms&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgd0ucq8gfyk8kd5gez4w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgd0ucq8gfyk8kd5gez4w.png" alt=" " width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Create alarm&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8woiqoqxx7m2z8pmtnmf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8woiqoqxx7m2z8pmtnmf.png" alt=" " width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;specify metric and condition&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsyode8an10y75mlisyu9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsyode8an10y75mlisyu9.png" alt=" " width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;EC2 CPU utilization&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs980xdylnnl0469z0fb1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs980xdylnnl0469z0fb1.png" alt=" " width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F596gkzkxjkxlwa0w7b4k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F596gkzkxjkxlwa0w7b4k.png" alt=" " width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 4.2: Set Threshold
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe189rfjl3g8ksqlcuxeq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe189rfjl3g8ksqlcuxeq.png" alt=" " width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Condition: CPU ≥ 75%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4lbm7einot204uta78k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw4lbm7einot204uta78k.png" alt=" " width="800" height="334"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Evaluation period: as preferred&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Next&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4.4: Create Alarm
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hxw1nawv9mcbngatsbw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hxw1nawv9mcbngatsbw.png" alt=" " width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name the alarm&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4d59hvjcja9nz2x2gc28.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4d59hvjcja9nz2x2gc28.png" alt=" " width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Create alarm&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkks5vtez4i5mup2zzqrf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkks5vtez4i5mup2zzqrf.png" alt=" " width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fip2oai6j83e0dlmg5px2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fip2oai6j83e0dlmg5px2.png" alt=" " width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz1atqasxmlqmsbtfkhga.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz1atqasxmlqmsbtfkhga.png" alt=" " width="800" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7xe7cqccyxipp4c9gnp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7xe7cqccyxipp4c9gnp.png" alt=" " width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F31rvb4u3zj1a683mt78q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F31rvb4u3zj1a683mt78q.png" alt=" " width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 4.3: Configure Notifications
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create or select an &lt;strong&gt;SNS topic&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhsmg57oj5ishwnmlvf7v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhsmg57oj5ishwnmlvf7v.png" alt=" " width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs44ssdls5cjzrbscbt8a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs44ssdls5cjzrbscbt8a.png" alt=" " width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx09fl87fz5zwjqccpkwl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx09fl87fz5zwjqccpkwl.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjv8ebnrl28ihphp8lqn1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjv8ebnrl28ihphp8lqn1.png" alt=" " width="800" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs84jw5q6gn2a38wdlkyi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs84jw5q6gn2a38wdlkyi.png" alt=" " width="800" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create or select an &lt;strong&gt;Subscription&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp2n0w4085bvubskl1jtg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp2n0w4085bvubskl1jtg.png" alt=" " width="800" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enter your email&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyi52vxyfezjwnr526719.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyi52vxyfezjwnr526719.png" alt=" " width="800" height="319"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzqh4p55jjofx9g1680c3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzqh4p55jjofx9g1680c3.png" alt=" " width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confirm the email subscription&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6cx0d44fz9sii1fqdaxi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6cx0d44fz9sii1fqdaxi.jpg" alt=" " width="720" height="1612"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fddsc36o5ukg3sygr8c0d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fddsc36o5ukg3sygr8c0d.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Step: Testing the CloudWatch Alarm Using Stress
&lt;/h2&gt;

&lt;p&gt;After creating the CloudWatch alarm, it’s important to confirm that it works correctly. To do this, we will intentionally increase the CPU usage on our EC2 instance and observe whether the alarm sends an email notification.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 1: Connect to Your EC2 Instance
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;EC2 → Instances&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select your running instance&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Connect&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Connect using &lt;strong&gt;EC2 Instance Connect&lt;/strong&gt; or &lt;strong&gt;SSH&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftvhn1biddblcr6qtjr5f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftvhn1biddblcr6qtjr5f.png" alt=" " width="800" height="354"&gt;&lt;/a&gt;&lt;br&gt;
You should now be logged into your EC2 instance terminal.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Install the Stress Tool
&lt;/h3&gt;

&lt;p&gt;The &lt;strong&gt;stress&lt;/strong&gt; tool is used to simulate high CPU usage.&lt;/p&gt;

&lt;p&gt;Run the command below:&lt;/p&gt;

&lt;p&gt;sudo yum install stress -y&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnul7sd0b3s3y5na84zmg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnul7sd0b3s3y5na84zmg.png" alt=" " width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This installs the stress utility on Amazon Linux.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Generate High CPU Load
&lt;/h3&gt;

&lt;p&gt;Once installation is complete, run the following command:&lt;/p&gt;

&lt;p&gt;stress --cpu 2 --timeout 300&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1fz0ot944a2vfrnvh3w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1fz0ot944a2vfrnvh3w.png" alt=" " width="800" height="315"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;What this command does:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--cpu 2&lt;/code&gt; → Uses 2 CPU workers to increase CPU usage&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--timeout 300&lt;/code&gt; → Runs the stress test for 300 seconds (5 minutes)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This will push the CPU utilization above the threshold set in your CloudWatch alarm.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flo3hlcrdsv5agpn4vhwf.png" alt=" " width="800" height="311"&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 4: Monitor CPU Usage in CloudWatch
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Open &lt;strong&gt;Amazon CloudWatch&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Metrics → EC2 → Per-Instance Metrics&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;CPUUtilization&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You should see a noticeable spike in CPU usage.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw5udhuspjidvgcecsfzb.png" alt=" " width="800" height="321"&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 5: Confirm the Alarm State
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;CloudWatch → Alarms&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select your alarm&lt;/li&gt;
&lt;li&gt;The alarm status should change from &lt;strong&gt;OK&lt;/strong&gt; to &lt;strong&gt;In alarm&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa64c1z7hratzb4z2wadp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa64c1z7hratzb4z2wadp.png" alt=" " width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 6: Confirm Email Notification
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Check the email address linked to your &lt;strong&gt;SNS topic&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;You should receive an alarm notification indicating high CPU usage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3z7045myqyh0uoy08ugj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3z7045myqyh0uoy08ugj.jpg" alt=" " width="720" height="1612"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This confirms that your CloudWatch alarm is working correctly.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 7: Alarm Returns to OK State
&lt;/h3&gt;

&lt;p&gt;Once the stress command finishes (after 300 seconds):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU usage will drop&lt;/li&gt;
&lt;li&gt;The alarm will automatically return to the &lt;strong&gt;OK&lt;/strong&gt; state&lt;/li&gt;
&lt;li&gt;You may receive another email notification (depending on your alarm settings)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why This Test Is Important
&lt;/h2&gt;

&lt;p&gt;Testing the alarm confirms that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CloudWatch is correctly monitoring your EC2 instance&lt;/li&gt;
&lt;li&gt;Notifications are properly configured&lt;/li&gt;
&lt;li&gt;Auto Scaling (if enabled) can respond to real workload changes&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Tip
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Always test your alarms after creating them. An untested alarm is as risky as having no alarm at all.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  How CloudWatch Works with Auto Scaling
&lt;/h2&gt;

&lt;p&gt;CloudWatch alarms can trigger Auto Scaling actions when thresholds are met. This allows AWS to automatically add or remove EC2 instances based on demand.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You created an &lt;strong&gt;EC2 instance&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;CloudWatch monitors its performance&lt;/li&gt;
&lt;li&gt;Alarms notify you when something changes&lt;/li&gt;
&lt;li&gt;Auto Scaling uses CloudWatch data to scale automatically&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Amazon CloudWatch is essential for monitoring EC2 instances and supporting Auto Scaling decisions. By combining EC2, Auto Scaling, and CloudWatch, you create a reliable and scalable AWS environment.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;You can’t scale what you can’t monitor.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>cloud</category>
      <category>ai</category>
    </item>
    <item>
      <title>AWS Auto Scaling Explained: A Beginner-Friendly Step-by-Step Guide</title>
      <dc:creator> Ganiyat Olagoke Adebayo</dc:creator>
      <pubDate>Thu, 22 Jan 2026 09:03:02 +0000</pubDate>
      <link>https://dev.to/adebayo_ganiyatoladunjoy/aws-auto-scaling-explained-a-beginner-friendly-step-by-step-guide-1584</link>
      <guid>https://dev.to/adebayo_ganiyatoladunjoy/aws-auto-scaling-explained-a-beginner-friendly-step-by-step-guide-1584</guid>
      <description>&lt;p&gt;In my previous post, I explained how to create and use an Amazon EC2 instance to run applications in the AWS cloud. While EC2 gives you control over your servers, it requires manual effort to handle changes in traffic and workload.&lt;/p&gt;

&lt;p&gt;As applications grow and traffic becomes unpredictable, managing capacity manually can be inefficient and costly. &lt;strong&gt;AWS Auto Scaling&lt;/strong&gt; solves this by automatically adjusting the number of EC2 instances based on demand.&lt;br&gt;
&lt;strong&gt;In the next section, we’ll walk through a step-by-step guide on how to set up AWS Auto Scaling from scratch.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Is AWS Auto Scaling?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWS Auto Scaling automatically adjusts the number of EC2 instances running in your application based on demand. When traffic increases, Auto Scaling adds more instances. When traffic decreases, it removes extra instances. &lt;/p&gt;

&lt;p&gt;AWS Auto Scaling automatically increases or decreases the number of EC2 servers running your application based on traffic or usage.&lt;/p&gt;

&lt;p&gt;More users → more servers added&lt;/p&gt;

&lt;p&gt;Fewer users → extra servers removed&lt;/p&gt;

&lt;p&gt;This keeps your application available while controlling costs.&lt;/p&gt;

&lt;p&gt;Think of Auto Scaling like a &lt;strong&gt;security team at an event&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When more people arrive, more guards are added&lt;/li&gt;
&lt;li&gt;When people leave, extra guards go home&lt;/li&gt;
&lt;li&gt;The event runs smoothly without waste&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Moving forward, in a previous post, we created an Amazon EC2 instance to run an application. As we progress, we will build on that setup and extend it by configuring AWS Auto Scaling.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Setting Up AWS Auto Scaling (Step by Step)&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Confirm Your EC2 Instance Is Running
&lt;/h3&gt;

&lt;p&gt;Before setting up Auto Scaling:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;EC2 → Instances&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Ensure your EC2 instance created earlier is &lt;strong&gt;running&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Confirm it has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A working application&lt;/li&gt;
&lt;li&gt;A security group allowing required traffic (for example, HTTP on port 80)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;This EC2 instance will be used as the base for Auto Scaling.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Create an Auto Scaling Group
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Auto Scaling Groups&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0usxeu31rg4omggjygtw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0usxeu31rg4omggjygtw.png" alt=" " width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Create Auto Scaling group&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv79g3je742ozolwmc8c9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv79g3je742ozolwmc8c9.png" alt=" " width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enter a &lt;strong&gt;name&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;launch template&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb7wxj6b7hdb0ip96s7wy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb7wxj6b7hdb0ip96s7wy.png" alt=" " width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Next&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Step 3: Choose Network Settings
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Select your &lt;strong&gt;VPC&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;at least two subnets&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1s5kyxedjyk9atjeal8c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1s5kyxedjyk9atjeal8c.png" alt=" " width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Next&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This improves availability.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 4 Attach a Load Balancer (Recommended)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Choose &lt;strong&gt;Attach to a new load balancer&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Application Load Balancer&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;Health checks&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy08vecylxsctl308o3i7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy08vecylxsctl308o3i7.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyu9c6n5hsjfz2yfa8kq4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyu9c6n5hsjfz2yfa8kq4.png" alt=" " width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This ensures traffic is shared and unhealthy instances are replaced.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 5: Set Capacity Limits
&lt;/h3&gt;

&lt;p&gt;Define how many servers can run:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Desired capacity&lt;/strong&gt;: 1&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Minimum capacity&lt;/strong&gt;: 1&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Maximum capacity&lt;/strong&gt;: 3&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7m6ibx11p7468jw37ssl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7m6ibx11p7468jw37ssl.png" alt=" " width="800" height="412"&gt;&lt;/a&gt;&lt;br&gt;
Click &lt;strong&gt;Next&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzirm49c7wo2pene3exa7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzirm49c7wo2pene3exa7.png" alt=" " width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 6: Configure Scaling Policy
&lt;/h3&gt;

&lt;p&gt;This tells AWS &lt;em&gt;when&lt;/em&gt; to scale.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose &lt;strong&gt;Target tracking scaling&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Metric: &lt;strong&gt;Average CPU utilization&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Target value: &lt;strong&gt;50%&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AWS will now scale automatically.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 7: Review and Create
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Review your settings&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create Auto Scaling group&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbz8csin229zmvqywwwd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbz8csin229zmvqywwwd.png" alt=" " width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8kz9ejd69nmd67c6q4m1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8kz9ejd69nmd67c6q4m1.png" alt=" " width="800" height="254"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your EC2-based application is now fully scalable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5ppkc46f8c6nzoz9bun.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5ppkc46f8c6nzoz9bun.png" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Just Happened?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You started with &lt;strong&gt;one EC2 instance&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Auto Scaling now launches identical EC2 instances when needed&lt;/li&gt;
&lt;li&gt;Extra instances are removed when traffic drops&lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;User traffic reaches the Load Balancer → traffic is shared across EC2 instances → Auto Scaling monitors CPU usage → new instances are added when demand increases → unused instances are removed when demand drops.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  When Should You Use Auto Scaling?
&lt;/h2&gt;

&lt;p&gt;Use Auto Scaling when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Traffic is unpredictable&lt;/li&gt;
&lt;li&gt;You want high availability&lt;/li&gt;
&lt;li&gt;You want to reduce costs&lt;/li&gt;
&lt;li&gt;You don’t want to manage servers manually&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;AWS Auto Scaling helps your application stay online, responsive, and cost-efficient without manual effort. It works perfectly with &lt;strong&gt;EC2, Load Balancers, and Elastic Beanstalk&lt;/strong&gt;, making it a core AWS service every beginner should understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Without Auto Scaling, a single EC2 instance can become overwhelmed or fail. By extending your EC2 setup with Auto Scaling, you ensure better performance, availability, and cost control.
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Auto Scaling does not replace EC2—it builds on it to make your application scalable and reliable.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




</description>
      <category>automation</category>
      <category>aws</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>A Step-by-Step Guide to AWS Elastic Beanstalk :Simplifying Application Deployment</title>
      <dc:creator> Ganiyat Olagoke Adebayo</dc:creator>
      <pubDate>Wed, 24 Dec 2025 21:02:01 +0000</pubDate>
      <link>https://dev.to/adebayo_ganiyatoladunjoy/a-step-by-step-guide-to-aws-elastic-beanstalk-simplifying-application-deployment-58da</link>
      <guid>https://dev.to/adebayo_ganiyatoladunjoy/a-step-by-step-guide-to-aws-elastic-beanstalk-simplifying-application-deployment-58da</guid>
      <description>&lt;p&gt;Deploying applications in the cloud can sometimes feel overwhelming, especially when you have to manage servers, scaling, monitoring, and security on your own. This is where &lt;strong&gt;AWS Elastic Beanstalk&lt;/strong&gt; comes in.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;AWS Elastic Beanstalk&lt;/strong&gt; is a service that makes it easy to deploy, manage, and scale applications on AWS without worrying about the underlying infrastructure. You simply upload your application, and Elastic Beanstalk automatically handles the setup and management for you.
&lt;/h2&gt;

&lt;p&gt;Elastic Beanstalk supports popular platforms such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Java&lt;/li&gt;
&lt;li&gt;.NET&lt;/li&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;PHP&lt;/li&gt;
&lt;li&gt;Ruby&lt;/li&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  How AWS Elastic Beanstalk Works
&lt;/h3&gt;

&lt;p&gt;When you deploy an application using Elastic Beanstalk, AWS automatically provisions and manages the required resources, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon EC2 instances&lt;/li&gt;
&lt;li&gt;Load balancers&lt;/li&gt;
&lt;li&gt;Auto Scaling groups&lt;/li&gt;
&lt;li&gt;Monitoring and health checks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Although Elastic Beanstalk manages these resources for you, you still have access to them if you need more control.&lt;/p&gt;




&lt;h3&gt;
  
  
  Benefits of AWS Elastic Beanstalk
&lt;/h3&gt;

&lt;p&gt;Some key benefits include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Easy deployment&lt;/strong&gt; – Upload your application and let AWS handle the rest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatic scaling&lt;/strong&gt; – Your application scales up or down based on traffic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost-effective&lt;/strong&gt; – You only pay for the AWS resources used&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Less infrastructure management&lt;/strong&gt; – Focus more on development, less on servers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Flexible control&lt;/strong&gt; – You can customize settings when needed&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  AWS Elastic Beanstalk vs Amazon EC2
&lt;/h3&gt;

&lt;p&gt;A simple way to understand the difference:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Amazon EC2&lt;/strong&gt;:&lt;br&gt;
You are responsible for managing servers, updates, scaling, and monitoring.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS Elastic Beanstalk&lt;/strong&gt;:&lt;br&gt;
AWS manages the infrastructure, while you focus on your application.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Elastic Beanstalk actually runs on EC2, but it removes the complexity of managing everything manually.&lt;/p&gt;




&lt;h3&gt;
  
  
  When Should You Use AWS Elastic Beanstalk?
&lt;/h3&gt;

&lt;p&gt;AWS Elastic Beanstalk is a good choice if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You want a fast and easy way to deploy applications&lt;/li&gt;
&lt;li&gt;You do not want to manage servers directly&lt;/li&gt;
&lt;li&gt;You are new to AWS and want a simpler starting point&lt;/li&gt;
&lt;li&gt;You need automatic scaling and monitoring&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Here is a Step-by-Step Guide to Creating an AWS Elastic Beanstalk Application
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Sign in to the AWS Management Console
&lt;/h3&gt;

&lt;p&gt;Go to the AWS Management Console and sign in with your AWS account.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Navigate to Elastic Beanstalk
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In the AWS search bar, type &lt;strong&gt;Elastic Beanstalk&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Elastic Beanstalk&lt;/strong&gt; from the services list&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flqxrle0n42h7r3en8vx6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flqxrle0n42h7r3en8vx6.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Create a New Application
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Create application&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F446wozr5465fu2i59bqq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F446wozr5465fu2i59bqq.png" alt=" " width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enter an &lt;strong&gt;Application name&lt;/strong&gt; (for example: &lt;code&gt;getting-started-app&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;(Optional) Add a description&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm7poobsz7b58wzhba1cp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm7poobsz7b58wzhba1cp.png" alt=" " width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 4: Choose Your Platform
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Under &lt;strong&gt;Platform&lt;/strong&gt;, select the programming language your app uses&lt;br&gt;
Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;PHP&lt;/li&gt;
&lt;li&gt;Java&lt;/li&gt;
&lt;li&gt;.NET&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Choose the &lt;strong&gt;platform version&lt;/strong&gt; (you can leave the default)&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcctcqz70du4e0kcsiv7i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcctcqz70du4e0kcsiv7i.png" alt=" " width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 5: Upload Your Application Code
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Under &lt;strong&gt;Application code&lt;/strong&gt;, choose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Sample application&lt;/strong&gt; (recommended for first-time users),&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzet02yz8iig87r9wsii2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzet02yz8iig87r9wsii2.png" alt=" " width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Upload your code&lt;/strong&gt; (if you already have an app)

&lt;ul&gt;
&lt;li&gt;If uploading your code, select your file (ZIP format)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h3&gt;
  
  
  Step 6: Configure Application Settings (Service Role, Instance Profile, and Key Pair)
&lt;/h3&gt;

&lt;p&gt;Before creating the environment, you need to configure security and access settings so Elastic Beanstalk can manage AWS resources and you can securely access your EC2 instances.&lt;/p&gt;




&lt;h4&gt;
  
  
  Step 6.1: Configure the Elastic Beanstalk Service Role
&lt;/h4&gt;

&lt;p&gt;The service role allows Elastic Beanstalk to interact with other AWS services on your behalf.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To configure service access&lt;/strong&gt;&lt;br&gt;
Next, you need two roles. A service role allows Elastic Beanstalk to monitor your EC2 instances and upgrade your environment’s platform. An EC2 instance profile role permits tasks such as writing logs and interacting with other services.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;To create or select the Service role&lt;/strong&gt;
If you have previously created a Service role and would like to choose an existing one, select the value from the Service role drop-down and skip the remainder of these steps to create a Service role.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you don't see any values listed for the Service role, or you'd like to create a new one, continue with the next steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Service role, choose Create role.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqey0tygxdg04f19tk5c0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqey0tygxdg04f19tk5c0.png" alt=" " width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Trusted entity type, choose AWS service.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fesk2vqlvk2y4sd2mwbk2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fesk2vqlvk2y4sd2mwbk2.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Use case, choose Elastic Beanstalk – Environment.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc1hlcsdf5ht0jxc9y42f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc1hlcsdf5ht0jxc9y42f.png" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose Next.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verify that Permissions policies include the following, then choose Next:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWSElasticBeanstalkEnhancedHealth&lt;/p&gt;

&lt;p&gt;AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fya40g1n95e02uli49fxy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fya40g1n95e02uli49fxy.png" alt=" " width="800" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwscgomi3qxqxq6vf7mw3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwscgomi3qxqxq6vf7mw3.png" alt=" " width="800" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose Create role.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl4zvjkqfvcrkgs97hbwa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl4zvjkqfvcrkgs97hbwa.png" alt=" " width="800" height="323"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Return to the Configure service access tab, refresh the list, then select the newly created service role.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6.2 To create or select an EC2 instance profile&lt;/strong&gt;&lt;br&gt;
The EC2 instance profile allows EC2 instances in your environment to access AWS services securely.&lt;br&gt;
If you have previously created an EC2 instance profile and would like to choose an existing one, select the value from the EC2 instance profile drop-down and skip the remainder of these steps to create an EC2 instance profile.&lt;/p&gt;

&lt;p&gt;If you don't see any values listed for EC2 instance profile, or you'd like to create a new one, continue with the next steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose Create role.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fltsqkk3m78xyzw0sx0d4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fltsqkk3m78xyzw0sx0d4.png" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Trusted entity type, choose AWS service.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fymv7sl2csaotaebrsmph.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fymv7sl2csaotaebrsmph.png" alt=" " width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Use case, choose Elastic Beanstalk – Compute.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj97xl10i3q02msyizyfa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj97xl10i3q02msyizyfa.png" alt=" " width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose Next.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verify that Permissions policies include the following, then choose Next:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AWSElasticBeanstalkWebTier&lt;/p&gt;

&lt;p&gt;AWSElasticBeanstalkWorkerTier&lt;/p&gt;

&lt;p&gt;AWSElasticBeanstalkMulticontainerDocker&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiwd33i32ntdlpf9wqn8c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiwd33i32ntdlpf9wqn8c.png" alt=" " width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose Create role.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw6ze97hcpxvbzjx5xpdn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw6ze97hcpxvbzjx5xpdn.png" alt=" " width="800" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Return to the Configure service access tab, refresh the list, then select the newly created EC2 instance profile.&lt;/p&gt;

&lt;p&gt;To finish configuring and creating your application&lt;br&gt;
&lt;strong&gt;Step 6.3: Select a Key Pair&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A key pair allows you to securely connect to the EC2 instances created by Elastic Beanstalk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Search for key pair&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffdgvzqunv8uqr0bef3ot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffdgvzqunv8uqr0bef3ot.png" alt=" " width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Under EC2 key pair: Select an existing key pair, or Click Create a new key pair&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxpennl411fiynmi21p3u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxpennl411fiynmi21p3u.png" alt=" " width="800" height="319"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Enter a key pair name&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qj65ynh2awmd8o8mnsv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qj65ynh2awmd8o8mnsv.png" alt=" " width="800" height="315"&gt;&lt;/a&gt;&lt;br&gt;
Download and store the key file securely&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Without a key pair, you will not be able to connect to the EC2 instance using SSH.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Optional steps: networking, databases, scaling parameters, advanced configuration for updates, monitoring, and logging.&lt;/p&gt;

&lt;p&gt;On the Review page, which shows a summary of your choices, &lt;strong&gt;choose Submit.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwnqmuxfecu26icf4ujcq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwnqmuxfecu26icf4ujcq.png" alt=" " width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h4&gt;
  
  
  Step 6.4: Review Other Settings (Optional)
&lt;/h4&gt;

&lt;p&gt;You can keep the default settings for now or adjust them if needed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instance type (EC2 size)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy0qeccj9m383gb7887mq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy0qeccj9m383gb7887mq.png" alt=" " width="800" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auto scaling options&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftk8r5thplmcdhv0eytlj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftk8r5thplmcdhv0eytlj.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Environment variables&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwqb16h5nye0tb524mxcq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwqb16h5nye0tb524mxcq.png" alt=" " width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security groups&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fglcqomy1611243zow3cs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fglcqomy1611243zow3cs.png" alt=" " width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Beginners can safely proceed with the default configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0058baunkyr3luijmo7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0058baunkyr3luijmo7.png" alt=" " width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmzkgtjgtjagjp7b2h5zb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmzkgtjgtjagjp7b2h5zb.png" alt=" " width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedfu8suij4rcunwe41rk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedfu8suij4rcunwe41rk.png" alt=" " width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc0pdjtncv5cfo4cnayqg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc0pdjtncv5cfo4cnayqg.png" alt=" " width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7atn111bnl3q1nm8wbwo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7atn111bnl3q1nm8wbwo.png" alt=" " width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 7: Create the Environment
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Create application&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AWS will automatically set up the required resources, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EC2 instances&lt;/li&gt;
&lt;li&gt;Load balancer&lt;/li&gt;
&lt;li&gt;Auto Scaling group&lt;/li&gt;
&lt;li&gt;Monitoring and health checks&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;This process may take a few minutes. Once complete, your application will be live.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7etmovmwhocv374cw2i0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7etmovmwhocv374cw2i0.png" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3mdkunbiv542xu0t74xt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3mdkunbiv542xu0t74xt.png" alt=" " width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And your Beanstalk is LIVE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fclvneayfk4o1nfyj0ocm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fclvneayfk4o1nfyj0ocm.png" alt=" " width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flhmufxho74s9uy0kslgf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flhmufxho74s9uy0kslgf.png" alt=" " width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To access the EC2 created&lt;/strong&gt;&lt;br&gt;
On the AWS Console, search EC2&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F88g5qt03w6mhj87dx0jw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F88g5qt03w6mhj87dx0jw.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;** Check the dashboard to confirm the instance status is &lt;strong&gt;running&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1j2vt425suxl29wbh3j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1j2vt425suxl29wbh3j.png" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Click on the App created and then connect&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fekv4wczx8anrf9u120zs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fekv4wczx8anrf9u120zs.png" alt=" " width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frje7xnfhmwrzt00h0ar0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frje7xnfhmwrzt00h0ar0.png" alt=" " width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And here is the EC2 instance that was created  while setting up the Elastic Beanstalk&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcyo10pwzw0ehnaljuz9y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcyo10pwzw0ehnaljuz9y.png" alt=" " width="800" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;S3 Bucket created&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1y7zzg1clawcgocj7coo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1y7zzg1clawcgocj7coo.png" alt=" " width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi7ahyi8frzgeejxnm3df.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi7ahyi8frzgeejxnm3df.png" alt=" " width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Auto Scaling group created&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7f489v4ft9uav1qmh797.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7f489v4ft9uav1qmh797.png" alt=" " width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3sqsk702ixngggw63yd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3sqsk702ixngggw63yd.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 8: Terminate the Application
&lt;/h3&gt;

&lt;p&gt;** To stop billing: &lt;strong&gt;Terminate the environment&lt;/strong&gt; when you’re done&lt;br&gt;
To delete the application and all associated resources&lt;br&gt;
Delete all application versions.&lt;/p&gt;

&lt;p&gt;Open the Elastic Beanstalk console, and in the Regions list, select your AWS Region.&lt;/p&gt;

&lt;p&gt;In the navigation pane, choose Applications, and then choose getting-started-app.&lt;/p&gt;

&lt;p&gt;In the navigation pane, find your application's name and choose Application versions.&lt;/p&gt;

&lt;p&gt;On the Application versions page, select all application versions that you want to delete.&lt;/p&gt;

&lt;p&gt;Choose Actions, and then choose Delete.&lt;/p&gt;

&lt;p&gt;Turn on Delete versions from Amazon S3.&lt;/p&gt;

&lt;p&gt;Choose Delete, and then choose Done.&lt;/p&gt;

&lt;p&gt;Terminate the environment.&lt;/p&gt;

&lt;p&gt;In the navigation pane, choose getting-started-app, and then choose GettingStartedApp-env in the environment list.&lt;/p&gt;

&lt;p&gt;Choose Actions, and then choose Terminate Environment.&lt;/p&gt;

&lt;p&gt;Confirm that you want to terminate GettingStartedApp-env by typing the environment name, and then choose Terminate.&lt;/p&gt;

&lt;p&gt;Delete the getting-started-app application.&lt;/p&gt;

&lt;p&gt;In the navigation pane, choose the getting-started-app.&lt;/p&gt;

&lt;p&gt;Choose Actions, and then choose Delete application.&lt;/p&gt;

&lt;p&gt;Confirm that you want to delete getting-started-app by typing the application name, and then choose Delete.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjpz0ue09muuce3uocn6x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjpz0ue09muuce3uocn6x.png" alt=" " width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;AWS Elastic Beanstalk simplifies application deployment by handling infrastructure management for you behind the scenes. It is a great option for developers who want the power of AWS without the complexity of managing servers manually. &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>aws</category>
      <category>devops</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>From Azure VMs to AWS EC2 — Learning Compute Across Clouds</title>
      <dc:creator> Ganiyat Olagoke Adebayo</dc:creator>
      <pubDate>Wed, 17 Dec 2025 11:55:57 +0000</pubDate>
      <link>https://dev.to/adebayo_ganiyatoladunjoy/from-azure-vms-to-aws-ec2-learning-compute-across-clouds-2p7a</link>
      <guid>https://dev.to/adebayo_ganiyatoladunjoy/from-azure-vms-to-aws-ec2-learning-compute-across-clouds-2p7a</guid>
      <description>&lt;p&gt;As I continue learning Microsoft Azure, I’ve started exploring Amazon Web Services (AWS) to understand how core cloud concepts translate across platforms.&lt;/p&gt;

&lt;p&gt;Today, I worked on creating an EC2 (Elastic Compute Cloud) instance — AWS’s virtual server service. While the interface and terminology differ from Azure Virtual Machines, the fundamentals remain the same:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Choose an image&lt;/li&gt;
&lt;li&gt;Select instance size&lt;/li&gt;
&lt;li&gt;Configure networking &amp;amp; security&lt;/li&gt;
&lt;li&gt;Launch and connect&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amazon Elastic Compute Cloud (EC2)&lt;/strong&gt; is an AWS service that lets you run virtual servers in the cloud whenever you need them. Instead of buying physical hardware, you can quickly create servers online and start building or running applications faster and at a lower cost.&lt;/p&gt;

&lt;p&gt;With EC2, you can choose how many servers you need, set up security and networking, and manage storage easily. You can increase server capacity when you have heavy workloads or high website traffic, and reduce it again when demand is low, helping you save costs.&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;EC2 instance&lt;/strong&gt; is simply a virtual server in AWS. When you create one, you choose an instance type, which decides how much computing power, memory, networking, and storage the server will have.&lt;/p&gt;




&lt;p&gt;Documenting these similarities and differences is helping me strengthen my cloud fundamentals and build a true multi-cloud mindset.&lt;/p&gt;

&lt;p&gt;Here’s a step-by-step guide from my hands-on experience:&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Sign in &amp;amp; Navigate&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Log in to your AWS Management Console.&lt;/li&gt;
&lt;li&gt;Go to the &lt;strong&gt;EC2 service&lt;/strong&gt; under “Compute.”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa4fhhvrmosb6778468ix.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa4fhhvrmosb6778468ix.png" alt=" " width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Launch Instance&lt;/strong&gt; to start creating your virtual server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu11jl4wfcwg00p9e9z51.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu11jl4wfcwg00p9e9z51.png" alt=" " width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add Tag&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2c9ckzimy25k10dhm0qp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2c9ckzimy25k10dhm0qp.png" alt=" " width="800" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fee8xf6g8knttvf2czey6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fee8xf6g8knttvf2czey6.png" alt=" " width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Choose an Amazon Machine Image (AMI)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pick a pre-configured operating system (Linux, Windows, etc.).&lt;/li&gt;
&lt;li&gt;Think of it like choosing the OS for an Azure VM — same concept, different interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fntqe7ovmj8jwbl09i8hq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fntqe7ovmj8jwbl09i8hq.png" alt=" " width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add key pair&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvomx0nbbedn6u5ajn5pw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvomx0nbbedn6u5ajn5pw.png" alt=" " width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmb0zxrq65ybe0lztxeh8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmb0zxrq65ybe0lztxeh8.png" alt=" " width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Select RDP and http&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fey2l7utl2g053zkvvkrg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fey2l7utl2g053zkvvkrg.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Launch &amp;amp; Connect&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Review all settings and click &lt;strong&gt;Launch&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhge7rl1qq4cs20zpnay9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhge7rl1qq4cs20zpnay9.png" alt=" " width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*Generate and copy the password &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo3tyvjhomkvdznhqyhth.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo3tyvjhomkvdznhqyhth.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download the key pair (.pem file) to securely connect via SSH (Linux) or RDP (Windows).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9sfcl8jrg2f7fggy9p3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9sfcl8jrg2f7fggy9p3.png" alt=" " width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download the RDP file and connect with the copied password&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgy3on49c8nm2vahokg59.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgy3on49c8nm2vahokg59.png" alt=" " width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxca0a7n1454kdlqonltd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxca0a7n1454kdlqonltd.png" alt=" " width="800" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Congratulations! Your EC2 instance is live.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05a8e9rc5flay1mea4lb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05a8e9rc5flay1mea4lb.png" alt=" " width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start surfing the internet&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsie1vgfq8vj0a7l680ub.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsie1vgfq8vj0a7l680ub.png" alt=" " width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;EC2 creation feels different from Azure VMs at first, but the cloud fundamentals are consistent.&lt;br&gt;
Documenting these steps helps me compare platforms and strengthen my multi-cloud skills.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>cloud</category>
      <category>ai</category>
    </item>
    <item>
      <title># 🧹 Azure Management Series — Cleaning Up Resources Safely in Azure</title>
      <dc:creator> Ganiyat Olagoke Adebayo</dc:creator>
      <pubDate>Mon, 15 Dec 2025 09:36:10 +0000</pubDate>
      <link>https://dev.to/adebayo_ganiyatoladunjoy/-azure-management-series-cleaning-up-resources-safely-in-azure-59h2</link>
      <guid>https://dev.to/adebayo_ganiyatoladunjoy/-azure-management-series-cleaning-up-resources-safely-in-azure-59h2</guid>
      <description>&lt;p&gt;When working in Azure—especially during guided projects, labs, or training—it's easy to accumulate resources that continue running in the background. Virtual machines, disks, storage accounts, and networking components can quietly incur charges even when you're no longer using them.&lt;/p&gt;

&lt;p&gt;That’s why cleanup is the final and most critical step. In this post, you’ll walk through the Azure cleanup process for the guided project environment—removing locks, deleting the resource group, and ensuring no leftover infrastructure continues to generate costs.&lt;/p&gt;

&lt;p&gt;Let’s dive in! 👇&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Why Cleanup Matters&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Azure resources cost money as long as they exist—even if they’re not running.&lt;/p&gt;

&lt;p&gt;Proper cleanup helps you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Avoid surprise charges &lt;/li&gt;
&lt;li&gt;Keep your Azure environment tidy and manageable&lt;/li&gt;
&lt;li&gt;Ensure you start fresh for future labs or projects&lt;/li&gt;
&lt;li&gt;Follow best practices for real-world cloud resource lifecycle management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you're done with a lab or temporary environment, deleting the resource group is the fastest and cleanest way to remove everything at once.&lt;br&gt;
But first—you must clear any delete locks.&lt;/p&gt;




&lt;h1&gt;
  
  
  Exercise — Clean Up Azure Resources
&lt;/h1&gt;

&lt;p&gt;Below is the step-by-step process to safely remove all resources created during the guided project.&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;1. Remove Delete Locks&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Delete locks prevent accidental deletion—but they &lt;em&gt;also&lt;/em&gt; prevent the resource group from being removed. So you must remove them first.&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Log in to &lt;strong&gt;Azure Portal&lt;/strong&gt; → &lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;https://portal.azure.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;In the search bar, type &lt;strong&gt;Virtual machines&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;guided-project-vm&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Settings&lt;/strong&gt;, choose &lt;strong&gt;Locks&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Locate &lt;strong&gt;VM-delete-lock&lt;/strong&gt;, then click &lt;strong&gt;Delete&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Confirm deletion in the pop-up&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0gg9e7k57djbza1cfab.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0gg9e7k57djbza1cfab.png" alt=" " width="800" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you created additional delete locks during previous exercises, remove those as well.&lt;/p&gt;

&lt;p&gt;The VM is now ready to be deleted.&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;2. Delete the Project Resource Group&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;This is the quickest way to delete &lt;em&gt;all resources&lt;/em&gt; created for the guided project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;In the portal search bar, type &lt;strong&gt;Resource groups&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;guided-project-rg&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Delete resource group&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Check &lt;strong&gt;Apply force delete…&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Type &lt;strong&gt;guided-project-rg&lt;/strong&gt; to confirm&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Delete&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Confirm once more in the pop-up&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3lsomq03t04dniir3uk8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3lsomq03t04dniir3uk8.png" alt=" " width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The deletion may take about &lt;strong&gt;5 minutes&lt;/strong&gt;.&lt;br&gt;
Refresh the page until the group disappears.&lt;/p&gt;




&lt;h1&gt;
  
  
  Important Reminder: NetworkWatcherRG
&lt;/h1&gt;

&lt;p&gt;Azure sometimes creates a &lt;strong&gt;NetworkWatcherRG&lt;/strong&gt; resource group automatically.&lt;/p&gt;

&lt;p&gt;You must check whether it already existed &lt;em&gt;before&lt;/em&gt; the project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If &lt;strong&gt;it existed originally → DO NOT delete it&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;If &lt;strong&gt;Azure created it during this project → you MUST delete it&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  To delete it (only if required):
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;Resource groups&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;NetworkWatcherRG&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;Delete resource group&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Confirm with the name&lt;/li&gt;
&lt;li&gt;Delete&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fufo65bh3q93l93s4y8kf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fufo65bh3q93l93s4y8kf.png" alt=" " width="800" height="461"&gt;&lt;/a&gt;&lt;br&gt;
Again, it may take around 5 minutes.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Thoughts — And What’s Next
&lt;/h1&gt;

&lt;p&gt;Congratulations! You’ve completed the final step of the guided Azure Management Project: performing a proper cleanup.&lt;/p&gt;

&lt;p&gt;This brings your entire project cycle full-circle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You prepared the environment&lt;/li&gt;
&lt;li&gt;Created networks and subnets&lt;/li&gt;
&lt;li&gt;Deployed and managed virtual machines&lt;/li&gt;
&lt;li&gt;Controlled storage access&lt;/li&gt;
&lt;li&gt;Applied tags and locks&lt;/li&gt;
&lt;li&gt;And now… safely removed all resources&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You're now ready for the &lt;strong&gt;cloud adventure&lt;/strong&gt;, where you’ll expand into more advanced Azure responsibilities and continue developing real-world cloud management skills.&lt;/p&gt;




</description>
      <category>azure</category>
      <category>cloud</category>
      <category>learning</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Azure Management Series — Managing Tags &amp; Locks in Azure</title>
      <dc:creator> Ganiyat Olagoke Adebayo</dc:creator>
      <pubDate>Wed, 10 Dec 2025 11:55:29 +0000</pubDate>
      <link>https://dev.to/adebayo_ganiyatoladunjoy/azure-management-series-managing-tags-locks-in-azure-4ii4</link>
      <guid>https://dev.to/adebayo_ganiyatoladunjoy/azure-management-series-managing-tags-locks-in-azure-4ii4</guid>
      <description>&lt;h2&gt;
  
  
  ** Introduction**
&lt;/h2&gt;

&lt;p&gt;Having completed the previous exercises, you’ve managed to add a subnet to a virtual network, made changes to a virtual machine, and worked with an Azure storage account.&lt;/p&gt;

&lt;p&gt;As your Azure environment grows, keeping resources organized and protected becomes essential. Tags help you track metadata such as cost centers, owners, and environments—while locks ensure that important resources cannot be accidentally deleted or modified.&lt;br&gt;
In this post, you’ll learn how to &lt;strong&gt;apply tags&lt;/strong&gt;, &lt;strong&gt;manage resource locks&lt;/strong&gt;, and &lt;strong&gt;strengthen governance&lt;/strong&gt; across your Azure resources, building on the work you completed in the previous exercises.&lt;/p&gt;




&lt;h2&gt;
  
  
  ** Step-by-Step Guide**
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ** Add a Tag to a Resource**
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Log in to &lt;strong&gt;Azure Portal&lt;/strong&gt;: &lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;https://portal.azure.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Select virtual machines under services.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;guided-project-vm&lt;/strong&gt; virtual machine&lt;/li&gt;
&lt;li&gt;From the left menu, select &lt;strong&gt;Tags&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Add&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Add the following tag:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;On one line  * &lt;strong&gt;Name:&lt;/strong&gt; Department&lt;br&gt;
              * &lt;strong&gt;Value:&lt;/strong&gt; Customer Service&lt;br&gt;
On the next line&lt;br&gt;
              * &lt;strong&gt;Name:&lt;/strong&gt; Purpose&lt;br&gt;
              * &lt;strong&gt;Value:&lt;/strong&gt; FTP Server&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxzry433uumnysrgulod.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxzry433uumnysrgulod.png" alt=" " width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;Save&lt;/strong&gt;.
Select Apply&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Your resource now has metadata attached for easier tracking and reporting.&lt;/p&gt;




&lt;h3&gt;
  
  
  ** Create a Resource Lock**
&lt;/h3&gt;

&lt;p&gt;Locks prevent accidental deletion or changes to a resource, so While you’re working on the virtual machine, it’s a great time to add a resource lock..&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;expand the Settings submenu.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Locks&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;+ Add&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzxqaj5pt63zfs4pbfb0z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzxqaj5pt63zfs4pbfb0z.png" alt=" " width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;For the name, enter &lt;strong&gt;VM-delete-lock&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;For the Lock type, select &lt;strong&gt;Delete&lt;/strong&gt;.
You may enter a note to help remind you why you created the lock.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6w9glkpyvsoa1abg24n1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6w9glkpyvsoa1abg24n1.png" alt=" " width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select OK.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, your storage account cannot be deleted until the lock is removed.&lt;/p&gt;




&lt;h3&gt;
  
  
  ** Test the Lock**
&lt;/h3&gt;

&lt;p&gt;You can go ahead to test the lock by:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;strong&gt;storage account&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Delete&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;You’ll receive an error because the resource is locked.&lt;/li&gt;
&lt;li&gt;Cancel the operation — the lock works as expected.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That’s it. Now the VM is protected from deletion and has tags assigned to help track use. Time to move onto the network.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Add tags to network resources&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Select Home to return to the Azure portal home page.&lt;/li&gt;
&lt;li&gt;From the Azure portal home page, in the search box, enter virtual         networks.&lt;/li&gt;
&lt;li&gt;Select virtual networks under services.&lt;/li&gt;
&lt;li&gt;Select the guided-project-vnet network.&lt;/li&gt;
&lt;li&gt;From the menu pane, select Tags.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Note: Notice that now you can select an existing tag to apply or add a new tag. You can also select just the name or value and apply create something new in the other field.&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;For the Name select Department.&lt;/li&gt;
&lt;li&gt;For the Value enter IT.&lt;/li&gt;
&lt;li&gt;Select Apply.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq0nmqtt0tbvpj9yc5v0f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq0nmqtt0tbvpj9yc5v0f.png" alt=" " width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now both the VNet and VM have are organized.&lt;/p&gt;




&lt;h2&gt;
  
  
  ** Conclusion**
&lt;/h2&gt;

&lt;p&gt;Great work! You’ve now improved governance in your Azure environment by using &lt;strong&gt;tags for organization&lt;/strong&gt; and &lt;strong&gt;locks for protection&lt;/strong&gt;. These small steps make resource management more scalable and secure—especially in environments with multiple admins or large deployments.&lt;/p&gt;

&lt;p&gt;Next, we move to the final step of this series:&lt;br&gt;
 &lt;strong&gt;Cleaning Up Azure Resources Safely and Efficiently.&lt;/strong&gt;&lt;/p&gt;




</description>
      <category>devops</category>
      <category>aws</category>
      <category>ai</category>
      <category>azure</category>
    </item>
    <item>
      <title># 🚀 Azure Storage Series — Controlling Storage Access with Containers, File Shares &amp; SAS Tokens</title>
      <dc:creator> Ganiyat Olagoke Adebayo</dc:creator>
      <pubDate>Wed, 10 Dec 2025 09:47:32 +0000</pubDate>
      <link>https://dev.to/adebayo_ganiyatoladunjoy/-azure-storage-series-controlling-storage-access-with-containers-file-shares-sas-tokens-1bca</link>
      <guid>https://dev.to/adebayo_ganiyatoladunjoy/-azure-storage-series-controlling-storage-access-with-containers-file-shares-sas-tokens-1bca</guid>
      <description>&lt;p&gt;As organizations generate more files and application data, &lt;strong&gt;secure and efficient storage management becomes critical&lt;/strong&gt;.&lt;br&gt;
The Azure admin wants you to get more familiar with storage accounts, containers, and file shares. They anticipate needing to share an increasing number of files and need someone who is skilled using these services. They’ve given you a task of creating a storage container and a file share and uploading files to both locations. In this hands-on Azure lab, we explore how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a &lt;strong&gt;Blob Storage Container&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Upload and manage files&lt;/li&gt;
&lt;li&gt;Change &lt;strong&gt;Blob Access Tiers&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Create a &lt;strong&gt;File Share&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Secure access using a &lt;strong&gt;Shared Access Signature (SAS)&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Revoke access by &lt;strong&gt;rotating access keys&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This exercise is perfect for beginners building real-world Azure storage skills.&lt;/p&gt;




&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before starting, make sure you already have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An active &lt;strong&gt;Azure subscription&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;Storage Account&lt;/strong&gt; created earlier&lt;/li&gt;
&lt;li&gt;Access to the &lt;strong&gt;Azure Portal&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;A file saved on your computer to upload (an image or document)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Part 1: Create a Storage Container
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Log in to the Azure portal:
&lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;https://portal.azure.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;In the search bar, type &lt;strong&gt;Storage accounts&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select your previously created storage account&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi5iueo7eivxpxnvme3bk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi5iueo7eivxpxnvme3bk.png" alt=" " width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Under &lt;strong&gt;Data storage&lt;/strong&gt;, select &lt;strong&gt;Containers&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Add container&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Enter the name:
&lt;strong&gt;storage-container&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6bwspzl1zpuca4b5jpv7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6bwspzl1zpuca4b5jpv7.png" alt=" " width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your blob container is now ready.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 2: Upload a File to the Storage Container
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;storage-container&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Upload&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select a file from your computer&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Upload&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnda8teg40ghvuzxoedvr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnda8teg40ghvuzxoedvr.png" alt=" " width="800" height="469"&gt;&lt;/a&gt;&lt;br&gt;
Once uploaded, Azure automatically assigns it to the &lt;strong&gt;Hot access tier&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjrz7irord08te8vdr2j0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjrz7irord08te8vdr2j0.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 3: Change the Blob Access Tier (Hot → Cold)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Select the uploaded file&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Change tier&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu97waxjgaqv3dsl6o55q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu97waxjgaqv3dsl6o55q.png" alt=" " width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Choose &lt;strong&gt;Cold&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmjrv1esuqdsow3ifv195.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmjrv1esuqdsow3ifv195.png" alt=" " width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This reduces storage cost for files that are accessed less frequently.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 4: Create a File Share
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go back to your &lt;strong&gt;Storage Account&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fijwrbsgvf8h2rb3sayg8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fijwrbsgvf8h2rb3sayg8.png" alt=" " width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Under &lt;strong&gt;Data storage&lt;/strong&gt;, select &lt;strong&gt;File shares&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ File share&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Name it:
&lt;strong&gt;file-share&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8acdnnvh6rr9hbgb4q9w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8acdnnvh6rr9hbgb4q9w.png" alt=" " width="800" height="454"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;strong&gt;Backup tab&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Uncheck &lt;strong&gt;Enable backup&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4yjk2tgwfun6h0hy6a7f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4yjk2tgwfun6h0hy6a7f.png" alt=" " width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Review + create → Create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feryhj230pgy9e738tdoc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feryhj230pgy9e738tdoc.png" alt=" " width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, click &lt;strong&gt;Upload&lt;/strong&gt; and upload the same file or any other file.&lt;/p&gt;

&lt;p&gt;You now have both &lt;strong&gt;Blob Storage&lt;/strong&gt; and &lt;strong&gt;File Share storage&lt;/strong&gt; configured.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 5: Secure Access Using Shared Access Signature (SAS)
&lt;/h2&gt;

&lt;p&gt;Instead of giving full access to your storage account, Azure allows you to grant &lt;strong&gt;temporary, limited access&lt;/strong&gt; using a &lt;strong&gt;SAS token&lt;/strong&gt;.&lt;br&gt;
The next piece of the puzzle is figuring one way to control access to the files that have been uploaded. Azure has many ways to control files, including things like role-based access control. In this scenario, we shall use shared access tokens or keys.&lt;/p&gt;

&lt;h3&gt;
  
  
  Generate a SAS Token
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open your &lt;strong&gt;Storage Account&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Storage browser&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmgu6ohzi4t69niga8qhh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmgu6ohzi4t69niga8qhh.png" alt=" " width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Expand &lt;strong&gt;Blob containers&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluad2v8mlv9soolnyj2v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluad2v8mlv9soolnyj2v.png" alt=" " width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;storage-container&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm7ap0flrnba1po3zw5m4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm7ap0flrnba1po3zw5m4.png" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click the &lt;strong&gt;three dots (⋯)&lt;/strong&gt; next to your uploaded file&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Generate SAS&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwb3b7hvrvton59kk591d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwb3b7hvrvton59kk591d.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Configure the SAS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Signing method:&lt;/strong&gt; Account key&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Signing key:&lt;/strong&gt; Key 1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjg82q2hfqo8u1jum1u07.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjg82q2hfqo8u1jum1u07.png" alt=" " width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Permissions:&lt;/strong&gt; Read&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Allowed protocol:&lt;/strong&gt; HTTPS only&lt;/li&gt;
&lt;li&gt;Leave &lt;strong&gt;Start &amp;amp; Expiry time&lt;/strong&gt; as default (or customize)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Click &lt;strong&gt;Generate SAS token and URI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphbgqa4qjx3ngyc3gklm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphbgqa4qjx3ngyc3gklm.png" alt=" " width="800" height="460"&gt;&lt;/a&gt;&lt;br&gt;
Copy the &lt;strong&gt;Blob SAS URL&lt;/strong&gt; and open it in a new browser tab.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffbsyynuufbqvp9cu5jzr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffbsyynuufbqvp9cu5jzr.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;br&gt;
Your file should display immediately.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8mn9coj08q2c0mwd4lm4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8mn9coj08q2c0mwd4lm4.png" alt=" " width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This means:&lt;br&gt;
👉 Anyone with this link can access the file&lt;br&gt;
👉 Only for the duration you specified&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 6: Revoke Access by Rotating Keys🔄
&lt;/h2&gt;

&lt;p&gt;To &lt;strong&gt;disable the SAS link&lt;/strong&gt;, we rotate the key that created it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;strong&gt;Storage Account&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;Security + networking&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F25rglvem1y8tabbdia6v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F25rglvem1y8tabbdia6v.png" alt=" " width="800" height="476"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select &lt;strong&gt;Access keys&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdb4skkzzdtv2wz0svgfe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdb4skkzzdtv2wz0svgfe.png" alt=" " width="800" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Under &lt;strong&gt;Key 1&lt;/strong&gt;, click &lt;strong&gt;Rotate key&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Confirm by clicking &lt;strong&gt;Yes&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr904pievgh2s804dkzod.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr904pievgh2s804dkzod.png" alt=" " width="800" height="468"&gt;&lt;/a&gt;&lt;br&gt;
Now return to your SAS URL tab and &lt;strong&gt;refresh the page&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;❌ You should now see an &lt;strong&gt;authentication failed error&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frwpi6vtik5v68p0jy57n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frwpi6vtik5v68p0jy57n.png" alt=" " width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This confirms the SAS access has been successfully revoked.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Azure Blob Storage is used for &lt;strong&gt;unstructured data&lt;/strong&gt; like images and backups&lt;/li&gt;
&lt;li&gt;File Shares are useful for &lt;strong&gt;shared file systems&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access tiers&lt;/strong&gt; help optimize storage costs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SAS tokens&lt;/strong&gt; allow temporary, secure access&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key rotation&lt;/strong&gt; instantly revokes shared access&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this lab, you successfully:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created a &lt;strong&gt;Blob container &amp;amp; File share&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Uploaded files to both storage services&lt;/li&gt;
&lt;li&gt;Changed a blob from &lt;strong&gt;Hot to Cold&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Generated a &lt;strong&gt;secure SAS token&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Revoked access using &lt;strong&gt;key rotation&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These skills are essential for &lt;strong&gt;Azure administrators, cloud engineers, and DevOps professionals&lt;/strong&gt; who manage real-world storage environments.&lt;/p&gt;




</description>
      <category>devops</category>
      <category>aws</category>
      <category>cloud</category>
      <category>ai</category>
    </item>
    <item>
      <title># 🛰️ Azure Networking Series — Creating a Subnet, NSG, and Securing an FTP Server Environment</title>
      <dc:creator> Ganiyat Olagoke Adebayo</dc:creator>
      <pubDate>Thu, 04 Dec 2025 11:24:35 +0000</pubDate>
      <link>https://dev.to/adebayo_ganiyatoladunjoy/-azure-networking-series-creating-a-subnet-nsg-and-securing-an-ftp-server-environment-1c3</link>
      <guid>https://dev.to/adebayo_ganiyatoladunjoy/-azure-networking-series-creating-a-subnet-nsg-and-securing-an-ftp-server-environment-1c3</guid>
      <description>&lt;p&gt;In this part of the Azure project, you’re assisting an Azure Administrator with maintaining and organizing cloud resources. There’s an underutilized Linux virtual machine, and the team needs a new Linux VM that will serve as an FTP server.&lt;/p&gt;

&lt;p&gt;Before deploying that VM, you must first prepare the network properly. The admin wants to track network flow and resource utilization for the upcoming FTP server, so you’ll start by creating a &lt;strong&gt;new subnet&lt;/strong&gt; — separate from the existing one — and securing it with a &lt;strong&gt;Network Security Group (NSG)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This ensures better isolation, higher security, and cleaner management for SFTP/FTP-related traffic.&lt;/p&gt;

&lt;p&gt;Let’s walk through the steps.&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Step 1 — Create a New Subnet on an Existing Virtual Network (VNet)&lt;/strong&gt;
&lt;/h1&gt;

&lt;h3&gt;
  
  
  1. Log into Azure
&lt;/h3&gt;

&lt;p&gt;Go to: &lt;strong&gt;&lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;https://portal.azure.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Open Virtual Networks
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In the search bar, type &lt;strong&gt;“virtual networks”&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Virtual networks&lt;/strong&gt; under &lt;em&gt;Services&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;guided-project-vnet&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa27lwxmkru3cshwg1399.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa27lwxmkru3cshwg1399.png" alt=" " width="800" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Add a New Subnet
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;On the vNet blade, under &lt;strong&gt;Settings&lt;/strong&gt;, select &lt;strong&gt;Subnets&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Subnet&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbp7jdmb448s74k5oo4t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnbp7jdmb448s74k5oo4t.png" alt=" " width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Leave &lt;strong&gt;Subnet purpose&lt;/strong&gt; as &lt;em&gt;Default&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;For &lt;strong&gt;Name&lt;/strong&gt;, enter: &lt;strong&gt;ftpSubnet&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Leave all other settings unchanged&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Add&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtu714kd17wb83xiy4xq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbtu714kd17wb83xiy4xq.png" alt=" " width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcwxxbmxcoppihi0bx3u5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcwxxbmxcoppihi0bx3u5.png" alt=" " width="800" height="467"&gt;&lt;/a&gt;&lt;br&gt;
You have successfully created a new subnet!&lt;br&gt;
This subnet will be dedicated to SFTP/FTP workloads, separate from the main subnet.&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Step 2 — Create a Network Security Group (NSG)&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;To secure the new subnet, you’ll create an NSG that controls which traffic is allowed.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Navigate to Network Security Groups
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go back to &lt;strong&gt;Home&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;Network security groups&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm212bpn8lmkqm58vfqwb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm212bpn8lmkqm58vfqwb.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select &lt;strong&gt;Network security groups&lt;/strong&gt; under services&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;+ Create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fakfnbfj7dcpjpjlm0qii.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fakfnbfj7dcpjpjlm0qii.png" alt=" " width="800" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Configure the NSG
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Confirm the correct Subscription&lt;/li&gt;
&lt;li&gt;Choose Resource Group → &lt;strong&gt;guided-project-rg&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Name → &lt;strong&gt;ftpNSG&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Review + create&lt;/strong&gt; → then &lt;strong&gt;Create&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faq6hnt792ozy54em7dfm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faq6hnt792ozy54em7dfm.png" alt=" " width="800" height="459"&gt;&lt;/a&gt;&lt;br&gt;
When deployment completes, click &lt;strong&gt;Go to resource&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8n9s792yo80x4mcqyyva.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8n9s792yo80x4mcqyyva.png" alt=" " width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Step 3 — Add an Inbound Security Rule&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;The FTP/SFTP server needs SSH traffic (Port 22), so you’ll create an allow rule.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Open Inbound Security Rules
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Under &lt;strong&gt;Settings&lt;/strong&gt;, select &lt;strong&gt;Inbound security rules&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjbmp81hzf9mo2bu5z36o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjbmp81hzf9mo2bu5z36o.png" alt=" " width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;+ Add&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F36syxrommravd20j6o1x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F36syxrommravd20j6o1x.png" alt=" " width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Configure the Rule
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Destination port range&lt;/strong&gt; → change from 8080 to &lt;strong&gt;22&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Protocol&lt;/strong&gt; → &lt;strong&gt;TCP&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name&lt;/strong&gt; → &lt;strong&gt;ftpInbound&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Add&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7juylwjxrqjnn125b73e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7juylwjxrqjnn125b73e.png" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp3tx2mqmwaown3ev9zh7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp3tx2mqmwaown3ev9zh7.png" alt=" " width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foe39eyfxa4qyl5lsib93.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foe39eyfxa4qyl5lsib93.png" alt=" " width="800" height="460"&gt;&lt;/a&gt;&lt;br&gt;
 You’ve now created a network security group &lt;strong&gt;with SSH (port 22) allowed&lt;/strong&gt;, suitable for an FTP/SFTP server environment.&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Step 4 — Associate the NSG with the Subnet&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Now link the NSG to the subnet you created earlier.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Navigate back to the VNet
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Home&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Search &lt;strong&gt;virtual networks&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;guided-project-vnet&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxoq877zpy86z1l707c8r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxoq877zpy86z1l707c8r.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Apply the NSG to the Subnet
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Under &lt;strong&gt;Settings&lt;/strong&gt;, select &lt;strong&gt;Subnets&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Choose &lt;strong&gt;ftpSubnet&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw8zdknrwetj0e6dtkwrf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw8zdknrwetj0e6dtkwrf.png" alt=" " width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under &lt;strong&gt;Security&lt;/strong&gt;, set &lt;strong&gt;Network security group → ftpNSG&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4woee6fakjix9yg4jvcn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4woee6fakjix9yg4jvcn.png" alt=" " width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Done! The subnet is now protected with your NSG.&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;In this exercise, you prepared the network layer for a future FTP server by:&lt;/p&gt;

&lt;p&gt;✔ Creating a new, isolated subnet&lt;br&gt;
✔ Building a Network Security Group&lt;br&gt;
✔ Adding an inbound SSH rule&lt;br&gt;
✔ Associating the NSG with the subnet&lt;/p&gt;

&lt;p&gt;This ensures the upcoming Linux FTP VM will sit in a secure, well-structured environment, with traffic carefully controlled.&lt;/p&gt;

&lt;p&gt;You're now ready for the next step: &lt;strong&gt;deploying and configuring the Linux VM that will serve as your FTP server.&lt;/strong&gt;&lt;/p&gt;




</description>
      <category>networking</category>
      <category>tutorial</category>
      <category>security</category>
      <category>azure</category>
    </item>
  </channel>
</rss>
