<?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: Shivanna Gundanavar</title>
    <description>The latest articles on DEV Community by Shivanna Gundanavar (@shivanna_gundanavar_d1c43).</description>
    <link>https://dev.to/shivanna_gundanavar_d1c43</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4141196%2F3fafa03a-a5b0-41e1-9f7f-d2758ec77b7e.jpg</url>
      <title>DEV Community: Shivanna Gundanavar</title>
      <link>https://dev.to/shivanna_gundanavar_d1c43</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shivanna_gundanavar_d1c43"/>
    <language>en</language>
    <item>
      <title>Your Azure Private Endpoint Is Approved. So Why Does It Still Resolve a Public IP?</title>
      <dc:creator>Shivanna Gundanavar</dc:creator>
      <pubDate>Mon, 12 Oct 2026 08:45:37 +0000</pubDate>
      <link>https://dev.to/shivanna_gundanavar_d1c43/your-azure-private-endpoint-is-approved-so-why-does-it-still-resolve-a-public-ip-2mi9</link>
      <guid>https://dev.to/shivanna_gundanavar_d1c43/your-azure-private-endpoint-is-approved-so-why-does-it-still-resolve-a-public-ip-2mi9</guid>
      <description>&lt;p&gt;You disable public access on a storage account. You add a private endpoint. The portal shows the connection as Approved. You deploy the app.&lt;/p&gt;

&lt;p&gt;It fails with a timeout or a 403.&lt;/p&gt;

&lt;p&gt;Nothing in your pipeline warned you. what-if showed the right resources, the deployment succeeded, and every resource is green. The problem is that these tools check resources. They do not check whether a name inside your network actually resolves to the private address.&lt;/p&gt;

&lt;p&gt;In my experience, most private connectivity problems in Azure are not firewall problems. They are DNS problems. This post explains why, and shares a small script that checks the whole path before you deploy.&lt;/p&gt;

&lt;p&gt;What must be true for private access to work&lt;/p&gt;

&lt;p&gt;For a workload in a VNet to reach a PaaS service privately, all of these must hold:&lt;/p&gt;

&lt;h1&gt;
  
  
  Requirement What happens if it is missing
&lt;/h1&gt;

&lt;p&gt;1   The private endpoint connection is Approved Connection stays pending, nothing works&lt;br&gt;
2   The matching privatelink private DNS zone exists    The name resolves to the public address&lt;br&gt;
3   The zone is linked to the VNet doing the lookup Same: public address, even though the zone exists&lt;br&gt;
4   The zone has an A record for the resource   Lookup fails or falls back to public&lt;br&gt;
5   If the VNet uses custom DNS, it forwards privatelink zones to Azure DNS Lookup never reaches the private zone&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fit9v5v8uvv5m1kapxa4v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fit9v5v8uvv5m1kapxa4v.png" alt=" " width="799" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Number 3 is the classic trap. The zone exists, the endpoint is approved, the A record is there, and it still does not work, because the VNet that runs the lookup cannot see the zone.&lt;/p&gt;

&lt;p&gt;A quick manual test from a VM inside the VNet:&lt;/p&gt;

&lt;p&gt;bash&lt;br&gt;
nslookup mystore.dfs.core.windows.net&lt;/p&gt;

&lt;p&gt;If the answer is a 10.x address, DNS is fine. If it is a public address, one of the five items above is broken, and you now have to find which one.&lt;/p&gt;

&lt;p&gt;The idea: a what-if for network paths&lt;/p&gt;

&lt;p&gt;Finding the broken item by clicking through the portal takes a long time, especially when the zone lives in another subscription or resource group. So I wrote a script that asks the one question directly:&lt;/p&gt;

&lt;p&gt;Can workloads in this source VNet reach this target resource privately?&lt;/p&gt;

&lt;p&gt;It reads the configuration with the Azure CLI and reports PASS, WARN, or FAIL for each requirement, with a suggested fix.&lt;/p&gt;

