1"use strict";(self.webpackChunkengula_website=self.webpackChunkengula_website||[]).push([["888"],{6400:function(e,n,r){r.r(n),r.d(n,{default:()=>t});var s=r(2676),d=r(453);function a(e){let n=Object.assign({h1:"h1",a:"a",h2:"h2",p:"p",strong:"strong",h3:"h3",ul:"ul",li:"li",pre:"pre",code:"code",table:"table",thead:"thead",tr:"tr",th:"th",tbody:"tbody",td:"td"},(0,d.ah)(),e.components);return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.h1,{id:"çæ§-engula",children:["çæ§ Engula",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#çæ§-engula",children:"#"})]}),"\n",(0,s.jsxs)(n.h2,{id:"æ¦è§",children:["æ¦è§",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#æ¦è§",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["Engula ä¸ Redis/Valkey 7.2 ççæ§ç¸å
³åè®®é¢ä¿æé«ä¸è´ï¼å æ¤å¯ä»¥å¤ç¨æçç Redis çæ§ä½ç³»ãæ¬æä»¥ ",(0,s.jsx)(n.strong,{children:"Redis Exporter"})," + ",(0,s.jsx)(n.strong,{children:"Prometheus"})," + ",(0,s.jsx)(n.strong,{children:"Grafana"})," 为ä¾ï¼è¯´æå¦ä½å¿«éæå»º Engula çæ§ï¼å¹¶å¤ç¨ç¤¾åºä¸å¹¿æ³ä½¿ç¨ç Redis Dashboard 模æ¿ã"]}),"\n",(0,s.jsxs)(n.h3,{id:"å
³é®ä¼å¿æ éå®å¶",children:["å
³é®ä¼å¿ï¼æ éå®å¶",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#å
³é®ä¼å¿æ éå®å¶",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["ç±äº Engula å®ç°äº Redis åè®®ï¼ç°æçæ§å·¥å
·é常 ",(0,s.jsx)(n.strong,{children:"æ éä¿®æ¹"})," å³å¯ä½¿ç¨ï¼å
æ¬ï¼"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"ç»è¿å¤§éç产éªè¯ççæ§æ¹æ¡ä¸åè¦ç»éª"}),"\n",(0,s.jsx)(n.li,{children:"丰å¯ç Grafana Dashboard 模æ¿ä¸ææ è¦ç"}),"\n",(0,s.jsx)(n.li,{children:"æçç Prometheus éé䏿¥è¯¢ä½ç³»"}),"\n"]}),"\n",(0,s.jsxs)(n.h2,{id:"æ¶æ",children:["æ¶æ",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#æ¶æ",children:"#"})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{children:"âââââââââââââââ ââââââââââââââââââ âââââââââââââââ âââââââââââââââ\nâ Engula âââââ¶â Redis Exporter âââââ¶â Prometheus âââââ¶â Grafana â\nâ Server(s) â â (oliver006) â â Server â â Dashboard â\nâââââââââââââââ ââââââââââââââââââ âââââââââââââââ âââââââââââââââ\n 6379 9121 9090 3000\n"})}),"\n",(0,s.jsxs)(n.h2,{id:"å¿«éå¼å§docker-compose",children:["å¿«éå¼å§ï¼Docker Composeï¼",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#å¿«éå¼å§docker-compose",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["以ä¸ä¸ºå¿«éé¨ç½²ç¤ºä¾ï¼è¯·å° ",(0,s.jsx)(n.code,{children:"engula-server:6379"})," æ¿æ¢ä¸ºå®é
å°åï¼ï¼"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-text",children:"# docker-compose.yml\nversion: '3.8'\n\nservices:\n redis-exporter:\n image: oliver006/redis_exporter:latest\n container_name: engula-redis-exporter\n restart: unless-stopped\n ports:\n - \"9121:9121\"\n environment:\n - REDIS_ADDR=redis://engula-server:6379\n command:\n - '-redis.addr=redis://engula-server:6379'\n networks:\n - monitoring\n\n prometheus:\n image: prom/prometheus:latest\n container_name: engula-prometheus\n restart: unless-stopped\n ports:\n - \"9090:9090\"\n volumes:\n - ./prometheus.yml:/etc/prometheus/prometheus.yml\n - prometheus_data:/prometheus\n command:\n - '--config.file=/etc/prometheus/prometheus.yml'\n - '--storage.tsdb.path=/prometheus'\n - '--storage.tsdb.retention.time=200h'\n - '--web.enable-lifecycle'\n networks:\n - monitoring\n\n grafana:\n image: grafana/grafana:latest\n container_name: engula-grafana\n restart: unless-stopped\n ports:\n - \"3000:3000\"\n environment:\n - GF_SECURITY_ADMIN_USER=admin\n - GF_SECURITY_ADMIN_PASSWORD=admin123\n volumes:\n - grafana_data:/var/lib/grafana\n networks:\n - monitoring\n\nvolumes:\n prometheus_data:\n grafana_data:\n\nnetworks:\n monitoring:\n driver: bridge\n"})}),"\n",(0,s.jsx)(n.p,{children:"å¯å¨ï¼"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker-compose up -d\n"})}
1),"\n",(0,s.jsxs)(n.h2,{id:"ç»ä»¶é
ç½®",children:["ç»ä»¶é
ç½®",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#ç»ä»¶é
ç½®",children:"#"})]}),"\n",(0,s.jsxs)(n.h3,{id:"1redis-exporter",children:["1ï¼Redis Exporter",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#1redis-exporter",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"Redis Exporter éè¿ Redis åè®®è¿æ¥ Engulaï¼å¹¶ä»¥ Prometheus æ ¼å¼æ´é²ææ ã"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"# åå®ä¾\ndocker run -d \\\n --name engula-redis-exporter \\\n -p 9121:9121 \\\n oliver006/redis_exporter:latest \\\n -redis.addr=redis://localhost:6379\n\n# å¤å®ä¾\ndocker run -d \\\n --name multi-redis-exporter \\\n -p 9121:9121 \\\n oliver006/redis_exporter:latest \\\n -redis.addr=redis://engula-1:6379,redis://engula-2:6379,redis://engula-3:6379\n\n# 带认è¯\ndocker run -d \\\n --name secure-redis-exporter \\\n -p 9121:9121 \\\n oliver006/redis_exporter:latest \\\n -redis.addr=redis://engula-secure:6379 \\\n -redis.password=your-password\n"})}),"\n",(0,s.jsx)(n.p,{children:"常ç¨åæ°ï¼"}),"\n",(0,s.jsxs)(n.table,{children:["\n",(0,s.jsxs)(n.thead,{children:["\n",(0,s.jsxs)(n.tr,{children:["\n",(0,s.jsx)(n.th,{children:"åæ°"}),"\n",(0,s.jsx)(n.th,{children:"说æ"}),"\n",(0,s.jsx)(n.th,{children:"示ä¾"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.tbody,{children:["\n",(0,s.jsxs)(n.tr,{children:["\n",(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"-redis.addr"})}),"\n",(0,s.jsx)(n.td,{children:"Engula å°å"}),"\n",(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"redis://localhost:6379"})}),"\n"]}),"\n",(0,s.jsxs)(n.tr,{children:["\n",(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"-redis.password"})}),"\n",(0,s.jsx)(n.td,{children:"认è¯å¯ç "}),"\n",(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"-redis.password=mypass123"})}),"\n"]}),"\n",(0,s.jsxs)(n.tr,{children:["\n",(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"-namespace"})}),"\n",(0,s.jsx)(n.td,{children:"ææ å½å空é´"}),"\n",(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"-namespace=engula"})}),"\n"]}),"\n",(0,s.jsxs)(n.tr,{children:["\n",(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"-web.listen-address"})}),"\n",(0,s.jsx)(n.td,{children:"Exporter çå¬ç«¯å£"}),"\n",(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"-web.listen-address=:9121"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"éªè¯ Exporterï¼"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"curl http://localhost:9121/metrics\n"})}),"\n",(0,s.jsxs)(n.h3,{id:"2prometheus",children:["2ï¼Prometheus",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#2prometheus",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["å建 ",(0,s.jsx)(n.code,{children:"prometheus.yml"}),"ï¼ä» Redis Exporter ééææ ï¼"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-text",children:"global:\n scrape_interval: 15s\n evaluation_interval: 15s\n\nscrape_configs:\n - job_name: 'engula'\n static_configs:\n - targets: ['redis-exporter:9121']\n scrape_interval: 15s\n metrics_path: /metrics\n"})}),"\n",(0,s.jsx)(n.p,{children:"éªè¯ targetsï¼"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"curl http://localhost:9090/targets\n"})}),"\n",(0,s.jsxs)(n.h3,{id:"3grafana",children:["3ï¼Grafana",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#3grafana",children:"#"})]}),"\n",(0,s.jsxs)(n.p,{children:["è®¿é® ",(0,s.jsx)(n.code,{children:"http://localhost:3000"}),"ï¼é»è®¤ admin/admin123ï¼ï¼æ·»å Prometheus æ°æ®æºï¼"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Nameï¼",(0,s.jsx)(n.code,{children:"Engula-Prometheus"})]}),"\n",(0,s.jsxs)(n.li,{children:["URLï¼",(0,s.jsx)(n.code,{children:"http://prometheus:9090"}),"ï¼æ¬å°ä¹å¯ç¨ ",(0,s.jsx)(n.code,{children:"http://localhost:9090"}),"ï¼"]}),"\n"]}),"\n",(0,s.jsxs)(n.h2,{id:"æ¨è-dashboard-模æ¿",children:["æ¨è Dashboard 模æ¿",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#æ¨è-dashboard-模æ¿",children:"#"})]}),"\n",(0,s.jsx)(n.p,{children:"社åºä¸æå¸¸ç¨ç Redis Dashboard 模æ¿ä¹ä¸
1ï¼"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Dashboard IDï¼"})," 763"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"ä½è
ï¼"})," oliver006"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["导å
¥è·¯å¾ï¼Grafana â Import â è¾å
¥ ",(0,s.jsx)(n.code,{children:"763"})," â éæ©æ°æ®æº ",(0,s.jsx)(n.code,{children:"Engula-Prometheus"}),"ã"]}),"\n",(0,s.jsxs)(n.h2,{id:"å¸¸ç¨ææ 示ä¾promql",children:["å¸¸ç¨ææ 示ä¾ï¼PromQLï¼",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#å¸¸ç¨ææ 示ä¾promql",children:"#"})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-promql",children:"# æ¯ç§å½ä»¤æ°ï¼QPSï¼\nrate(redis_commands_processed_total[5m])\n\n# è¿æ¥æ°\nredis_connected_clients\n\n# å
å使ç¨\nredis_memory_used_bytes\nredis_memory_max_bytes\n\n# å½ä¸ç\n(redis_keyspace_hits_total / (redis_keyspace_hits_total + redis_keyspace_misses_total)) * 100\n"})}),"\n",(0,s.jsxs)(n.h2,{id:"æä½³å®è·µ",children:["æä½³å®è·µ",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#æä½³å®è·µ",children:"#"})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"ééé´éï¼å¤§å¤æ°åºæ¯ 15â30s è¶³å¤ï¼é«é¢åºæ¯æé缩ç"}),"\n",(0,s.jsx)(n.li,{children:"åå¨ä¿çï¼ç产ç¯å¢é常 15â30 天"}),"\n",(0,s.jsx)(n.li,{children:"å®å
¨æ§ï¼ç产ç¯å¢å»ºè®®å¯ç¨è®¤è¯ãç½ç»é离ï¼å¹¶ä¸ºå¤é¨è®¿é®é
ç½® TLS"}),"\n"]}),"\n",(0,s.jsxs)(n.h2,{id:"èµæº",children:["èµæº",(0,s.jsx)(n.a,{className:"header-anchor","aria-hidden":"true",href:"#èµæº",children:"#"})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Redis Exporterï¼",(0,s.jsx)(n.a,{href:"https://github.com/oliver006/redis_exporter",target:"_blank",rel:"noopener noreferrer",children:"https://github.com/oliver006/redis_exporter"})]}),"\n",(0,s.jsxs)(n.li,{children:["Prometheusï¼",(0,s.jsx)(n.a,{href:"https://prometheus.io/docs/",target:"_blank",rel:"noopener noreferrer",children:"https://prometheus.io/docs/"})]}),"\n",(0,s.jsxs)(n.li,{children:["Grafanaï¼",(0,s.jsx)(n.a,{href:"https://grafana.com/docs/",target:"_blank",rel:"noopener noreferrer",children:"https://grafana.com/docs/"})]}),"\n"]})]})}function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{wrapper:n}=Object.assign({},(0,d.ah)(),e.components);return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}let t=i;i.__RSPRESS_PAGE_META={},i.__RSPRESS_PAGE_META["zh%2Fdocs%2Fproduction%2Fmonitor.md"]={toc:[{text:"æ¦è§",id:"æ¦è§",depth:2},{text:"å
³é®ä¼å¿ï¼æ éå®å¶",id:"å
³é®ä¼å¿æ éå®å¶",depth:3},{text:"æ¶æ",id:"æ¶æ",depth:2},{text:"å¿«éå¼å§ï¼Docker Composeï¼",id:"å¿«éå¼å§docker-compose",depth:2},{text:"ç»ä»¶é
ç½®",id:"ç»ä»¶é
ç½®",depth:2},{text:"1ï¼Redis Exporter",id:"1redis-exporter",depth:3},{text:"2ï¼Prometheus",id:"2prometheus",depth:3},{text:"3ï¼Grafana",id:"3grafana",depth:3},{text:"æ¨è Dashboard 模æ¿",id:"æ¨è-dashboard-模æ¿",depth:2},{text:"å¸¸ç¨ææ 示ä¾ï¼PromQLï¼",id:"å¸¸ç¨ææ 示ä¾promql",depth:2},{text:"æä½³å®è·µ",id:"æä½³å®è·µ",depth:2},{text:"èµæº",id:"èµæº",depth:2}],title:"çæ§ Engula",headingTitle:"çæ§ Engula",frontmatter:{}}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.