<?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>Forem: Ankit Nayan ⚡</title>
    <description>The latest articles on Forem by Ankit Nayan ⚡ (@ankitnayan_33).</description>
    <link>https://forem.com/ankitnayan_33</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%2F591835%2F2cfb3823-fa9a-404a-bb09-8988ac1a5d01.jpeg</url>
      <title>Forem: Ankit Nayan ⚡</title>
      <link>https://forem.com/ankitnayan_33</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ankitnayan_33"/>
    <language>en</language>
    <item>
      <title>Monitor your Python application with full stack open source APM tool - SigNoz</title>
      <dc:creator>Ankit Nayan ⚡</dc:creator>
      <pubDate>Mon, 14 Jun 2021 12:44:17 +0000</pubDate>
      <link>https://forem.com/signoz/monitor-your-python-application-with-full-stack-open-source-apm-tool-signoz-10n8</link>
      <guid>https://forem.com/signoz/monitor-your-python-application-with-full-stack-open-source-apm-tool-signoz-10n8</guid>
      <description>&lt;p&gt;If you want to check our Github repo before diving in 👇&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bit.ly/3prv3WN" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fogp68gbgfrp3vtigh3ki.png" alt="SigNoz github repo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The cost of a millisecond.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TABB Group, a financial services industry research firm, &lt;a href="https://research.tabbgroup.com/report/v06-007-value-millisecond-finding-optimal-speed-trading-infrastructure" rel="noopener noreferrer"&gt;estimates&lt;/a&gt; that if a broker's electronic trading platform is 5 milliseconds behind the competition, it could cost $4 million in revenue per millisecond.&lt;/p&gt;

&lt;p&gt;The cost of latency is too high in the financial services industry, and the same is true for almost any software-based business today. For Google, half a second delay in search results caused a 20% drop in traffic. Half a second is enough to kill user satisfaction to a point where they abandon an app's service.&lt;/p&gt;

&lt;p&gt;While a user sees a screen, there are thousands of services in the background taking care of a user's request. In a microservices architecture, the challenge for engineering teams is to constantly figure out areas of optimization in a complex distributed network. And the solution starts with setting up a robust monitoring infrastructure for the application's production environment.&lt;/p&gt;

&lt;p&gt;Capturing and analyzing data about your production environment is critical. You need to proactively solve stability and performance issues in your web application to avoid system failures and ensure a smooth user experience.&lt;/p&gt;

&lt;p&gt;And to do that, you need insights into how your infrastructure handles user requests. With SigNoz, you can start monitoring your app in a few simple steps, and with an easy-to-use dashboard, you can quickly identify bottlenecks in your services.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing SigNoz
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/SigNoz/signoz" rel="noopener noreferrer"&gt;SigNoz&lt;/a&gt; is a full-stack open-source application monitoring and observability platform which can be installed within your infra. You can track metrics like p99 latency, error rates for your services, external API calls, and individual endpoints. With service maps, you can quickly assess the health of your services.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/c8t8MnT0WDVBlM9sod/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/c8t8MnT0WDVBlM9sod/giphy.gif"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And once you know the affected service, trace data can help you identify the exact code causing the issue. Using SigNoz dashboard, you can visualize your traces easily with flamegraphs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbxnezrbcvik2l0qd0iuv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbxnezrbcvik2l0qd0iuv.png" alt="Flamegraphs on SigNoz dashboard"&gt;&lt;/a&gt;Distributed tracing visualized with flamegraphs on SigNoz dashboard&lt;/p&gt;

&lt;p&gt;Now let's get down to some action and see everything for yourself.&lt;/p&gt;

&lt;p&gt;We have set up a &lt;a href="https://github.com/SigNoz/sample-flask-app" rel="noopener noreferrer"&gt;sample ToDo Python app&lt;/a&gt; based on Flask web framework, which uses MongoDB as a database to demonstrate how SigNoz works. We will divide the tutorial into two parts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Installing SigNoz&lt;/li&gt;
&lt;li&gt;Instrumenting sample app to start monitoring&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Part 1 - Installing SigNoz
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Install Docker&lt;/strong&gt;&lt;br&gt;
You can install Docker by following the steps listed on their website &lt;a href="https://www.docker.com/get-started" rel="noopener noreferrer"&gt;here&lt;/a&gt;. For this tutorial, you can choose the Docker Desktop option based on the system you have.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Clone SigNoz GitHub repository&lt;/strong&gt;&lt;br&gt;
From your terminal use the following command to clone SigNoz's GitHub repository.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/SigNoz/signoz.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Update path to signoz/deploy and install SigNoz&lt;/strong&gt;&lt;br&gt;
The deploy folder contains the files necessary for deploying SigNoz through Docker.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd signoz/deploy/
./install.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You will be asked to select one of the 2 ways to proceed:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Clickhouse as database (default)&lt;/li&gt;
&lt;li&gt;Kafka + Druid setup to handle scale (recommended for production use)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Trying out SigNoz with clickhouse database takes less than 1GB of memory and for this tutorial, we will use that option.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuenodd3f8igg2tghijmv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuenodd3f8igg2tghijmv.png" alt="SigNoz installation process on mac terminal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will get the following message once the installation is complete.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphjjj8ns2l0wmi1pghsp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphjjj8ns2l0wmi1pghsp.png" alt="Success message once the installation is complete"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the installation runs successfully, the UI should be accessible at port 3000. Wait for 2-3 mins for the data to be available to frontend.&lt;/p&gt;

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