&lt;p&gt;Example output when the zone exists but is not linked to the source VNet:&lt;/p&gt;

&lt;p&gt;text&lt;br&gt;
[PASS] Public access: disabled&lt;br&gt;
[PASS] Private endpoint: 1 approved connection(s)&lt;br&gt;
[PASS] Source VNet DNS: uses Azure-provided DNS&lt;br&gt;
[PASS] DNS zone for pe-mystore-dfs [dfs]: privatelink.dfs.core.windows.net exists&lt;br&gt;
[FAIL] VNet link for pe-mystore-dfs [dfs]: privatelink.dfs.core.windows.net is not linked to the source VNet&lt;br&gt;
        Fix: Link the zone to the source VNet (or to the hub VNet that provides DNS resolution for it).&lt;br&gt;
[PASS] A record for pe-mystore-dfs [dfs]: mystore found&lt;/p&gt;

&lt;p&gt;The exit code is 1 when anything fails, so a pipeline can block the change.&lt;/p&gt;

&lt;p&gt;How it works&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgi0nct396v0e1sbee0zx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgi0nct396v0e1sbee0zx.png" alt=" " width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The script makes five groups of read-only az calls:&lt;/p&gt;

&lt;p&gt;az resource show on the target: read publicNetworkAccess and privateEndpointConnections.&lt;br&gt;
az network private-endpoint show: read the group id (blob, dfs, vault, sqlServer, and so on).&lt;br&gt;
A lookup table maps the group id to the expected zone, for example dfs to privatelink.dfs.core.windows.net.&lt;br&gt;
az network private-dns link vnet list: is the source VNet in the zone's links?&lt;br&gt;
az network private-dns record-set a list: is there a record named after the resource?&lt;/p&gt;

&lt;p&gt;It also reads the source VNet's DNS servers. If it uses custom DNS, the script raises a warning, because it cannot see inside your DNS servers and only you can confirm they forward privatelink zones to Azure DNS (168.63.129.16) or to an Azure DNS Private Resolver.&lt;/p&gt;

&lt;p&gt;The core check, in a few lines:&lt;/p&gt;

&lt;p&gt;python&lt;br&gt;
links = az(["network", "private-dns", "link", "vnet", "list",&lt;br&gt;
            "-g", zone_rg, "-z", zone]) or []&lt;br&gt;
linked = any(&lt;br&gt;
    ((l.get("virtualNetwork") or {}).get("id") or "").lower() == source_vnet_id.lower()&lt;br&gt;
    for l in links&lt;br&gt;
)&lt;br&gt;
if not linked:&lt;br&gt;
    report.add("FAIL", "VNet link", f"{zone} is not linked to the source VNet",&lt;br&gt;
               "Link the zone to the source VNet or to the hub VNet that provides DNS.")&lt;/p&gt;

&lt;p&gt;The whole thing is one Python file with no dependencies beyond the Azure CLI. It needs only Reader access, and it changes nothing.&lt;/p&gt;

&lt;p&gt;Run it in a pull request&lt;/p&gt;

&lt;p&gt;Because it is read-only and fast, it works well as a gate. A sample GitHub Actions job using federated credentials (no stored secrets):&lt;/p&gt;

&lt;p&gt;yaml&lt;br&gt;
name: private-path-check&lt;br&gt;
on: pull_request&lt;/p&gt;

&lt;p&gt;permissions:&lt;br&gt;
  id-token: write&lt;br&gt;
  contents: read&lt;/p&gt;

