Merge pull request #826 from midoks/dev

mongodb维护功能及DNS配置更改推荐方式
This commit is contained in:
Mr Chen
2025-09-17 12:52:58 +08:00
committed by GitHub
8 changed files with 213 additions and 4 deletions
+42
View File
@@ -0,0 +1,42 @@
#!/bin/bash
# MongoDB 监控脚本
# 功能:检查 MongoDB 是否运行,如果停止则自动重启
# MongoDB 服务名称(根据你的系统配置调整)
SERVICE_NAME="mongod"
# 检查 MongoDB 状态函数
check_mongodb() {
# 检查 MongoDB 进程是否在运行
if pgrep -x "$SERVICE_NAME" > /dev/null; then
echo "$(date): MongoDB 正在运行"
return 0
else
echo "$(date): MongoDB 已停止"
return 1
fi
}
# 重启 MongoDB 函数
restart_mongodb() {
echo "$(date): 尝试重启 MongoDB..."
# 根据你的系统选择适当的命令
# 对于使用 systemd 的系统(如 Ubuntu 16.04+, CentOS 7+)
if systemctl restart "mongodb"; then
echo "$(date): MongoDB 重启成功"
return 0
else
echo "$(date): MongoDB 重启失败"
return 1
fi
# 对于使用 init.d 的系统
# service mongod restart
}
if ! check_mongodb; then
echo "$(date): 检测到 MongoDB 停止运行"
restart_mongodb
fi
+1
View File
@@ -63,6 +63,7 @@
<p onclick="mongoStatus();">负载状态</p> <p onclick="mongoStatus();">负载状态</p>
<p onclick="mongoReplStatus();">复制状态</p> <p onclick="mongoReplStatus();">复制状态</p>
<p onclick="pluginLogs('mongodb','','run_log');">日志</p> <p onclick="pluginLogs('mongodb','','run_log');">日志</p>
<p onclick="otherFunc();">维护功能</p>
<p onclick="mgdbReadme();">相关说明</p> <p onclick="mgdbReadme();">相关说明</p>
</div> </div>
<div class="bt-w-con pd15"> <div class="bt-w-con pd15">
+20
View File
@@ -1524,6 +1524,22 @@ def runLog():
return f return f
return getServerDir() + '/logs.pl' return getServerDir() + '/logs.pl'
def cronAddCheck():
try:
import tool_task
tool_task.createBgTask()
return mw.returnJson(True, '添加检查任务成功')
except Exception as e:
return mw.returnJson(False, '添加检查任务失败:'+str(e))
def cronDelCheck():
try:
import tool_task
tool_task.removeBgTask()
return mw.returnJson(True, '删除检查任务成功')
except Exception as e:
return mw.returnJson(False, '删除检查任务失败:'+str(e))
def installPreInspectionDebainCheck(sysId,version): def installPreInspectionDebainCheck(sysId,version):
if version == '8.0': if version == '8.0':
@@ -1666,5 +1682,9 @@ if __name__ == "__main__":
print(test()) print(test())
elif func == 'test_data': elif func == 'test_data':
print(testData()) print(testData())
elif func == 'cron_add_check':
print(cronAddCheck())
elif func == 'cron_del_check':
print(cronDelCheck())
else: else:
print('error') print('error')
+22
View File
@@ -1241,6 +1241,28 @@ function importDbExternal(file,name){
}); });
} }
function otherFunc(){
var con = '<p class="conf_p" style="text-align:center;">\
<button class="btn btn-default btn-sm" onclick="cronAddCheck()">添加检查任务</button> \
<button class="btn btn-default btn-sm" onclick="cronDelCheck()">删除检查任务</button>\
</p>';
$(".soft-man-con").html(con);
}
function cronAddCheck(){
mgPost('cron_add_check', '', {}, function(data){
var rdata = $.parseJSON(data.data);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
}
function cronDelCheck(){
mgPost('cron_del_check', '', {}, function(data){
var rdata = $.parseJSON(data.data);
layer.msg(rdata.msg, { icon: rdata.status ? 1 : 2 });
});
}
function mgdbReadme(){ function mgdbReadme(){
var readme = '<ul class="help-info-text c7">'; var readme = '<ul class="help-info-text c7">';
readme += '<li>认证同步说明</li>'; readme += '<li>认证同步说明</li>';
+124
View File
@@ -0,0 +1,124 @@
# coding:utf-8
import sys
import io
import os
import time
import json
web_dir = os.getcwd() + "/web"
if os.path.exists(web_dir):
sys.path.append(web_dir)
os.chdir(web_dir)
import core.mw as mw
from utils.crontab import crontab as MwCrontab
app_debug = False
if mw.isAppleSystem():
app_debug = True
def getPluginName():
return 'mongodb'
def getPluginDir():
return mw.getPluginDir() + '/' + getPluginName()
def getServerDir():
return mw.getServerDir() + '/' + getPluginName()
def getTaskConf():
conf = getServerDir() + "/task_config.json"
return conf
def getConfigData():
conf = getTaskConf()
if os.path.exists(conf):
return json.loads(mw.readFile(getTaskConf()))
return {
"task_id": -1,
"period": "minute-n",
"where1": "1",
"hour": "0",
"minute": "0",
}
def createBgTask():
removeBgTask()
createBgTaskByName(getPluginName())
def createBgTaskByName(name):
args = getConfigData()
_name = "[MongoDB]检查任务"
res = mw.M("crontab").field("id, name").where("name=?", (_name,)).find()
if res:
return True
if "task_id" in args and args["task_id"] > 0:
res = mw.M("crontab").field("id, name").where(
"id=?", (args["task_id"],)).find()
if res and res["id"] == args["task_id"]:
print("计划任务已经存在!")
return True
mw_dir = mw.getPanelDir()
cmd = '''
mw_dir=%s
rname=%s
plugin_path=%s
script_path=%s
''' % (mw_dir, name, getServerDir(), getPluginDir())
cmd += 'echo "bash $script_path/check.sh"' + "\n"
cmd += 'cd $mw_dir && bash $script_path/check.sh' + "\n"
params = {
'name': _name,
'type': args['period'],
'week': "",
'where1': args['where1'],
'hour': args['hour'],
'minute': args['minute'],
'save': "",
'backup_to': "",
'stype': "toShell",
'sname': '',
'sbody': cmd,
'url_address': '',
}
task_id = MwCrontab.instance().add(params)
if task_id > 0:
args["task_id"] = task_id
args["name"] = name
mw.writeFile(getTaskConf(), json.dumps(args))
def removeBgTask():
cfg = getConfigData()
if "task_id" in cfg and cfg["task_id"] > 0:
res = mw.M("crontab").field("id, name").where(
"id=?", (cfg["task_id"],)).find()
if res and res["id"] == cfg["task_id"]:
data = MwCrontab.instance().delete(cfg["task_id"])
if data["status"]:
cfg["task_id"] = -1
mw.writeFile(getTaskConf(), json.dumps(cfg))
return True
return False
if __name__ == "__main__":
if len(sys.argv) > 1:
action = sys.argv[1]
if action == "remove":
removeBgTask()
elif action == "add":
createBgTask()
+1 -1
View File
@@ -8,7 +8,7 @@
<p onclick="getOpStatus();">负载状态</p> <p onclick="getOpStatus();">负载状态</p>
<p onclick="setOpCfg();">性能调整</p> <p onclick="setOpCfg();">性能调整</p>
<p onclick="pluginLogs('openresty');">错误日志</p> <p onclick="pluginLogs('openresty');">错误日志</p>
<p onclick="otherFunc();">其它功能</p> <p onclick="otherFunc();">维护功能</p>
</div> </div>
<div class="bt-w-con pd15"> <div class="bt-w-con pd15">
<div class="soft-man-con"></div> <div class="soft-man-con"></div>
+1 -1
View File
@@ -76,7 +76,7 @@ rname=%s
plugin_path=%s plugin_path=%s
script_path=%s script_path=%s
''' % (mw_dir, name, getServerDir(), getPluginDir()) ''' % (mw_dir, name, getServerDir(), getPluginDir())
cmd += 'echo "python3 $script_path/check.sh"' + "\n" cmd += 'echo "bash $script_path/check.sh"' + "\n"
cmd += 'cd $mw_dir && bash $script_path/check.sh' + "\n" cmd += 'cd $mw_dir && bash $script_path/check.sh' + "\n"
params = { params = {
+2 -2
View File
@@ -1994,8 +1994,8 @@ location ^~ {from} {\n\
dnsapi_option = [ dnsapi_option = [
{"name":"none", "title":'手动解析', 'key':'', 'help':''}, {"name":"none", "title":'手动解析', 'key':'', 'help':''},
{"name":"dns_ali", "title":'Aliyun', 'key':'Ali_Key:Ali_Secret', 'help':'阿里云控制台》用户头像》accesskeys按指引获取AccessKey/SecretKey'}, {"name":"dns_ali", "title":'Aliyun', 'key':'Ali_Key:Ali_Secret', 'help':'阿里云控制台》用户头像》accesskeys按指引获取AccessKey/SecretKey'},
{"name":"dns_huaweicloud", "title":'华为云', 'key':'HUAWEICLOUD_Username:HUAWEICLOUD_Password:HUAWEICLOUD_DomainName:HUAWEICLOUD_ProjectID:HUAWEICLOUD_AccessKey:HUAWEICLOUD_SecretKey'}, {"name":"dns_huaweicloud", "title":'华为云', 'key':'HUAWEICLOUD_Username:HUAWEICLOUD_Password:HUAWEICLOUD_DomainName'},
{"name":"dns_cf", "title":'cloudflare', 'key':'CF_Key:CF_Email', 'help':'CloudFlare后台获取Global API Key'}, {"name":"dns_cf", "title":'cloudflare', 'key':'CF_Key:CF_Email:CF_Token:CF_Account_ID:CF_Zone_ID', 'help':'CloudFlare后台获取Global API Key'},
{"name":"dns_dp", "title":'dnspod/国内', 'key':'DP_Id:DP_Key','help':'DnsPod后台》用户中心》安全设置,开启API Token'}, {"name":"dns_dp", "title":'dnspod/国内', 'key':'DP_Id:DP_Key','help':'DnsPod后台》用户中心》安全设置,开启API Token'},
{"name":"dns_dpi", "title":'dnspod/国际', 'key':'DPI_Id:DPI_Key','help':'DnsPod后台》用户中心》安全设置,开启API Token'}, {"name":"dns_dpi", "title":'dnspod/国际', 'key':'DPI_Id:DPI_Key','help':'DnsPod后台》用户中心》安全设置,开启API Token'},
{"name":"dns_tencent", "title":"腾讯云DNS", 'key':'Tencent_SecretId:Tencent_SecretKey', 'help':'腾讯云后台获取通行证'}, {"name":"dns_tencent", "title":"腾讯云DNS", 'key':'Tencent_SecretId:Tencent_SecretKey', 'help':'腾讯云后台获取通行证'},