can send telemetry to one or more Azure Application Insights (Application Insights) accounts. The first step thus is for you to create an Application Insights account. See HERE for instructions on how to do that.
Once you have created the Application Insights account, make a note of the connection string.
Please visit the documentation for more details (use CTRL + click to open in a new browser tab/page):
- Business Central Developer and IT-pro documentation - Monitoring and Analyzing Telemetry
- Business Central Administration Center API - How to set the telemetry key
Application Insights is billed based on the volume of telemetry data that your application sends. Currently, the first 5 GB of data per month is free. Regarding data retention, every GB of data ingested can be retained at no charge for up to first 90 days.
Please check the documentation https://azure.microsoft.com/en-us/pricing/details/monitor/ for up-to-date information on pricing.
Azure monitor alerts are billed separately.
Here is a quote from a partner using telemetry: We have been using telemetry for some months now and have enabled 20+ apps as well as environment data from dev systems and build pipelines. Last month we ingested 800+ traces that corresponded to 2.3GB of data. Eventually we might hit some of those thresholds, but then we can decide if we want to spend money on telemetry (probably will) and how much. With our current setup, we will probably limit ingestion and once that no longer suffices, we will add sampling to the mix.
To reduce ingestion cost, you can
- set limits on daily data ingestion
- reduce data ingestion by sampling to only ingest a percentage of the inbound data (see https://docs.microsoft.com/en-us/azure/azure-monitor/app/sampling#ingestion-sampling)
- set a daily limit of how much data that can be ingested
- purge data from your Application Insights resource (see How do I delete data from Application Insights? below)
- set alerts on cost thresholds being exceeded to get notified if this happens
Use this KQL query MonthlyIngestion.kql to see the data distribution of different event ids in your telemetry database.
See all helper queries here: HelperQueries
Should each customer/app have their own Application Insights resource, rather than one insight for multiple customers?
Partitioning of Application Insights resources across multiple customers or apps depends on what you use telemetry for. The benefit of having a 1-1 relationship between customers/apps and Application Insights resources is that you can also use the Usage features in the Application Insights portal to monitor how a particular customer is using BC. It also makes it easy to separate the cost of telemetry per customer/app. Downside of a 1-1 relationship between customers/apps and Application Insights resources is that you have more Azure resources to manage, including any cross-customer alerting/monitoring that you might want to setup.
Also, it is recommended to use per-environment telemetry from per-app telemetry into separate Application Insights resources.
Please visit the KQL README page for learning resources on KQL and the Trouble Shooting Guides README page for learning resources on Azure Data Studio.
Use this KQL query AvailableSignal.kql to see if you have any data in your telemetry database, and also what kind of signal is present.
See all helper queries here: HelperQueries
The default retention for Application Insights resources is 90 days. Different retention periods can be selected for each Application Insights resource. The full set of available retention periods is 30, 60, 90, 120, 180, 270, 365, 550 or 730 days.
See https://docs.microsoft.com/en-us/azure/azure-monitor/app/pricing#change-the-data-retention-period
Purge data in an Application Insights component by a set of user-defined filters.
See https://docs.microsoft.com/en-us/rest/api/application-insights/components/purge#examples
You can use Powershell to setup a purge process, see an example here: How do I use Powershell to delete telemetry data?
To grant a person read-only access to Application Insights, go to the Access control (IAM) page in the Application Insights portal, and then add the role assignment "Reader" to the person.
You might also need to add the role assignment "Reader" to the person on the Resource Group for the Application Insights subscription.
The Business Central service does not emit any End User Identifiable Information (EUII) to Application Insights. So the telemetry is born GDPR compliant. The service only emits data that is classified as either System Metadata or Organization Identifiable Information (OII). The meaning of these classifications are described here: DataClassification Option Type
Microsoft Corporation (“Microsoft”) grants you a nonexclusive, perpetual, royalty-free right to use and modify the software code provided by us for the purposes of illustration ("Sample Code") and to reproduce and distribute the object code form of the Sample Code, provided that you agree: (i) to not use our name, logo, or trademarks to market your software product in which the Sample Code is embedded; (ii) to include a valid copyright notice on your software product in which the Sample Code is embedded; and (iii) to indemnify, hold harmless, and defend us and our suppliers from and against any claims or lawsuits, whether in an action of contract, tort or otherwise, including attorneys’ fees, that arise or result from the use or distribution of the Sample Code or the use or other dealings in the Sample Code. Unless applicable law gives you more rights, Microsoft reserves all other rights not expressly granted herein, whether by implication, estoppel or otherwise.
THE SAMPLE CODE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL MICROSOFT OR ITS LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THE SAMPLE CODE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.