dev_1.0.0_xuxt 完成web和alert模块开发,以及模块e2e测试 #21

Merged
xuxt merged 8 commits from dev_1.0.0_xuxt into dev_1.0.0 2025-10-14 10:20:46 +08:00
7 changed files with 104 additions and 26 deletions
Showing only changes of commit ac15595c8e - Show all commits

View File

@ -0,0 +1,13 @@
# Alertmanager
## 启动示例
```bash
docker run -d --name alertmanager \
-p 9093:9093 \
-v /opt/alertmanager/data:/alertmanager \
argus-alert:latest
```
## 动态配置
修改alertmanager.yml后调用`/-/reload`接口可以重新加载配置

View File

@ -18,12 +18,13 @@ RUN wget https://github.com/prometheus/alertmanager/releases/download/v${ALERTMA
mv alertmanager-${ALERTMANAGER_VERSION}.linux-amd64 /usr/local/alertmanager && \ mv alertmanager-${ALERTMANAGER_VERSION}.linux-amd64 /usr/local/alertmanager && \
rm alertmanager-${ALERTMANAGER_VERSION}.linux-amd64.tar.gz rm alertmanager-${ALERTMANAGER_VERSION}.linux-amd64.tar.gz
ENV ALERTMANAGER_BASE_PATH=/private/argus/alert/alertmanager
RUN mkdir -p /usr/share/alertmanager && \ RUN mkdir -p /usr/share/alertmanager && \
mkdir -p /private/argus/alert/alertmanager && \ mkdir -p ${ALERTMANAGER_BASE_PATH} && \
mkdir -p /private/argus/etc && \ mkdir -p /private/argus/etc && \
rm -rf /alertmanager && \ rm -rf /alertmanager && \
ln -s /private/argus/alert/alertmanager /alertmanager ln -s ${ALERTMANAGER_BASE_PATH} /alertmanager
# 创建 alertmanager 用户(可自定义 UID/GID # 创建 alertmanager 用户(可自定义 UID/GID
# 创建 alertmanager 用户组 # 创建 alertmanager 用户组
@ -33,8 +34,10 @@ RUN groupadd -g 2015 alertmanager
RUN useradd -M -s /usr/sbin/nologin -u 2133 -g 2015 alertmanager RUN useradd -M -s /usr/sbin/nologin -u 2133 -g 2015 alertmanager
RUN chown -R alertmanager:alertmanager /usr/share/alertmanager && \ RUN chown -R alertmanager:alertmanager /usr/share/alertmanager && \
chown -R alertmanager:alertmanager /private/argus/alert/alertmanager && \ chown -R alertmanager:alertmanager /alertmanager && \
chown -R alertmanager:alertmanager /private/argus/etc chown -R alertmanager:alertmanager ${ALERTMANAGER_BASE_PATH} && \
chown -R alertmanager:alertmanager /private/argus/etc && \
chown -R alertmanager:alertmanager /usr/local/bin
# 配置内网 apt 源 (如果指定了内网选项) # 配置内网 apt 源 (如果指定了内网选项)
RUN if [ "$USE_INTRANET" = "true" ]; then \ RUN if [ "$USE_INTRANET" = "true" ]; then \
@ -63,6 +66,8 @@ RUN chmod +x /usr/local/bin/start-am-supervised.sh
# 复制 Alertmanager 配置文件 # 复制 Alertmanager 配置文件
COPY src/alert/alertmanager/build/alertmanager.yml /etc/alertmanager/alertmanager.yml COPY src/alert/alertmanager/build/alertmanager.yml /etc/alertmanager/alertmanager.yml
RUN chmod +x /etc/alertmanager/alertmanager.yml
# COPY src/alert/alertmanager/build/alertmanager.yml ${ALERTMANAGER_BASE_PATH}/alertmanager.yml
# 复制 DNS 监控脚本 # 复制 DNS 监控脚本
COPY src/alert/alertmanager/build/dns-monitor.sh /usr/local/bin/dns-monitor.sh COPY src/alert/alertmanager/build/dns-monitor.sh /usr/local/bin/dns-monitor.sh

View File

@ -6,12 +6,10 @@ route:
group_wait: 30s # 第一个告警后,等 30s 看是否有同组告警一起发 group_wait: 30s # 第一个告警后,等 30s 看是否有同组告警一起发
group_interval: 5m # 同组告警变化后,至少 5 分钟再发一次 group_interval: 5m # 同组告警变化后,至少 5 分钟再发一次
repeat_interval: 3h # 相同告警3 小时重复提醒一次 repeat_interval: 3h # 相同告警3 小时重复提醒一次
receiver: 'webhook' receiver: 'null'
receivers: receivers:
- name: 'webhook' - name: 'null'
webhook_configs:
- url: 'http://127.0.0.1:5001/alert' # Webhook 接收地址
inhibit_rules: inhibit_rules:
- source_match: - source_match:

