Co-authored-by: sundapeng.sdp <sundapeng@hashdata.cn> Reviewed-on: #27 Reviewed-by: yuyr <yuyr@zgclab.edu.cn> Reviewed-by: xuxt <xuxt@zgclab.edu.cn>
90 lines
3.9 KiB
Bash
90 lines
3.9 KiB
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
echo "[INFO] Starting Grafana under supervisor..."
|
|
|
|
DOMAIN=grafana.metric.argus.com
|
|
|
|
# 记录容器 IP
|
|
IP=$(ifconfig | awk '/inet / && $2 != "127.0.0.1" {print $2; exit}')
|
|
echo "current IP: ${IP}"
|
|
echo "${IP}" > /private/argus/etc/${DOMAIN}
|
|
chmod +x /private/argus/etc/${DOMAIN}
|
|
|
|
# 确保必要目录存在(权限已在 Dockerfile 中设置)
|
|
mkdir -p /private/argus/metric/grafana/data
|
|
mkdir -p /private/argus/metric/grafana/logs
|
|
mkdir -p /private/argus/metric/grafana/plugins
|
|
mkdir -p /private/argus/metric/grafana/provisioning/datasources
|
|
mkdir -p /private/argus/metric/grafana/provisioning/dashboards
|
|
mkdir -p /private/argus/metric/grafana/data/sessions
|
|
mkdir -p /private/argus/metric/grafana/data/dashboards
|
|
mkdir -p /private/argus/metric/grafana/config
|
|
mkdir -p /var/log/grafana
|
|
mkdir -p /etc/grafana/provisioning/datasources
|
|
mkdir -p /var/lib/grafana
|
|
|
|
# 复制主配置文件到持久化目录
|
|
if [ -f "/tmp/grafana.ini" ]; then
|
|
echo "[INFO] Copying grafana.ini to /private/argus/metric/grafana/config/"
|
|
cp /tmp/grafana.ini /private/argus/metric/grafana/config/grafana.ini
|
|
echo "[INFO] Grafana configuration copied successfully"
|
|
fi
|
|
|
|
# 检查配置文件来源(优先级:挂载目录 > 容器内配置 > 默认配置)
|
|
if [ -f "/private/argus/metric/grafana/config/grafana.ini" ]; then
|
|
echo "[INFO] Using grafana.ini from /private/argus/metric/grafana/config/"
|
|
CONFIG_FILE="--config=/private/argus/metric/grafana/config/grafana.ini"
|
|
elif [ -f "/etc/grafana/grafana.ini" ]; then
|
|
echo "[INFO] Using custom grafana.ini from /etc/grafana/"
|
|
CONFIG_FILE="--config=/etc/grafana/grafana.ini"
|
|
else
|
|
echo "[INFO] Using default configuration"
|
|
CONFIG_FILE=""
|
|
fi
|
|
|
|
# 复制数据源配置文件到挂载目录
|
|
if [ -f "/tmp/datasources.yml" ]; then
|
|
echo "[INFO] Copying datasource configuration to /private/argus/metric/grafana/provisioning/datasources/"
|
|
cp /tmp/datasources.yml /private/argus/metric/grafana/provisioning/datasources/datasources.yml
|
|
echo "[INFO] Datasource configuration copied successfully"
|
|
elif [ -d "/private/argus/metric/grafana/provisioning/datasources" ] && [ "$(ls -A /private/argus/metric/grafana/provisioning/datasources)" ]; then
|
|
echo "[INFO] Found existing datasource provisioning files in /private/argus/metric/grafana/provisioning/datasources"
|
|
elif [ -d "/etc/grafana/provisioning/datasources" ] && [ "$(ls -A /etc/grafana/provisioning/datasources)" ]; then
|
|
echo "[INFO] Found datasource provisioning files in /etc/grafana/provisioning/datasources"
|
|
# 确保数据源配置目录权限正确
|
|
chown -R grafana:grafana /etc/grafana/provisioning/datasources
|
|
else
|
|
echo "[INFO] No datasource provisioning files found, using manual configuration"
|
|
fi
|
|
|
|
# 复制仪表板配置文件到挂载目录
|
|
if [ -f "/tmp/dashboards.yml" ]; then
|
|
echo "[INFO] Copying dashboard configuration to /private/argus/metric/grafana/provisioning/dashboards/"
|
|
cp /tmp/dashboards.yml /private/argus/metric/grafana/provisioning/dashboards/dashboards.yml
|
|
echo "[INFO] Dashboard configuration copied successfully"
|
|
fi
|
|
|
|
# 复制默认仪表板到挂载目录
|
|
if [ -f "/tmp/default_dashboard.json" ]; then
|
|
echo "[INFO] Copying default dashboard to /private/argus/metric/grafana/provisioning/dashboards/"
|
|
cp /tmp/default_dashboard.json /private/argus/metric/grafana/provisioning/dashboards/default_dashboard.json
|
|
echo "[INFO] Default dashboard copied successfully"
|
|
fi
|
|
|
|
# 启动 Grafana
|
|
if [ -n "$CONFIG_FILE" ]; then
|
|
echo "[INFO] Starting Grafana with custom configuration..."
|
|
exec /usr/share/grafana/bin/grafana server \
|
|
--homepath=/usr/share/grafana \
|
|
--packaging=docker \
|
|
$CONFIG_FILE
|
|
else
|
|
echo "[INFO] Starting Grafana with default configuration..."
|
|
exec /usr/share/grafana/bin/grafana server \
|
|
--homepath=/usr/share/grafana \
|
|
--packaging=docker \
|
|
cfg:default.log.mode=console \
|
|
cfg:default.log.level=info
|
|
fi
|