&lt;p&gt;jobs:&lt;br&gt;
  check:&lt;br&gt;
    runs-on: ubuntu-latest&lt;br&gt;
    steps:&lt;br&gt;
      - uses: actions/checkout@v4&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  - uses: azure/login@v2
    with:
      client-id: ${{ vars.AZURE_CLIENT_ID }}
      tenant-id: ${{ vars.AZURE_TENANT_ID }}
      subscription-id: ${{ vars.AZURE_SUBSCRIPTION_ID }}

  - name: Verify private path
    run: |
      python private_path_check.py \
        --resource-id "${{ vars.TARGET_RESOURCE_ID }}" \
        --source-vnet-id "${{ vars.SOURCE_VNET_ID }}"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Run it after the infrastructure is deployed to Dev, and a missing VNet link fails the pipeline in a minute, not after a day of debugging.&lt;/p&gt;

&lt;p&gt;Why this matters more with AI-generated infrastructure&lt;/p&gt;

&lt;p&gt;If an AI assistant writes your Bicep or Terraform, it will happily produce a private endpoint and forget the DNS zone link. The code is valid, what-if is happy, and the failure only appears at runtime. Checks like this one are the kind of gate that makes AI-generated changes safe to review: the model proposes, and an independent check verifies the result.&lt;/p&gt;

&lt;p&gt;What it does not do&lt;/p&gt;

&lt;p&gt;I want to be clear about the limits:&lt;/p&gt;

&lt;p&gt;It does not test the network itself. NSG rules, firewall rules, routing, and open ports are not checked. For that, use Azure Network Watcher (connection troubleshoot and the virtual network verifier).&lt;br&gt;
Hub-and-spoke setups need care. If DNS resolution runs through a hub VNet or a Private Resolver, pass the hub VNet as the source, or the "linked" check will report a false failure.&lt;br&gt;
The zone table is small. It covers storage, Key Vault, SQL, and Databricks. Other services need an entry from the Microsoft Learn list of private endpoint DNS zone values.&lt;br&gt;
The A record name is not always the resource name. That holds for storage, but some services register different names.&lt;br&gt;
It reads configuration. It does not resolve DNS from inside the VNet. A real nslookup from a VM in the VNet is still the final proof.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>devops</category>
      <category>networking</category>
    </item>
    <item>
      <title>Do We Still Need DevOps Engineers? Azure AI Is Building the Deployment Accelerator That Changes the Answer</title>
      <dc:creator>Shivanna Gundanavar</dc:creator>
      <pubDate>Sat, 10 Oct 2026 05:48:07 +0000</pubDate>
      <link>https://dev.to/shivanna_gundanavar_d1c43/do-we-still-need-devops-engineers-azure-ai-is-building-the-deployment-accelerator-that-changes-the-l30</link>
      <guid>https://dev.to/shivanna_gundanavar_d1c43/do-we-still-need-devops-engineers-azure-ai-is-building-the-deployment-accelerator-that-changes-the-l30</guid>
      <description>&lt;p&gt;&lt;strong&gt;The shift nobody is talking about honestly!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For a decade, shipping to the cloud meant a stack of specialist work: Terraform modules, YAML pipelines, PowerShell glue scripts, and one engineer who "knows how the release works."&lt;/p&gt;

&lt;p&gt;That is changing quickly. Azure now has AI in every layer of that stack: code, infrastructure, pipelines, and operations. Combined, these pieces make a &lt;strong&gt;deployment accelerator&lt;/strong&gt;: describe what you need, and a platform produces, validates, deploys, and monitors it.&lt;/p&gt;

&lt;p&gt;My post below will covers what can be automated today, how to build such a platform on Azure, and what still needs humans.&lt;/p&gt;

