#!/bin/bash # Setup Kibana for simple log viewing # This creates index patterns and saved searches for easy log access source "${AGENT_PATH}/common.sh" _check_required_env_vars "CONTAINER_NAME" "ELASTIC_PASSWORD" "KIBANA_PORT" KIBANA_URL="http://localhost:${KIBANA_PORT}" AUTH="elastic:${ELASTIC_PASSWORD}" echo "Setting up Kibana for simple log viewing..." echo "" # Wait for Kibana to be ready echo -n "Waiting for Kibana to be ready..." MAX_WAIT=60 WAITED=0 while [ $WAITED -lt $MAX_WAIT ]; do if docker exec ${CONTAINER_NAME}_kibana curl -s -u "$AUTH" "${KIBANA_URL}/api/status" 2>/dev/null | grep -q '"level":"available"'; then echo " Ready!" break fi echo -n "." sleep 2 WAITED=$((WAITED + 2)) done if [ $WAITED -ge $MAX_WAIT ]; then echo "" echo "ERROR: Kibana is not ready after ${MAX_WAIT} seconds" exit 1 fi # Create index pattern for Filebeat echo "Creating Filebeat index pattern..." docker exec ${CONTAINER_NAME}_kibana curl -s -X POST \ -u "$AUTH" \ -H "Content-Type: application/json" \ -H "kbn-xsrf: true" \ "${KIBANA_URL}/api/saved_objects/index-pattern/filebeat-*" \ -d '{ "attributes": { "title": "filebeat-*", "timeFieldName": "@timestamp", "fields": "[]" } }' > /dev/null 2>&1 # Set as default index pattern docker exec ${CONTAINER_NAME}_kibana curl -s -X POST \ -u "$AUTH" \ -H "Content-Type: application/json" \ -H "kbn-xsrf: true" \ "${KIBANA_URL}/api/kibana/settings" \ -d '{ "changes": { "defaultIndex": "filebeat-*" } }' > /dev/null 2>&1 # Create a simple saved search for Docker logs echo "Creating saved searches..." docker exec ${CONTAINER_NAME}_kibana curl -s -X POST \ -u "$AUTH" \ -H "Content-Type: application/json" \ -H "kbn-xsrf: true" \ "${KIBANA_URL}/api/saved_objects/search" \ -d '{ "attributes": { "title": "Docker Container Logs", "description": "View all Docker container logs", "columns": ["container_name", "message"], "sort": ["@timestamp", "desc"], "kibanaSavedObjectMeta": { "searchSourceJSON": "{\"index\":\"filebeat-*\",\"query\":{\"match_all\":{}},\"filter\":[{\"meta\":{\"index\":\"filebeat-*\",\"negate\":false,\"disabled\":false,\"alias\":null,\"type\":\"exists\",\"key\":\"container_name\",\"value\":\"exists\"},\"exists\":{\"field\":\"container_name\"}}]}" } } }' > /dev/null 2>&1 echo "" echo "=========================================" echo "Kibana Setup Complete!" echo "=========================================" echo "" echo "QUICK START GUIDE:" echo "" echo "1. Open Kibana: ${SERVER_PUBLICBASEURL:-http://$(hostname -I | awk '{print $1}'):${KIBANA_PORT}}" echo "" echo "2. Login with:" echo " Username: ${KIBANA_USERNAME:-elastic}" echo " Password: [your password]" echo "" echo "3. TO VIEW LOGS SIMPLY:" echo " a) Click 'Discover' in the left menu" echo " b) Time range is in top-right (set to 'Last 15 minutes' or 'Today')" echo " c) Your logs will appear below" echo "" echo "4. TO FILTER LOGS:" echo " - By container: Click '+' next to any 'container_name' value" echo " - By host: Click '+' next to any 'host.name' value" echo " - Search box: Type keywords to search all logs" echo "" echo "5. TO VIEW LIVE LOGS:" echo " - Click the 'Refresh' button in top-right" echo " - Set it to refresh every 5 seconds" echo "" echo "========================================="