Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 0 additions & 71 deletions .github/workflows/python-app.yml

This file was deleted.

15 changes: 15 additions & 0 deletions monitoring/METRICS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
## Prometheus website working

![](static/prometheus_site.png)

## Grafana Metrics Example

![](static/grafana_metrics.png)

## Containers' logs Resources Configuration

All Containers have been set the following resource parameters:

- Memory Limits: 512MB
- Memory Reservation: 256MB
- Log Rotation: 10MB max size, 3 files
164 changes: 110 additions & 54 deletions monitoring/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,77 +1,133 @@
version: "3.3"

networks:
loki:
monitoring:

services:
app:
build:
context: ../app_python
dockerfile: Dockerfile
container_name: app
restart: unless-stopped
networks:
- monitoring
ports:
- "8000:5005"
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
deploy:
resources:
limits:
memory: 256M
reservations:
memory: 128M

loki:
image: grafana/loki:latest
container_name: loki
restart: unless-stopped
networks:
- monitoring
ports:
- "3100:3100"
volumes:
- ./loki:/etc/loki
command: -config.file=/etc/loki/local-config.yaml
user: "0"
healthcheck:
test: ["CMD-SHELL", "wget -q --tries=1 -O- http://localhost:3100/ready || exit 1"]
interval: 10s
timeout: 3s
retries: 3
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
deploy:
resources:
limits:
memory: 256M
reservations:
memory: 128M

prometheus:
image: prom/prometheus:v2.42.0
container_name: prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
networks:
- loki
- monitoring
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
deploy:
resources:
limits:
memory: 256M
reservations:
memory: 128M

promtail:
image: grafana/promtail:latest
container_name: promtail
volumes:
- /var/log:/var/log
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/containers:/var/lib/docker/containers
- ./promtail.yml:/etc/promtail/config.yml
- ./promtail-config.yaml:/etc/promtail/config.yml
command: -config.file=/etc/promtail/config.yml
networks:
- loki
- monitoring
depends_on:
loki:
condition: service_healthy
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
deploy:
resources:
limits:
memory: 256M
reservations:
memory: 128M

grafana:
environment:
- GF_PATHS_PROVISIONING=/etc/grafana/provisioning
- GF_AUTH_ANONYMOUS_ENABLED=true
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
- GF_FEATURE_TOGGLES_ENABLE=alertingSimplifiedRouting,alertingQueryAndExpressionsStepMode
entrypoint:
- sh
- -euc
- |
mkdir -p /etc/grafana/provisioning/datasources
cat <<EOF > /etc/grafana/provisioning/datasources/ds.yaml
apiVersion: 1
datasources:
- name: Loki
type: loki
access: proxy
orgId: 1
url: http://loki:3100
basicAuth: false
isDefault: true
version: 1
editable: false
EOF
/run.sh
image: grafana/grafana:latest
ports:
- "3000:3000"
container_name: grafana
restart: unless-stopped
networks:
- loki
moscow_time:
image: tjann7/moscow_time:latest
- monitoring
ports:
- "5005:5005"
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
volumes:
- grafana-storage:/var/lib/grafana
- ./grafana/provisioning/:/etc/grafana/provisioning/
depends_on:
loki:
condition: service_healthy
logging:
driver: "json-file"
go_random:
image: tjann7/go_random:latest
ports:
- "5500:5500"
prometheus:
image: prom/prometheus:latest
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
command:
- "--config.file=/etc/prometheus/prometheus.yml"
networks:
- loki
options:
max-size: "10m"
max-file: "3"
deploy:
resources:
limits:
memory: 256M
reservations:
memory: 128M

volumes:
grafana-storage: {}
loki-data: {}
loki-wal: {}
59 changes: 59 additions & 0 deletions monitoring/loki-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
auth_enabled: false

server:
http_listen_port: 3100

common:
path_prefix: /loki
storage:
filesystem:
chunks_directory: /loki/chunks
rules_directory: /loki/rules
replication_factor: 1
ring:
kvstore:
store: inmemory

schema_config:
configs:
- from: 2020-10-24
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h

ruler:
alertmanager_url: http://localhost:9093

limits_config:
retention_period: 744h
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 744h
ingestion_rate_mb: 64
ingestion_burst_size_mb: 128
per_stream_rate_limit: 32MB
per_stream_rate_limit_burst: 64MB

chunk_store_config:
max_look_back_period: 744h

table_manager:
retention_deletes_enabled: true
retention_period: 744h

ingester:
lifecycler:
address: 127.0.0.1
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 1h
chunk_retain_period: 30s
wal:
enabled: true
dir: /wal
24 changes: 6 additions & 18 deletions monitoring/prometheus.yml
Original file line number Diff line number Diff line change
@@ -1,27 +1,15 @@
---
global:
scrape_interval: 15s

scrape_configs:
- job_name: "prometheus"
- job_name: 'loki'
static_configs:
- targets: ["prometheus:9090"]
- targets: ['loki:3100']

- job_name: "moscow_time"
metrics_path: "/metrics"
- job_name: 'grafana'
static_configs:
- targets: ["moscow_time:5005"]
- targets: ['grafana:3000']

- job_name: "go_random"
metrics_path: "/metrics"
- job_name: 'prometheus'
static_configs:
- targets: ["go_random:5500"]

- job_name: "loki"
static_configs:
- targets: ["loki:3100"]

- job_name: "grafana"
metrics_path: "/metrics"
static_configs:
- targets: ["grafana:3000"]
- targets: ['prometheus:9090']
19 changes: 19 additions & 0 deletions monitoring/promtail-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
server:
http_listen_port: 9080
grpc_listen_port: 0

positions:
filename: /tmp/positions.yaml

clients:
- url: http://loki:3100/loki/api/v1/push

scrape_configs:
- job_name: docker
docker_sd_configs:
- host: unix:///var/run/docker.sock
refresh_interval: 5s
relabel_configs:
- source_labels: ['__meta_docker_container_name']
regex: '/(.*)'
target_label: 'container'
Loading