-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docs: App metrics doc updated #43
Open
Ayaan49
wants to merge
12
commits into
devtron-labs:main
Choose a base branch
from
Ayaan49:app-metrics
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
12 commits
Select commit
Hold shift + click to select a range
1932649
App metrics doc updated
890ce7f
Update app-metrics.md
Ayaan49 1d950f3
docs: note enableMetrics is only available in Devtron charts
Ayaan49 9333b23
Merge branch 'devtron-labs:main' into app-metrics
Ayaan49 e2f7343
docs: Update instructions to enable upgradeJob for applying CRDs befo…
Ayaan49 f635fe8
docs: Update the doc as suggested
Ayaan49 3b20ee6
docs: update the required changes
Ayaan49 b670d3c
Merge branch 'devtron-labs:main' into app-metrics
Ayaan49 571b692
docs: update application metrics
Ayaan49 b7a1292
docs: fixes parameter typo
Ayaan49 481ad0a
docs: fixes the Note
Ayaan49 abdb068
docs: Improves Note
Ayaan49 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,67 +1,92 @@ | ||
# Application Metrics | ||
|
||
Application metrics can be enabled to see your application's metrics. | ||
Application Metrics are the indicators used to evaluate the performance and efficiency of your application. It can be enabled in the Devtron platform to see your application's metrics. | ||
|
||
## Standard Metrics | ||
## Types of Metrics available in the Devtron platform: | ||
|
||
Devtron provides certain metrics (CPU and Memory utilization) for each application by default i.e. you do not need to enable “Application metrics”. However, prometheus needs to be present in the cluster and the endpoint of the same should be updated in Global Configurations --> Clusters & Environments section. | ||
1. **CPU usage:** Overall CPU utilization per pod and aggregated. | ||
2. **Memory Usage:** Overall memory utilization per pod and aggregated. | ||
3. **Throughput:** Number of requests processed per minute. | ||
4. **Latency:** Delay between request and response, measured in percentiles. | ||
|
||
## Advanced Metrics | ||
## Setup Application Metrics | ||
|
||
There are certain advanced metrics (like Latency, Throughput, 4xx, 5xx, 2xx) which are only available when "Application metrics" is enabled from the Deployment Template. When you enable these advanced metrics, devtron attaches a envoy sidecar container to your main container which runs as a transparent proxy and passes each request through it to measure the advanced metrics. | ||
{% hint style="warning" %} | ||
### Note | ||
Application metrics will only take effect if your application is deployed using Devtron Deployment Charts and not [Custom Deployment Charts](../global-configurations/deployment-charts.md) | ||
{% endhint %} | ||
|
||
**Note: Since, all the requests are passed through envoy, any misconfiguration in envoy configs can bring your application down, so please test the configurations in a non-production environment extensively.** | ||
1. **Install Grafana Dashboard:** | ||
|
||
```yaml | ||
envoyproxy: | ||
image: envoyproxy/envoy:v1.14.1 | ||
configMapName: "" | ||
resources: | ||
limits: | ||
cpu: "50m" | ||
memory: "50Mi" | ||
requests: | ||
cpu: "50m" | ||
memory: "50Mi" | ||
``` | ||
To use the Grafana dashboard, you need to first install the integration from the [Devtron Stack Manager](../integrations/README.md). | ||
|
||
[Read Grafana Dashboard](../integrations/grafana.md) | ||
|
||
 | ||
2. **Install Prometheus:** | ||
|
||
Go to the Chart Store and search for `prometheus`. Use the Prometheus community's `kube-prometheus-stack` chart to deploy Prometheus. | ||
|
||
 | ||
|
||
## CPU Usage Metrics | ||
After selecting the chart, configure these values as needed before deployment. | ||
|
||
CPU usage is a utilization metric that shows the overall utilization of cpu by an application. It is available as both, aggregated or per pod. | ||
``` | ||
kube-state-metrics: | ||
metricLabelsAllowlist: | ||
- pods=[*] | ||
``` | ||
|
||
## Memory Usage Metrics | ||
Search for the above parameters, and update them as shown (or customize as needed). | ||
|
||
Memory usage is a utilization metric that shows the overall utilization of memory by an application. It is available as both, aggregated or per pod. | ||
 | ||
