Moneytolia projesi için demo Şunlar kullanılarak yapıldı: Python, Django, Docker, PostgreSQL and Grafana, Prometheus
- Build docker image
$ make build
- Start url shortener service
$ make start
- Stop url shortener service
$ make stop
- Run tests for this project
$ make test
- make command usage details
$ make help
- Build docker image
$ docker compose build
- Start url shortener service
$ docker compose up --build -d
- Stop url shortener service
$ docker compose down
- Run tests for this project
$ docker compose exec flask-app python test.py
- Start url shortener service
öncelikle
python3.8 ile bir venv kurulur ve aktive edilir. sonra aşağıdaki kod çalıştırılır
pip install -r requirements.txt
sonra postgresqli pcmize kurup
postgresql://postgres:Moneytolia123@localhost:5432/url_shortener
daha sonra url_shortener.py dosyasının 17. satırısını commen in yapıp 19. satırını comment out yapmamız lazım.
bu config ile ayağa kaldırmamız gerek.
dbname:url_shortener
username:postgres
dbpassword:Moneytolia123
sonra aşağıdaki kod çalıştırılır
$ python url_shortener.py
- Run tests for this project
$ python test.py
Proje bu url'de dökümante edildi <hostname>/swagger/
,
exp: http://localhost:5000/swagger/
aşağıda swagger arayüzü görülebilmektedir.
servisleri ayağa kaldırdıktan sonra, uygulamamıza gelen metrikleri görebilmemiz için aşağıdaki adımları uygulayıp grafana ve prometheus'u bağlamamız gerek admin admin kullanıcı adı ve şifresiyle giriş yap password change etmeden skip et burda ekranda data source ekleme kısmına geliriz prometheus'u seçeriz docker ile ayağa kalkan prometheus servisimizin url'ini gireriz save and test butonuna tıklarız ve build a dashboard deriz add visualization butonuna tıklarız prometheus'u seçeriz sol alttan metricleri seçebiliriz bu şekilde görselleştirmesini sağlarız
prometheus arayüzü aşağıdaki gibidir.
istek atabileceğiniz python kodu
import requests
import json
url = "http://localhost:5000/shorten"
payload = json.dumps({
"original_url": "https://flask-restx.readthedocs.io/en/latest/quickstart.html"
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
istek atabileceğiniz curl
curl --location 'http://localhost:5000/shorten' \
--header 'Content-Type: application/json' \
--data '
{
"original_url": "https://flask-restx.readthedocs.io/en/latest/quickstart.html"
}'