&lt;p&gt;The applications shown in the dashboard are from a sample app called Hot R.O.D that comes with the installation bundle. It has 4 microservices being monitored: Frontend, Customer, Driver and Route. You can access the Hot R.O.D application UI at: &lt;a href="http://localhost:9000/" rel="noopener noreferrer"&gt;http://localhost:9000/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you have SigNoz up and running, let's see how instrumentation works. Instrumentation is the process of implementing code instructions to monitor your application's performance. Instrumentation is key to see how your application handles the real world.&lt;/p&gt;

&lt;p&gt;SigNoz supports &lt;a href="https://opentelemetry.io/" rel="noopener noreferrer"&gt;OpenTelemetry&lt;/a&gt; as the primary way for users to instrument their application. OpenTelemetry is a single, vendor-agnostic instrumentation library per language with support for both automatic and manual instrumentation. You don't need to worry about instrumentation in this tutorial. OpenTelemetry comes with all currently available &lt;a href="https://github.com/open-telemetry/opentelemetry-python" rel="noopener noreferrer"&gt;instrumentation&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Part 2 - Instrumenting sample app to start monitoring
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Python 3.4 or newer&lt;/strong&gt;&lt;br&gt;
If you do not have Python installed on your system, you can download it from the link &lt;a href="https://www.python.org/downloads/" rel="noopener noreferrer"&gt;here&lt;/a&gt;. Check the version of Python using &lt;code&gt;python3 --version&lt;/code&gt; on your terminal to see if Python is properly installed or not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MongoDB&lt;/strong&gt;&lt;br&gt;
If you already have MongoDB services running on your system, you can skip this step.&lt;/p&gt;

&lt;p&gt;For macOS:&lt;br&gt;
&lt;a href="https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/" rel="noopener noreferrer"&gt;https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For Linux:&lt;br&gt;
&lt;a href="https://docs.mongodb.com/manual/administration/install-on-linux/" rel="noopener noreferrer"&gt;https://docs.mongodb.com/manual/administration/install-on-linux/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For Windows:&lt;br&gt;
&lt;a href="https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/" rel="noopener noreferrer"&gt;https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On MacOS the installation is done using Homebrew's brew package manager. Once the installation is done, don't forget to start MongoDB services using &lt;code&gt;brew services start mongodb/brew/&lt;a href="mailto:mongodb-community@4.4"&gt;mongodb-community@4.4&lt;/a&gt;&lt;/code&gt; on your macOS terminal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4vyq8a96v3trzyutdpci.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4vyq8a96v3trzyutdpci.png" alt="Message on mac terminal on successfully starting mongodb services"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Steps
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Clone sample Flask app repository&lt;/strong&gt;&lt;br&gt;
From your terminal use the following command to clone sample Flask app GitHub repository.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/SigNoz/sample-flask-app.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;--Update path to sample-flask-app &amp;amp; check if the app is running__&lt;br&gt;
Check if the app is working or not using the following command:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd sample-flask-app
python3 app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqpln6xiapqvuq27qmd71.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqpln6xiapqvuq27qmd71.png" alt="Message on mac terminal on running python app"&gt;&lt;/a&gt;On my mac terminal&lt;/p&gt;

