<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Elastic Observability Labs - Articles by Muthukumar Paramasivam</title>
        <link>https://www.elastic.co/observability-labs</link>
        <description>Trusted security news &amp; research from the team at Elastic.</description>
        <lastBuildDate>Mon, 08 Jun 2026 15:18:17 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>Elastic Observability Labs - Articles by Muthukumar Paramasivam</title>
            <url>https://www.elastic.co/observability-labs/assets/observability-labs-thumbnail.png</url>
            <link>https://www.elastic.co/observability-labs</link>
        </image>
        <copyright>© 2026. Elasticsearch B.V. All Rights Reserved</copyright>
        <item>
            <title><![CDATA[Elastic SQL inputs: A generic solution for database metrics observability]]></title>
            <link>https://www.elastic.co/observability-labs/blog/sql-inputs-database-metrics-observability</link>
            <guid isPermaLink="false">sql-inputs-database-metrics-observability</guid>
            <pubDate>Mon, 11 Sep 2023 00:00:00 GMT</pubDate>
            <description><![CDATA[This blog dives into the functionality of generic SQL and provides various use cases for advanced users to ingest custom metrics to Elastic for database observability. We also introduce the fetch from all database new capability released in 8.10.]]></description>
            <content:encoded><![CDATA[<p>Elastic&lt;sup&gt;®&lt;/sup&gt; SQL inputs (<a href="https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-module-sql.html">metricbeat</a> module and <a href="https://docs.elastic.co/integrations/sql">input package</a>) allows the user to execute <a href="https://en.wikipedia.org/wiki/SQL">SQL</a> queries against many supported databases in a flexible way and ingest the resulting metrics to Elasticsearch&lt;sup&gt;®&lt;/sup&gt;. This blog dives into the functionality of generic SQL and provides various use cases for <em>advanced users</em> to ingest custom metrics to Elastic&lt;sup&gt;®&lt;/sup&gt;, for database observability. The blog also introduces the fetch from all database new capability, released in 8.10.</p>
<h2>Why “Generic SQL”?</h2>
<p>Elastic already has metricbeat and integration packages targeted for specific databases. One example is <a href="https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-module-mysql.html">metricbeat</a> for MySQL — and the corresponding integration <a href="https://docs.elastic.co/en/integrations/mysql">package</a>. These beats modules and integrations are customized for a specific database, and the metrics are extracted using pre-defined queries from the specific database. The queries used in these integrations and the corresponding metrics are <em>not</em> available for modification.</p>
<p>Whereas the <em>Generic SQL inputs</em> (<a href="https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-module-sql.html">metricbeat</a> or <a href="https://docs.elastic.co/integrations/sql">input package</a>) can be used to scrape metrics from any supported database using the user's SQL queries. The queries are provided by the user depending on specific metrics to be extracted. This enables a much more powerful mechanism for metrics ingestion, where users can choose a specific driver and provide the relevant SQL queries and the results get mapped to one or more Elasticsearch documents, using a structured mapping process (table/variable format explained later).</p>
<p>Generic SQL inputs can be used in conjunction with the existing integration packages, which already extract specific database metrics, to extract additional custom metrics dynamically, making this input very powerful. In this blog, <em>Generic SQL input</em> and <em>Generic SQL</em> are used interchangeably.</p>
<p><img src="https://www.elastic.co/observability-labs/assets/images/sql-inputs-database-metrics-observability/elastic-blog-1-genericSQL.png" alt="Generic SQL database metrics collection" /></p>
<h2>Functionalities details</h2>
<p>This section covers some of the features that would help with the metrics extraction. We provide a brief description of the response format configuration. Then we dive into the merge_results functionality, which is used to combine results from multiple SQL queries into a single document.</p>
<p>The next key functionality users may be interested in is to collect metrics from all the custom databases, which is now possible with the fetch_from_all_databases feature.</p>
<p>Now let's dive into the specific functionalities:</p>
<h3>Different drivers supported</h3>
<p>The generic SQL can fetch metrics from the different databases. The current version has the capability to fetch metrics from the following drivers: MySQL, PostgreSQL, Oracle, and Microsoft SQL Server(MSSQL).</p>
<h3>Response format</h3>
<p>The response format in generic SQL is used to manipulate the data in either table or in variable format. Here’s an overview of the formats and syntax for creating and using the table and variables.</p>
<p>Syntax: <code>response_format: table {{or}} variables</code></p>
<p><strong>Response format table</strong><br />
This mode generates a single event for each row. The table format has no restrictions on the number of columns in the response. This format can have any number of columns.</p>
<p>Example:</p>
<pre><code class="language-sql">driver: &quot;mssql&quot;
sql_queries:
 - query: &quot;SELECT counter_name, cntr_value FROM sys.dm_os_performance_counters WHERE counter_name= 'User Connections'&quot;
   response_format: table
</code></pre>
<p>This query returns a response similar to this:</p>
<pre><code class="language-json">&quot;sql&quot;:{
      &quot;metrics&quot;:{
         &quot;counter_name&quot;:&quot;User Connections &quot;,
         &quot;cntr_value&quot;:7
      },
      &quot;driver&quot;:&quot;mssql&quot;
}
</code></pre>
<p>The response generated above adds the counter_name as a key in the document.</p>
<p><strong>Response format variables</strong><br />
The variable format supports key:value pairs. This format expects only two columns to fetch in a query.</p>
<p>Example:</p>
<pre><code class="language-sql">driver: &quot;mssql&quot;
sql_queries:
 - query: &quot;SELECT counter_name, cntr_value FROM sys.dm_os_performance_counters WHERE counter_name= 'User Connections'&quot;
   response_format: variables
</code></pre>
<p>The variable format takes the first variable in the query above as the key:</p>
<pre><code class="language-json">&quot;sql&quot;:{
      &quot;metrics&quot;:{
         &quot;user connections &quot;:7
      },
      &quot;driver&quot;:&quot;mssql&quot;
}
</code></pre>
<p>In the above response, you can see the value of counter_name is used to generate the key in variable format.</p>
<h3>Response optimization: merge_results</h3>
<p>We are now supporting merging multiple query responses into a single event. By enabling <strong>merge_results</strong> , users can significantly optimize the storage space of the metrics ingested to Elasticsearch. This mode enables an efficient compaction of the document generated, where instead of generating multiple documents, a single merged document is generated wherever applicable. The metrics of a similar kind, generated from multiple queries, are combined into a single event.</p>
<p><img src="https://www.elastic.co/observability-labs/assets/images/sql-inputs-database-metrics-observability/elastic-blog-2-output-merge-results.png" alt="Output of Merge results" /></p>
<p>Syntax: <code>merge_results: true {{or}} false</code></p>
<p>In the below example, you can see how the data is loaded into Elasticsearch for the below query when the merge_results is disabled.</p>
<p>Example:</p>
<p>In this example, we are using two different queries to fetch metrics from the performance counter.</p>
<pre><code class="language-yaml">merge_results: false
driver: &quot;mssql&quot;
sql_queries:
  - query: &quot;SELECT cntr_value As 'user_connections' FROM sys.dm_os_performance_counters WHERE counter_name= 'User Connections'&quot;
    response_format: table
  - query: &quot;SELECT cntr_value As 'buffer_cache_hit_ratio' FROM sys.dm_os_performance_counters WHERE counter_name = 'Buffer cache hit ratio' AND object_name like '%Buffer Manager%'&quot;
    response_format: table
</code></pre>
<p>As you can see, the response for the above example generates a single document for each query.</p>
<p>The resulting document from the first query:</p>
<pre><code class="language-json">&quot;sql&quot;:{
      &quot;metrics&quot;:{
         &quot;user_connections&quot;:7
      },
      &quot;driver&quot;:&quot;mssql&quot;
}
</code></pre>
<p>And resulting document from the second query:</p>
<pre><code class="language-json">&quot;sql&quot;:{
      &quot;metrics&quot;:{
         &quot;buffer_cache_hit_ratio&quot;:87
      },
      &quot;driver&quot;:&quot;mssql&quot;
}
</code></pre>
<p>When we enable the merge_results flag in the query, both the above metrics are combined together and the data gets loaded in a single document.</p>
<p>You can see the merged document in the below example:</p>
<pre><code class="language-json">&quot;sql&quot;:{
      &quot;metrics&quot;:{
         &quot;user connections &quot;:7,
         “buffer_cache_hit_ratio”:87
      },
      &quot;driver&quot;:&quot;mssql&quot;
}
</code></pre>
<p><em>However, such a merge is possible only if the table queries are merged, and each produces a single row. There is no restriction on variable queries being merged.</em></p>
<h3>Introducing a new capability: fetch_from_all_databases</h3>
<p>This is a <a href="https://github.com/elastic/beats/pull/35688">new functionality</a> to fetch all the database metrics automatically from the system and user databases of the Microsoft SQL Server, by enabling the fetch_from_all_databases flag.</p>
<p>Keep an eye out for the <a href="https://www.elastic.co/guide/en/beats/metricbeat/8.10/metricbeat-module-sql.html#_example_execute_given_queries_for_all_databases_present_in_a_server">8.10 release version</a> where you can start using the fetch all database feature. Prior to the 8.10 version, users had to provide the database names manually to fetch metrics from custom/user databases.</p>
<p>Syntax: <code>fetch_from_all_databases: true {{or}} false</code></p>
<p>Below is the sample query with fetch all databases flag as disabled:</p>
<pre><code class="language-yaml">fetch_from_all_databases: false
driver: &quot;mssql&quot;
sql_queries:
  - query: &quot;SELECT @@servername AS server_name, @@servicename AS instance_name, name As 'database_name', database_id FROM sys.databases WHERE name='master';&quot;
</code></pre>
<p>The above query fetches metrics only for the provided database name. Here the input database is master, so the metrics are fetched only for the master.</p>
<p>Below is the sample query with the fetch all databases flag as enabled:</p>
<pre><code class="language-yaml">fetch_from_all_databases: true
driver: &quot;mssql&quot;
sql_queries:
  - query: SELECT @@servername AS server_name, @@servicename AS instance_name, DB_NAME() AS 'database_name', DB_ID() AS database_id;
    response_format: table
</code></pre>
<p>The above query fetches metrics from all available databases. This is useful when the user wants to get data from all the databases.</p>
<p>Please note: currently this feature is supported only for Microsoft SQL Server and will be used by MS SQL integration internally, to support extracting metrics for <a href="https://github.com/elastic/integrations/issues/4108">all user DBs</a> by default.</p>
<h2>Using generic SQL: Metricbeat</h2>
<p>The generic <a href="https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-module-sql.html">SQL metricbeat module</a> provides flexibility to execute queries against different database drivers. The metricbeat input is available as GA for any production usage. <a href="https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-module-sql.html">Here</a>, you can find more information on configuring <a href="https://www.elastic.co/guide/en/beats/metricbeat/current/metricbeat-module-sql.html">the generic SQL</a> for different drivers with various examples.</p>
<h2>Using generic SQL: Input package</h2>
<p>The input package provides a flexible solution to advanced users for customizing their ingestion experience in Elastic. Generic SQL is now also available as an SQL<a href="https://docs.elastic.co/integrations/sql">input package</a>. The input package is currently available for early users as a <strong>beta release</strong>. Let's take a walk through how users can use generic SQL via the input package.</p>
<h3>Configurations of generic SQL input package:</h3>
<p>The configuration options for the generic SQL input package are as below:</p>
<ul>
<li><strong>Driver**</strong> :** This is the SQL database for which you want to use the package. In this case, we will take mysql as an example.</li>
<li><strong>Hosts:</strong> Here the user enters the connection string to connect to the database. It would vary depending on which database/driver is being used. Refer <a href="https://docs.elastic.co/integrations/sql#hosts">here</a> for examples.</li>
<li><strong>SQL Queries:</strong> Here the user writes the SQL queries they want to fire and the response_format is specified.</li>
<li><strong>Data set:</strong> The user specifies a <a href="https://www.elastic.co/guide/en/ecs/master/ecs-data_stream.html#_data_stream_field_details">data set</a> name to which the response fields get mapped.</li>
<li><strong>Merge results**</strong> :** This is an advanced setting, used to merge queries into a single event.</li>
</ul>
<p><img src="https://www.elastic.co/observability-labs/assets/images/sql-inputs-database-metrics-observability/elastic-blog-3-SQL-metrics-inputpackage.png" alt="Configuration parameters for SQL input package" /></p>
<p><img src="https://www.elastic.co/observability-labs/assets/images/sql-inputs-database-metrics-observability/elastic-blog-4-expanded-document.png" alt="Metrics getting mapped to the index created by the ‘sql_first_dataset’" /></p>
<h3>Metrics extensibility with customized SQL queries</h3>
<p>Let's say a user is using <a href="https://docs.elastic.co/integrations/mysql">MYSQL Integration</a>, which provides a fixed set of metrics. Their requirement now extends to retrieving more metrics from the MYSQL database by firing new customized SQL queries.</p>
<p>This can be achieved by adding an instance of SQL input package, writing the customized queries and specifying a new <a href="https://www.elastic.co/guide/en/ecs/master/ecs-data_stream.html#field-data-stream-dataset">data set</a> name as shown in the screenshot below.</p>
<p>This way users can get any metrics by executing corresponding queries. The resultant metrics of the query will be indexed to the new data set, sql_second_dataset.</p>
<p><img src="https://www.elastic.co/observability-labs/assets/images/sql-inputs-database-metrics-observability/elastic-blog-5-driver.png" alt="Customization of Ingest Pipelines and Mappings" /></p>
<p>When there are multiple queries, users can club them into a single event by enabling the Merge Results toggle.</p>
<h3>Customizing user experience</h3>
<p>Users can customize their data by writing their own <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html">ingest pipelines</a> and providing their customized <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping.html">mappings</a>. Users can also build their own bespoke dashboards.</p>
<p><img src="https://www.elastic.co/observability-labs/assets/images/sql-inputs-database-metrics-observability/elastic-blog-6-ingest-pipeline.png" alt="Customization of Ingest Pipelines and Mappings" /></p>
<p>As we can see above, the SQL input package provides the flexibility to get new metrics by running new queries, which are not supported in the default MYSQL integration (the user gets metrics from a predetermined set of queries).</p>
<p>The SQL input package also supports multiple drivers: mssql, postgresql and oracle. So a single input package can be used to cater to all these databases.</p>
<p>Note: The fetch_from_all_databases feature is not supported in the SQL input package yet.</p>
<h2>Try it out!</h2>
<p>Now that you know about various use cases and features of generic SQL, get started with <a href="https://cloud.elastic.co/registration?fromURI=/home">Elastic Cloud</a> and try using the <a href="https://docs.elastic.co/integrations/sql">SQL input package</a> for your SQL database and get customized experience and metrics. If you are looking for newer metrics for some of our existing SQL based integrations — like <a href="https://docs.elastic.co/en/integrations/microsoft_sqlserver">Microsoft SQL Server</a>, <a href="https://docs.elastic.co/integrations/oracle">Oracle</a>, and more — go ahead and give the SQL input package a swirl.</p>
<p><em>The release and timing of any features or functionality described in this post remain at Elastic's sole discretion. Any features or functionality not currently available may not be delivered on time or at all.</em></p>
]]></content:encoded>
            <category>observability-labs</category>
            <enclosure url="https://www.elastic.co/observability-labs/assets/images/sql-inputs-database-metrics-observability/patterns-midnight-background-no-logo-observability.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[LLM Observability for Google Cloud’s Vertex AI platform - understand performance, cost and reliability]]></title>
            <link>https://www.elastic.co/observability-labs/blog/elevate-llm-observability-with-gcp-vertex-ai-integration</link>
            <guid isPermaLink="false">elevate-llm-observability-with-gcp-vertex-ai-integration</guid>
            <pubDate>Wed, 09 Apr 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Enhance LLM observability with Elastic's GCP Vertex AI Integration — gain actionable insights into model performance, resource efficiency, and operational reliability.]]></description>
            <content:encoded><![CDATA[<p>As organizations increasingly adopt large language models (LLMs) for AI-powered applications such as content creation, Retrieval-Augmented Generation (RAG), and data analysis, SREs and developers face new challenges. Tasks like monitoring workflows, analyzing input and output, managing query latency, and controlling costs become critical. LLM observability helps address these issues by providing clear insights into how these models perform, allowing teams to quickly identify bottlenecks, optimize configurations, and improve reliability. With better observability, SREs can confidently scale LLM applications, especially on platforms like <a href="https://cloud.google.com/vertex-ai">Google Cloud’s Vertex AI</a>.</p>
<h3>New Elastic Observability LLM integration with Google Cloud’s Vertex AI platform</h3>
<p>We are thrilled to announce general availability of monitoring LLMs hosted in Google Cloud through the <a href="https://www.elastic.co/docs/current/integrations/gcp_vertexai">Elastic integration with Vertex AI</a>. This integration enables users to experience enhanced LLM Observability by providing deep insights into the usage, cost and operational performance of models on Vertex AI, including latency, errors, token usage, frequency of model invocations as well as resources utilized by models. By leveraging this data, organizations can optimize resource usage, identify and resolve performance bottlenecks, and enhance the model efficiency and accuracy.</p>
<h3>Observability needs for AI-powered applications using the Vertex AI platform</h3>
<p>Leveraging AI models creates unique needs around the observability and monitoring of AI-powered applications. Some of the challenges that come with using LLMs are related to the high cost to call the LLMs, the quality and safety of LLM responses, and the performance, reliability and availability of the LLMs.</p>
<p>Lack of visibility into LLM observability data can make it harder for SREs and DevOps teams to ensure their AI-powered applications meet their service level objectives for reliability, performance, cost and quality of the AI-generated content and have enough telemetry data to troubleshoot related issues. Thus, robust LLM observability and detection of anomalies in the performance of models hosted on Google Cloud’s Vertex AI platform in real time is critical for the success of AI-powered applications.</p>
<p>Depending on the needs of their LLM applications, customers can make use of a growing list of models hosted on the Vertex AI platform such as Gemini 2.0 Pro, Gemini 2.0 Flash, and Imagen for image generation. Each model excels in specific areas and generates content in some modalities including Language, Audio, Vision, Code, etc. No two models are the same; each model has specific performance characteristics. So, it is important that service operators are able to track the individual performance, behaviour and cost of each model.</p>
<h3>Unlocking Insights with Vertex AI Metrics</h3>
<p>The Elastic integration with Google Cloud’s Vertex AI platform collects a wide range of metrics from models hosted on Vertex AI, enabling users to monitor, analyze, and optimize their AI deployments effectively.</p>
<p>Once you use the integration, you can review all the metrics in the Vertex AI dashboard</p>
<p><img src="https://www.elastic.co/observability-labs/assets/images/elevate-llm-observability-with-gcp-vertex-ai-integration/Overview.png" alt="Overview Dashboard" /></p>
<p>These metrics can be categorized into the following groups:</p>
<h4>1. Prediction Metrics</h4>
<p>Prediction metrics provide critical insights into model usage, performance bottlenecks, and reliability. These metrics help ensure smooth operations, optimize response times, and maintain robust, accurate predictions.</p>
<ul>
<li>
<p><strong>Prediction Count by Endpoint</strong>: Measures the total number of predictions across different endpoints.</p>
</li>
<li>
<p><strong>Prediction Latency</strong>: Provides insights into the time taken to generate predictions, allowing users to identify bottlenecks in performance.</p>
</li>
<li>
<p><strong>Prediction Errors</strong>: Monitors the count of failed predictions across endpoints.</p>
</li>
</ul>
<p><img src="https://www.elastic.co/observability-labs/assets/images/elevate-llm-observability-with-gcp-vertex-ai-integration/Prediction.png" alt="Prediction Metrics" /></p>
<h4>2. Model Performance Metrics</h4>
<p>Model performance metrics provide crucial insights into deployment efficiency, and responsiveness. These metrics help optimize model performance and ensure reliable operations.</p>
<ul>
<li>
<p><strong>Model Usage</strong>: Tracks the usage distribution among different model deployments.</p>
</li>
<li>
<p><strong>Token Usage</strong>: Tracks the number of tokens consumed by each model deployment, which is critical for understanding model efficiency.</p>
</li>
</ul>
<p><img src="https://www.elastic.co/observability-labs/assets/images/elevate-llm-observability-with-gcp-vertex-ai-integration/token_model_usage.png" alt="Token model usage" /></p>
<ul>
<li>
<p><strong>Invocation Rates</strong>: Tracks the frequency of invocations made by each model deployment.</p>
</li>
<li>
<p><strong>Model Invocation Latency</strong>: Measures the time taken to invoke a model, helping in diagnosing performance issues.</p>
</li>
</ul>
<p><img src="https://www.elastic.co/observability-labs/assets/images/elevate-llm-observability-with-gcp-vertex-ai-integration/Invocation_Vertex.png" alt="Model Invocation Metrics" /></p>
<h4>3. Resource Utilization Metrics</h4>
<p>Resource utilization metrics are vital for monitoring resource efficiency and workload performance. They help optimize infrastructure, prevent bottlenecks, and ensure smooth operation of AI deployments.</p>
<ul>
<li>
<p><strong>CPU Utilization</strong>: Monitors CPU usage to ensure optimal resource allocation for AI workloads.</p>
</li>
<li>
<p><strong>Memory Usage</strong>: Tracks the memory consumed across all model deployments.</p>
</li>
<li>
<p><strong>Network Usage</strong>: Measures bytes sent and received, providing insights into data transfer during model interactions.</p>
</li>
</ul>
<p><img src="https://www.elastic.co/observability-labs/assets/images/elevate-llm-observability-with-gcp-vertex-ai-integration/Resource_Utilization.png" alt="Resource Utilization Metrics" /></p>
<h4>4. Overview Metrics</h4>
<p>These metrics give an overview of the models deployed in Google Cloud’s Vertex AI platform. They are essential for tracking overall performance, optimizing efficiency, and identifying potential issues across deployments.</p>
<ul>
<li>
<p><strong>Total Invocations</strong>: The overall count of prediction invocations across all models and endpoints, providing a comprehensive view of activity.</p>
</li>
<li>
<p><strong>Total Tokens</strong>: The total number of tokens processed across all model interactions, offering insights into resource utilization and efficiency.</p>
</li>
<li>
<p><strong>Total Errors</strong>: The total count of errors encountered across all models and endpoints, helping identify reliability issues.</p>
</li>
</ul>
<p>All metrics can be filtered by <strong>region</strong>, offering localized insights for better analysis.</p>
<p>Note: The Elastic I integration with Vertex AI provides comprehensive visibility into both deployment models: provisioned throughput, where capacity is pre-allocated, and pay-as-you-go, where resources are consumed on demand.</p>
<h3>Conclusion</h3>
<p>This <a href="https://www.elastic.co/docs/current/integrations/gcp_vertexai">integration with Vertex AI</a> represents a significant step forward in enhancing the LLM Observability for users of Google Cloud’s Vertex AI platform. By unlocking a wealth of actionable data, organizations can assess the health, performance and cost of LLMs and troubleshoot operational issues, ensuring scalability, and accuracy in AI-driven applications.</p>
<p>Now that you know how the Vertex AI integration enhances LLM Observability, it’s your turn to try it out n. Spin up an Elastic Cloud, and start monitoring your LLM applications hosted on Google Cloud’s Vertex AI platform.</p>
]]></content:encoded>
            <category>observability-labs</category>
            <enclosure url="https://www.elastic.co/observability-labs/assets/images/elevate-llm-observability-with-gcp-vertex-ai-integration/vertexai-title.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[LLM Observability with Elastic’s Azure AI Foundry Integration]]></title>
            <link>https://www.elastic.co/observability-labs/blog/llm-observability-azure-ai-foundry</link>
            <guid isPermaLink="false">llm-observability-azure-ai-foundry</guid>
            <pubDate>Fri, 25 Jul 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[Gain comprehensive visibility into your generative AI workloads on Azure AI Foundry. Monitor token usage, latency, and cost, while leveraging built-in content filters to ensure safe and compliant application behavior—all with out-of-the-box observability powered by Elastic.]]></description>
            <content:encoded><![CDATA[<h2>Introduction</h2>
<p>As organizations increasingly adopt LLMs for AI-powered applications such as content creation, Retrieval-Augmented Generation (RAG), and data analysis, SREs and developers face new challenges. Tasks like monitoring workflows, analyzing input and output, managing query latency, and controlling costs become critical. LLM Observability helps address these issues by providing clear insights into how these models perform, allowing teams to quickly identify bottlenecks, optimize configurations, and improve reliability. With better observability, SREs can confidently scale LLM applications, especially on platforms like Azure AI Foundry, while minimizing downtime and keeping costs in check.</p>
<p>Elastic is expanding support for LLM Observability with Elastic Observability's new Azure AI Foundry integration. This is now available as a tech preview on Elastic Cloud. This new observability integration provides you with comprehensive visibility into the performance and usage of foundational models, such as <strong>GPT-4, Mistral, Llama</strong>, and thousands of others from leading AI companies and from Azure available through Azure AI Foundry. The new Azure AI Foundry Integration in Elastic Observability integration offers an out-of-the-box experience by simplifying the collection of metrics and logs, making it easier to gain actionable insights and effectively manage your models. The integration is simple to set up and comes with pre-built, out-of-the-box dashboards. With real-time insights, SREs can now monitor, optimize and troubleshoot LLM applications that are using Azure AI Foundry.</p>
<p>This blog will walk through the features available to SREs, such as monitoring invocations, errors, and latency information across various models, along with the usage and performance of LLM requests. Additionally, the blog will show how easy it is to set up and what insights you can gain from Elastic for LLM Observability.</p>
<h2>Prerequisites</h2>
<p>To get started with the Azure AI Foundry integration, you will need:</p>
<ul>
<li>An account on Elastic Cloud and a deployed stack in Azure (<a href="https://azuremarketplace.microsoft.com/en-us/marketplace/apps/elastic.ec-azure-pp?ocid=Elastic-Microsoft-Partner-Page-Get-Started">see instructions here</a>). Ensure you are using version 9.0.0 or higher.</li>
<li>An Azure account with permissions to pull the necessary data from Azure and Azure AI Foundry. See details in our <a href="https://www.elastic.co/docs/reference/integrations/azure_ai_foundry">documentation</a>.</li>
</ul>
<h2>Configuring Azure AI Foundry Integration</h2>
<p>To collect logs and metrics from Azure AI Foundry ensure you properly configure Azure logs and metrics from the following links:</p>
<ul>
<li>
<p><a href="https://www.elastic.co/docs/reference/integrations/azure_metrics#setup">Configure to receive Azure Metrics</a> - This integration specifically collects Azure AI Foundry metrics which will come from the service, and ensure you have the client id, subscription id, and tenant id from Azure AI Foundry to collect metrics.
<img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-ai-foundry/azure_ai_foundry_metrics.png" alt="Azure AI Foundry metrics" /></p>
</li>
<li>
<p><a href="https://www.elastic.co/docs/reference/integrations/azure">Configure to receive Azure Logs</a> and more specifically ensure that you <a href="https://learn.microsoft.com/en-us/azure/event-hubs/event-hubs-create">configure Azure event hub</a> to properly allow Elastic to ingest logs. Once you have the Azure event hub information, you will need it to configure the logs section of the Azure AI Foundry Integration.
<img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-ai-foundry/azure_ai_foundry_logs.png" alt="Azure AI Foundry logs" /></p>
</li>
</ul>
<h2>Maximize Visibility with Out-of-the-box dashboards</h2>
<p>Azure AI Foundry integration offers rich out-of-the-box visibility into the performance and usage information of models in Azure AI Foundry, including text and image models. There are several dashboards currently available. More will be coming as the integration goes to GA.</p>
<ul>
<li>Azure AI Foundry Overview dashboard provides a summarized view of the invocations, errors and latency information across various models.</li>
<li>Azure AI Foundry Billing dashboard - which provides total costs and daily usage costs from Azure cognitive services.</li>
<li>Azure AI Foundry Advanced Monitoring - which focuses on logs generated by the Azure AI Foundry service when connected through the API Management Service. Provides request rate, error rate, model usage, latency, LLM prompt input, response completion.</li>
</ul>
<p>Each dashboard provides specific insights important to SREs. Here is a quick overview of some of these insights:</p>
<ul>
<li>
<p><strong>Model Usage and Token Trends</strong> – Visualize token consumption and completion counts by model, endpoint, and time window.
<img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-ai-foundry/azure_ai_foundry_tokens.png" alt="Azure AI Foundry token usage metrics" /></p>
</li>
<li>
<p><strong>Latency Metrics</strong> – Monitor average and percentile latency per prompt, per endpoint, and correlate with prompt types or user IDs.
<img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-ai-foundry/azure_ai_foundry_model_latency.png" alt="Azure AI Foundry latency metrics" /></p>
</li>
<li>
<p><strong>Cost Estimation</strong> – Estimate API usage cost based on token consumption and model pricing.
<img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-ai-foundry/azure_ai_foundry_billing.png" alt="Azure AI Foundry cost estimation metrics" /></p>
</li>
<li>
<p><strong>Prompt/Completion Logging</strong> – View prompt-response pairs for debugging and quality monitoring.
<img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-ai-foundry/azure_ai_foundry_prompt_response.png" alt="Azure AI Foundry prompt/completions metrics" /></p>
</li>
<li>
<p><strong>Content Filtering and Guardrails</strong> – See which prompts or completions are being filtered, and why.
<img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-ai-foundry/azure_ai_foundry_guardrails.png" alt="Azure AI Foundry guardrails metrics" />
<img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-ai-foundry/azure_ai_foundry_prompt_filtered.png" alt="Azure AI Foundry guardrails prompt filtered" /></p>
</li>
</ul>
<p>You can drill into specific users or sessions, slice by model type or region, and export reports for usage reviews or compliance.</p>
<hr />
<h2>Try it out today</h2>
<p>The Azure AI Foundry Integration is currently available in Elastic Cloud (both serverless and hosted options). Sign up for a 7 day trial by signing up to Elastic Cloud directly or through Azure Marketplace.
Alternatively you can also deploy a cluster on our Elasticsearch Service, download the Elasticsearch stack, or run Elastic from Azure Marketplace then spin up the new technical preview of Azure AI Foundry integration, open the curated dashboards in Kibana and start monitoring your Azure AI Foundry service!</p>
]]></content:encoded>
            <category>observability-labs</category>
            <enclosure url="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-ai-foundry/LLM-observability.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Optimizing Spend and Content Moderation on Azure OpenAI with Elastic]]></title>
            <link>https://www.elastic.co/observability-labs/blog/llm-observability-azure-openai-content-filter</link>
            <guid isPermaLink="false">llm-observability-azure-openai-content-filter</guid>
            <pubDate>Tue, 13 May 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[We have added further capabilities to the Azure OpenAI GA package, which now offer content filter monitoring and enhancements to the billing insights!]]></description>
            <content:encoded><![CDATA[<p>In a previous blog we showed you how to set up observability for your models hosted on Azure OpenAI using Elastic’s integration. We’ve expanded the integration to also include Azure OpenAI content filtering, and cost analysis for Azure OpenAI. If you previously onboarded the Azure OpenAI integration, just upgrade it and you will automatically get all new features we discuss in this blog. The enhanced integration now provides multiple dashboards including a general Azure OpenAI Overview, Azure Provisioned Throughput Unit dashboard, Azure Content filtering, and a dashboard for Azure OpenAI billing.</p>
<p>In this blog we will cover how to use Azure OpenAI Content Filtering and tracking Azure OpenAI usage costs. Let’s first review what these two capabilities from Azure OpenAI enable you to do:</p>
<h2>Azure OpenAI Content Filtering: Enhancing AI Safety</h2>
<p>Content filtering for Azure OpenAI plays a critical role in addressing AI safety challenges by helping to mitigate the risks associated with harmful or inappropriate content generated by AI models. By implementing robust content filtering mechanisms, organizations can proactively identify and filter out potentially harmful content, such as hate speech, misinformation, or violent imagery, before it is disseminated to users. This helps prevent the spread of harmful content and reduces the potential negative impact on individuals and communities.</p>
<p>Monitoring Azure OpenAI content filtering is essential for staying proactive in addressing emerging content moderation challenges. By closely monitoring the system, businesses can quickly detect any new types of harmful content or patterns of misuse that may arise. This enables organizations to stay ahead of potential content moderation issues and take timely action to protect their users and uphold their brand reputation.</p>
<h2>Tracking Azure OpenAI Usage Costs</h2>
<p>Monitoring Azure OpenAI model usage costs is crucial for managing budget and resource allocation effectively. By keeping track of usage costs, organizations can optimize their operations to avoid unnecessary expenses and ensure that they are getting the best value from their investment in AI technologies. Additionally, it helps in forecasting future expenses and aids in scaling resources according to the demand without compromising performance or incurring excessive costs. Effective monitoring also allows for transparency and accountability, enabling better decision-making in terms of AI deployment and utilization within Azure environments.</p>
<p>As we walk through this blog, we will provide you with prerequisites to set up and use the pre-configured dashboards for both of these capabilities, which are part of the Azure OpenAI integration.</p>
<h2>Prerequisites</h2>
<p>In order to follow along in this blog you will have to</p>
<ol>
<li>
<p>Set up and install the Azure billing integration to monitor the usage costs. Once the integration is installed, you can track the usage in the enhanced Azure OpenAI Billing dashboard.</p>
</li>
<li>
<p>Additionally, make sure you have enabled the Azure API Management service to access the Azure OpenAI models.</p>
</li>
</ol>
<h3>How to Use Azure API Management with Azure OpenAI:</h3>
<ul>
<li><strong>Provision an Azure OpenAI resource:</strong> Create an Azure OpenAI resource and select a model for your application.</li>
<li><strong>Create an API Management instance:</strong> Establish an Azure API Management instance to manage the Azure OpenAI APIs.</li>
<li><strong>Import the Azure OpenAI API:</strong> Import the Azure OpenAI API into your API Management instance using its OpenAPI specification.</li>
<li><strong>Configure Policies:</strong> Implement policies in API Management to manage request authentication, rate limiting, traffic shaping, and more.</li>
</ul>
<p><img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-openai-content-filter/llm-observability-azure_openai_create_APM.png" alt="LLM Observability: Azure OpenAI Create API Management Service" /></p>
<h2>Steps to create a content filter for Azure OpenAI</h2>
<p>Before you set up observability for the content filtering, ensure that you have configured the Azure content filtering for your model. Follow the steps below to create an Azure OpenAI content filtering,</p>
<ol>
<li><strong>Access the Azure OpenAI service console:</strong>
<ul>
<li>Sign in to the Azure Console with the appropriate permissions and navigate to the Azure OpenAI service console.</li>
</ul>
</li>
<li><strong>Navigate to Safety + security:</strong>
<ul>
<li>From the left-hand menu, select <strong>Safety + security</strong>.</li>
</ul>
</li>
<li><strong>Create a New Content filter:</strong>
<ul>
<li>Select <strong>Create content filter</strong>.</li>
<li>Configure various content filter policies including the following
<ul>
<li><strong>Set input filter:</strong> Content will be annotated by category and blocked according to the threshold you set for prompts.</li>
<li><strong>Set output filter:</strong> Content will be annotated by category and blocked according to the threshold you set for response output.</li>
<li><strong>Blocklists:</strong> Define specific words or phrases to block.</li>
<li><strong>Deployments:</strong> Apply filters to model deployments.</li>
</ul>
</li>
</ul>
</li>
<li><strong>Review and Create:</strong>
<ul>
<li>Review your settings and select Create to finalize the content filter configurations.</li>
</ul>
</li>
</ol>
<p><img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-openai-content-filter/llm-observability-azure_openai_create_content_filter.png" alt="LLM Observability: Azure OpenAI Create Content Filter" /></p>
<p>Customers can also configure content filters and create custom safety policies that are tailored to their use case requirements. The configurability feature allows customers to adjust the settings, separately for prompts and completions, to filter content for each content category at different severity levels.</p>
<h2>Content filter types</h2>
<ul>
<li>The content filtering categories,
<ul>
<li>(hate, sexual, violence, self-harm)</li>
<li>Other optional classification models aimed at detecting jailbreak risk and known content for text and code.</li>
</ul>
</li>
<li>Severity level within each content filter category,
<ul>
<li>(low, medium, high)</li>
<li>Content detected at the 'safe' severity level is labeled in annotations but isn't subject to filtering and isn't configurable.</li>
</ul>
</li>
</ul>
<h2>Understanding the pre-configured dashboard for Azure OpenAI Content Filtering</h2>
<p>Now that you have set up the filter, you can see what is being filtered in Elastic through the Azure OpenAI content filtering dashboard.</p>
<ol>
<li>Navigate to the Dashboard Menu – Select the <strong>Dashboard</strong> menu option in Elastic and search for <strong>[Azure OpenAI] Content Filtering Overview</strong> to open the dashboard.</li>
<li>Navigate to the Integrations Menu – Open the <strong>Integrations</strong> menu in Elastic, select <strong>Azure OpenAI</strong>, go to the <strong>Assets</strong> tab, and choose <strong>[Azure OpenAI] Content Filtering Overview</strong> from the dashboard assets.</li>
</ol>
<p><img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-openai-content-filter/llm-observability-azure_openai_content_filter_overview.png" alt="LLM Observability: Azure OpenAI Content Filtering Overview" /></p>
<p>The Azure OpenAI Content Filtering Overview dashboard in the Elastic integration provides insights into blocked requests, API latency, error rates. This dashboard also provides detailed breakdown of content being filtered by the content filtering policy.</p>
<h2>Content Filter overview</h2>
<p>When the content filtering system detects harmful content, you receive either an error on the API call if the prompt was deemed inappropriate, or the finish_reason on the response will be content_filter to signify that some of the completion was filtered.</p>
<p>This can be summarized as,</p>
<ul>
<li>
<p><strong>Prompt filters:</strong> The prompt content that is classified in the filtered category will return HTTP 400 error.</p>
</li>
<li>
<p><strong>Non-streaming completion:</strong> When the content is filtered, non-streaming completions calls won't return any content. In rare cases with longer responses, a partial result can be returned. In these cases, the finish_reason is updated.</p>
</li>
<li>
<p><strong>Streaming completion:</strong> For streaming completions calls, segments are returned back to the user as they're completed. The service continues streaming until either reaching a stop token, length, or when content that is classified at a filtered category and severity level is detected.</p>
</li>
</ul>
<h2>Prompt and response where content has been blocked</h2>
<p>This dashboard section displays the original LLM prompt, inputs from various sources (API calls, applications, or chat interfaces), and the corresponding completion response. The panel below gives a view on the responses after applying content filtering policy for prompts and completions.</p>
<p><img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-openai-content-filter/llm-observability-azure_openai_content_filter_logs.png" alt="LLM Observability: Azure OpenAI Content Filtered Logs" /></p>
<p>You can use the following code snippet  to start integrating your current prompt and settings into your application to test the content filter:</p>
<pre><code>chat_prompt = [
   {
       &quot;role&quot;: &quot;user&quot;,
       &quot;content&quot;: &quot;How to kill a mocking bird?&quot;
   }
]
</code></pre>
<p>After running the code, you can find the content being filtered by violence category with the severity level medium.
<img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-openai-content-filter/llm-observability-azure_openai_content-filter_response.png" alt="LLM Observability: Azure OpenAI Content Filtered Response" /></p>
<h2>Content filtered by content source (Input &amp; Output)</h2>
<p>The content filtering system helps monitor and moderate different categories of content based on severity levels. The categories typically include things like adult content, offensive language, hate speech, violence, and more. The severity levels indicate the degree of sensitivity or potential harm associated with the content. This panel helps the user to effectively monitor and filter out inappropriate or harmful content to maintain a safe environment.</p>
<p><img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-openai-content-filter/llm-observability-azure_openai_content_filter_category_serverity.png" alt="LLM Observability: Azure OpenAI Content Filter Category &amp; Severity Level" /></p>
<p>These metrics can be categorized into the following groups:</p>
<ul>
<li><strong>Blocked requests by category:</strong> Provides insights into the total blocked requests by category.</li>
<li><strong>Severity distribution by categories:</strong> Monitors the blocked requests by categories and severity distribution. The severity distribution may be either low, medium or high.</li>
<li><strong>Content filtered categories:</strong> Provides insights into the content filtered categories over time.</li>
</ul>
<h2>Reviewing the Azure OpenAI Billing dashboard</h2>
<p>You can now look at what you are spending on Azure OpenAI.</p>
<p><img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-openai-content-filter/llm-observability-azure_openai_billing.png" alt="LLM Observability: Azure OpenAI Billing" /></p>
<p>Here is what you see on this dashboard:</p>
<ul>
<li><strong>Total costs:</strong> This measures the total usage cost across all the model deployments.</li>
<li><strong>Overall Usage by model:</strong> This tracks the total usage costs broken down by model.</li>
<li><strong>Daily usage:</strong> Monitors usage costs on a daily basis.</li>
<li><strong>Daily usage costs by model:</strong> Monitors daily usage costs broken down by model deployments.</li>
</ul>
<h2>Conclusion</h2>
<p>The Azure OpenAI integration makes it easy for you to collect a curated set of metrics and logs for your LLM-powered applications using Azure OpenAI along with content filtered responses. It comes with an out-of-the-box dashboard which you can further customize for your specific needs.</p>
<p>Deploy a cluster on our Elasticsearch Service or download the stack, spin up the new Azure OpenAI integration, open the curated dashboards in Kibana and start monitoring your Azure OpenAI service!</p>]]></content:encoded>
            <category>observability-labs</category>
            <enclosure url="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-openai-content-filter/LLM-observability.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[LLM Observability with Elastic: Azure OpenAI Part 2]]></title>
            <link>https://www.elastic.co/observability-labs/blog/llm-observability-azure-openai-v2</link>
            <guid isPermaLink="false">llm-observability-azure-openai-v2</guid>
            <pubDate>Fri, 23 Aug 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[We have added further capabilities to the Azure OpenAI GA package, which now offer prompt and response monitoring, PTU deployment performance tracking, and billing insights!]]></description>
            <content:encoded><![CDATA[<p>We recently announced GA of the Azure OpenAI integration. You can find details in our previous blog <a href="https://www.elastic.co/observability-labs/blog/llm-observability-azure-openai">LLM Observability: Azure OpenAI</a>.</p>
<p>Since then, we have added further capabilities to the Azure OpenAI GA package, which now offer prompt and response monitoring, PTU deployment performance tracking, and billing insights. Read on to learn more!</p>
<h2>Advanced Logging and Monitoring</h2>
<p>The initial GA release of the integration focused mainly on the native logs, to track the telemetry of the service by using <strong>cognitive services logging</strong>. This version of the Azure OpenAI integration allows you to process the advanced logs which gives a more holistic view of OpenAI resource usage.</p>
<p>To achieve this, you have to setup API Management services in Azure. The API Management service is a centralized place where you can put all OpenAI services endpoints to manage all of them end-to-end. Enable the API Management services and configure the Azure event hub to stream the logs.</p>
<p>To learn more about setting up the API Management service to access Azure OpenAI, please refer to the <a href="https://learn.microsoft.com/en-us/azure/architecture/ai-ml/openai/architecture/log-monitor-azure-openai">Azure documentation</a>.</p>
<p>By using advanced logging, you can collect the following log data:</p>
<ul>
<li>Request input text</li>
<li>Response output text</li>
<li>Content filter results</li>
<li>Usage Information
<ul>
<li>Input prompt tokens</li>
<li>Output completion tokens</li>
<li>Total tokens</li>
</ul>
</li>
</ul>
<p>Azure OpenAI integration now collects the API Management Gateway logs. When a question from the user goes to the API Management, it logs the questions and the responses from the GPT models.</p>
<p><img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-openai-v2/llm-observability-azure-openai-log-categories.png" alt="LLM Observability: Azure OpenAI Logs Overview" /></p>
<p>Here’s what a sample log looks like,
<img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-openai-v2/llm-observability-advance-log-monitoring.png" alt="LLM Observability: Azure OpenAI Advanced Logs" /></p>
<h3>Content filtered results</h3>
<p>Azure OpenAI’s content filtering system detects and takes action on specific categories of potentially harmful content in both input prompts and output completions. With Azure OpenAI model deployments, you can use the default content filter or create your own content filter.</p>
<p>Now, The integration collects the content filtered result logs. In this example let's create a custom filter in the Azure OpenAI Studio that generates an error log.</p>
<p>By leveraging the <strong>Azure Content Filters</strong>, you can create your own custom lists of terms or phrases to block or flag.
<img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-openai-v2/llm-observability-azure-content-filters.png" alt="LLM Observability: Azure OpenAI Set Content Filter" /></p>
<p>And the document ingested in Elastic would look like this:
<img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-openai-v2/llm-observability-content-filter-logs.png" alt="LLM Observability: Azure OpenAI Content Filter Logs" />
This screenshot provides insights into the content filtered request.</p>
<h2>PTU Deployment Monitoring</h2>
<p><a href="https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/provisioned-throughput">Provisioned throughput units (PTU)</a> are units of model processing capacity that you can reserve and deploy for processing prompts and generating completions.</p>
<p>The curated dashboard for PTU Deployment gives comprehensive visibility into metrics such as request latency, active token usage, PTU utilization, and fine-tuning activities, offering a quick snapshot of your deployment's health and performance.</p>
<p>Here are the essential PTU metrics captured by default:</p>
<ul>
<li><strong>Time to Response:</strong> Time taken for the first response to appear after a user send a prompt.</li>
<li><strong>Active Tokens:</strong> Use this metric to understand your TPS or TPM based utilization for PTUs and compare to the benchmarks for target TPS or TPM scenarios.</li>
<li><strong>Provision-managed Utilization V2:</strong> Provides insights into utilization percentages, helping prevent overuse and ensuring efficient resource allocation.</li>
<li><strong>Prompt Token Cache Match Rate:</strong> The prompt token cache hit ratio expressed as a percentage.</li>
</ul>
<p><img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-openai-v2/llm-observability-azure_open_ai_ptu_deployment.png" alt="LLM Observability: Azure OpenAI PTU Deployment Metrics Monitoring" /></p>
<h2>Using Billing for cost</h2>
<p>Using the curated overview dashboard you can now monitor the actual usage cost for the AI applications. You are one step away from processing the billing information.</p>
<p>You need to configure and install the <a href="https://www.elastic.co/docs/current/integrations/azure_billing">Azure billing metrics integration</a>. Once the installation is complete the usage cost is visualized for the cognitive services in the Azure OpenAI overview dashboard.</p>
<p><img src="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-openai-v2/llm-observability-azure_openai_billing_overview.png" alt="LLM Observability: Azure OpenAI Usage Cost Monitoring" /></p>
<h2>Try it out today</h2>
<p>Deploy a cluster on our <a href="https://www.elastic.co/cloud/elasticsearch-service">Elasticsearch Service</a> or <a href="https://www.elastic.co/downloads/">download</a> the stack, spin up the new Azure OpenAI integration, open the curated dashboards in Kibana and start monitoring your Azure OpenAI service!</p>]]></content:encoded>
            <category>observability-labs</category>
            <enclosure url="https://www.elastic.co/observability-labs/assets/images/llm-observability-azure-openai-v2/LLM-observability.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>