2 lines
38 KiB
JavaScript
2 lines
38 KiB
JavaScript
import{r as t,j as e}from"./vendor-codemirror-B1SGo4xl.js";import{D as X,a as Y,b as Z,c as ee,d as te,e as oe,B as b,f as le,g as ie,aw as me}from"./index-Dungj95X.js";import{I as k}from"./input-CXoUQQLm.js";import{L as g}from"./label-CMpUoC87.js";import{T as K}from"./textarea-BxfjmLq5.js";import{S as $,a as z,b as B,c as q,d as O}from"./select-CiTqGGhE.js";import{u as _}from"./use-toast-DNZLibQY.js";import{l as T}from"./log-center-ELxahGiS.js";import{S as M}from"./switch-Bxiq4EHp.js";import{L as F,aW as de,P as U,R as W,z as se,d as ge,T as xe,b5 as pe,aD as he,I as ue,a7 as ve}from"./vendor-icons-DmqcWdzX.js";import{B as R}from"./badge-CGJlVD3L.js";import{C as G,a as J}from"./card-BIfzBCEy.js";import{a as I}from"./alert-v1WaPeEX.js";import{A as ye}from"./AlertRuleDialog-BmYLySxp.js";import"./index-5FEebgvX.js";const re=t.createContext(null);function Le({children:r}){const[s,o]=t.useState(null),n=t.useCallback(i=>o(i),[]);return e.jsx(re.Provider,{"code-path":"src/components/monitor/log-center/LogQueryContext.tsx:16:5",value:{context:s,setContext:n},children:r})}function H(){const r=t.useContext(re);if(!r)throw new Error("useLogQueryContext must be used within LogQueryProvider");return r}function ne({open:r,onOpenChange:s,engine:o,editing:n,onSaved:i}){const{toast:x}=_(),[d,j]=t.useState(""),[p,v]=t.useState(""),[h,D]=t.useState("logstash-*"),[y,Q]=t.useState(!1),[P,c]=t.useState(""),[f,u]=t.useState(""),[m,C]=t.useState(!1),[A,l]=t.useState(!1),[S,a]=t.useState(!1),[N,E]=t.useState(!1);t.useEffect(()=>{r&&(n?(j(n.name),v(n.url),D(n.default_index||"logstash-*"),Q(!!n.basic_auth),c(n.basic_auth_user||""),u(""),C(!!n.skip_tls_verify),l(!!n.is_default)):(j(o==="loki"?"Loki":"Elasticsearch"),v(o==="loki"?"http://localhost:3100":"http://localhost:9200"),D("logstash-*"),Q(!1),c(""),u(""),C(!1),l(!1)))},[r,n,o]);const w=()=>({name:d.trim(),type:o,url:p.trim(),basic_auth:y,basic_auth_user:P,basic_auth_pass:f,skip_tls_verify:m,default_index:o==="elasticsearch"?h:void 0,is_default:A}),V=async()=>{E(!0);try{await T.testDatasource(w()),x({title:"连接成功"})}catch(L){x({title:"连接失败",description:L?.message||String(L),variant:"destructive"})}finally{E(!1)}},ce=async()=>{if(!(!d.trim()||!p.trim())){a(!0);try{n?await T.updateDatasource(n.id,w()):await T.createDatasource(w()),x({title:"已保存"}),s(!1),i()}catch(L){x({title:"保存失败",description:L?.message||String(L),variant:"destructive"})}finally{a(!1)}}};return e.jsx(X,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:103:5",open:r,onOpenChange:s,children:e.jsxs(Y,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:104:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-w-md max-h-[85vh] overflow-y-auto",children:[e.jsxs(Z,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:105:9",children:[e.jsxs(ee,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:106:11",className:"text-[var(--dg-text-primary)]",children:[n?"编辑":"添加",o==="loki"?" Loki":" Elasticsearch"," 数据源"]}),e.jsx(te,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:109:11",className:"text-[var(--dg-text-muted)]",children:"仅保存连接信息,日志本体存储在您的 Loki / ES 集群"})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:113:9",className:"space-y-3 py-1",children:[e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:114:11",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:115:13",className:"text-xs text-[var(--dg-text-muted)]",children:"名称"}),e.jsx(k,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:116:13",value:d,onChange:L=>j(L.target.value),className:"mt-1 h-9 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:118:11",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:119:13",className:"text-xs text-[var(--dg-text-muted)]",children:"地址"}),e.jsx(k,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:120:13",value:p,onChange:L=>v(L.target.value),placeholder:"http://host:port",className:"mt-1 h-9 font-mono text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"})]}),o==="elasticsearch"&&e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:123:13",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:124:15",className:"text-xs text-[var(--dg-text-muted)]",children:"默认索引"}),e.jsx(k,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:125:15",value:h,onChange:L=>D(L.target.value),className:"mt-1 h-9 font-mono text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:128:11",className:"flex items-center justify-between",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:129:13",className:"text-xs text-[var(--dg-text-muted)]",children:"基础认证"}),e.jsx(M,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:130:13",checked:y,onCheckedChange:Q})]}),y&&e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:133:13",className:"grid grid-cols-2 gap-2",children:[e.jsx(k,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:134:15",value:P,onChange:L=>c(L.target.value),placeholder:"用户名",className:"h-9 text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"}),e.jsx(k,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:135:15",type:"password",value:f,onChange:L=>u(L.target.value),placeholder:"密码",className:"h-9 text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:138:11",className:"flex items-center justify-between",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:139:13",className:"text-xs text-[var(--dg-text-muted)]",children:"跳过 TLS 校验"}),e.jsx(M,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:140:13",checked:m,onCheckedChange:C})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:142:11",className:"flex items-center justify-between",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:143:13",className:"text-xs text-[var(--dg-text-muted)]",children:"设为默认"}),e.jsx(M,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:144:13",checked:A,onCheckedChange:l})]})]}),e.jsxs(oe,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:147:9",className:"gap-2",children:[e.jsxs(b,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:148:11",variant:"outline",size:"sm",onClick:V,disabled:N,children:[N?e.jsx(F,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:149:24",className:"h-4 w-4 animate-spin mr-1"}):e.jsx(de,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:149:76",className:"h-4 w-4 mr-1"}),"测试"]}),e.jsxs(b,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:152:11",size:"sm",onClick:ce,disabled:S,children:[S&&e.jsx(F,{"code-path":"src/components/monitor/log-center/LogDatasourceDialog.tsx:153:24",className:"h-4 w-4 animate-spin mr-1"}),"保存"]})]})]})})}const be={error:"bg-red-500/15 text-red-400 border-red-500/30",warn:"bg-amber-500/15 text-amber-400 border-amber-500/30",warning:"bg-amber-500/15 text-amber-400 border-amber-500/30",info:"bg-blue-500/15 text-blue-400 border-blue-500/30",debug:"bg-slate-500/15 text-slate-400 border-slate-500/30"};function ae({entries:r,loading:s}){return s?e.jsx("div",{"code-path":"src/components/monitor/log-center/LogResultsTable.tsx:15:12",className:"text-center py-16 text-[var(--dg-text-muted)] text-sm",children:"查询中..."}):r.length===0?e.jsx("div",{"code-path":"src/components/monitor/log-center/LogResultsTable.tsx:18:12",className:"text-center py-16 text-[var(--dg-text-muted)] text-sm",children:"暂无日志,调整查询条件后重试"}):e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogResultsTable.tsx:21:5",className:"border border-[var(--dg-border)] rounded-lg overflow-hidden",children:[e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogResultsTable.tsx:22:7",className:"grid grid-cols-[160px_72px_1fr] gap-2 px-3 py-2 bg-[var(--dg-bg-tertiary)]/50 text-[11px] font-medium text-[var(--dg-text-muted)] uppercase",children:[e.jsx("span",{"code-path":"src/components/monitor/log-center/LogResultsTable.tsx:23:9",children:"时间"}),e.jsx("span",{"code-path":"src/components/monitor/log-center/LogResultsTable.tsx:24:9",children:"级别"}),e.jsx("span",{"code-path":"src/components/monitor/log-center/LogResultsTable.tsx:25:9",children:"内容"})]}),e.jsx("div",{"code-path":"src/components/monitor/log-center/LogResultsTable.tsx:27:7",className:"max-h-[480px] overflow-y-auto divide-y divide-[var(--dg-border)]",children:r.map((o,n)=>e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogResultsTable.tsx:29:11",className:"grid grid-cols-[160px_72px_1fr] gap-2 px-3 py-2 text-xs hover:bg-[var(--dg-bg-tertiary)]/30",children:[e.jsx("span",{"code-path":"src/components/monitor/log-center/LogResultsTable.tsx:30:13",className:"font-mono text-[var(--dg-text-muted)] truncate",title:o.timestamp,children:o.timestamp}),e.jsx("span",{"code-path":"src/components/monitor/log-center/LogResultsTable.tsx:31:13",children:o.level?e.jsx(R,{"code-path":"src/components/monitor/log-center/LogResultsTable.tsx:33:17",variant:"outline",className:`text-[10px] ${be[o.level.toLowerCase()]||"border-[var(--dg-border)]"}`,children:o.level}):"—"}),e.jsx("pre",{"code-path":"src/components/monitor/log-center/LogResultsTable.tsx:36:13",className:"font-mono text-[var(--dg-text-secondary)] whitespace-pre-wrap break-all leading-relaxed",children:o.message})]},n))})]})}const je=[{label:"15 分钟",value:"15m"},{label:"1 小时",value:"1h"},{label:"6 小时",value:"6h"},{label:"24 小时",value:"24h"}];function fe(r){const s=r.match(/^(\d+)(m|h)$/);if(!s)return new Date(Date.now()-36e5).toISOString();const o=parseInt(s[1],10),n=s[2]==="h"?o*36e5:o*6e4;return new Date(Date.now()-n).toISOString()}function De(){const{toast:r}=_(),{setContext:s}=H(),[o,n]=t.useState([]),[i,x]=t.useState(""),[d,j]=t.useState('{namespace="default"} |= "error"'),[p,v]=t.useState("1h"),[h,D]=t.useState(200),[y,Q]=t.useState([]),[P,c]=t.useState(!1),[f,u]=t.useState(!1),m=t.useCallback(async()=>{const l=await T.listDatasources("loki").catch(()=>[]),S=Array.isArray(l)?l:[];if(n(S),!i&&S.length){const a=S.find(N=>N.is_default)||S[0];x(String(a.id))}},[i]);t.useEffect(()=>{m()},[m]);const C=t.useCallback((l,S)=>{const a=o.find(N=>String(N.id)===S);s({engine:"loki",datasourceId:a?a.id:void 0,datasourceName:a?.name,query:l,timeRange:p})},[o,p,s]);t.useEffect(()=>{C(d,i)},[d,i,C]);const A=async()=>{if(!(!i||!d.trim())){c(!0);try{const l=await T.queryLoki({datasource_id:Number(i),query:d.trim(),limit:h,start:fe(p),end:new Date().toISOString()});Q(l?.entries||[]),r({title:"查询完成",description:`共 ${l?.total??0} 条`})}catch(l){r({title:"查询失败",description:l?.message||String(l),variant:"destructive"}),Q([])}finally{c(!1)}}};return e.jsxs("div",{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:91:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:92:7",className:"flex flex-wrap items-end gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:93:9",className:"min-w-[200px] flex-1",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:94:11",className:"text-xs text-[var(--dg-text-muted)]",children:"数据源"}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:95:11",className:"flex gap-2 mt-1",children:[e.jsxs($,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:96:13",value:i,onValueChange:x,children:[e.jsx(z,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:97:15",className:"h-9 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]",children:e.jsx(B,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:98:17",placeholder:"选择 Loki"})}),e.jsx(q,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:100:15",children:o.map(l=>e.jsxs(O,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:102:19",value:String(l.id),children:[l.name,l.is_default?" (默认)":""]},l.id))})]}),e.jsx(b,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:106:13",variant:"outline",size:"icon",className:"h-9 w-9 shrink-0",onClick:()=>u(!0),title:"添加数据源",children:e.jsx(U,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:107:15",className:"h-4 w-4"})}),e.jsx(b,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:109:13",variant:"outline",size:"icon",className:"h-9 w-9 shrink-0",onClick:m,title:"刷新",children:e.jsx(W,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:110:15",className:"h-4 w-4"})})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:114:9",className:"w-[120px]",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:115:11",className:"text-xs text-[var(--dg-text-muted)]",children:"时间范围"}),e.jsxs($,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:116:11",value:p,onValueChange:v,children:[e.jsx(z,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:117:13",className:"h-9 mt-1 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]",children:e.jsx(B,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:118:15"})}),e.jsx(q,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:120:13",children:je.map(l=>e.jsx(O,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:121:38",value:l.value,children:l.label},l.value))})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:125:9",className:"w-[88px]",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:126:11",className:"text-xs text-[var(--dg-text-muted)]",children:"条数"}),e.jsx(k,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:127:11",type:"number",value:h,onChange:l=>D(Number(l.target.value)||200),className:"h-9 mt-1 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"})]}),e.jsxs(b,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:129:9",className:"h-9 bg-[var(--dg-blue)] hover:opacity-90",onClick:A,disabled:P||!i,children:[P?e.jsx(F,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:130:22",className:"h-4 w-4 animate-spin mr-1"}):e.jsx(se,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:130:74",className:"h-4 w-4 mr-1"}),"查询"]})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:135:7",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:136:9",className:"text-xs text-[var(--dg-text-muted)]",children:"LogQL"}),e.jsx(K,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:137:9",value:d,onChange:l=>j(l.target.value),rows:3,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] resize-y",placeholder:'{app="nginx"} |= "error"'}),e.jsxs("p",{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:144:9",className:"text-[10px] text-[var(--dg-text-muted)] mt-1",children:["示例:",'{job="varlogs"}',' | json | level="error" · 单次最多 500 条,不落库']})]}),e.jsx(ae,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:149:7",entries:y,loading:P}),e.jsx(ne,{"code-path":"src/components/monitor/log-center/LokiQueryPanel.tsx:151:7",open:f,onOpenChange:u,engine:"loki",onSaved:m})]})}const Ne=[{label:"15 分钟",value:"15m"},{label:"1 小时",value:"1h"},{label:"6 小时",value:"6h"},{label:"24 小时",value:"24h"}];function Qe(r){const s=r.match(/^(\d+)(m|h)$/);if(!s)return new Date(Date.now()-36e5).toISOString();const o=parseInt(s[1],10),n=s[2]==="h"?o*36e5:o*6e4;return new Date(Date.now()-n).toISOString()}function Pe(){const{toast:r}=_(),{setContext:s}=H(),[o,n]=t.useState([]),[i,x]=t.useState(""),[d,j]=t.useState("logstash-*"),[p,v]=t.useState("level:error AND message:*timeout*"),[h,D]=t.useState("1h"),[y,Q]=t.useState(200),[P,c]=t.useState([]),[f,u]=t.useState(!1),[m,C]=t.useState(!1),A=t.useCallback(async()=>{const a=await T.listDatasources("elasticsearch").catch(()=>[]),N=Array.isArray(a)?a:[];if(n(N),!i&&N.length){const E=N.find(w=>w.is_default)||N[0];x(String(E.id)),E.default_index&&j(E.default_index)}},[i]);t.useEffect(()=>{A()},[A]);const l=t.useCallback((a,N,E)=>{const w=o.find(V=>String(V.id)===N);s({engine:"elasticsearch",datasourceId:w?w.id:void 0,datasourceName:w?.name,query:a,index:E,timeRange:h})},[o,h,s]);t.useEffect(()=>{l(p,i,d)},[p,i,d,l]);const S=async()=>{if(i){u(!0);try{const a=await T.queryElasticsearch({datasource_id:Number(i),index:d.trim()||void 0,query:p.trim()||"*",size:y,start:Qe(h),end:new Date().toISOString()});c(a?.entries||[]),r({title:"查询完成",description:`共 ${a?.total??0} 条`})}catch(a){r({title:"查询失败",description:a?.message||String(a),variant:"destructive"}),c([])}finally{u(!1)}}};return e.jsxs("div",{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:94:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:95:7",className:"flex flex-wrap items-end gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:96:9",className:"min-w-[200px] flex-1",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:97:11",className:"text-xs text-[var(--dg-text-muted)]",children:"数据源"}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:98:11",className:"flex gap-2 mt-1",children:[e.jsxs($,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:99:13",value:i,onValueChange:x,children:[e.jsx(z,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:100:15",className:"h-9 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]",children:e.jsx(B,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:101:17",placeholder:"选择 ES"})}),e.jsx(q,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:103:15",children:o.map(a=>e.jsxs(O,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:105:19",value:String(a.id),children:[a.name,a.is_default?" (默认)":""]},a.id))})]}),e.jsx(b,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:109:13",variant:"outline",size:"icon",className:"h-9 w-9 shrink-0",onClick:()=>C(!0),children:e.jsx(U,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:110:15",className:"h-4 w-4"})}),e.jsx(b,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:112:13",variant:"outline",size:"icon",className:"h-9 w-9 shrink-0",onClick:A,children:e.jsx(W,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:113:15",className:"h-4 w-4"})})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:117:9",className:"w-[140px]",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:118:11",className:"text-xs text-[var(--dg-text-muted)]",children:"索引"}),e.jsx(k,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:119:11",value:d,onChange:a=>j(a.target.value),className:"h-9 mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:121:9",className:"w-[120px]",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:122:11",className:"text-xs text-[var(--dg-text-muted)]",children:"时间范围"}),e.jsxs($,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:123:11",value:h,onValueChange:D,children:[e.jsx(z,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:124:13",className:"h-9 mt-1 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]",children:e.jsx(B,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:125:15"})}),e.jsx(q,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:127:13",children:Ne.map(a=>e.jsx(O,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:128:38",value:a.value,children:a.label},a.value))})]})]}),e.jsxs(b,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:132:9",className:"h-9 bg-[var(--dg-blue)] hover:opacity-90",onClick:S,disabled:f||!i,children:[f?e.jsx(F,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:133:22",className:"h-4 w-4 animate-spin mr-1"}):e.jsx(se,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:133:74",className:"h-4 w-4 mr-1"}),"查询"]})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:138:7",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:139:9",className:"text-xs text-[var(--dg-text-muted)]",children:"Lucene 查询"}),e.jsx(k,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:140:9",value:p,onChange:a=>v(a.target.value),className:"mt-1 font-mono text-xs h-10 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]",placeholder:'status:500 AND path:"/api/*"'}),e.jsx("p",{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:146:9",className:"text-[10px] text-[var(--dg-text-muted)] mt-1",children:"支持 Lucene 语法;留空则匹配全部 · 单次最多 500 条,不落库"})]}),e.jsx(ae,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:149:7",entries:P,loading:f}),e.jsx(ne,{"code-path":"src/components/monitor/log-center/EsQueryPanel.tsx:151:7",open:m,onOpenChange:C,engine:"elasticsearch",onSaved:A})]})}function Se(){const{toast:r}=_(),s=le(),[o,n]=t.useState([]),[i,x]=t.useState([]),[d,j]=t.useState(!0),[p,v]=t.useState(!1),[h,D]=t.useState(null),y=t.useCallback(async()=>{j(!0);try{const[c,f]=await Promise.all([I.getRules(),I.getNotifyChannels()]),u=c?.list||(Array.isArray(c)?c:[]);n(u.filter(m=>m.type==="log"||m.source==="loki"||m.source==="elasticsearch")),x(f?.list||[])}finally{j(!1)}},[]);t.useEffect(()=>{y()},[y]);const Q=async c=>{if(await s({title:"删除规则",description:`删除「${c.name}」?`,variant:"destructive",confirmText:"删除"}))try{await I.deleteRule(c.id),r({title:"已删除"}),y()}catch(u){r({title:"删除失败",description:u?.message||String(u),variant:"destructive"})}},P={critical:"bg-red-500/15 text-red-400",warning:"bg-amber-500/15 text-amber-400",info:"bg-blue-500/15 text-blue-400"};return e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:57:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:58:7",className:"flex items-center justify-between",children:[e.jsx("p",{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:59:9",className:"text-sm text-[var(--dg-text-muted)]",children:"仅保存告警策略(LogQL / Lucene),日志数据仍在外部 Loki / ES"}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:60:9",className:"flex gap-2",children:[e.jsxs(b,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:61:11",variant:"outline",size:"sm",onClick:y,disabled:d,children:[e.jsx(W,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:62:13",className:`h-4 w-4 mr-1 ${d?"animate-spin":""}`}),"刷新"]}),e.jsxs(b,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:64:11",size:"sm",onClick:()=>{D(null),v(!0)},children:[e.jsx(U,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:65:13",className:"h-4 w-4 mr-1"}),"新建"]})]})]}),d?e.jsx("div",{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:71:9",className:"flex justify-center py-16",children:e.jsx(F,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:71:52",className:"h-6 w-6 animate-spin text-[var(--dg-text-muted)]"})}):o.length===0?e.jsx(G,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:73:9",className:"dg-card",children:e.jsx(J,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:74:11",className:"py-12 text-center text-[var(--dg-text-muted)] text-sm",children:"暂无日志告警。在 Loki/ES 查询页点击右下角「叮当」可从当前查询快速创建。"})}):e.jsx("div",{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:79:9",className:"space-y-2",children:o.map(c=>e.jsx(G,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:81:13",className:"dg-card",children:e.jsxs(J,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:82:15",className:"py-3 px-4 flex flex-wrap items-center gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:83:17",className:"flex-1 min-w-[200px]",children:[e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:84:19",className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:85:21",className:"font-medium text-[var(--dg-text-primary)]",children:c.name}),e.jsx(R,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:86:21",variant:"outline",className:"text-[10px] border-[var(--dg-border)]",children:c.source||"log"}),e.jsx(R,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:87:21",className:`text-[10px] ${P[c.severity]||""}`,children:c.severity}),!c.enabled&&c.enabled!==void 0&&e.jsx(R,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:89:23",variant:"outline",className:"text-[10px] text-[var(--dg-text-muted)]",children:"已禁用"})]}),e.jsx("p",{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:92:19",className:"text-[11px] font-mono text-[var(--dg-text-muted)] mt-1 truncate",title:c.expression,children:c.expression})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:94:17",className:"flex gap-1 shrink-0",children:[e.jsx(b,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:95:19",variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>{D(c),v(!0)},children:e.jsx(ge,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:96:21",className:"h-3.5 w-3.5"})}),e.jsx(b,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:98:19",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400",onClick:()=>Q(c),children:e.jsx(xe,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:99:21",className:"h-3.5 w-3.5"})})]})]})},c.id))}),e.jsx(ye,{"code-path":"src/components/monitor/log-center/LogAlertsPanel.tsx:108:7",open:p,onOpenChange:v,editingRule:h,notifyChannels:i,onSaved:y,defaultType:"log"})]})}function ke({open:r,onOpenChange:s,ctx:o,onSaved:n}){const{toast:i}=_(),[x,d]=t.useState(""),[j,p]=t.useState(""),[v,h]=t.useState(""),[D,y]=t.useState("warning"),[Q,P]=t.useState(300),[c,f]=t.useState(!1);t.useEffect(()=>{if(!r||!o)return;const m=o.engine==="loki"?"Loki":"ES";d(`${m} 日志告警`),p(`数据源: ${o.datasourceName||"—"} · 范围: ${o.timeRange||"—"}${o.index?` · 索引: ${o.index}`:""}`),o.engine==="loki"?h(`count_over_time(${Ce(o.query)}[5m]) > 0`):h(o.query||"*")},[r,o]);const u=async()=>{if(!(!x.trim()||!v.trim()||!o)){f(!0);try{await I.createRule({name:x.trim(),description:j.trim(),type:"log",source:o.engine==="loki"?"loki":"elasticsearch",expression:v.trim(),severity:D,duration:Q,notify_channels:[]}),i({title:"告警规则已创建",description:"可在「日志告警」Tab 中继续配置通知渠道"}),s(!1),n?.()}catch(m){i({title:"创建失败",description:m?.message||String(m),variant:"destructive"})}finally{f(!1)}}};return e.jsx(X,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:70:5",open:r,onOpenChange:s,children:e.jsxs(Y,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:71:7",className:"bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] max-w-lg max-h-[85vh] overflow-y-auto",children:[e.jsxs(Z,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:72:9",children:[e.jsxs(ee,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:73:11",className:"text-[var(--dg-text-primary)] flex items-center gap-2",children:[e.jsx(pe,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:74:13",className:"h-5 w-5 text-amber-400"}),"叮当 · 添加告警"]}),e.jsx(te,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:77:11",className:"text-[var(--dg-text-muted)]",children:"将当前查询条件保存为日志告警规则,命中时触发通知"})]}),o?.query?.trim()?e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:84:11",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:85:13",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:86:15",className:"text-xs text-[var(--dg-text-muted)]",children:"规则名称"}),e.jsx(k,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:87:15",value:x,onChange:m=>d(m.target.value),className:"mt-1 h-9 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:89:13",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:90:15",className:"text-xs text-[var(--dg-text-muted)]",children:"描述"}),e.jsx(K,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:91:15",value:j,onChange:m=>p(m.target.value),rows:2,className:"mt-1 text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] resize-none"})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:93:13",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:94:15",className:"text-xs text-[var(--dg-text-muted)]",children:"触发条件"}),e.jsx(K,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:95:15",value:v,onChange:m=>h(m.target.value),rows:4,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"}),e.jsx("p",{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:96:15",className:"text-[10px] text-[var(--dg-text-muted)] mt-1",children:o.engine==="loki"?"LogQL 告警表达式,默认 count_over_time":"ES Lucene 查询,匹配到日志即告警"})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:100:13",className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:101:15",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:102:17",className:"text-xs text-[var(--dg-text-muted)]",children:"级别"}),e.jsxs("select",{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:103:17",value:D,onChange:m=>y(m.target.value),className:"w-full h-9 mt-1 px-2 rounded-md bg-[var(--dg-bg-tertiary)] border border-[var(--dg-border)] text-sm",children:[e.jsx("option",{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:104:19",value:"info",children:"提示"}),e.jsx("option",{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:105:19",value:"warning",children:"警告"}),e.jsx("option",{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:106:19",value:"critical",children:"严重"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:109:15",children:[e.jsx(g,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:110:17",className:"text-xs text-[var(--dg-text-muted)]",children:"持续(秒)"}),e.jsx(k,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:111:17",type:"number",value:Q,onChange:m=>P(Number(m.target.value)||300),className:"mt-1 h-9 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)]"})]})]}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:114:13",className:"rounded-md bg-[var(--dg-bg-tertiary)]/60 p-2 text-[10px] font-mono text-[var(--dg-text-secondary)] break-all",children:["原始查询: ",o.query]})]}):e.jsx("p",{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:82:11",className:"text-sm text-amber-400/90 py-4",children:"请先在 Loki 或 ES 查询页输入查询语句"}),e.jsxs(oe,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:119:9",children:[e.jsx(b,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:120:11",variant:"outline",onClick:()=>s(!1),children:"取消"}),e.jsxs(b,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:121:11",onClick:u,disabled:c||!o?.query?.trim(),children:[c&&e.jsx(F,{"code-path":"src/components/monitor/log-center/LogAlertFromQueryDialog.tsx:122:24",className:"h-4 w-4 animate-spin mr-1"}),"创建规则"]})]})]})})}function Ce(r){const s=r.trim();return s.startsWith("{")?s:`{job=~".+"} |= "${s.replace(/"/g,'\\"')}"`}function Ae({onRuleCreated:r}){const{context:s}=H(),[o,n]=t.useState(!1);return e.jsxs(e.Fragment,{children:[e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogDingAssistant.tsx:14:7",className:"fixed bottom-6 right-6 z-40 flex flex-col items-end gap-2",children:[e.jsx("div",{"code-path":"src/components/monitor/log-center/LogDingAssistant.tsx:15:9",className:"hidden sm:block rounded-lg bg-[var(--dg-bg-secondary)] border border-[var(--dg-border)] px-3 py-1.5 text-[11px] text-[var(--dg-text-muted)] shadow-lg opacity-0 hover:opacity-100 transition-opacity pointer-events-none",children:"将当前查询添加为告警"}),e.jsxs(b,{"code-path":"src/components/monitor/log-center/LogDingAssistant.tsx:18:9",size:"lg",className:"h-12 rounded-full shadow-lg bg-gradient-to-r from-amber-500 to-orange-500 hover:from-amber-400 hover:to-orange-400 text-white gap-2 px-5",onClick:()=>n(!0),title:"叮当 · 添加告警",children:[e.jsx(he,{"code-path":"src/components/monitor/log-center/LogDingAssistant.tsx:24:11",className:"h-5 w-5"}),e.jsx("span",{"code-path":"src/components/monitor/log-center/LogDingAssistant.tsx:25:11",className:"font-medium",children:"叮当"})]})]}),e.jsx(ke,{"code-path":"src/components/monitor/log-center/LogDingAssistant.tsx:28:7",open:o,onOpenChange:n,ctx:s,onSaved:r})]})}function we(){return e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogCenterArchBanner.tsx:6:5",className:"flex gap-3 rounded-lg border border-cyan-500/20 bg-cyan-500/5 px-4 py-3 text-xs text-[var(--dg-text-secondary)] leading-relaxed",children:[e.jsx(ue,{"code-path":"src/components/monitor/log-center/LogCenterArchBanner.tsx:7:7",className:"h-4 w-4 shrink-0 text-cyan-400 mt-0.5"}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogCenterArchBanner.tsx:8:7",children:[e.jsx("p",{"code-path":"src/components/monitor/log-center/LogCenterArchBanner.tsx:9:9",className:"text-[var(--dg-text-primary)] font-medium mb-1",children:"无状态查询网关"}),e.jsxs("p",{"code-path":"src/components/monitor/log-center/LogCenterArchBanner.tsx:10:9",children:["AIOps 不存储 Loki / Elasticsearch 中的海量日志,仅保存",e.jsx("strong",{"code-path":"src/components/monitor/log-center/LogCenterArchBanner.tsx:11:52",className:"text-[var(--dg-text-primary)] font-normal",children:"数据源连接"}),"与",e.jsx("strong",{"code-path":"src/components/monitor/log-center/LogCenterArchBanner.tsx:12:11",className:"text-[var(--dg-text-primary)] font-normal",children:"告警策略"}),"。查询时实时转发至外部集群,结果仅在当前页面展示,刷新即清空。"]})]})]})}const Ee={loki:{title:"Loki 查询",description:"对接外部 Loki · LogQL 实时检索"},es:{title:"ES 查询",description:"对接 Elasticsearch · 索引日志检索"},alerts:{title:"日志告警",description:"基于查询条件的日志告警策略"}};function He(){const{section:r}=ie(),s=r&&["loki","es","alerts"].includes(r)?r:null,[o,n]=t.useState(0);if(!s)return e.jsx(me,{"code-path":"src/components/monitor/log-center/LogCenter.tsx:25:20",to:"/log-center/loki",replace:!0});const i=Ee[s];return e.jsx(Le,{"code-path":"src/components/monitor/log-center/LogCenter.tsx:30:5",children:e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogCenter.tsx:31:7",className:"space-y-4 pb-20",children:[e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogCenter.tsx:32:9",className:"flex items-center gap-3",children:[e.jsx("div",{"code-path":"src/components/monitor/log-center/LogCenter.tsx:33:11",className:"h-10 w-10 rounded-xl bg-gradient-to-br from-cyan-500/20 to-blue-500/20 flex items-center justify-center border border-cyan-500/20",children:e.jsx(ve,{"code-path":"src/components/monitor/log-center/LogCenter.tsx:34:13",className:"h-5 w-5 text-cyan-400"})}),e.jsxs("div",{"code-path":"src/components/monitor/log-center/LogCenter.tsx:36:11",children:[e.jsx("h1",{"code-path":"src/components/monitor/log-center/LogCenter.tsx:37:13",className:"text-xl font-bold text-[var(--dg-text-primary)]",children:i.title}),e.jsx("p",{"code-path":"src/components/monitor/log-center/LogCenter.tsx:38:13",className:"text-sm text-[var(--dg-text-muted)]",children:i.description})]})]}),s!=="alerts"&&e.jsx(we,{"code-path":"src/components/monitor/log-center/LogCenter.tsx:42:30"}),s==="loki"&&e.jsx(De,{"code-path":"src/components/monitor/log-center/LogCenter.tsx:44:28"}),s==="es"&&e.jsx(Pe,{"code-path":"src/components/monitor/log-center/LogCenter.tsx:45:26"}),s==="alerts"&&e.jsx(Se,{"code-path":"src/components/monitor/log-center/LogCenter.tsx:46:30"},o),s!=="alerts"&&e.jsx(Ae,{"code-path":"src/components/monitor/log-center/LogCenter.tsx:49:11",onRuleCreated:()=>n(x=>x+1)})]})})}export{He as default};
|