https://github.com/interittus13/azurecosttracker
A Python tool for tracking Azure subscription costs, generating reports, and sending automated email notifications.
https://github.com/interittus13/azurecosttracker
azure azure-cost-management finops forecasting python
Last synced: 6 months ago
JSON representation
A Python tool for tracking Azure subscription costs, generating reports, and sending automated email notifications.
- Host: GitHub
- URL: https://github.com/interittus13/azurecosttracker
- Owner: Interittus13
- License: mit
- Created: 2025-02-11T06:31:02.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-03-04T09:31:17.000Z (7 months ago)
- Last Synced: 2025-04-05T18:13:18.069Z (6 months ago)
- Topics: azure, azure-cost-management, finops, forecasting, python
- Language: Python
- Homepage:
- Size: 1.59 MB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# AzureCostTracker - ACT
**Azure Cost Tracker** is a Python-based tool that tracks **Azure subscription costs**, generates **dynamic HTML reports**, and sends notifications via **email** or **webhooks (Microsoft Teams, Slack, etc.)**.
### 📊 Feature Preview:
---
## 🌟 Features
✅ Fetches **daily, monthly and yearly forecast** cost reports for Azure subscriptions.
✅ **Dynamically groups data** by cost categories for better readability.
✅ Sends notifications via **email and webhook** (Microsoft Teams, Slack, etc.).
✅ Allows **previewing email reports**.
✅ Modern, Clean HTML report.
✅ Follows **best-practice Python project structure**.---
## 📂 Project Structure
```
azure-cost-tracker/
│── src/
│ ├── main.py # Main script
│ ├── config.py # Configurations (subscriptions, billing periods)
│ ├── services/
│ │ ├── azure_auth.py # Fetch and Manages Access Token
│ │ ├── azure_billing.py # Fetch Azure subscription's billing details
│ │ ├── azure_cost.py # Fetch Azure cost data
│ │ ├── email_service.py # Sends email notification
│ │ ├── html_renderer.py # Render HTML reports
│ │ ├── webhook_service.py # Sends webhook notifications
│ ├── utils/
│ │ ├── logger.py # Logging setup
│ │ ├── utils.py # Helper functions
│── templates/
│ ├── email_template.html # Email template
│── static/
│ ├── images/
│ │ ├── logo.svg # Default logo (replaceable)
│ │ ├── report_screenshot.png # HTML report preview
│── .env # Environment variables
│── README.md # Project documentation
│── requirements.txt # Dependencies
│── setup.py # Package setup
```---
## 🔧 Setup Instructions
### 1️⃣ Clone the Repository
```bash
git clone https://github.com/interittus13/AzureCostTracker
cd azurecosttracker
```### 2️⃣ Install Dependencies
```bash
pip install -r requirements.txt
```### 3️⃣ Configure `.env` File
Create a `.env` file with your settings:
```
TENANT_ID=your-azure-tenant-id
CLIENT_ID=your-azure-client-id
CLIENT_SECRET=your-azure-client-secret
SUBSCRIPTION_IDS=subscription-id1,subscription-id2EMAIL_FROM=your-email@example.com
EMAIL_TO=test@example.com,test2@yopmail.com
SMTP_SERVER=smtp.office365.com
SMTP_PORT=587
SMTP_PASS=your-passwordWEBHOOK_URL=https://your-teams-webhook-url
NOTIFY_METHOD=email # Options: email, webhook, both
```---
## 📊 Running the Script
### Run Manually
```bash
python -m src.main
```### Using CLI Command (if installed via setup.py)
```bash
azure-cost-tracker
```---
## 📤 Notification Methods
### 1️⃣ Email Notification
- Sends a **formatted HTML report** via Outlook.
- Supports **multiple recipients** (comma-separated in `.env`).
- Email preview before sending.### 2️⃣ Webhook Notification (e.g., Microsoft Teams, Slack)
- Sends a **summary message** via webhook.
- Supports **Teams, Slack, and custom webhooks**.
- Uses `WEBHOOK_URL` from `.env`.### 3️⃣ Both (Email + Webhook)
- Sends both **email and webhook** notifications when `NOTIFY_METHOD=both`.---
## 📡 How to Set Up a Microsoft Teams Webhook
1️⃣ Go to **Microsoft Teams** → **Your Channel** → Click `...` → `Connectors`.
2️⃣ Search for **"Incoming Webhook"** → Click `Add`.
3️⃣ Name the webhook (e.g., `Azure Cost Alerts`).
4️⃣ Copy the generated **Webhook URL**.
5️⃣ Add it to `.env`:
```
WEBHOOK_URL=https://your-teams-webhook-url
```---
## 📜 License
This project is **open-source** under the **MIT License**.