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
61 changes: 61 additions & 0 deletions monitoring/grafana-values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
adminUser: admin
adminPassword: admin1205

persistence:
enabled: true
size: 10Gi

service:
type: NodePort
nodePort: 30030

resources:
limits:
cpu: 200m
memory: 256Mi
requests:
cpu: 100m
memory: 128Mi

datasources:
datasources.yaml:
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
url: http://prometheus-server.monitoring.svc.cluster.local
access: proxy
isDefault: true
editable: true

dashboardProviders:
dashboardproviders.yaml:
apiVersion: 1
providers:
- name: 'default'
orgId: 1
folder: ''
type: file
disableDeletion: false
editable: true
options:
path: /var/lib/grafana/dashboards/default

dashboards:
default:
kubernetes-cluster:
gnetId: 7249
revision: 1
datasource: Prometheus
kubernetes-pods:
gnetId: 6417
revision: 1
datasource: Prometheus
node-exporter:
gnetId: 1860
revision: 27
datasource: Prometheus

plugins:
- grafana-piechart-panel
- grafana-clock-panel
69 changes: 69 additions & 0 deletions monitoring/prometheus-values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
server:
persistentVolume:
enabled: true
size: 8Gi

resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 250m
memory: 256Mi

retention: "15d"

service:
type: NodePort
nodePort: 30090

global:
scrape_interval: 15s
scrape_timeout: 10s
evaluation_interval: 15s

alertmanager:
enabled: true
persistentVolume:
enabled: true
size: 2Gi

service:
type: NodePort
nodePort: 30093

pushgateway:
enabled: false

nodeExporter:
enabled: true

kubeStateMetrics:
enabled: true

serviceMonitors:
enabled: true

serverFiles:
prometheus.yml:
scrape_configs:
- job_name: 'quote-app'
kubernetes_sd_configs:
- role: endpoints
namespaces:
names:
- quote-app
- quote-app-terraform
relabel_configs:
- source_labels: [__meta_kubernetes_service_label_app]
action: keep
regex: quote-app
- source_labels: [__meta_kubernetes_endpoint_port_name]
action: keep
regex: http
- source_labels: [__meta_kubernetes_namespace]
target_label: namespace
- source_labels: [__meta_kubernetes_pod_name]
target_label: pod
- source_labels: [__meta_kubernetes_service_name]
target_label: service
120 changes: 120 additions & 0 deletions monitoring/quote-app-dashboard.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
{
"dashboard": {
"title": "Quote App Metrics",
"tags": ["quote-app", "nodejs"],
"timezone": "browser",
"panels": [
{
"id": 1,
"title": "Total Quotes Served",
"type": "stat",
"targets": [
{
"expr": "sum(quotes_served_total)",
"refId": "A"
}
],
"gridPos": {
"h": 8,
"w": 6,
"x": 0,
"y": 0
}
},
{
"id": 2,
"title": "HTTP Request Rate",
"type": "graph",
"targets": [
{
"expr": "rate(http_requests_total[5m])",
"legendFormat": "{{method}} {{route}}",
"refId": "A"
}
],
"gridPos": {
"h": 8,
"w": 18,
"x": 6,
"y": 0
}
},
{
"id": 3,
"title": "Request Duration (p95)",
"type": "graph",
"targets": [
{
"expr": "histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m]))",
"legendFormat": "{{route}}",
"refId": "A"
}
],
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 8
}
},
{
"id": 4,
"title": "Active Pods",
"type": "stat",
"targets": [
{
"expr": "count(kube_pod_info{namespace=\"quote-app\"})",
"refId": "A"
}
],
"gridPos": {
"h": 8,
"w": 6,
"x": 12,
"y": 8
}
},
{
"id": 5,
"title": "CPU Usage",
"type": "graph",
"targets": [
{
"expr": "rate(container_cpu_usage_seconds_total{namespace=\"quote-app\"}[5m])",
"legendFormat": "{{pod}}",
"refId": "A"
}
],
"gridPos": {
"h": 8,
"w": 12,
"x": 0,
"y": 16
}
},
{
"id": 6,
"title": "Memory Usage",
"type": "graph",
"targets": [
{
"expr": "container_memory_usage_bytes{namespace=\"quote-app\"}",
"legendFormat": "{{pod}}",
"refId": "A"
}
],
"gridPos": {
"h": 8,
"w": 12,
"x": 12,
"y": 16
}
}
],
"time": {
"from": "now-1h",
"to": "now"
},
"refresh": "10s"
}
}
16 changes: 16 additions & 0 deletions monitoring/quote-app-servicemonitor.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: quote-app-monitor
namespace: quote-app
labels:
app: quote-app
release: prometheus
spec:
selector:
matchLabels:
app: quote-app
endpoints:
- port: http
path: /metrics
interval: 30s
46 changes: 42 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 10 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,23 @@
"test": "jest --coverage",
"test:watch": "jest --watch"
},
"keywords": ["quotes", "api", "devops", "cicd"],
"keywords": [
"quotes",
"api",
"devops",
"cicd"
],
"author": "Aditya Singh",
"license": "MIT",
"dependencies": {
"express": "^4.18.2",
"cors": "^2.8.5",
"dotenv": "^16.3.1"
"dotenv": "^16.3.1",
"express": "^4.18.2",
"prom-client": "^15.1.3"
},
"devDependencies": {
"nodemon": "^3.0.1",
"jest": "^29.7.0",
"nodemon": "^3.0.1",
"supertest": "^6.3.3"
}
}
Loading
Loading