View File

@ -1 +1,68 @@
../../../bind/build/dns-monitor.sh #!/bin/bash
# DNS监控脚本 - 每10秒检查dns.conf是否有变化
# 如果有变化则执行update-dns.sh脚本
DNS_CONF="/private/argus/etc/dns.conf"
DNS_BACKUP="/tmp/dns.conf.backup"
UPDATE_SCRIPT="/private/argus/etc/update-dns.sh"
LOG_FILE="/var/log/supervisor/dns-monitor.log"
# 确保日志文件存在
touch "$LOG_FILE"
log_message() {
echo "$(date '+%Y-%m-%d %H:%M:%S') [DNS-Monitor] $1" >> "$LOG_FILE"
}
log_message "DNS监控脚本启动"
while true; do
if [ -f "$DNS_CONF" ]; then
if [ -f "$DNS_BACKUP" ]; then
# 比较文件内容
if ! cmp -s "$DNS_CONF" "$DNS_BACKUP"; then
log_message "检测到DNS配置变化"
# 更新备份文件
cp "$DNS_CONF" "$DNS_BACKUP"
# 执行更新脚本
if [ -x "$UPDATE_SCRIPT" ]; then
log_message "执行DNS更新脚本: $UPDATE_SCRIPT"
"$UPDATE_SCRIPT" >> "$LOG_FILE" 2>&1
if [ $? -eq 0 ]; then
log_message "DNS更新脚本执行成功"
else
log_message "DNS更新脚本执行失败"
fi
else
log_message "警告: 更新脚本不存在或不可执行: $UPDATE_SCRIPT"
fi
fi
else
# 第一次检测到配置文件,执行更新脚本
if [ -x "$UPDATE_SCRIPT" ]; then
log_message "执行DNS更新脚本: $UPDATE_SCRIPT"
"$UPDATE_SCRIPT" >> "$LOG_FILE" 2>&1
if [ $? -eq 0 ]; then
log_message "DNS更新脚本执行成功"
# 第一次运行,创建备份并执行更新
cp "$DNS_CONF" "$DNS_BACKUP"
log_message "创建DNS配置备份文件"
else
log_message "DNS更新脚本执行失败"
fi
else
log_message "警告: 更新脚本不存在或不可执行: $UPDATE_SCRIPT"
fi
fi
else
log_message "警告: DNS配置文件不存在: $DNS_CONF"
fi
sleep 10
done

View File

@ -23,4 +23,4 @@ echo "${IP}" > /private/argus/etc/${DOMAIN}
echo "[INFO] Starting Alertmanager process..." echo "[INFO] Starting Alertmanager process..."
# 启动 Alertmanager 主进程 # 启动 Alertmanager 主进程
exec /usr/local/alertmanager/alertmanager --config.file=/etc/alertmanager/alertmanager.yml --storage.path=/alertmanager exec /usr/local/alertmanager/alertmanager --config.file=/etc/alertmanager/alertmanager.yml --storage.path=/alertmanager --cluster.listen-address=""

View File

@ -16,17 +16,17 @@ stopwaitsecs=20
killasgroup=true killasgroup=true
stopasgroup=true stopasgroup=true
# [program:dns-monitor] [program:dns-monitor]
# command=/usr/local/bin/dns-monitor.sh command=/usr/local/bin/dns-monitor.sh
# user=root user=root
# stdout_logfile=/var/log/supervisor/dns-monitor.log stdout_logfile=/var/log/supervisor/dns-monitor.log
# stderr_logfile=/var/log/supervisor/dns-monitor_error.log stderr_logfile=/var/log/supervisor/dns-monitor_error.log
# autorestart=true autorestart=true
# startretries=3 startretries=3
# startsecs=5 startsecs=5
# stopwaitsecs=10 stopwaitsecs=10
# killasgroup=true killasgroup=true
# stopasgroup=true stopasgroup=true
[unix_http_server] [unix_http_server]
file=/var/run/supervisor.sock file=/var/run/supervisor.sock

View File

@ -1,5 +0,0 @@
docker run -d \
-p 9093:9093 \
--name alertmanager \
-v $(pwd)/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
prom/alertmanager