make it easy
All checks were successful
Test and Publish Templates / test-and-publish (push) Successful in 40s
All checks were successful
Test and Publish Templates / test-and-publish (push) Successful in 40s
This commit is contained in:
108
logserver/setup-kibana.sh
Executable file
108
logserver/setup-kibana.sh
Executable file
@@ -0,0 +1,108 @@
|
||||
#!/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 "========================================="
|
Reference in New Issue
Block a user