forked from phoenix/litellm-mirror
build(docker-compose.yml): add prometheus scraper to docker compose
persists prometheus data across restarts
This commit is contained in:
parent
ac7f6598f3
commit
d9539e518e
3 changed files with 72 additions and 2 deletions
|
@ -9,8 +9,6 @@ services:
|
||||||
#########################################
|
#########################################
|
||||||
## Uncomment these lines to start proxy with a config.yaml file ##
|
## Uncomment these lines to start proxy with a config.yaml file ##
|
||||||
# volumes:
|
# volumes:
|
||||||
# - ./proxy_server_config.yaml:/app/config.yaml
|
|
||||||
# command: [ "--config", "./config.yaml", "--port", "4000"]
|
|
||||||
###############################################
|
###############################################
|
||||||
ports:
|
ports:
|
||||||
- "4000:4000" # Map the container port to the host, change the host port if necessary
|
- "4000:4000" # Map the container port to the host, change the host port if necessary
|
||||||
|
@ -34,4 +32,22 @@ services:
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 10
|
retries: 10
|
||||||
|
|
||||||
|
prometheus:
|
||||||
|
image: prom/prometheus
|
||||||
|
volumes:
|
||||||
|
- prometheus_data:/prometheus
|
||||||
|
- ./prometheus.yml:/etc/prometheus/prometheus.yml
|
||||||
|
ports:
|
||||||
|
- "9090:9090"
|
||||||
|
command:
|
||||||
|
- '--config.file=/etc/prometheus/prometheus.yml'
|
||||||
|
- '--storage.tsdb.path=/prometheus'
|
||||||
|
- '--storage.tsdb.retention.time=15d'
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
prometheus_data:
|
||||||
|
driver: local
|
||||||
|
|
||||||
|
|
||||||
# ...rest of your docker-compose config if any
|
# ...rest of your docker-compose config if any
|
||||||
|
|
|
@ -2560,6 +2560,53 @@ def test_completion_anyscale_with_functions():
|
||||||
# test_completion_anyscale_with_functions()
|
# test_completion_anyscale_with_functions()
|
||||||
|
|
||||||
|
|
||||||
|
def test_completion_azure_extra_headers():
|
||||||
|
# this tests if we can pass api_key to completion, when it's not in the env.
|
||||||
|
# DO NOT REMOVE THIS TEST. No MATTER WHAT Happens!
|
||||||
|
# If you want to remove it, speak to Ishaan!
|
||||||
|
# Ishaan will be very disappointed if this test is removed -> this is a standard way to pass api_key + the router + proxy use this
|
||||||
|
from httpx import Client
|
||||||
|
from openai import AzureOpenAI
|
||||||
|
|
||||||
|
from litellm.llms.custom_httpx.httpx_handler import HTTPHandler
|
||||||
|
|
||||||
|
http_client = Client()
|
||||||
|
|
||||||
|
with patch.object(http_client, "send", new=MagicMock()) as mock_client:
|
||||||
|
client = AzureOpenAI(
|
||||||
|
azure_endpoint=os.getenv("AZURE_API_BASE"),
|
||||||
|
api_version=litellm.AZURE_DEFAULT_API_VERSION,
|
||||||
|
api_key=os.getenv("AZURE_API_KEY"),
|
||||||
|
http_client=http_client,
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
response = completion(
|
||||||
|
model="azure/chatgpt-v-2",
|
||||||
|
messages=messages,
|
||||||
|
client=client,
|
||||||
|
extra_headers={
|
||||||
|
"Authorization": "my-bad-key",
|
||||||
|
"Ocp-Apim-Subscription-Key": "hello-world-testing",
|
||||||
|
"api-key": "my-bad-key",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
print(response)
|
||||||
|
pytest.fail("Expected this to fail")
|
||||||
|
except Exception as e:
|
||||||
|
pass
|
||||||
|
|
||||||
|
mock_client.assert_called()
|
||||||
|
|
||||||
|
print(f"mock_client.call_args: {mock_client.call_args}")
|
||||||
|
request = mock_client.call_args[0][0]
|
||||||
|
print(request.method) # This will print 'POST'
|
||||||
|
print(request.url) # This will print the full URL
|
||||||
|
print(request.headers) # This will print the full URL
|
||||||
|
auth_header = request.headers.get("Authorization")
|
||||||
|
print(auth_header)
|
||||||
|
assert auth_header == "my-bad-key"
|
||||||
|
|
||||||
|
|
||||||
def test_completion_azure_key_completion_arg():
|
def test_completion_azure_key_completion_arg():
|
||||||
# this tests if we can pass api_key to completion, when it's not in the env.
|
# this tests if we can pass api_key to completion, when it's not in the env.
|
||||||
# DO NOT REMOVE THIS TEST. No MATTER WHAT Happens!
|
# DO NOT REMOVE THIS TEST. No MATTER WHAT Happens!
|
||||||
|
|
7
prometheus.yml
Normal file
7
prometheus.yml
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
global:
|
||||||
|
scrape_interval: 15s
|
||||||
|
|
||||||
|
scrape_configs:
|
||||||
|
- job_name: 'litellm'
|
||||||
|
static_configs:
|
||||||
|
- targets: ['litellm:4000'] # Assuming Litellm exposes metrics at port 4000
|
Loading…
Add table
Add a link
Reference in a new issue