&lt;h2&gt;
  
  
  What can be automated with Azure AI
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;Traditionally done by&lt;/th&gt;
&lt;th&gt;AI-assisted approach on Azure&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Infrastructure code&lt;/td&gt;
&lt;td&gt;Engineer writes Terraform/Bicep&lt;/td&gt;
&lt;td&gt;Natural-language prompt -&amp;gt; Bicep/Terraform via GitHub Copilot or Azure Copilot, based on Azure Verified Modules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CI/CD pipelines&lt;/td&gt;
&lt;td&gt;Hand-written YAML&lt;/td&gt;
&lt;td&gt;Agent generates GitHub Actions / Azure Pipelines from repo analysis&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Environment provisioning&lt;/td&gt;
&lt;td&gt;Tickets + scripts&lt;/td&gt;
&lt;td&gt;Azure Developer CLI (&lt;code&gt;azd&lt;/code&gt;) templates + Azure Deployment Environments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Policy and compliance&lt;/td&gt;
&lt;td&gt;Manual review&lt;/td&gt;
&lt;td&gt;Azure Policy + AI review of IaC before merge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security scanning&lt;/td&gt;
&lt;td&gt;Separate tooling&lt;/td&gt;
&lt;td&gt;Defender for Cloud + GitHub Advanced Security with AI fix suggestions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost control&lt;/td&gt;
&lt;td&gt;Spreadsheet reviews&lt;/td&gt;
&lt;td&gt;Cost Management data + AI anomaly summaries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Incident response&lt;/td&gt;
&lt;td&gt;On-call runbooks&lt;/td&gt;
&lt;td&gt;Azure SRE Agent / Azure Monitor + AI triage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Documentation&lt;/td&gt;
&lt;td&gt;Rarely done&lt;/td&gt;
&lt;td&gt;Auto-generated from the code and the deployed state&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Architecture: the AI deployment accelerator
&lt;/h2&gt;

&lt;p&gt;Developer request (chat / issue / PR)&lt;br&gt;
|&lt;br&gt;
v&lt;br&gt;
AI Orchestrator (Azure AI Foundry agent)&lt;br&gt;
|&lt;br&gt;
+--&amp;gt; Azure MCP Server (read/act on Azure resources)&lt;br&gt;
+--&amp;gt; Template library (Azure Verified Modules, azd templates)&lt;br&gt;
+--&amp;gt; Policy engine (Azure Policy, Checkov, what-if)&lt;br&gt;
|&lt;br&gt;
v&lt;br&gt;
Generated IaC + Pipeline -&amp;gt; Pull Request&lt;br&gt;
|&lt;br&gt;
v&lt;br&gt;
Automated gates: lint, security scan, what-if, cost estimate&lt;br&gt;
|&lt;br&gt;
v&lt;br&gt;
Human approval (for prod)&lt;br&gt;
|&lt;br&gt;
v&lt;br&gt;
GitHub Actions deploys -&amp;gt; Azure&lt;br&gt;
|&lt;br&gt;
v&lt;br&gt;
Azure Monitor + SRE Agent feed learnings back&lt;/p&gt;

&lt;h2&gt;
  
  
  Step-by-step: how to build it
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Standardize first.&lt;/strong&gt; Create a curated library of approved modules (Azure Verified Modules in Bicep or Terraform). AI is only as safe as the building blocks you let it use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Give the agent tools, not freedom.&lt;/strong&gt; Use Azure AI Foundry to build an agent and connect it to the Azure MCP Server so it can query and operate on Azure through scoped permissions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Make generation produce pull requests, not deployments.&lt;/strong&gt; The agent writes IaC and pipeline changes into a repo. Everything flows through Git, so you keep history, review, and rollback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Add automated gates.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;az deployment what-if&lt;/code&gt; or &lt;code&gt;terraform plan&lt;/code&gt; on every PR&lt;/li&gt;
&lt;li&gt;Policy-as-code (Azure Policy, Checkov, PSRule for Azure)&lt;/li&gt;
&lt;li&gt;Secret and vulnerability scanning&lt;/li&gt;
&lt;li&gt;Cost estimate in the PR comment&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Use identity properly.&lt;/strong&gt; Federated credentials (OIDC) from GitHub to Azure and managed identities everywhere. No stored secrets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Close the loop.&lt;/strong&gt; Send deployment and runtime telemetry back to the agent so it can suggest fixes, tune sizing, and open remediation PRs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Keep humans on production approvals&lt;/strong&gt; until you have real data showing the gates are trustworthy.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example: a prompt-to-production flow
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Create a web app with a SQL database in a private network, dev and prod environments, Key Vault for secrets, and alerts to the ops channel."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The accelerator produces a Bicep deployment, a GitHub Actions workflow for both environments, policy checks, and a cost estimate. A reviewer approves, and it deploys. The first draft takes minutes instead of days.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do we still need Terraform and PowerShell engineers?
&lt;/h2&gt;

