116 lines
3.7 KiB
Bash
Executable File
116 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${BLUE}=================================================="
|
|
echo "Observability Stack Status Check"
|
|
echo "==================================================${NC}"
|
|
echo ""
|
|
|
|
# Check namespace
|
|
echo -e "${YELLOW}Checking namespace...${NC}"
|
|
if kubectl get namespace observability &> /dev/null; then
|
|
echo -e "${GREEN}✓ Namespace 'observability' exists${NC}"
|
|
else
|
|
echo -e "${RED}✗ Namespace 'observability' not found${NC}"
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
# Check PVs
|
|
echo -e "${YELLOW}Checking PersistentVolumes...${NC}"
|
|
pvs=$(kubectl get pv 2>/dev/null | grep -E "(prometheus|loki|tempo|grafana)-data-pv" | wc -l)
|
|
if [ "$pvs" -eq 4 ]; then
|
|
echo -e "${GREEN}✓ All 4 PersistentVolumes found${NC}"
|
|
kubectl get pv | grep -E "(prometheus|loki|tempo|grafana)-data-pv"
|
|
else
|
|
echo -e "${RED}✗ Expected 4 PVs, found $pvs${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# Check PVCs
|
|
echo -e "${YELLOW}Checking PersistentVolumeClaims...${NC}"
|
|
pvcs=$(kubectl get pvc -n observability 2>/dev/null | grep -v NAME | wc -l)
|
|
if [ "$pvcs" -eq 4 ]; then
|
|
echo -e "${GREEN}✓ All 4 PersistentVolumeClaims found${NC}"
|
|
kubectl get pvc -n observability
|
|
else
|
|
echo -e "${RED}✗ Expected 4 PVCs, found $pvcs${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# Check Pods
|
|
echo -e "${YELLOW}Checking Pods...${NC}"
|
|
kubectl get pods -n observability -o wide
|
|
echo ""
|
|
|
|
# Count running pods
|
|
total_pods=$(kubectl get pods -n observability --no-headers 2>/dev/null | wc -l)
|
|
running_pods=$(kubectl get pods -n observability --field-selector=status.phase=Running --no-headers 2>/dev/null | wc -l)
|
|
|
|
if [ "$total_pods" -eq 0 ]; then
|
|
echo -e "${RED}✗ No pods found in observability namespace${NC}"
|
|
else
|
|
if [ "$running_pods" -eq "$total_pods" ]; then
|
|
echo -e "${GREEN}✓ All $total_pods pods are running${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠ $running_pods/$total_pods pods are running${NC}"
|
|
fi
|
|
fi
|
|
echo ""
|
|
|
|
# Check Services
|
|
echo -e "${YELLOW}Checking Services...${NC}"
|
|
kubectl get svc -n observability
|
|
echo ""
|
|
|
|
# Check Ingress
|
|
echo -e "${YELLOW}Checking Ingress...${NC}"
|
|
if kubectl get ingress -n observability grafana-ingress &> /dev/null; then
|
|
echo -e "${GREEN}✓ Grafana Ingress found${NC}"
|
|
kubectl get ingress -n observability grafana-ingress
|
|
else
|
|
echo -e "${RED}✗ Grafana Ingress not found${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# Check ConfigMaps
|
|
echo -e "${YELLOW}Checking ConfigMaps...${NC}"
|
|
configmaps=$(kubectl get configmap -n observability 2>/dev/null | grep -v NAME | wc -l)
|
|
echo "Found $configmaps ConfigMaps:"
|
|
kubectl get configmap -n observability --no-headers | awk '{print " - " $1}'
|
|
echo ""
|
|
|
|
# Test endpoints
|
|
echo -e "${YELLOW}Testing service endpoints...${NC}"
|
|
|
|
check_endpoint() {
|
|
local name=$1
|
|
local url=$2
|
|
|
|
if kubectl run -it --rm test-$RANDOM --image=curlimages/curl --restart=Never -- \
|
|
curl -s -o /dev/null -w "%{http_code}" --max-time 5 $url 2>/dev/null | grep -q "200\|302\|401"; then
|
|
echo -e "${GREEN}✓ $name is responding${NC}"
|
|
else
|
|
echo -e "${RED}✗ $name is not responding${NC}"
|
|
fi
|
|
}
|
|
|
|
check_endpoint "Prometheus" "http://prometheus.observability.svc.cluster.local:9090/-/healthy"
|
|
check_endpoint "Loki" "http://loki.observability.svc.cluster.local:3100/ready"
|
|
check_endpoint "Tempo" "http://tempo.observability.svc.cluster.local:3200/ready"
|
|
check_endpoint "Grafana" "http://grafana.observability.svc.cluster.local:3000/api/health"
|
|
|
|
echo ""
|
|
echo -e "${BLUE}=================================================="
|
|
echo "Status Check Complete"
|
|
echo "==================================================${NC}"
|
|
echo ""
|
|
echo "Access Grafana at: https://grafana.betelgeusebytes.io"
|
|
echo "Default credentials: admin / admin"
|
|
echo ""
|