&lt;p&gt;You can now access the UI of the app on your local host: &lt;a href="http://localhost:5000/" rel="noopener noreferrer"&gt;http://localhost:5000/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwf63ad5n6ck8pde4uip.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwf63ad5n6ck8pde4uip.png" alt="UI of python app at port 5000"&gt;&lt;/a&gt;TODO reminder app with Flask and MongoDB&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Press 'Ctrl + C' to exit the app once you have made sure it is running properly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Set up OpenTelemetry Python instrumentation library&lt;/strong&gt;&lt;br&gt;
Your app folder contains a file called requirements.txt. This file contains all the necessary commands to set up OpenTelemetry python instrumentation library. All the mandatory packages required to start the instrumentation are installed with the help of this file. Make sure your path is updated to the root directory of your sample app and run the following command:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip3 install -r requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;If it hangs while installing &lt;code&gt;grpcio&lt;/code&gt; during &lt;strong&gt;pip3 install opentelemetry-exporter-otlp&lt;/strong&gt; then follow below steps as suggested in this stackoverflow &lt;a href="https://stackoverflow.com/questions/56357794/unable-to-install-grpcio-using-pip-install-grpcio/62500932#62500932" rel="noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pip3 install --upgrade pip&lt;/li&gt;
&lt;li&gt;python3 -m pip install --upgrade setuptools&lt;/li&gt;
&lt;li&gt;pip3 install --no-cache-dir --force-reinstall -Iv grpcio&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Install application specific packages&lt;/strong&gt;&lt;br&gt;
This step is required to install packages specific to the application. Make sure to run this command in the root directory of your installed application. This command figures out which instrumentation packages the user might want to install and installs it for them:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;opentelemetry-bootstrap --action=install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Configure a span exporter and run your application&lt;/strong&gt;&lt;br&gt;
You're almost done. In the last step, you just need to configure a few environment variables for your OTLP exporters. Environment variables that need to be configured:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SERVICE_NAME - application service name (you can name it as you like)&lt;/li&gt;
&lt;li&gt;ENDPOINT_ADDRESS - OTLP gRPC collector endpoint address (IP of SigNoz)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After taking care of these environment variables, you only need to run your instrumented application. Accomplish all these by using the following command at your terminal.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OTEL_RESOURCE_ATTRIBUTES=service.name=pythonApp OTEL_EXPORTER_OTLP_ENDPOINT="http://&amp;lt;IP of SigNoz&amp;gt;:4317" opentelemetry-instrument python3 app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt; can be replaced with localhost in this case. Hence, the final command becomes:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OTEL_RESOURCE_ATTRIBUTES=service.name=pythonApp OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4317" opentelemetry-instrument python3 app.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;And, congratulations! You have instrumented your sample Python app. Hit the endpoint of your app at port 5000, and wait for 1-2 mins. You can now access the SigNoz dashboard at &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;http://localhost:3000&lt;/a&gt; to monitor your app for performance metrics.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2k4mrfzha0on568yax07.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2k4mrfzha0on568yax07.png" alt="Sample app listed in applications on SigNoz dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that you can monitor your app performance, let's have a brief look at how to identify issues causing high latency in the app.&lt;/p&gt;

&lt;p&gt;In just 5 easy steps, our dashboard lets you drill down to events causing a delay in your deployed apps 👇&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Choose the service you want to inspect&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2oxu5piq4ro9iwqxvhzt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2oxu5piq4ro9iwqxvhzt.png" alt="List of application on SigNoz dashboard"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Choose the timestamp where latency is high and click on view traces&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2mbmhfdu0vmczzm8nuj5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2mbmhfdu0vmczzm8nuj5.png" alt="Inspect latency graph and click on view traces for high latency timestamps"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Choose the trace ID with the highest latency&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40jgfgum0b1x42620jqi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F40jgfgum0b1x42620jqi.png" alt="Sort and choose the trace ID with highest latency"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Inspect distributed traces with flamegraph&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F58fvwt6eaet6nb07iwwh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F58fvwt6eaet6nb07iwwh.png" alt="Flamegraphs"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Zero in on the highest latency event and take action&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fefon6ci18irrwwu0f0m1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fefon6ci18irrwwu0f0m1.png" alt="Identify specific event causing the delay"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With these steps, you can resolve latency issues in your app quickly. For distributed microservices architecture, distributed tracing enables teams to resolve issues quickly by providing a central dashboard where they can inspect how user requests perform across services.&lt;/p&gt;

&lt;p&gt;If you need any help with trying out SigNoz, feel free to mail me at &lt;a href="mailto:ankit.anand@signoz.io"&gt;ankit.anand@signoz.io&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;At SigNoz, we are committed to making the best open-source, self-hosted tool for application performance monitoring. Feel free to check out our GitHub repo here:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/SigNoz" rel="noopener noreferrer"&gt;
        SigNoz
      &lt;/a&gt; / &lt;a href="https://github.com/SigNoz/signoz" rel="noopener noreferrer"&gt;
        signoz
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      SigNoz is an open-source observability platform native to OpenTelemetry with logs, traces and metrics in a single application. An open-source alternative to DataDog, NewRelic, etc. 🔥 🖥.   👉  Open source Application Performance Monitoring (APM) &amp;amp; Observability tool
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/358c847df2fdee44b148a3b8bc276c073ef151d9d435eaa4268ea707549710a2/68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f646376336570696e782f696d6167652f75706c6f61642f76313631383930343435302f7369676e6f7a2d696d616765732f4c6f676f4769746875625f7369676662752e737667"&gt;&lt;img src="https://camo.githubusercontent.com/358c847df2fdee44b148a3b8bc276c073ef151d9d435eaa4268ea707549710a2/68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f646376336570696e782f696d6167652f75706c6f61642f76313631383930343435302f7369676e6f7a2d696d616765732f4c6f676f4769746875625f7369676662752e737667" alt="SigNoz-logo" width="240"&gt;&lt;/a&gt;
  &lt;/p&gt;