&lt;p&gt;Honest answer: &lt;strong&gt;the manual typing of Terraform, YAML, and PowerShell is going away. The engineering judgment is not.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AI is very good at producing the first 80% of IaC and pipelines. It is not accountable for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Architecture decisions:&lt;/strong&gt; network topology, landing zones, multi-region and DR trade-offs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security and compliance ownership:&lt;/strong&gt; someone must own the risk&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reviewing AI output:&lt;/strong&gt; generated code can be subtly wrong, insecure, or expensive&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Platform design:&lt;/strong&gt; building and governing the accelerator itself&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incidents with no precedent:&lt;/strong&gt; novel failures that don't match any pattern&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost and capacity trade-offs&lt;/strong&gt; that depend on business context&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The role shifts from &lt;em&gt;writing scripts&lt;/em&gt; to &lt;strong&gt;platform engineering, governance, and AI-assisted operations&lt;/strong&gt;. Teams that don't need ten script-writers may well need two strong platform engineers. Fewer people doing repetitive work is a realistic outcome. "No engineers at all" is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is Azure's moment
&lt;/h2&gt;

&lt;p&gt;Microsoft owns an unusual combination: GitHub (code and CI/CD), Azure (infrastructure), Entra ID (identity), Defender (security), Azure Monitor (operations), and Azure AI Foundry (agents). Few other platforms put the full path from idea to running, monitored workload under one identity and policy model, and AI sits across all of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Start with standards and templates, then add AI on top.&lt;/li&gt;
&lt;li&gt;Generate through pull requests, never directly to production.&lt;/li&gt;
&lt;li&gt;Gate everything with policy, scanning, and what-if.&lt;/li&gt;
&lt;li&gt;Reskill toward platform engineering, security, and AI orchestration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The question isn't "will AI replace DevOps?" It's "will you be the one building the accelerator, or the one it replaces?"&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What are you automating first? Tell me in the comments.&lt;/em&gt;   &lt;/p&gt;

&lt;p&gt;By - Shivanna Gundanavar (MLOps and Cloud)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            &lt;/p&gt;

</description>
      <category>azure</category>
      <category>ai</category>
      <category>devops</category>
      <category>career</category>
    </item>
    <item>
      <title>Azure Operations Copilot in Microsoft Teams - Monitor, Investigate and Understand Azure from One Chat</title>
      <dc:creator>Shivanna Gundanavar</dc:creator>
      <pubDate>Thu, 24 Sep 2026 14:43:17 +0000</pubDate>
      <link>https://dev.to/shivanna_gundanavar_d1c43/azure-operations-copilot-in-microsoft-teams-monitor-investigate-and-understand-azure-from-one-1nib</link>
      <guid>https://dev.to/shivanna_gundanavar_d1c43/azure-operations-copilot-in-microsoft-teams-monitor-investigate-and-understand-azure-from-one-1nib</guid>
      <description>&lt;p&gt;Azure Operations Copilot for Microsoft Teams&lt;/p&gt;

&lt;p&gt;Overview&lt;br&gt;
Azure administrators currently use multiple Azure services and portal pages to monitor resources, investigate alerts, check application performance, review security issues, and understand cloud costs.&lt;/p&gt;

&lt;p&gt;This proposal is for an Azure Operations Copilot for Microsoft Teams that brings these operations into one conversational experience.&lt;/p&gt;

