diff --git a/sqle/locale/active.en.toml b/sqle/locale/active.en.toml index b65bb9aae..720d49c29 100644 --- a/sqle/locale/active.en.toml +++ b/sqle/locale/active.en.toml @@ -17,58 +17,22 @@ ApMetaAliRdsMySQLAuditLog = "AliRDS MySQL audit log" ApMetaAliRdsMySQLSlowLog = "AliRDS MySQL slow log" ApMetaAllAppExtract = "Application SQL extraction" ApMetaBaiduRdsMySQLSlowLog = "Baidu Cloud RDS MySQL slow log" -ApMetaCollectTime = "collect time" ApMetaCustom = "Custom" -ApMetaDB2SlowLog = "DB2 slow log" ApMetaDB2TopSQL = "DB2 Top SQL" ApMetaDistributedLock = "Distributed Lock" -ApMetaDmProcesslist = "DM ProcessList" -ApMetaDmSlowLog = "DM slow log" ApMetaDmTopSQL = "DM TOP SQL" -ApMetaGaussDBProcesslist = "GaussDB Processlist" -ApMetaGaussDBSlowLog = "GaussDB Slow Log" -ApMetaGoldenDBTopSQL = "GoldenDB TOP SQL" -ApMetaHanaTopSQL = "HANA TOP SQL" -ApMetaHiveSlowLog = "Hive slow log" ApMetaHuaweiRdsMySQLSlowLog = "Huawei Cloud RDS MySQL slow log" ApMetaMDBSlowLog = "slow log(Monitor DB)" -ApMetaMSSQLTopSQL = "SQL Server TOP SQL" ApMetaMySQLProcesslist = "Processlist" ApMetaMySQLSchemaMeta = "Database schema metadata" -ApMetaMySQLTopSQL = "MySQL TOP SQL" ApMetaObForOracleTopSQL = "OceanBase For Oracle TOP SQL" -ApMetaObForOracleSlowLog = "OceanBase For Oracle Slow Log" -ApMetaProcesslist = "active sessions" -ApMetaOceanBaseForMySQLFullCollect = "Full Collect" -ApMetaOceanBaseForMySQLProcesslist = "Processlist" -ApMetaOceanBaseForMySQLSlowLog = "OceanBase For MySQL slow log" -ApMetaOracleProcesslist = "Oracle active sessions" -ApMetaOracleSlowLog = "Oracle slow log" ApMetaOracleTopSQL = "Oracle TOP SQL" -ApMetaPerformanceCollect = "Performance metrics" -ApMetaPerformanceCollectTips = "Performance metric collection will incur significant performance overhead, so please enable it with caution. Once enabled, the system will continuously collect performance data (such as QPS, number of connections, etc.) for this data source and generate performance trend charts, which will be displayed on the Performance Insights page." ApMetaPostgreSQLTopSQL = "TOP SQL" -ApMetaPostgreSQLProcesslist = "PostgreSQL active sessions" -ApMetaPostgreSQLSlowLog = "Slow log" -ApMetaQueries = "QPS" -ApMetaSQLServerPerformanceCollect = "SQLServer performance collect" -ApMetaSQLServerPerformanceCollectTips = "Periodically collect performance metrics such as connections and QPS from SQLServer instances" -ApMetaSQLServerProcesslist = "SQLServer active sessions" -ApMetaHanaProcesslist = "HANA active sessions" -ApMetaHanaSlowLog = "HANA slow log" -ApMetaHiveProcesslist = "Hive active sessions" -ApMetaSQLServerSlowLog = "SQLServer slow SQL collect" ApMetaSchemaMeta = "Database schema metadata" ApMetaSlowLog = "Slow log" -ApMetaThreadsConnected = "ThreadsConnected" ApMetaTiDBAuditLog = "TiDB audit log" -ApMetaTiDBSlowLog = "TiDB slow log" -ApMetaTiDBTopSQL = "TiDB TOP SQL" -ApMetaTBaseProcesslist = "TBase Active Session Collection" -ApMetaTiDBProcesslist = "TiDB Processlist" ApMetaTopSQL = "Top SQL" ApMetricEngine = "engine" -ApMetricHiveSlowLogDbUser = "Execution user" ApMetricNameActiveTimeTotal = "Total active time (ms)" ApMetricNameActiveWaitTimeTotal = "Total active wait time (ms)" ApMetricNameBufferGetCounter = "Logical read count" @@ -79,17 +43,14 @@ ApMetricNameChecksum = "checksum" ApMetricNameCounter = "Execution count" ApMetricNameCounterMoreThan = "Occurrence count > " ApMetricNameDBUser = "User" -ApMetricNameDiskMax = "Maximum disk space used" ApMetricNameDiskReadAvg = "Average physical read count" ApMetricNameDiskReadTotal = "Physical read count" ApMetricNameFirstQueryAt = "First execution time" -ApMetricNameFullTableScanCount = "Full table scan count" ApMetricNameGrantedLockConnectionId = "granted lock connection id" ApMetricNameGrantedLockId = "granted lock id" ApMetricNameGrantedLockSql = "granted lock SQL" ApMetricNameGrantedLockTrxId = "granted lock transaction id" ApMetricNameHost = "host" -ApMetricNameInstance = "Node address" ApMetricNameIoWaitTimeAvg = "Average IO wait time (ms)" ApMetricNameLastQueryAt = "Last execution time" ApMetricNameLastReceiveTimestamp = "Last time matched to fingerprint" @@ -101,11 +62,8 @@ ApMetricNameLockWaitTimeMax = "Max lock wait time(ms)" ApMetricNameLockWaitTimeTotal = "Total lock wait time (ms)" ApMetricNameLogicReadPageTotal = "Total logical read pages" ApMetricNameMaxQueryTime = "Max execution time" -ApMetricNameMemMax = "Maximum memory used" -ApMetricNameMemorySizeTotal = "Total memory consumption(MB)" ApMetricNameMetaName = "Object name" ApMetricNameMetaType = "Object type" -ApMetricNameNoIndexUsedTotal = "Unused-index count" ApMetricNamePhyReadPageTotal = "Physical read pages" ApMetricNameQueryTimeAvg = "Average execution time(s)" ApMetricNameQueryTimeAvgMS = "Average execution time(ms)" @@ -114,14 +72,11 @@ ApMetricNameQueryTimeMax = "Max execution time(s)" ApMetricNameQueryTimeMaxMS = "Max execution time(ms)" ApMetricNameQueryTimeTotal = "Total execution time(s)" ApMetricNameQueryTimeTotalMS = "Total execution time(ms)" -ApMetricNameQueryTimeTotalUS = "Total execution time(μs)" -ApMetricNameRequestTime = "Request Time" ApMetricNameRowExaminedAvg = "Average examined rows" ApMetricNameRowExaminedAvgMoreThan = "Average examined rows > " ApMetricNameRowsAffectedAvg = "Average affected rows" ApMetricNameRowsAffectedMax = "Max affected rows" ApMetricNameTable = "table name" -ApMetricNameTenantName = "Tenant Name" ApMetricNameTransactionStarted = "transaction started" ApMetricNameTrxWaitStarted = "transaction wait started" ApMetricNameUserIOWaitTimeTotal = "I/O wait time (s)" @@ -131,7 +86,6 @@ ApMetricNameWaitingLockSql = "waiting lock sql" ApMetricNameWaitingLockTrxId = "waiting lock transaction id" ApMetricQueryTimeAvg = "Average query time(s)" ApMetricRowExaminedAvg = "Average examined rows" -ApMetricUserClientIP = "Client IP" ApNum = "Number" ApPriority = "Priority" ApPriorityHigh = "High priority" @@ -147,18 +101,10 @@ AuditRecordTagIncrement = "Increment" ConfigCodingTest = "This is a test message, used to test whether the function of SQLE push to Coding platform is normal." ConfigFeishuTestContent = "This is a test approval, used to test whether the SQLE Feishu approval function is normal." ConfigTestAudit = "Test approval" -DatabaseCompareNotSupportedByDbType = "Database type %s does not support structure comparison. Please ensure SQLE has loaded a driver that supports %s." DefaultRuleTemplatesDesc = "Default rule template" DefaultTemplatesDesc = "%s default template" -EnumKpiTypeDiskMax = "Maximum disk space used" -EnumKpiTypeExecuteCount = "Execution count" -EnumKpiTypeFullTableScan = "Full table scan count" -EnumKpiTypeLockWaitTotal = "Total lock wait time" -EnumKpiTypeMemMax = "Maximum memory used" -EnumKpiTypeNoIndexUsedTotal = "Unused-index count" EnumSlowLogFileSource = "Collected from slow.log file, need to adapt scanner" EnumSlowLogTableSource = "Collected from mysql.slow_log table" -EnumkpiTypeQueryTime = "Execution time" ExportCreateTime = "Created time" ExportCreator = "Creator" ExportDataSource = "Db instance" @@ -187,14 +133,6 @@ ExportWorkflowName = "Task name" ExportWorkflowNumber = "Task ID" FileOrderMethodPrefixNumAsc = "Prefix number ascending" FileOrderMethodSuffixNumAsc = "Suffix number ascending" -HiveSlowLogErrAuthInvalid = "Invalid Hive datasource `auth` parameter. Allowed values: `NOSASL` / `NONE` / `LDAP` / `CUSTOM`. Please correct it on the SQLE datasource management page. Origin error: %s" -HiveSlowLogErrColumnMismatch = "Hive slow log collection SQL failed: invalid column reference. The Hive version may differ from the SQLE adapted baseline (Hive 4.2). Please share the output of `SELECT version()` with the SQLE maintainer. Origin error: %s" -HiveSlowLogErrConnectFailed = "Hive instance connection failed: HiveServer2 may have SASL/LDAP authentication enabled while the datasource `auth` is set to `NOSASL`. Please edit this Hive datasource on the SQLE datasource management page and change `auth` to `NONE` or `LDAP`. Origin error: %s" -HiveSlowLogErrHS2ServerError = "Hive HS2 server returned an error. Common causes: 1) `sys.query_history` table does not exist - please ensure `hive.query.history.enabled=true` is set in HS2 `hive-site.xml` and Restart HS2; 2) `sys` database does not exist - same as above, HS2 auto-creates it after restart; 3) Hive version differs from the SQLE adapted baseline (Hive 4.2). Please inspect HS2 server-side logs for details. Origin error: %s" -HiveSlowLogErrPluginTransportClosing = "Hive slow log collection failed: the sqle-hive-plugin subprocess exited abnormally (gRPC channel closed with the signal `transport is closing`). The most common trigger is an invalid Hive datasource `auth` value (gohive panics inside `innerConnect` with `panic: Unrecognized auth`, and the panic message is not propagated across the gRPC channel after the plugin process crashes). Please self-check in the following order: 1) Verify on the SQLE datasource management page that `auth` is one of the allowed values: `NOSASL` / `NONE` / `LDAP` / `CUSTOM`; 2) Confirm host / port reachability; 3) Inspect the plugin / HS2 server-side logs for the panic stack. Origin error: %s" -HiveSlowLogErrSysDbNotFound = "Hive instance `sys` database does not exist. Please contact your Hive platform operator: 1) set `hive.query.history.enabled=true` in HS2 `hive-site.xml`; 2) restart HS2 so that it auto-creates the `sys.query_history` table. Origin error: %s" -HiveSlowLogErrTableNotFound = "Hive instance `sys.query_history` table does not exist. HS2 may not have query history enabled. Please verify that `hive.query.history.enabled` is true and HS2 has been restarted. Origin error: %s" -HiveSlowLogErrUnknown = "Hive slow log collection failed: %s" LicenseDurationOfRunning = "Running days" LicenseEstimatedMaturity = "Estimated maturity date" LicenseInstanceNum = "Instance count" @@ -213,15 +151,13 @@ NotifyManageRecordBodyProj = "Project: %v" NotifyManageRecordBodyRecord = "- SQL ID: %v\n- Data Source Name: %v\n- Environment: %v\n- SQL: %v\n- Trigger Rule Level: %v\n- SQL Audit Recommendation: %v\n================================" NotifyManageRecordBodyTime = "Record Time Period: %v - %v" NotifyManageRecordSubject = "SQL Management Record" -NotifyWorkflowBodyCancel = "🚫 Workflow has been canceled\n" -NotifyWorkflowBodyComplete = "✅ Workflow has been manually completed\n" NotifyWorkflowBodyConfigUrl = "Please add a global URL in the system settings - global configuration" NotifyWorkflowBodyHead = "\n📋 Workflow Topic: %v\n📍 Project: %v\n🆔 Workflow ID: %v\n📝 Workflow Description: %v\n👤 Applicant: %v\n⏰ Creation Time: %v\n" NotifyWorkflowBodyInstanceAndSchema = "🗄️ Data Source: %v\n📊 Schema: %v\n" NotifyWorkflowBodyInstanceErr = "❌ Failed to obtain data source instance: %v\n" NotifyWorkflowBodyLink = "🔗 Workflow Link: %v" NotifyWorkflowBodyReason = "❌ Rejection Reason: %v\n" -NotifyWorkflowBodyReport = "✅ Workflow Audit Score: %v\n" +NotifyWorkflowBodyReport = "✅ Workflow Audit Score: %v\n📈 Workflow Audit Pass Rate: %v%%\n" NotifyWorkflowBodyStartEnd = "▶️ Execute Start Time: %v\n◀️ Execute End Time: %v\n" NotifyWorkflowBodyWorkFlowErr = "❌ Failed to read workflow task content, please check the workflow status through the SQLE interface" OpAuditPlanSave = "Create audit task" @@ -275,6 +211,31 @@ OprActionUpdateSystemVariables = "Edit system variables" OprActionUpdateUser = "Edit user" OprActionUpdateWechatConfiguration = "Edit WeChat configuration" OprActionUpdateWorkflowTemplate = "Edit workflow template" +OprActionUpdateWorkflow = "Update workflow" +OprActionUpdateFeishuAuditConfiguration = "Edit Feishu audit configuration" +OprActionUpdateWechatAuditConfiguration = "Edit WeChat audit configuration" +OprActionUpdateCodingConfiguration = "Edit Coding configuration" +OprActionCreateAuditWhitelist = "Create audit whitelist" +OprActionUpdateAuditWhitelist = "Update audit whitelist" +OprActionDeleteAuditWhitelist = "Delete audit whitelist" +OprActionCreateBlacklist = "Create blacklist" +OprActionUpdateBlacklist = "Update blacklist" +OprActionDeleteBlacklist = "Delete blacklist" +OprActionUpdateReportPushConfig = "Edit report push configuration" +OprActionCreateCustomRule = "Create custom rule" +OprActionUpdateCustomRule = "Update custom rule" +OprActionDeleteCustomRule = "Delete custom rule" +OprActionCreateSqlVersion = "Create SQL version" +OprActionUpdateSqlVersion = "Update SQL version" +OprActionDeleteSqlVersion = "Delete SQL version" +OprActionLockSqlVersion = "Lock SQL version" +OprActionCreateInstanceAuditPlan = "Create instance audit plan" +OprActionUpdateInstanceAuditPlan = "Update instance audit plan" +OprActionDeleteInstanceAuditPlan = "Delete instance audit plan" +OprActionCreatePipeline = "Create pipeline" +OprActionUpdatePipeline = "Update pipeline" +OprActionDeletePipeline = "Delete pipeline" +OprActionGenSSHKey = "Generate SSH key" OprAddAuditPlanWithName = "Create audit plan, name: %v" OprAddAuditWhitelist = "Add SQL whitelist" OprAddBlacklist = "Add blacklist" @@ -336,6 +297,14 @@ OprTypeGlobalUser = "Platform user" OprTypeInstance = "DB Instance" OprTypeProject = "Project" OprTypeProjectMember = "Project Member" +OprTypeAuditWhitelist = "Audit whitelist" +OprTypeBlacklist = "Blacklist" +OprTypeReportPush = "Report push" +OprTypeCustomRule = "Custom rule" +OprTypeSqlVersion = "SQL version" +OprTypeInstanceAuditPlan = "Instance audit plan" +OprTypePipeline = "Pipeline" +OprTypeRuleKnowledge = "Rule knowledge" OprTypeProjectRuleTemplate = "Project Rule Template" OprTypeSystemConfiguration = "System Configuration" OprTypeWorkflow = "Workflow" @@ -353,20 +322,14 @@ ParamDBInstanceId = "DB Instance ID" ParamFirstCollectDurationWithMaxDays = "Log collection time range when starting task (unit: hour, max %d days)" ParamFirstSqlsScrappedHours = "Slow log collection time range when starting task (unit: hour, only for mysql.slow_log)" ParamIndicator = "Indicator" -ParamInstance = "Node address(0 means all nodes)" ParamOrderByColumn = "Sort Column in V$SQLAREA" ParamOrderByColumnGeneric = "Sort Column" ParamProjectId = "Project ID" ParamRdsPath = "RDS Open API Address" ParamRegion = "Region of current RDS Instance (Example: cn-east-2)" ParamSQLMinSecond = "SQL Minimum Execution Time (Second)" -ParamSlowSqlThreshold = "Slow SQL Threshold (Second)" -ParamFirstSqlsScrappedHoursGeneric = "Time range for pulling slow logs on task startup (unit: hours)" ParamSlowLogCollectInput = "Collect Source" -ParamTimeSpan = "Time span(hours)" ParamTopN = "Top N" -ParamPgSlowSQLMinSecond = "Slow SQL threshold (seconds)" -ParamkpiType = "Metrics" PipelineCmdUsage = "#Usage#\n1. Ensure the user running this command has execution permission for scannerd.\n2. Execute the start command in the directory where the scannerd file is located.\n#Start Command#\n" RuleLevelError = "Error" RuleLevelNormal = "Normal" @@ -431,8 +394,6 @@ TaskStatusExecuteSucceeded = "Execution succeeded" TaskStatusExecuting = "Executing" TaskStatusManuallyExecuted = "Manually executed" WordIs = "is" -WorkflowNotifyTypeCancel = "SQL Workflow Canceled" -WorkflowNotifyTypeComplete = "SQL Workflow Manually Completed" WorkflowNotifyTypeDefault = "SQL Workflow Unknown Requests" WorkflowNotifyTypeExecuteFail = "SQL Workflow Execute Failed" WorkflowNotifyTypeExecuteSuccess = "SQL Workflow Execute Succeeded" diff --git a/sqle/locale/active.zh.toml b/sqle/locale/active.zh.toml index 6a7e992d6..61ee8feff 100644 --- a/sqle/locale/active.zh.toml +++ b/sqle/locale/active.zh.toml @@ -17,58 +17,22 @@ ApMetaAliRdsMySQLAuditLog = "阿里RDS MySQL审计日志" ApMetaAliRdsMySQLSlowLog = "阿里RDS MySQL慢日志" ApMetaAllAppExtract = "应用程序SQL抓取" ApMetaBaiduRdsMySQLSlowLog = "百度云RDS MySQL慢日志" -ApMetaCollectTime = "采集时间" ApMetaCustom = "自定义" -ApMetaDB2SlowLog = "DB2慢日志" ApMetaDB2TopSQL = "DB2 Top SQL" ApMetaDistributedLock = "分布式锁" -ApMetaDmProcesslist = "DM ProcessList" -ApMetaDmSlowLog = "DM慢日志" ApMetaDmTopSQL = "DM TOP SQL" -ApMetaGaussDBProcesslist = "GaussDB 进程列表" -ApMetaGaussDBSlowLog = "GaussDB 慢日志" -ApMetaGoldenDBTopSQL = "GoldenDB TOP SQL" -ApMetaHanaTopSQL = "HANA TOP SQL" -ApMetaHiveSlowLog = "Hive慢日志" ApMetaHuaweiRdsMySQLSlowLog = "华为云RDS MySQL慢日志" ApMetaMDBSlowLog = "慢日志(监控库)" -ApMetaMSSQLTopSQL = "SQL Server TOP SQL" ApMetaMySQLProcesslist = "processlist 列表" ApMetaMySQLSchemaMeta = "库表元数据" -ApMetaMySQLTopSQL = "MySQL TOP SQL" ApMetaObForOracleTopSQL = "OceanBase For Oracle TOP SQL" -ApMetaObForOracleSlowLog = "OceanBase For Oracle 慢日志" -ApMetaProcesslist = "活跃会话" -ApMetaOceanBaseForMySQLFullCollect = "全量采集" -ApMetaOceanBaseForMySQLProcesslist = "processlist 列表" -ApMetaOceanBaseForMySQLSlowLog = "慢日志" -ApMetaOracleProcesslist = "Oracle活跃会话采集" -ApMetaOracleSlowLog = "Oracle慢日志" ApMetaOracleTopSQL = "Oracle TOP SQL" -ApMetaPerformanceCollect = "数据源性能指标" -ApMetaPerformanceCollectTips = "性能指标采集将产生较大性能开销,请谨慎开启。开启后,系统将持续采集该数据源的性能数据(如QPS、连接数等),并生成性能趋势图表,体现在性能洞察页面。" ApMetaPostgreSQLTopSQL = "TOP SQL" -ApMetaPostgreSQLProcesslist = "PostgreSQL活跃会话采集" -ApMetaPostgreSQLSlowLog = "慢日志" -ApMetaQueries = "QPS" -ApMetaSQLServerPerformanceCollect = "SQLServer性能采集" -ApMetaSQLServerPerformanceCollectTips = "定时采集SQLServer实例的连接数和QPS等性能指标" -ApMetaSQLServerProcesslist = "SQLServer活跃会话采集" -ApMetaHanaProcesslist = "HANA Processlist" -ApMetaHanaSlowLog = "HANA 慢日志" -ApMetaHiveProcesslist = "Hive Processlist" -ApMetaSQLServerSlowLog = "SQLServer慢SQL采集" ApMetaSchemaMeta = "库表元数据" ApMetaSlowLog = "慢日志" -ApMetaThreadsConnected = "线程数" ApMetaTiDBAuditLog = "TiDB审计日志" -ApMetaTiDBSlowLog = "TiDB慢日志" -ApMetaTiDBTopSQL = "TiDB TOP SQL" -ApMetaTBaseProcesslist = "TBase 活跃会话采集" -ApMetaTiDBProcesslist = "TiDB Processlist" ApMetaTopSQL = "Top SQL" ApMetricEngine = "引擎" -ApMetricHiveSlowLogDbUser = "执行用户" ApMetricNameActiveTimeTotal = "活动总时间(ms)" ApMetricNameActiveWaitTimeTotal = "活动等待总时间(ms)" ApMetricNameBufferGetCounter = "逻辑读次数" @@ -79,17 +43,14 @@ ApMetricNameChecksum = "校验和" ApMetricNameCounter = "执行次数" ApMetricNameCounterMoreThan = "出现次数 > " ApMetricNameDBUser = "用户" -ApMetricNameDiskMax = "使用的最大硬盘空间" ApMetricNameDiskReadAvg = "平均物理读次数" ApMetricNameDiskReadTotal = "物理读次数" ApMetricNameFirstQueryAt = "首次执行时间" -ApMetricNameFullTableScanCount = "全表扫描次数" ApMetricNameGrantedLockConnectionId = "持有锁连接ID" ApMetricNameGrantedLockId = "持有锁ID" ApMetricNameGrantedLockSql = "持有锁SQL" ApMetricNameGrantedLockTrxId = "持有锁事务ID" ApMetricNameHost = "主机" -ApMetricNameInstance = "节点地址" ApMetricNameIoWaitTimeAvg = "平均IO等待时间(毫秒)" ApMetricNameLastQueryAt = "最后执行时间" ApMetricNameLastReceiveTimestamp = "最后一次匹配到该指纹的时间" @@ -101,11 +62,8 @@ ApMetricNameLockWaitTimeMax = "锁最大等待时间(ms)" ApMetricNameLockWaitTimeTotal = "锁等待时间(ms)" ApMetricNameLogicReadPageTotal = "逻辑读页数" ApMetricNameMaxQueryTime = "最长执行时间(s)" -ApMetricNameMemMax = "使用的最大内存空间" -ApMetricNameMemorySizeTotal = "总内存消耗(MB)" ApMetricNameMetaName = "对象名称" ApMetricNameMetaType = "对象类型" -ApMetricNameNoIndexUsedTotal = "累计未使用索引次数" ApMetricNamePhyReadPageTotal = "物理读页数" ApMetricNameQueryTimeAvg = "平均执行时间(s)" ApMetricNameQueryTimeAvgMS = "平均执行时间(ms)" @@ -114,14 +72,11 @@ ApMetricNameQueryTimeMax = "最长执行时间(s)" ApMetricNameQueryTimeMaxMS = "最长执行时间(ms)" ApMetricNameQueryTimeTotal = "总执行时间(s)" ApMetricNameQueryTimeTotalMS = "总执行时间(ms)" -ApMetricNameQueryTimeTotalUS = "总执行时间(μs)" -ApMetricNameRequestTime = "请求时间" ApMetricNameRowExaminedAvg = "平均扫描行数" ApMetricNameRowExaminedAvgMoreThan = "平均扫描行数 > " ApMetricNameRowsAffectedAvg = "平均影响行数" ApMetricNameRowsAffectedMax = "最大影响行数" ApMetricNameTable = "表名" -ApMetricNameTenantName = "租户名称" ApMetricNameTransactionStarted = "持有锁事务开始时间" ApMetricNameTrxWaitStarted = "等待锁事务开始时间" ApMetricNameUserIOWaitTimeTotal = "I/O等待时间(s)" @@ -131,7 +86,6 @@ ApMetricNameWaitingLockSql = "等待锁SQL" ApMetricNameWaitingLockTrxId = "等待锁事务ID" ApMetricQueryTimeAvg = "平均查询时间(s)" ApMetricRowExaminedAvg = "平均扫描行数" -ApMetricUserClientIP = "客户端IP" ApNum = "数量" ApPriority = "优先级" ApPriorityHigh = "高优先级" @@ -147,18 +101,10 @@ AuditRecordTagIncrement = "增量" ConfigCodingTest = "这是一条测试信息,用来测试SQLE推送事项到Coding平台功能是否正常" ConfigFeishuTestContent = "这是一条测试审批,用来测试SQLE飞书审批功能是否正常" ConfigTestAudit = "测试审批" -DatabaseCompareNotSupportedByDbType = "数据源类型 %s 不支持结构对比,请确认 SQLE 已加载支持 %s 的驱动版本" DefaultRuleTemplatesDesc = "默认规则模板" DefaultTemplatesDesc = "%s 默认模板" -EnumKpiTypeDiskMax = "使用的最大硬盘空间" -EnumKpiTypeExecuteCount = "执行次数" -EnumKpiTypeFullTableScan = "全表扫描次数" -EnumKpiTypeLockWaitTotal = "累计锁等待时间" -EnumKpiTypeMemMax = "使用的最大内存空间" -EnumKpiTypeNoIndexUsedTotal = "累计未使用索引次数" EnumSlowLogFileSource = "从slow.log 文件采集,需要适配scanner" EnumSlowLogTableSource = "从mysql.slow_log 表采集" -EnumkpiTypeQueryTime = "执行时间" ExportCreateTime = "创建时间" ExportCreator = "创建人" ExportDataSource = "数据源" @@ -187,14 +133,6 @@ ExportWorkflowName = "工单名称" ExportWorkflowNumber = "工单编号" FileOrderMethodPrefixNumAsc = "文件名前缀数字升序" FileOrderMethodSuffixNumAsc = "文件名后缀数字升序" -HiveSlowLogErrAuthInvalid = "Hive 数据源 auth 参数值非法。允许的值:`NOSASL` / `NONE` / `LDAP` / `CUSTOM`。请在 SQLE 数据源管理页修正。原始错误:%s" -HiveSlowLogErrColumnMismatch = "Hive 慢日志采集 SQL 执行失败:字段引用错误。可能是 Hive 版本与 SQLE 适配版本(基线 Hive 4.2)存在差异;请把 `SELECT version()` 输出反馈给 SQLE 维护者。原始错误:%s" -HiveSlowLogErrConnectFailed = "Hive 实例连接失败:可能是 HiveServer2 启用了 SASL/LDAP 鉴权而数据源配置的 `auth` 为 `NOSASL`。请在 SQLE 数据源管理页编辑该 Hive 数据源,把 `auth` 改为 `NONE` 或 `LDAP`。原始错误:%s" -HiveSlowLogErrHS2ServerError = "Hive HS2 服务端返回错误。常见原因:1) `sys.query_history` 表不存在 —— 请确认 HS2 的 hive-site.xml 中已配置 `hive.query.history.enabled=true` 并重启 HS2 服务;2) `sys` 库不存在 —— 同上,重启 HS2 后会自动创建;3) Hive 版本与 SQLE 适配基线(Hive 4.2)字段不一致。请查阅 HS2 服务端日志获取详细错误信息。原始错误:%s" -HiveSlowLogErrPluginTransportClosing = "Hive 慢日志采集失败:sqle-hive-plugin 进程异常退出(gRPC 通道关闭,错误信号 `transport is closing`)。最常见的原因是 Hive 数据源 `auth` 参数值非法(plugin 内 gohive 在 `innerConnect` 内 `panic: Unrecognized auth`,进程崩溃后 panic 信息不会跨 gRPC 传递)。请按以下顺序自查:1) 在 SQLE 数据源管理页确认 `auth` 是允许的值:`NOSASL` / `NONE` / `LDAP` / `CUSTOM`;2) 确认 host / port 可达;3) 查阅 plugin / HS2 服务端日志获取 panic 堆栈。原始错误:%s" -HiveSlowLogErrSysDbNotFound = "Hive 实例 `sys` 库不存在。请联系 Hive 平台运维:1) 在 HS2 的 hive-site.xml 中配置 `hive.query.history.enabled=true`;2) 重启 HS2 服务后,HS2 会自动创建 `sys.query_history` 表。原始错误:%s" -HiveSlowLogErrTableNotFound = "Hive 实例 `sys.query_history` 表不存在。HS2 可能未启用 query history。请检查 HS2 配置 `hive.query.history.enabled` 是否为 true,并确认 HS2 已重启。原始错误:%s" -HiveSlowLogErrUnknown = "Hive 慢日志采集失败:%s" LicenseDurationOfRunning = "已运行时长(天)" LicenseEstimatedMaturity = "预计到期时间" LicenseInstanceNum = "实例数" @@ -213,17 +151,15 @@ NotifyManageRecordBodyProj = "所属项目: %v" NotifyManageRecordBodyRecord = "- SQL ID: %v\n- 所在数据源名称: %v\n- 环境属性: %v\n- SQL: %v\n- 触发规则级别: %v\n- SQL审核建议: %v\n================================" NotifyManageRecordBodyTime = "记录时间周期: %v - %v" NotifyManageRecordSubject = "SQL管控记录" -NotifyWorkflowBodyCancel = "🚫 工单已关闭\n" -NotifyWorkflowBodyComplete = "✅ 工单已标记为人工上线\n" NotifyWorkflowBodyConfigUrl = "请在系统设置-全局配置中补充全局url" NotifyWorkflowBodyHead = "\n📋 工单主题: %v\n📍 所属项目: %v\n🆔 工单ID: %v\n📝 工单描述: %v\n👤 申请人: %v\n⏰ 创建时间: %v\n" NotifyWorkflowBodyInstanceAndSchema = "🗄️ 数据源: %v\n📊 Schema: %v\n" NotifyWorkflowBodyInstanceErr = "❌ 获取数据源实例失败: %v\n" NotifyWorkflowBodyLink = "🔗 工单链接: %v" NotifyWorkflowBodyReason = "❌ 驳回原因: %v\n" -NotifyWorkflowBodyReport = "✅ 工单审核得分: %v\n" +NotifyWorkflowBodyReport = "✅ 工单审核得分: %v\n📈 工单审核通过率:%v%%\n" NotifyWorkflowBodyStartEnd = "▶️ 上线开始时间: %v\n◀️ 上线结束时间: %v\n" -NotifyWorkflowBodyWorkFlowErr = "❌ 读取工单任务内容失败,请通过SQLE界面确认工单状态" +NotifyWorkflowBodyWorkFlowErr = "- 读取工单任务内容失败,请通过SQLE界面确认工单状态" OpAuditPlanSave = "创建扫描任务" OpAuditPlanViewOthers = "查看他人创建的扫描任务" OpSqlQueryQuery = "SQL查询" @@ -275,6 +211,31 @@ OprActionUpdateSystemVariables = "修改系统变量" OprActionUpdateUser = "编辑用户" OprActionUpdateWechatConfiguration = "修改微信配置" OprActionUpdateWorkflowTemplate = "编辑流程模版" +OprActionUpdateWorkflow = "更新工单" +OprActionUpdateFeishuAuditConfiguration = "修改飞书审批配置" +OprActionUpdateWechatAuditConfiguration = "修改微信审批配置" +OprActionUpdateCodingConfiguration = "修改Coding配置" +OprActionCreateAuditWhitelist = "创建审核SQL例外" +OprActionUpdateAuditWhitelist = "更新审核SQL例外" +OprActionDeleteAuditWhitelist = "删除审核SQL例外" +OprActionCreateBlacklist = "创建黑名单" +OprActionUpdateBlacklist = "更新黑名单" +OprActionDeleteBlacklist = "删除黑名单" +OprActionUpdateReportPushConfig = "修改报告推送配置" +OprActionCreateCustomRule = "创建自定义规则" +OprActionUpdateCustomRule = "更新自定义规则" +OprActionDeleteCustomRule = "删除自定义规则" +OprActionCreateSqlVersion = "创建SQL版本" +OprActionUpdateSqlVersion = "更新SQL版本" +OprActionDeleteSqlVersion = "删除SQL版本" +OprActionLockSqlVersion = "锁定SQL版本" +OprActionCreateInstanceAuditPlan = "创建数据源扫描任务" +OprActionUpdateInstanceAuditPlan = "更新数据源扫描任务" +OprActionDeleteInstanceAuditPlan = "删除数据源扫描任务" +OprActionCreatePipeline = "创建流水线" +OprActionUpdatePipeline = "更新流水线" +OprActionDeletePipeline = "删除流水线" +OprActionGenSSHKey = "生成SSH密钥" OprAddAuditPlanWithName = "创建智能扫描任务,任务名:%v" OprAddAuditWhitelist = "添加审核SQL例外" OprAddBlacklist = "添加管控SQL例外" @@ -336,6 +297,14 @@ OprTypeGlobalUser = "平台用户" OprTypeInstance = "数据源" OprTypeProject = "项目" OprTypeProjectMember = "项目成员" +OprTypeAuditWhitelist = "审核SQL例外" +OprTypeBlacklist = "黑名单" +OprTypeReportPush = "报告推送" +OprTypeCustomRule = "自定义规则" +OprTypeSqlVersion = "SQL版本" +OprTypeInstanceAuditPlan = "数据源扫描任务" +OprTypePipeline = "流水线" +OprTypeRuleKnowledge = "规则知识库" OprTypeProjectRuleTemplate = "项目规则模板" OprTypeSystemConfiguration = "系统配置" OprTypeWorkflow = "工单" @@ -353,20 +322,14 @@ ParamDBInstanceId = "实例ID" ParamFirstCollectDurationWithMaxDays = "启动任务时拉取日志时间范围(单位:小时,最大%d天)" ParamFirstSqlsScrappedHours = "启动任务时拉取慢日志时间范围(单位:小时,仅对 mysql.slow_log 有效)" ParamIndicator = "关注指标" -ParamInstance = "节点地址(0 代表所有节点)" ParamOrderByColumn = "V$SQLAREA中的排序字段" ParamOrderByColumnGeneric = "排序字段" ParamProjectId = "项目ID" ParamRdsPath = "RDS Open API地址" ParamRegion = "当前RDS实例所在的地区(示例:cn-east-2)" ParamSQLMinSecond = "SQL 最小执行时间(秒)" -ParamSlowSqlThreshold = "慢SQL判定时间阈值(秒)" -ParamFirstSqlsScrappedHoursGeneric = "启动任务时拉取慢日志时间范围(单位:小时)" ParamSlowLogCollectInput = "采集来源" -ParamTimeSpan = "时间跨度(小时)" ParamTopN = "Top N" -ParamPgSlowSQLMinSecond = "慢SQL阈值(秒)" -ParamkpiType = "指标" PipelineCmdUsage = "#使用方法#\n1. 确保运行该命令的用户具有scannerd的执行权限。\n2. 在scannerd文件所在目录执行启动命令。\n#启动命令#\n" RuleLevelError = "错误" RuleLevelNormal = "常规" @@ -431,8 +394,6 @@ TaskStatusExecuteSucceeded = "上线成功" TaskStatusExecuting = "正在上线" TaskStatusManuallyExecuted = "手动上线" WordIs = "为" -WorkflowNotifyTypeCancel = "SQL工单已关闭" -WorkflowNotifyTypeComplete = "SQL工单标记为人工上线" WorkflowNotifyTypeDefault = "SQL工单未知请求" WorkflowNotifyTypeExecuteFail = "SQL工单上线失败" WorkflowNotifyTypeExecuteSuccess = "SQL工单上线成功" diff --git a/sqle/locale/message_zh.go b/sqle/locale/message_zh.go index 876ce9508..771aec602 100644 --- a/sqle/locale/message_zh.go +++ b/sqle/locale/message_zh.go @@ -283,6 +283,31 @@ var ( OprActionDeleteMemberGroup = &i18n.Message{ID: "OprActionDeleteMemberGroup", Other: "删除成员组"} OprActionUpdateMember = &i18n.Message{ID: "OprActionUpdateMember", Other: "编辑成员"} OprActionUpdateMemberGroup = &i18n.Message{ID: "OprActionUpdateMemberGroup", Other: "编辑成员组"} + OprActionUpdateWorkflow = &i18n.Message{ID: "OprActionUpdateWorkflow", Other: "更新工单"} + OprActionUpdateFeishuAuditConfiguration = &i18n.Message{ID: "OprActionUpdateFeishuAuditConfiguration", Other: "修改飞书审批配置"} + OprActionUpdateWechatAuditConfiguration = &i18n.Message{ID: "OprActionUpdateWechatAuditConfiguration", Other: "修改微信审批配置"} + OprActionUpdateCodingConfiguration = &i18n.Message{ID: "OprActionUpdateCodingConfiguration", Other: "修改Coding配置"} + OprActionCreateAuditWhitelist = &i18n.Message{ID: "OprActionCreateAuditWhitelist", Other: "创建审核SQL例外"} + OprActionUpdateAuditWhitelist = &i18n.Message{ID: "OprActionUpdateAuditWhitelist", Other: "更新审核SQL例外"} + OprActionDeleteAuditWhitelist = &i18n.Message{ID: "OprActionDeleteAuditWhitelist", Other: "删除审核SQL例外"} + OprActionCreateBlacklist = &i18n.Message{ID: "OprActionCreateBlacklist", Other: "创建黑名单"} + OprActionUpdateBlacklist = &i18n.Message{ID: "OprActionUpdateBlacklist", Other: "更新黑名单"} + OprActionDeleteBlacklist = &i18n.Message{ID: "OprActionDeleteBlacklist", Other: "删除黑名单"} + OprActionUpdateReportPushConfig = &i18n.Message{ID: "OprActionUpdateReportPushConfig", Other: "修改报告推送配置"} + OprActionCreateCustomRule = &i18n.Message{ID: "OprActionCreateCustomRule", Other: "创建自定义规则"} + OprActionUpdateCustomRule = &i18n.Message{ID: "OprActionUpdateCustomRule", Other: "更新自定义规则"} + OprActionDeleteCustomRule = &i18n.Message{ID: "OprActionDeleteCustomRule", Other: "删除自定义规则"} + OprActionCreateSqlVersion = &i18n.Message{ID: "OprActionCreateSqlVersion", Other: "创建SQL版本"} + OprActionUpdateSqlVersion = &i18n.Message{ID: "OprActionUpdateSqlVersion", Other: "更新SQL版本"} + OprActionDeleteSqlVersion = &i18n.Message{ID: "OprActionDeleteSqlVersion", Other: "删除SQL版本"} + OprActionLockSqlVersion = &i18n.Message{ID: "OprActionLockSqlVersion", Other: "锁定SQL版本"} + OprActionCreateInstanceAuditPlan = &i18n.Message{ID: "OprActionCreateInstanceAuditPlan", Other: "创建数据源扫描任务"} + OprActionUpdateInstanceAuditPlan = &i18n.Message{ID: "OprActionUpdateInstanceAuditPlan", Other: "更新数据源扫描任务"} + OprActionDeleteInstanceAuditPlan = &i18n.Message{ID: "OprActionDeleteInstanceAuditPlan", Other: "删除数据源扫描任务"} + OprActionCreatePipeline = &i18n.Message{ID: "OprActionCreatePipeline", Other: "创建流水线"} + OprActionUpdatePipeline = &i18n.Message{ID: "OprActionUpdatePipeline", Other: "更新流水线"} + OprActionDeletePipeline = &i18n.Message{ID: "OprActionDeletePipeline", Other: "删除流水线"} + OprActionGenSSHKey = &i18n.Message{ID: "OprActionGenSSHKey", Other: "生成SSH密钥"} OprOperationTime = &i18n.Message{ID: "OprOperationTime", Other: "操作时间"} OprOperationProjectName = &i18n.Message{ID: "OprOperationProjectName", Other: "项目"} @@ -301,6 +326,14 @@ var ( OprTypeGlobalRuleTemplate = &i18n.Message{ID: "OprTypeGlobalRuleTemplate", Other: "全局规则模板"} OprTypeSystemConfiguration = &i18n.Message{ID: "OprTypeSystemConfiguration", Other: "系统配置"} OprTypeProjectMember = &i18n.Message{ID: "OprTypeProjectMember", Other: "项目成员"} + OprTypeAuditWhitelist = &i18n.Message{ID: "OprTypeAuditWhitelist", Other: "审核SQL例外"} + OprTypeBlacklist = &i18n.Message{ID: "OprTypeBlacklist", Other: "黑名单"} + OprTypeReportPush = &i18n.Message{ID: "OprTypeReportPush", Other: "报告推送"} + OprTypeCustomRule = &i18n.Message{ID: "OprTypeCustomRule", Other: "自定义规则"} + OprTypeSqlVersion = &i18n.Message{ID: "OprTypeSqlVersion", Other: "SQL版本"} + OprTypeInstanceAuditPlan = &i18n.Message{ID: "OprTypeInstanceAuditPlan", Other: "数据源扫描任务"} + OprTypePipeline = &i18n.Message{ID: "OprTypePipeline", Other: "流水线"} + OprTypeRuleKnowledge = &i18n.Message{ID: "OprTypeRuleKnowledge", Other: "规则知识库"} OprStatusSucceeded = &i18n.Message{ID: "OprStatusSucceeded", Other: "成功"} OprStatusFailed = &i18n.Message{ID: "OprStatusFailed", Other: "失败"} @@ -349,14 +382,12 @@ var ( ApMetricNameGrantedLockSql = &i18n.Message{ID: "ApMetricNameGrantedLockSql", Other: "持有锁SQL"} ApMetricNameWaitingLockSql = &i18n.Message{ID: "ApMetricNameWaitingLockSql", Other: "等待锁SQL"} ApMetricNameDBUser = &i18n.Message{ID: "ApMetricNameDBUser", Other: "用户"} - ApMetricUserClientIP = &i18n.Message{ID: "ApMetricUserClientIP", Other: "客户端IP"} ApMetricNameHost = &i18n.Message{ID: "ApMetricNameHost", Other: "主机"} ApMetricNameMetaName = &i18n.Message{ID: "ApMetricNameMetaName", Other: "对象名称"} ApMetricNameMetaType = &i18n.Message{ID: "ApMetricNameMetaType", Other: "对象类型"} ApMetricNameQueryTimeTotal = &i18n.Message{ID: "ApMetricNameQueryTimeTotal", Other: "总执行时间(s)"} ApMetricNameQueryTimeAvg = &i18n.Message{ID: "ApMetricNameQueryTimeAvg", Other: "平均执行时间(s)"} ApMetricNameQueryTimeTotalMS = &i18n.Message{ID: "ApMetricNameQueryTimeTotalMS", Other: "总执行时间(ms)"} - ApMetricNameQueryTimeTotalUS = &i18n.Message{ID: "ApMetricNameQueryTimeTotalUS", Other: "总执行时间(μs)"} ApMetricNameQueryTimeAvgMS = &i18n.Message{ID: "ApMetricNameQueryTimeAvgMS", Other: "平均执行时间(ms)"} ApMetricNameCounter = &i18n.Message{ID: "ApMetricNameCounter", Other: "执行次数"} ApMetricNameCPUTimeAvg = &i18n.Message{ID: "ApMetricNameCPUTimeAvg", Other: "平均 CPU 时间(μs)"} @@ -368,7 +399,6 @@ var ( ApMetricNameActiveTimeTotal = &i18n.Message{ID: "ApMetricNameActiveTimeTotal", Other: "活动总时间(ms)"} ApMetricNameLastReceiveTimestamp = &i18n.Message{ID: "ApMetricNameLastReceiveTimestamp", Other: "最后一次匹配到该指纹的时间"} ApMetricNameCPUTimeTotal = &i18n.Message{ID: "ApMetricNameCPUTimeTotal", Other: "CPU时间占用(s)"} - ApMetricNameMemorySizeTotal = &i18n.Message{ID: "ApMetricNameMemorySizeTotal", Other: "总内存消耗(MB)"} ApMetricNamePhyReadPageTotal = &i18n.Message{ID: "ApMetricNamePhyReadPageTotal", Other: "物理读页数"} ApMetricNameLogicReadPageTotal = &i18n.Message{ID: "ApMetricNameLogicReadPageTotal", Other: "逻辑读页数"} ApMetricNameQueryTimeMax = &i18n.Message{ID: "ApMetricNameQueryTimeMax", Other: "最长执行时间(s)"} @@ -386,84 +416,37 @@ var ( ApMetricNameRowsAffectedMax = &i18n.Message{ID: "ApMetricNameRowsAffectedMax", Other: "最大影响行数"} ApMetricNameRowsAffectedAvg = &i18n.Message{ID: "ApMetricNameRowsAffectedAvg", Other: "平均影响行数"} ApMetricNameChecksum = &i18n.Message{ID: "ApMetricNameChecksum", Other: "校验和"} - ApMetricNameNoIndexUsedTotal = &i18n.Message{ID: "ApMetricNameNoIndexUsedTotal", Other: "累计未使用索引次数"} ApMetricNameCounterMoreThan = &i18n.Message{ID: "ApMetricNameCounterMoreThan", Other: "出现次数 > "} ApMetricNameQueryTimeAvgMoreThan = &i18n.Message{ID: "ApMetricNameQueryTimeAvgMoreThan", Other: "平均执行时间(s) > "} ApMetricNameRowExaminedAvgMoreThan = &i18n.Message{ID: "ApMetricNameRowExaminedAvgMoreThan", Other: "平均扫描行数 > "} - ApMetricNameInstance = &i18n.Message{ID: "ApMetricNameInstance", Other: "节点地址"} - ApMetricNameMemMax = &i18n.Message{ID: "ApMetricNameMemMax", Other: "使用的最大内存空间"} - ApMetricNameDiskMax = &i18n.Message{ID: "ApMetricNameDiskMax", Other: "使用的最大硬盘空间"} - ApMetricNameTenantName = &i18n.Message{ID: "ApMetricNameTenantName", Other: "租户名称"} - ApMetricNameRequestTime = &i18n.Message{ID: "ApMetricNameRequestTime", Other: "请求时间"} - - ApMetaCustom = &i18n.Message{ID: "ApMetaCustom", Other: "自定义"} - ApMetaSlowLog = &i18n.Message{ID: "ApMetaSlowLog", Other: "慢日志"} - ApMetaMDBSlowLog = &i18n.Message{ID: "ApMetaMDBSlowLog", Other: "慢日志(监控库)"} - ApMetaTopSQL = &i18n.Message{ID: "ApMetaTopSQL", Other: "Top SQL"} - ApMetaSchemaMeta = &i18n.Message{ID: "ApMetaSchemaMeta", Other: "库表元数据"} - ApMetaProcesslist = &i18n.Message{ID: "ApMetaProcesslist", Other: "活跃会话"} - ApMetaAllAppExtract = &i18n.Message{ID: "ApMetaAllAppExtract", Other: "应用程序SQL抓取"} - ApMetaDistributedLock = &i18n.Message{ID: "ApMetaDistributedLock", Other: "分布式锁"} - ApMetaPerformanceCollect = &i18n.Message{ID: "ApMetaPerformanceCollect", Other: "数据源性能指标"} - - ApMetaMySQLSchemaMeta = &i18n.Message{ID: "ApMetaMySQLSchemaMeta", Other: "库表元数据"} - ApMetaMySQLProcesslist = &i18n.Message{ID: "ApMetaMySQLProcesslist", Other: "processlist 列表"} - ApMetaAliRdsMySQLSlowLog = &i18n.Message{ID: "ApMetaAliRdsMySQLSlowLog", Other: "阿里RDS MySQL慢日志"} - ApMetaAliRdsMySQLAuditLog = &i18n.Message{ID: "ApMetaAliRdsMySQLAuditLog", Other: "阿里RDS MySQL审计日志"} - ApMetaBaiduRdsMySQLSlowLog = &i18n.Message{ID: "ApMetaBaiduRdsMySQLSlowLog", Other: "百度云RDS MySQL慢日志"} - ApMetaHiveSlowLog = &i18n.Message{ID: "ApMetaHiveSlowLog", Other: "Hive慢日志"} - ApMetaHuaweiRdsMySQLSlowLog = &i18n.Message{ID: "ApMetaHuaweiRdsMySQLSlowLog", Other: "华为云RDS MySQL慢日志"} - ApMetaOracleTopSQL = &i18n.Message{ID: "ApMetaOracleTopSQL", Other: "Oracle TOP SQL"} - ApMetaOracleSlowLog = &i18n.Message{ID: "ApMetaOracleSlowLog", Other: "Oracle慢日志"} - ApMetaOracleProcesslist = &i18n.Message{ID: "ApMetaOracleProcesslist", Other: "Oracle活跃会话采集"} - ApMetaTiDBAuditLog = &i18n.Message{ID: "ApMetaTiDBAuditLog", Other: "TiDB审计日志"} - ApMetaDB2TopSQL = &i18n.Message{ID: "ApMetaDB2TopSQL", Other: "DB2 Top SQL"} - ApMetaDB2SlowLog = &i18n.Message{ID: "ApMetaDB2SlowLog", Other: "DB2慢日志"} - ApMetaDmTopSQL = &i18n.Message{ID: "ApMetaDmTopSQL", Other: "DM TOP SQL"} - ApMetaDmSlowLog = &i18n.Message{ID: "ApMetaDmSlowLog", Other: "DM慢日志"} - ApMetaDmProcesslist = &i18n.Message{ID: "ApMetaDmProcesslist", Other: "DM ProcessList"} - ApMetaHanaTopSQL = &i18n.Message{ID: "ApMetaHanaTopSQL", Other: "HANA TOP SQL"} - ApMetaObForOracleTopSQL = &i18n.Message{ID: "ApMetaObForOracleTopSQL", Other: "OceanBase For Oracle TOP SQL"} - ApMetaObForOracleSlowLog = &i18n.Message{ID: "ApMetaObForOracleSlowLog", Other: "OceanBase For Oracle 慢日志"} - ApMetaObForOracleProcesslist = &i18n.Message{ID: "ApMetaObForOracleProcesslist", Other: "OceanBase For Oracle 活跃会话采集"} - ApMetaOceanBaseForMySQLFullCollect = &i18n.Message{ID: "ApMetaOceanBaseForMySQLFullCollect", Other: "全量采集"} - ApMetaOceanBaseForMySQLSlowLog = &i18n.Message{ID: "ApMetaOceanBaseForMySQLSlowLog", Other: "慢日志"} - ApMetaOceanBaseForMySQLProcesslist = &i18n.Message{ID: "ApMetaOceanBaseForMySQLProcesslist", Other: "processlist 列表"} - ApMetaPostgreSQLTopSQL = &i18n.Message{ID: "ApMetaPostgreSQLTopSQL", Other: "TOP SQL"} - ApMetaPostgreSQLSlowLog = &i18n.Message{ID: "ApMetaPostgreSQLSlowLog", Other: "慢日志"} - ApMetaPostgreSQLProcesslist = &i18n.Message{ID: "ApMetaPostgreSQLProcesslist", Other: "PostgreSQL活跃会话采集"} - ApMetaGaussDBProcesslist = &i18n.Message{ID: "ApMetaGaussDBProcesslist", Other: "GaussDB 进程列表"} - ApMetaGaussDBSlowLog = &i18n.Message{ID: "ApMetaGaussDBSlowLog", Other: "GaussDB 慢日志"} - ApMetaTBaseProcesslist = &i18n.Message{ID: "ApMetaTBaseProcesslist", Other: "TBase 活跃会话采集"} - ApMetaGoldenDBTopSQL = &i18n.Message{ID: "ApMetaGoldenDBTopSQL", Other: "GoldenDB TOP SQL"} - ApMetaTiDBTopSQL = &i18n.Message{ID: "ApMetaTiDBTopSQL", Other: "TiDB TOP SQL"} - ApMetaTiDBSlowLog = &i18n.Message{ID: "ApMetaTiDBSlowLog", Other: "TiDB慢日志"} - ApMetaTiDBProcesslist = &i18n.Message{ID: "ApMetaTiDBProcesslist", Other: "TiDB Processlist"} - ApMetaMySQLTopSQL = &i18n.Message{ID: "ApMetaMySQLTopSQL", Other: "MySQL TOP SQL"} - ApMetaMSSQLTopSQL = &i18n.Message{ID: "ApMetaMSSQLTopSQL", Other: "SQL Server TOP SQL"} - ApMetricQueryTimeAvg = &i18n.Message{ID: "ApMetricQueryTimeAvg", Other: "平均查询时间(s)"} - ApMetricRowExaminedAvg = &i18n.Message{ID: "ApMetricRowExaminedAvg", Other: "平均扫描行数"} - ApMetricHiveSlowLogDbUser = &i18n.Message{ID: "ApMetricHiveSlowLogDbUser", Other: "执行用户"} - ApMetaPerformanceCollectTips = &i18n.Message{ID: "ApMetaPerformanceCollectTips", Other: "性能指标采集将产生较大性能开销,请谨慎开启。开启后,系统将持续采集该数据源的性能数据(如QPS、连接数等),并生成性能趋势图表,体现在性能洞察页面。"} - ApMetaSQLServerPerformanceCollect = &i18n.Message{ID: "ApMetaSQLServerPerformanceCollect", Other: "SQLServer性能采集"} - ApMetaSQLServerPerformanceCollectTips = &i18n.Message{ID: "ApMetaSQLServerPerformanceCollectTips", Other: "定时采集SQLServer实例的连接数和QPS等性能指标"} - ApMetaSQLServerSlowLog = &i18n.Message{ID: "ApMetaSQLServerSlowLog", Other: "SQLServer慢SQL采集"} - ApMetaSQLServerProcesslist = &i18n.Message{ID: "ApMetaSQLServerProcesslist", Other: "SQLServer活跃会话采集"} - ApMetaHanaProcesslist = &i18n.Message{ID: "ApMetaHanaProcesslist", Other: "HANA Processlist"} - ApMetaHanaSlowLog = &i18n.Message{ID: "ApMetaHanaSlowLog", Other: "HANA 慢日志"} - ApMetaHiveProcesslist = &i18n.Message{ID: "ApMetaHiveProcesslist", Other: "Hive Processlist"} - ApMetaCollectTime = &i18n.Message{ID: "ApMetaCollectTime", Other: "采集时间"} - ApMetaThreadsConnected = &i18n.Message{ID: "ApMetaThreadsConnected", Other: "线程数"} - ApMetaQPS = &i18n.Message{ID: "ApMetaQueries", Other: "QPS"} - ApMetricNameFullTableScanCount = &i18n.Message{ID: "ApMetricNameFullTableScanCount", Other: "全表扫描次数"} + ApMetaCustom = &i18n.Message{ID: "ApMetaCustom", Other: "自定义"} + ApMetaMySQLSchemaMeta = &i18n.Message{ID: "ApMetaMySQLSchemaMeta", Other: "库表元数据"} + ApMetaMySQLProcesslist = &i18n.Message{ID: "ApMetaMySQLProcesslist", Other: "processlist 列表"} + ApMetaAliRdsMySQLSlowLog = &i18n.Message{ID: "ApMetaAliRdsMySQLSlowLog", Other: "阿里RDS MySQL慢日志"} + ApMetaAliRdsMySQLAuditLog = &i18n.Message{ID: "ApMetaAliRdsMySQLAuditLog", Other: "阿里RDS MySQL审计日志"} + ApMetaBaiduRdsMySQLSlowLog = &i18n.Message{ID: "ApMetaBaiduRdsMySQLSlowLog", Other: "百度云RDS MySQL慢日志"} + ApMetaHuaweiRdsMySQLSlowLog = &i18n.Message{ID: "ApMetaHuaweiRdsMySQLSlowLog", Other: "华为云RDS MySQL慢日志"} + ApMetaOracleTopSQL = &i18n.Message{ID: "ApMetaOracleTopSQL", Other: "Oracle TOP SQL"} + ApMetaAllAppExtract = &i18n.Message{ID: "ApMetaAllAppExtract", Other: "应用程序SQL抓取"} + ApMetaTiDBAuditLog = &i18n.Message{ID: "ApMetaTiDBAuditLog", Other: "TiDB审计日志"} + ApMetaSlowLog = &i18n.Message{ID: "ApMetaSlowLog", Other: "慢日志"} + ApMetaMDBSlowLog = &i18n.Message{ID: "ApMetaMDBSlowLog", Other: "慢日志(监控库)"} + ApMetaTopSQL = &i18n.Message{ID: "ApMetaTopSQL", Other: "Top SQL"} + ApMetaDB2TopSQL = &i18n.Message{ID: "ApMetaDB2TopSQL", Other: "DB2 Top SQL"} + ApMetaSchemaMeta = &i18n.Message{ID: "ApMetaSchemaMeta", Other: "库表元数据"} + ApMetaDistributedLock = &i18n.Message{ID: "ApMetaDistributedLock", Other: "分布式锁"} + ApMetaDmTopSQL = &i18n.Message{ID: "ApMetaDmTopSQL", Other: "DM TOP SQL"} + ApMetaObForOracleTopSQL = &i18n.Message{ID: "ApMetaObForOracleTopSQL", Other: "OceanBase For Oracle TOP SQL"} + ApMetaPostgreSQLTopSQL = &i18n.Message{ID: "ApMetaPostgreSQLTopSQL", Other: "TOP SQL"} + ApMetricQueryTimeAvg = &i18n.Message{ID: "ApMetricQueryTimeAvg", Other: "平均查询时间(s)"} + ApMetricRowExaminedAvg = &i18n.Message{ID: "ApMetricRowExaminedAvg", Other: "平均扫描行数"} ApPriorityHigh = &i18n.Message{ID: "ApPriorityHigh", Other: "高优先级"} ParamCollectIntervalMinute = &i18n.Message{ID: "ParamCollectIntervalMinute", Other: "采集周期(分钟)"} ParamTopN = &i18n.Message{ID: "ParamTopN", Other: "Top N"} - ParamPgSlowSQLMinSecond = &i18n.Message{ID: "ParamPgSlowSQLMinSecond", Other: "慢SQL阈值(秒)"} ParamIndicator = &i18n.Message{ID: "ParamIndicator", Other: "关注指标"} ParamCollectIntervalMinuteMySQL = &i18n.Message{ID: "ParamCollectIntervalMinuteMySQL", Other: "采集周期(分钟,仅对 mysql.slow_log 有效)"} ParamSlowLogCollectInput = &i18n.Message{ID: "ParamSlowLogCollectInput", Other: "采集来源"} @@ -473,8 +456,6 @@ var ( ParamOrderByColumnGeneric = &i18n.Message{ID: "ParamOrderByColumnGeneric", Other: "排序字段"} ParamCollectIntervalSecond = &i18n.Message{ID: "ParamCollectIntervalSecond", Other: "采集周期(秒)"} ParamSQLMinSecond = &i18n.Message{ID: "ParamSQLMinSecond", Other: "SQL 最小执行时间(秒)"} - ParamSlowSqlThreshold = &i18n.Message{ID: "ParamSlowSqlThreshold", Other: "慢SQL判定时间阈值(秒)"} - ParamFirstSqlsScrappedHoursGeneric = &i18n.Message{ID: "ParamFirstSqlsScrappedHoursGeneric", Other: "启动任务时拉取慢日志时间范围(单位:小时)"} ParamCollectView = &i18n.Message{ID: "ParamCollectView", Other: "是否采集视图信息"} ParamDBInstanceId = &i18n.Message{ID: "ParamDBInstanceId", Other: "实例ID"} ParamAccessKeyId = &i18n.Message{ID: "ParamAccessKeyId", Other: "Access Key ID"} @@ -483,17 +464,6 @@ var ( ParamRdsPath = &i18n.Message{ID: "ParamRdsPath", Other: "RDS Open API地址"} ParamProjectId = &i18n.Message{ID: "ParamProjectId", Other: "项目ID"} ParamRegion = &i18n.Message{ID: "ParamRegion", Other: "当前RDS实例所在的地区(示例:cn-east-2)"} - ParamTimeSpan = &i18n.Message{ID: "ParamTimeSpan", Other: "时间跨度(小时)"} - ParamInstance = &i18n.Message{ID: "ParamInstance", Other: "节点地址(0 代表所有节点)"} - ParamKpiType = &i18n.Message{ID: "ParamkpiType", Other: "指标"} - - EnumKpiTypeQueryTime = &i18n.Message{ID: "EnumkpiTypeQueryTime", Other: "执行时间"} - EnumKpiTypeMemMax = &i18n.Message{ID: "EnumKpiTypeMemMax", Other: "使用的最大内存空间"} - EnumKpiTypeDiskMax = &i18n.Message{ID: "EnumKpiTypeDiskMax", Other: "使用的最大硬盘空间"} - EnumKpiTypeExecuteCount = &i18n.Message{ID: "EnumKpiTypeExecuteCount", Other: "执行次数"} - EnumKpiTypeFullTableScanCount = &i18n.Message{ID: "EnumKpiTypeFullTableScan", Other: "全表扫描次数"} - EnumKpiTypeLockWaitTotal = &i18n.Message{ID: "EnumKpiTypeLockWaitTotal", Other: "累计锁等待时间"} - EnumKpiTypeNoIndexUsedTotal = &i18n.Message{ID: "EnumKpiTypeNoIndexUsedTotal", Other: "累计未使用索引次数"} EnumSlowLogFileSource = &i18n.Message{ID: "EnumSlowLogFileSource", Other: "从slow.log 文件采集,需要适配scanner"} EnumSlowLogTableSource = &i18n.Message{ID: "EnumSlowLogTableSource", Other: "从mysql.slow_log 表采集"} @@ -503,20 +473,9 @@ var ( OperatorLessThan = &i18n.Message{ID: "OperatorLessThan", Other: "小于"} OperationParamAuditLevel = &i18n.Message{ID: "OperationParamAuditLevel", Other: "触发审核级别"} - - HiveSlowLogErrSysDbNotFound = &i18n.Message{ID: "HiveSlowLogErrSysDbNotFound", Other: "Hive 实例 `sys` 库不存在。请联系 Hive 平台运维:1) 在 HS2 的 hive-site.xml 中配置 `hive.query.history.enabled=true`;2) 重启 HS2 服务后,HS2 会自动创建 `sys.query_history` 表。原始错误:%s"} - HiveSlowLogErrTableNotFound = &i18n.Message{ID: "HiveSlowLogErrTableNotFound", Other: "Hive 实例 `sys.query_history` 表不存在。HS2 可能未启用 query history。请检查 HS2 配置 `hive.query.history.enabled` 是否为 true,并确认 HS2 已重启。原始错误:%s"} - HiveSlowLogErrColumnMismatch = &i18n.Message{ID: "HiveSlowLogErrColumnMismatch", Other: "Hive 慢日志采集 SQL 执行失败:字段引用错误。可能是 Hive 版本与 SQLE 适配版本(基线 Hive 4.2)存在差异;请把 `SELECT version()` 输出反馈给 SQLE 维护者。原始错误:%s"} - HiveSlowLogErrConnectFailed = &i18n.Message{ID: "HiveSlowLogErrConnectFailed", Other: "Hive 实例连接失败:可能是 HiveServer2 启用了 SASL/LDAP 鉴权而数据源配置的 `auth` 为 `NOSASL`。请在 SQLE 数据源管理页编辑该 Hive 数据源,把 `auth` 改为 `NONE` 或 `LDAP`。原始错误:%s"} - HiveSlowLogErrAuthInvalid = &i18n.Message{ID: "HiveSlowLogErrAuthInvalid", Other: "Hive 数据源 auth 参数值非法。允许的值:`NOSASL` / `NONE` / `LDAP` / `CUSTOM`。请在 SQLE 数据源管理页修正。原始错误:%s"} - HiveSlowLogErrHS2ServerError = &i18n.Message{ID: "HiveSlowLogErrHS2ServerError", Other: "Hive HS2 服务端返回错误。常见原因:1) `sys.query_history` 表不存在 —— 请确认 HS2 的 hive-site.xml 中已配置 `hive.query.history.enabled=true` 并重启 HS2 服务;2) `sys` 库不存在 —— 同上,重启 HS2 后会自动创建;3) Hive 版本与 SQLE 适配基线(Hive 4.2)字段不一致。请查阅 HS2 服务端日志获取详细错误信息。原始错误:%s"} - HiveSlowLogErrPluginTransportClosing = &i18n.Message{ID: "HiveSlowLogErrPluginTransportClosing", Other: "Hive 慢日志采集失败:sqle-hive-plugin 进程异常退出(gRPC 通道关闭,错误信号 `transport is closing`)。最常见的原因是 Hive 数据源 `auth` 参数值非法(plugin 内 gohive 在 `innerConnect` 内 `panic: Unrecognized auth`,进程崩溃后 panic 信息不会跨 gRPC 传递)。请按以下顺序自查:1) 在 SQLE 数据源管理页确认 `auth` 是允许的值:`NOSASL` / `NONE` / `LDAP` / `CUSTOM`;2) 确认 host / port 可达;3) 查阅 plugin / HS2 服务端日志获取 panic 堆栈。原始错误:%s"} - HiveSlowLogErrUnknown = &i18n.Message{ID: "HiveSlowLogErrUnknown", Other: "Hive 慢日志采集失败:%s"} ) -var ( - PipelineCmdUsage = &i18n.Message{ID: "PipelineCmdUsage", Other: "#使用方法#\n1. 确保运行该命令的用户具有scannerd的执行权限。\n2. 在scannerd文件所在目录执行启动命令。\n#启动命令#\n"} -) +var PipelineCmdUsage = &i18n.Message{ID: "PipelineCmdUsage", Other: "#使用方法#\n1. 确保运行该命令的用户具有scannerd的执行权限。\n2. 在scannerd文件所在目录执行启动命令。\n#启动命令#\n"} // notification var ( @@ -526,8 +485,6 @@ var ( NotifyWorkflowNotifyTypeReject = &i18n.Message{ID: "WorkflowNotifyTypeReject", Other: "SQL工单已被驳回"} NotifyWorkflowNotifyTypeExecuteSuccess = &i18n.Message{ID: "WorkflowNotifyTypeExecuteSuccess", Other: "SQL工单上线成功"} NotifyWorkflowNotifyTypeExecuteFail = &i18n.Message{ID: "WorkflowNotifyTypeExecuteFail", Other: "SQL工单上线失败"} - NotifyWorkflowNotifyTypeComplete = &i18n.Message{ID: "WorkflowNotifyTypeComplete", Other: "SQL工单标记为人工上线"} - NotifyWorkflowNotifyTypeCancel = &i18n.Message{ID: "WorkflowNotifyTypeCancel", Other: "SQL工单已关闭"} NotifyWorkflowNotifyTypeDefault = &i18n.Message{ID: "WorkflowNotifyTypeDefault", Other: "SQL工单未知请求"} NotifyAuditPlanSubject = &i18n.Message{ID: "NotifyAuditPlanSubject", Other: "SQLE扫描任务[%v]扫描结果[%v]"} @@ -541,26 +498,12 @@ var ( NotifyManageRecordBodyProj = &i18n.Message{ID: "NotifyManageRecordBodyProj", Other: "所属项目: %v"} NotifyWorkflowBodyHead = &i18n.Message{ID: "NotifyWorkflowBodyHead", Other: "\n📋 工单主题: %v\n📍 所属项目: %v\n🆔 工单ID: %v\n📝 工单描述: %v\n👤 申请人: %v\n⏰ 创建时间: %v\n"} - NotifyWorkflowBodyWorkFlowErr = &i18n.Message{ID: "NotifyWorkflowBodyWorkFlowErr", Other: "❌ 读取工单任务内容失败,请通过SQLE界面确认工单状态"} + NotifyWorkflowBodyWorkFlowErr = &i18n.Message{ID: "NotifyWorkflowBodyWorkFlowErr", Other: "- 读取工单任务内容失败,请通过SQLE界面确认工单状态"} NotifyWorkflowBodyLink = &i18n.Message{ID: "NotifyWorkflowBodyLink", Other: "🔗 工单链接: %v"} NotifyWorkflowBodyConfigUrl = &i18n.Message{ID: "NotifyWorkflowBodyConfigUrl", Other: "请在系统设置-全局配置中补充全局url"} NotifyWorkflowBodyInstanceErr = &i18n.Message{ID: "NotifyWorkflowBodyInstanceErr", Other: "❌ 获取数据源实例失败: %v\n"} NotifyWorkflowBodyInstanceAndSchema = &i18n.Message{ID: "NotifyWorkflowBodyInstanceAndSchema", Other: "🗄️ 数据源: %v\n📊 Schema: %v\n"} NotifyWorkflowBodyStartEnd = &i18n.Message{ID: "NotifyWorkflowBodyStartEnd", Other: "▶️ 上线开始时间: %v\n◀️ 上线结束时间: %v\n"} NotifyWorkflowBodyReason = &i18n.Message{ID: "NotifyWorkflowBodyReason", Other: "❌ 驳回原因: %v\n"} - NotifyWorkflowBodyReport = &i18n.Message{ID: "NotifyWorkflowBodyReport", Other: "✅ 工单审核得分: %v\n"} - NotifyWorkflowBodyCancel = &i18n.Message{ID: "NotifyWorkflowBodyCancel", Other: "🚫 工单已关闭\n"} - NotifyWorkflowBodyComplete = &i18n.Message{ID: "NotifyWorkflowBodyComplete", Other: "✅ 工单已标记为人工上线\n"} -) - -// database structure comparison capability check (controller 层 4009) -// 详见 design.md §3.2.3 / §3.5 EE-11 / EE-12;占位符 %s 顺序: -// 1) 缺失能力的数据源类型描述(例:"基准数据源类型 Hive") -// 2) 缺失的 OptionalModule 字面(例:"OptionalGetDatabaseObjectDDL") -// 中英文案与 active.zh.toml / active.en.toml 中同 ID 条目保持一致。 -var ( - DatabaseCompareNotSupportedByDbType = &i18n.Message{ - ID: "DatabaseCompareNotSupportedByDbType", - Other: "数据源类型 %s 不支持结构对比,请确认 SQLE 已加载支持 %s 的驱动版本", - } + NotifyWorkflowBodyReport = &i18n.Message{ID: "NotifyWorkflowBodyReport", Other: "✅ 工单审核得分: %v\n📈 工单审核通过率:%v%%\n"} )