&lt;p&gt;Monitor your applications and troubleshoot problems in your deployed applications, an open-source alternative to DataDog, New Relic, etc.&lt;/p&gt;
&lt;p&gt;
    &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3c368e9c8a247917bead405e7ccd016ce90ad8bd3ff8d1803fdea91198b9a4b9/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f7369676e6f7a2f71756572792d736572766963653f6c6162656c3d446f636b657220446f776e6c6f616473"&gt;&lt;img alt="Downloads" src="https://camo.githubusercontent.com/3c368e9c8a247917bead405e7ccd016ce90ad8bd3ff8d1803fdea91198b9a4b9/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f7369676e6f7a2f71756572792d736572766963653f6c6162656c3d446f636b657220446f776e6c6f616473"&gt;&lt;/a&gt;
    &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/5fce1d2365666f4b9f055bf1a914087da9f8e8948dba1a377d3642a2d24ed165/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f7369676e6f7a2f7369676e6f7a"&gt;&lt;img alt="GitHub issues" src="https://camo.githubusercontent.com/5fce1d2365666f4b9f055bf1a914087da9f8e8948dba1a377d3642a2d24ed165/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f7369676e6f7a2f7369676e6f7a"&gt;&lt;/a&gt;
    &lt;a href="https://twitter.com/intent/tweet?text=Monitor%20your%20applications%20and%20troubleshoot%20problems%20with%20SigNoz,%20an%20open-source%20alternative%20to%20DataDog,%20NewRelic.&amp;amp;url=https://signoz.io/&amp;amp;via=SigNozHQ&amp;amp;hashtags=opensource,signoz,observability" rel="nofollow noopener noreferrer"&gt; 
        &lt;img alt="tweet" src="https://camo.githubusercontent.com/4f677ce944dfdeb7a8cd741560d35d006363ef6160adeb63ee3d8c73373b1f51/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f75726c2f687474702f736869656c64732e696f2e7376673f7374796c653d736f6369616c"&gt; &lt;/a&gt; 
&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;
  &lt;a href="https://signoz.io/docs" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;/a&gt; •
  &lt;a href="https://github.com/SigNoz/signoz/blob/develop/README.zh-cn.md" rel="noopener noreferrer"&gt;&lt;b&gt;ReadMe in Chinese&lt;/b&gt;&lt;/a&gt; •
  &lt;a href="https://github.com/SigNoz/signoz/blob/develop/README.de-de.md" rel="noopener noreferrer"&gt;&lt;b&gt;ReadMe in German&lt;/b&gt;&lt;/a&gt; •
  &lt;a href="https://github.com/SigNoz/signoz/blob/develop/README.pt-br.md" rel="noopener noreferrer"&gt;&lt;b&gt;ReadMe in Portuguese&lt;/b&gt;&lt;/a&gt; •
  &lt;a href="https://signoz.io/slack" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;Slack Community&lt;/b&gt;&lt;/a&gt; •
  &lt;a href="https://twitter.com/SigNozHq" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;Twitter&lt;/b&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;SigNoz helps developers monitor applications and troubleshoot problems in their deployed applications. With SigNoz, you can:&lt;/p&gt;

&lt;p&gt;👉 Visualise Metrics, Traces and Logs in a single pane of glass&lt;/p&gt;

&lt;p&gt;👉 You can see metrics like p99 latency, error rates for your services, external API calls and individual end points.&lt;/p&gt;

&lt;p&gt;👉 You can find the root cause of the problem by going to the exact traces which are causing the problem and see detailed flamegraphs of individual request traces.&lt;/p&gt;

&lt;p&gt;👉 Run aggregates on trace data to get business relevant metrics&lt;/p&gt;

&lt;p&gt;👉 Filter and query logs, build dashboards and alerts based on attributes in logs&lt;/p&gt;

&lt;p&gt;👉 Record exceptions automatically in Python, Java, Ruby, and Javascript&lt;/p&gt;

&lt;p&gt;👉 Easy…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/SigNoz/signoz" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>python</category>
      <category>devops</category>
      <category>opensource</category>
      <category>monitoring</category>
    </item>
  </channel>
</rss>