&lt;p&gt;The goal is not to replace the Azure portal. Instead, Teams would become a convenient starting point for investigating Azure issues.&lt;/p&gt;

&lt;p&gt;An engineer could receive an alert in Teams and immediately ask questions about it without having to open several different Azure tools.&lt;/p&gt;

&lt;p&gt;The Problem&lt;br&gt;
When an incident happens, engineers often need to move between different Azure services to understand what is going on.&lt;/p&gt;

&lt;p&gt;For example, an alert might come from Azure Monitor, but investigating it may require checking:&lt;br&gt;
Log Analytics for logs&lt;br&gt;
Application Insights for application errors and dependencies&lt;br&gt;
Azure Resource Graph for resource information&lt;br&gt;
Azure Service Health for platform issues&lt;br&gt;
Microsoft Defender for Cloud for security findings&lt;br&gt;
Azure Cost Management for cost information&lt;br&gt;
The information is available, but it is spread across different services.&lt;br&gt;
The proposed Copilot would bring these sources together through a single conversational interface in Teams.&lt;/p&gt;

&lt;p&gt;Proposed Experience&lt;br&gt;
Users could ask questions such as:&lt;br&gt;
“What are the critical issues in production?”&lt;br&gt;
“Why did this VM trigger an alert?”&lt;br&gt;
“Show unhealthy resources.”&lt;br&gt;
“What changed in the last 24 hours?”&lt;br&gt;
“What is our Azure cost this month?”&lt;br&gt;
“Which resources caused the cost increase?”&lt;br&gt;
“Are there any critical security findings?”&lt;br&gt;
“Is Azure Service Health reporting an issue affecting us?”&lt;br&gt;
The assistant would understand the question, identify the relevant Azure services, retrieve the available information, and provide a short explanation.&lt;/p&gt;

&lt;p&gt;Example: Investigating an Alert&lt;br&gt;
An Azure Monitor alert could still be delivered to Teams as it is today.&lt;br&gt;
For example:&lt;br&gt;
Production API Alert&lt;br&gt;
Response time increased to 4.8 seconds.&lt;br&gt;
Instead of simply acknowledging the alert, the engineer could ask:&lt;br&gt;
Engineer:&lt;br&gt;
Why did this happen?&lt;br&gt;
Azure Operations Copilot:&lt;br&gt;
Application Insights shows that SQL dependency latency increased around 14:22. Database calls account for most of the increase in response time. Three timeout exceptions were also recorded during the same period.&lt;br&gt;
Engineer:&lt;br&gt;
Is there an infrastructure problem?&lt;br&gt;
Copilot:&lt;br&gt;
VM CPU, memory, and network metrics are within their normal ranges. No related infrastructure issue was identified. The available data points mainly to the database dependency.&lt;br&gt;
Engineer:&lt;br&gt;
Show related errors from the last 30 minutes.&lt;br&gt;
Copilot:&lt;br&gt;
Here are the errors related to the API and database dependency during that period...&lt;br&gt;
The engineer can continue the investigation without leaving Teams.&lt;/p&gt;

&lt;p&gt;Azure Services&lt;br&gt;
The initial solution could integrate with:&lt;br&gt;
Azure Monitor&lt;br&gt;
Log Analytics&lt;br&gt;
Application Insights&lt;br&gt;
Azure Resource Graph&lt;br&gt;
Azure Cost Management&lt;br&gt;
Microsoft Defender for Cloud&lt;br&gt;
Azure Service Health&lt;br&gt;
The architecture could allow additional Azure services to be added later.&lt;/p&gt;

&lt;p&gt;Security and Access Control&lt;br&gt;
Security should be a core part of the design.&lt;br&gt;
Authentication would use Microsoft Entra ID, and the assistant would respect existing Azure RBAC permissions.&lt;br&gt;
For example, if an engineer does not have access to a particular subscription or resource, the Copilot should not expose information from that resource.&lt;br&gt;
The same principle should apply to:&lt;br&gt;
Resource information&lt;br&gt;
Logs&lt;br&gt;
Application data&lt;br&gt;
Cost information&lt;br&gt;
Security findings&lt;br&gt;
Subscription information&lt;br&gt;
The Copilot should work within the user's existing permissions rather than creating a separate access model.&lt;/p&gt;

