Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ernitingarg/azure-resource-monitoring-grafana
Tool to generate configuration and dashboards to monitor azure resources
https://github.com/ernitingarg/azure-resource-monitoring-grafana
alert-manager azure azure-app-service azure-frontdoor azure-function azure-redis-cache azure-sql-database azure-vm bash-script blackbox-exporter cloud docker-compose grafana monitoring prometheus slack
Last synced: about 2 hours ago
JSON representation
Tool to generate configuration and dashboards to monitor azure resources
- Host: GitHub
- URL: https://github.com/ernitingarg/azure-resource-monitoring-grafana
- Owner: ernitingarg
- Created: 2023-10-21T13:36:42.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2023-10-22T05:58:12.000Z (about 1 year ago)
- Last Synced: 2024-01-26T10:43:12.561Z (10 months ago)
- Topics: alert-manager, azure, azure-app-service, azure-frontdoor, azure-function, azure-redis-cache, azure-sql-database, azure-vm, bash-script, blackbox-exporter, cloud, docker-compose, grafana, monitoring, prometheus, slack
- Language: Shell
- Homepage:
- Size: 310 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Azure Monitoring Architecture
![design](attachments/design.png)
In above architecture diagram, there are two parts:
- `Azure Cloud` - In Azure cloud, we have few Azure resources for example `Azure Front Door`, `Azure App Service`, `Azure Function`, `Azure SQLDB`, `Azure Redis Cache`, `Azure Virtual machine` etc. All these azure resources have to be monitored and Grafana dashboards should be able to show all configured metrics.
- `Monitoring Host` - This Azure virtual machine has monitoring prometheus server installed which collects metrics from Azure Monitor API and sends alerts to alertmanager based on prometheus rules.## Overview
This tool automatically generates deployment package required for monitoring Azure resources which includes configuration related to prometheus, blackbox, azure and grafana etc.### Azure Cloud applications
Make sure your Azure resources have been created and applications are deployed.
### Services for monitoring host
* prometheus
* metrics server
* 9090/metrics
* blackbox exporter
* network monitoring agent
* it can monitor several protcols like tcp, ping, http, and so on
* 9115/metrics
* Alertmanager
* send notification to somewhere like slack, mail, pagerduty and so on
* 9093/metrics
* Grafana
* viewer server
* it can send query to prometheus, loki, and so on
* 3000/metrics
* Azure
* Get all metrics for specific resource(s) using `Azure Monitor Api`
* 9276/metrics### Generate monitoring host deployment package automatically
To generate the package automatically, please follow below steps:
- Go to [.env](templates/.env) file and fill it with required information related to monitoring host itself and information related to all the application hosts. (The .env file doesn't need to be checked-in)
- Run the bash script `./scripts/generate_skeleton.sh`
- The package will be generated at folder `_package/monitoring`. (Please refer sample package)
- Now, you can copy `monitoring` folder to remote monitoring host machine.
- The next step is to install `monitoring/host/resource-monitoring.service`
```
cp monitoring/host/resource-monitoring.service /etc/systemd/system/resource-monitoring.service
systemctl enable resource-monitoring.service
```
- OR you can run docker compose directly
```
cd monitoring/docker
docker-compose up -d
```
- Once all docker containers are running, please validate below urls:
```bash
#prometheus
curl -k http://localhost:9090/metrics
#alertmanager
curl -k http://localhost:9093/metrics
#blackbox exporter
curl -k http://localhost:9115/metrics
#grafana
curl -k http://localhost:3000/metrics
#azure
curl -k http://localhost:9276/metrics
```### Regarding Azure monitoring
If you have enabled azure monitoring for your deployment, then please follow below steps:
- Create application in `Azure Active Directory` -> `App registration`
- Then, for the newly created app, go to `Certificates & Secret` and add `New client secret`
- Expiration date can be given 2 years (max value)
- Don't forget to **copy the client secret value**
- One its done, we need to add this application to subscription or resource group for the services to be monitored.
- Go to subscription or resource group for which Azure monitoring has to be enabled
- Go to `Access control (IAM)` -> `Role assignments` -> `Add` -> `Add role assignment` -> Select role -> `Monitoring Reader`
- Go to `Next` -> `Select members` -> Add the application which we have just created in above steps.
- The next step is to fill below details in `templates/.env` file:
- `TENANT_ID`: Can be found under `Azure Active Directory` -> `App registration` -> ``
- `SUBSCRIPTION_ID` : Can be found under properties in the Azure portal for your application/service.
- `CLIENT_ID`: Can be found under `Azure Active Directory` -> `App registration` -> ``
- `CLIENT_SECRET`: This is client secret value which we copied in one of the above steps.
- The last step is create `Log Analytics workspaces` under the subscription. (To avoid alert warning while opening `Azure` dashboard in Grafana)For more details, please refer below links:
- Regarding `azure.yml`, you can find more details [here](https://github.com/RobustPerception/azure_metrics_exporter#azure-metrics-exporter).
- Regarding `datasource.yml`, you can find more details in grafana documentation [here](https://grafana.com/docs/grafana/latest/administration/provisioning/).### View grafana dashboards
- Go to `http://:3000` (eg: http://localhost:3000)
- Username is `admin` and password is `password`
- In left panel, go to `Dashboards` -> `Manage`
- It will show you all the available dashboards
- You can mark the dashboard as favorite### View logs in loki
- Go to `http://:3000` (eg: http://localhost:3000)
- In left panel, go to `Explore` icon
- Select `Loki` from dropdown list
- Click on `Log browser`
- Select the labels (you can filter based on label selection)
- Run query**Grana Dashboards**
![Grafana Dashboards](attachments/grafana-dashboards.png)