39 lines
1.3 KiB
Bash
39 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
SQL_FILE="${SCRIPT_DIR}/init_waf_logs_tables.sql"
|
|
|
|
if [[ ! -f "${SQL_FILE}" ]]; then
|
|
echo "[ERROR] SQL file not found: ${SQL_FILE}"
|
|
exit 1
|
|
fi
|
|
|
|
if ! command -v clickhouse-client >/dev/null 2>&1; then
|
|
echo "[ERROR] clickhouse-client not found. Please install ClickHouse client first."
|
|
exit 1
|
|
fi
|
|
|
|
CH_HOST="${CH_HOST:-127.0.0.1}"
|
|
CH_PORT="${CH_PORT:-9000}"
|
|
CH_USER="${CH_USER:-default}"
|
|
CH_PASSWORD="${CH_PASSWORD:-}"
|
|
CH_DATABASE="${CH_DATABASE:-default}"
|
|
|
|
args=(--host "${CH_HOST}" --port "${CH_PORT}" --user "${CH_USER}")
|
|
if [[ -n "${CH_PASSWORD}" ]]; then
|
|
args+=(--password "${CH_PASSWORD}")
|
|
fi
|
|
|
|
echo "[INFO] creating database if not exists: ${CH_DATABASE}"
|
|
clickhouse-client "${args[@]}" --query "CREATE DATABASE IF NOT EXISTS ${CH_DATABASE}"
|
|
|
|
echo "[INFO] initializing tables in database: ${CH_DATABASE}"
|
|
clickhouse-client "${args[@]}" --database "${CH_DATABASE}" < "${SQL_FILE}"
|
|
|
|
echo "[INFO] checking table status ..."
|
|
clickhouse-client "${args[@]}" --database "${CH_DATABASE}" --query \
|
|
"SELECT name, engine FROM system.tables WHERE database='${CH_DATABASE}' AND name IN ('logs_ingest','dns_logs_ingest','httpdns_access_logs_ingest') ORDER BY name"
|
|
|
|
echo "[OK] ClickHouse ingest tables are ready in database '${CH_DATABASE}'"
|