&lt;p&gt;Initial Scope&lt;br&gt;
The first version should focus on read-only operations.&lt;br&gt;
The main capabilities could include:&lt;br&gt;
Alert investigation&lt;br&gt;
Resource health checks&lt;br&gt;
Log and error investigation&lt;br&gt;
Application performance analysis&lt;br&gt;
Recent configuration/change investigation&lt;br&gt;
Azure Service Health checks&lt;br&gt;
Security finding summaries&lt;br&gt;
Cost and usage analysis&lt;br&gt;
This keeps the initial implementation focused on visibility and investigation.&lt;/p&gt;

&lt;p&gt;Future Scope&lt;br&gt;
Once the read-only experience is mature, controlled remediation could be considered.&lt;br&gt;
For example:&lt;br&gt;
Restart a VM&lt;br&gt;
Scale a resource&lt;br&gt;
Stop a non-production resource&lt;br&gt;
Acknowledge or update an incident&lt;/p&gt;

&lt;p&gt;Trigger an approved runbook&lt;br&gt;
These actions should require appropriate permissions and, where necessary, explicit user confirmation or approval.&lt;/p&gt;

&lt;p&gt;What Makes This Different&lt;br&gt;
The existing model is mainly:&lt;br&gt;
Azure Alert → Teams Notification&lt;br&gt;
The proposed experience is:&lt;br&gt;
Azure Alert → Teams → Ask Questions → Query Azure Data → Correlate Information → Explain the Issue → Continue Investigation&lt;br&gt;
The important difference is that the alert becomes the starting point of an investigation, rather than the end of the workflow.&lt;/p&gt;

&lt;p&gt;Proposed Architecture&lt;br&gt;
A simplified architecture could look like this:&lt;/p&gt;

&lt;p&gt;Azure Services&lt;br&gt;
Azure Monitor&lt;br&gt;
Log Analytics&lt;br&gt;
Application Insights&lt;br&gt;
Resource Graph&lt;br&gt;
Cost Management&lt;br&gt;
Defender for Cloud&lt;br&gt;
Service Health&lt;br&gt;
↓&lt;br&gt;
Azure Operations AI Layer&lt;br&gt;
Query understanding&lt;br&gt;
Data retrieval&lt;br&gt;
Cross-service correlation&lt;br&gt;
Incident context&lt;br&gt;
Response generation&lt;br&gt;
Permission enforcement&lt;br&gt;
↓&lt;br&gt;
Microsoft Teams&lt;br&gt;
Alerts&lt;br&gt;
Conversational investigation&lt;br&gt;
Incident context&lt;br&gt;
Follow-up questions&lt;br&gt;
Investigation summaries&lt;/p&gt;

&lt;p&gt;Expected Benefit&lt;br&gt;
This could reduce the amount of context switching required during Azure operations.&lt;br&gt;
Instead of asking an engineer to manually check several Azure portal pages, Teams could provide a single place to start the investigation and bring the relevant information together.&lt;/p&gt;

&lt;p&gt;The objective is simple:&lt;br&gt;
Turn Microsoft Teams from an Azure alert destination into an interactive Azure operations workspace.&lt;br&gt;
The Azure portal would remain the primary place for detailed management and configuration, while Teams would provide a fast conversational interface for day-to-day monitoring, investigation, and troubleshooting.&lt;/p&gt;

&lt;p&gt;Thank You&lt;br&gt;
Shivanna Gundanavar&lt;/p&gt;

</description>
      <category>ai</category>
      <category>azure</category>
      <category>devops</category>
      <category>monitoring</category>
    </item>
  </channel>
</rss>