|
||
3. **Enable `upgradeJob` parameter to install CRDs:** | ||
|
||
## Throughput Metrics | ||
Since Helm does not automatically apply CRDs, you need to enable the `upgradeJob` parameter in the Helm chart to ensure CRDs are applied before deploying Prometheus. | ||
|
||
This application metrics indicates the number of request processed by an application per minute. | ||
- In the Prometheus Helm chart settings, locate the `upgradeJob` parameter and set it to `true` if it is `false`. | ||
|
||
 | ||
|
||
After enabling the parameter, click `Deploy Chart`. | ||
|
||
## Status Code Metrics | ||
4. **Setup Prometheus Endpoint:** | ||
|
||
Once Prometheus is installed, go to its **App Details** and navigate to **Networking → Service** in the K8s resources. Expand the Prometheus server service to see the endpoints. | ||
|
||
This metrics indicates the application’s response to client’s request with a specific status code i.e 1xx(Communicate transfer protocol-level information), 2xx(Client’s request was accepted successfully), 3xx(Client must take some additional action to complete their request), 4xx(Client side error) or 5xx(Server side error). | ||
Copy the URL of the `kube-prometheus` service as shown in the image below. | ||
|
||
## Latency Metrics | ||
 | ||
|
||
Latency metrics shows the latency for an application. Latency measures the delay between an action and a response. | ||
To set Prometheus as a data source in Grafana, navigate to **Global Configurations → Clusters & Environments**, select your cluster, and edit its settings. | ||
|
||
**99.9th percentile latency**: The maximum latency, in seconds, for the fastest 99.9% of requests. | ||
 | ||
|
||
**99th percentile latency**: The maximum latency, in seconds, for the fastest 99% of requests. | ||
Now to set up the Prometheus endpoint: | ||
- Enable the `See metrics for applications in this cluster` option, as shown in the image below. | ||
- Paste the copied URL into the Prometheus endpoint field, ensuring it includes `http://` | ||
- Click Update Cluster to save the changes. | ||
|
||
**95th percentile latency**: The maximum latency, in seconds, for the fastest 95% of requests. | ||
 | ||
|
||
**Note:** We also support custom percentile input inside the dropdown .A latency measurement based on a single request is not meaningful. | ||
After adding the endpoint, application metrics will be visible in the Devtron dashboard for all the Devtron apps in the cluster (it may take a few minutes). This includes CPU usage and Memory usage. | ||
|
||
 | ||
|
||
## Checklist for enabling Advanced Application metrics in Production | ||
5. **Enable Application Metrics:** | ||
|
||
* [ ] Have adjusted resources to the envoy sidecar container, by default Devtron allocates 50m CPU and 50Mi Memory as both limits as well as requests. This should be enough for handling traffic upto 3000rpm per pod, if each replica of your pod is expected to handle more than 3000rpm, please adjust the resources accordingly. | ||
* [ ] If you are not leveraging http2 / streaming protocols, make sure to set supportStreaming and useHTTP2 in ContainerPort as false. | ||
* [ ] Use envoy image as "quay.io/devtron/envoy:v1.14.1" instead of default "envoyproxy/envoy:v1.14.1" if your cluster occasionally hit dockerhub pull rate limit or if you are running too many replicas/micro-services in a cluster. | ||
* [ ] Enabled and tested extensively in non-production environment including load testing till highest rpm capacity per pod. | ||
To enable Throughput and Latency metrics in Devtron, follow these steps: | ||
- Open your Devtron app. | ||
- Go to **Configurations → Base Configurations → Deployment Template**. | ||
- Enable **Application Metrics** in the Deployment Template as shown below and save the changes. | ||
|
||
 | ||
|
||
Now, you can track all your application metrics by navigating to Applications and going to the App Details page of your Devtron App as shown below. | ||
|
||
 | ||
|
||
{% hint style="warning" %} | ||
### Note | ||
You won’t be able to enable the Application Metrics if your environment is [Overridden](../creating-application/environment-overrides.md). | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🥲 You can u just need to do it at env override and not base configuration |
||
{% endhint %} |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the env is overridden this won't work!!