[{"data":1,"prerenderedAt":467},["ShallowReactive",2],{"docs-nav":3,"docs:\u002Fdocs\u002Fruntime-observability":139},[4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58,61,64,67,70,73,76,79,82,85,88,91,94,97,100,103,106,109,112,115,118,121,124,127,130,133,136],{"path":5,"title":6},"\u002Fdocs\u002Faccess-gating","Protect a local route",{"path":8,"title":9},"\u002Fdocs\u002Farchitecture\u002Fsecurity-and-trust","Security and trust",{"path":11,"title":12},"\u002Fdocs\u002Fconcepts\u002Fbuilds-and-deployments","Build and deploy",{"path":14,"title":15},"\u002Fdocs\u002Fconcepts\u002Fconfiguration-ownership","Where configuration belongs",{"path":17,"title":18},"\u002Fdocs\u002Fconcepts\u002Fenvironments-and-secrets","Environment values and secrets",{"path":20,"title":21},"\u002Fdocs\u002Fconcepts\u002Fmental-model","How projects fit together",{"path":23,"title":24},"\u002Fdocs\u002Fconcepts\u002Fplans-and-apply","Plans and apply",{"path":26,"title":27},"\u002Fdocs\u002Fconcepts\u002Ftargets-and-runtimes","Choose a target and runtime",{"path":29,"title":30},"\u002Fdocs\u002Fcontribute\u002Freleases","Publish a release",{"path":32,"title":33},"\u002Fdocs\u002Fdevelopment-mounts","Development mounts",{"path":35,"title":36},"\u002Fdocs\u002Fgetting-started","Getting started",{"path":38,"title":39},"\u002Fdocs\u002Fhelp\u002Ffaq","FAQ",{"path":41,"title":42},"\u002Fdocs\u002Fhelp\u002Ftroubleshooting","Troubleshooting",{"path":44,"title":45},"\u002Fdocs\u002Fhow-to\u002Fdeploy-production","Prepare a deployment environment",{"path":47,"title":48},"\u002Fdocs\u002Fhow-to\u002Fswarm-cluster","Run on a multi-node Swarm",{"path":50,"title":51},"\u002Fdocs","mm documentation",{"path":53,"title":54},"\u002Fdocs\u002Fjobs-and-schedules","Jobs and schedules",{"path":56,"title":57},"\u002Fdocs\u002Flocal-dashboard","Local dashboard",{"path":59,"title":60},"\u002Fdocs\u002Flocal-https","Local HTTPS",{"path":62,"title":63},"\u002Fdocs\u002Flocal-services","Local services",{"path":65,"title":66},"\u002Fdocs\u002Fmcp","Let an AI agent work on your project",{"path":68,"title":69},"\u002Fdocs\u002Fmulti-project-hosts","Run multiple projects on one host",{"path":71,"title":72},"\u002Fdocs\u002Fonboarding","Set up a project",{"path":74,"title":75},"\u002Fdocs\u002Fopenbao","Use OpenBao",{"path":77,"title":78},"\u002Fdocs\u002Fproject\u002Fcontributing","Contributing",{"path":80,"title":81},"\u002Fdocs\u002Fproject\u002Flicense","License",{"path":83,"title":84},"\u002Fdocs\u002Fproject\u002Fsecurity","Security",{"path":86,"title":87},"\u002Fdocs\u002Freference\u002Fcapability-matrix","Supported features and platforms",{"path":89,"title":90},"\u002Fdocs\u002Freference\u002Fcli","CLI command reference",{"path":92,"title":93},"\u002Fdocs\u002Freference\u002Fconfiguration","Configuration",{"path":95,"title":96},"\u002Fdocs\u002Freference\u002Fenvironment-variables","Environment variables",{"path":98,"title":99},"\u002Fdocs\u002Freference\u002Ferrors-and-exit-codes","Errors and exit codes",{"path":101,"title":102},"\u002Fdocs\u002Freference\u002Fknown-issues","Known limitations",{"path":104,"title":105},"\u002Fdocs\u002Fremote-access","Manage remote access",{"path":107,"title":108},"\u002Fdocs\u002Fremote-daemon","Set up a remote host",{"path":110,"title":111},"\u002Fdocs\u002Fruntime-observability","Status, logs, and commands",{"path":113,"title":114},"\u002Fdocs\u002Fsecret-delivery","Pass secrets to your app",{"path":116,"title":117},"\u002Fdocs\u002Fsecret-providers","Choose a secret store",{"path":119,"title":120},"\u002Fdocs\u002Fstart\u002Finstall","Install mm",{"path":122,"title":123},"\u002Fdocs\u002Fterminal-ui","Terminal UI",{"path":125,"title":126},"\u002Fdocs\u002Ftutorials\u002Fdotnet-web-api",".NET web API example",{"path":128,"title":129},"\u002Fdocs\u002Ftutorials\u002Ffirst-local-app","First local app",{"path":131,"title":132},"\u002Fdocs\u002Ftutorials\u002Flaravel-rust","Laravel and Rust example",{"path":134,"title":135},"\u002Fdocs\u002Ftutorials\u002Fnode-fullstack","Node full stack example",{"path":137,"title":138},"\u002Fdocs\u002Fvault","Use HashiCorp Vault",{"id":140,"title":111,"body":141,"description":460,"extension":461,"meta":462,"navigation":463,"path":110,"seo":464,"stem":465,"__hash__":466},"docs\u002Fdocs\u002Fruntime-observability.md",{"type":142,"value":143,"toc":453},"minimark",[144,149,175,185,189,200,249,260,271,275,282,345,352,355,378,389,393,410,413,416,422,426,429,449],[145,146,148],"h2",{"id":147},"check-services","Check services",[150,151,156],"pre",{"className":152,"code":153,"language":154,"meta":155,"style":155},"language-sh shiki shiki-themes mm","mm service status\n","sh","",[157,158,159],"code",{"__ignoreMap":155},[160,161,164,168,172],"span",{"class":162,"line":163},"line",1,[160,165,167],{"class":166},"svrjQ","mm",[160,169,171],{"class":170},"sv8ni"," service",[160,173,174],{"class":170}," status\n",[176,177,178,179,184],"p",{},"Status shows running and healthy counts, images, and recent failures when the\nruntime provides them. The ",[180,181,183],"a",{"href":182},".\u002Fterminal-ui","terminal UI"," and dashboard show\nthe same service information. A missing value means the runtime did not report it.",[145,186,188],{"id":187},"read-logs","Read logs",[176,190,191,192,195,196,199],{},"Replace ",[157,193,194],{},"api"," and ",[157,197,198],{},"app"," with your service and stack names:",[150,201,203],{"className":152,"code":202,"language":154,"meta":155,"style":155},"mm service logs api --stack app --tail 200\nmm service logs api --stack app --follow\n",[157,204,205,231],{"__ignoreMap":155},[160,206,207,209,211,214,217,221,224,227],{"class":162,"line":163},[160,208,167],{"class":166},[160,210,171],{"class":170},[160,212,213],{"class":170}," logs",[160,215,216],{"class":170}," api",[160,218,220],{"class":219},"sbRf1"," --stack",[160,222,223],{"class":170}," app",[160,225,226],{"class":219}," --tail",[160,228,230],{"class":229},"s1Wbj"," 200\n",[160,232,234,236,238,240,242,244,246],{"class":162,"line":233},2,[160,235,167],{"class":166},[160,237,171],{"class":170},[160,239,213],{"class":170},[160,241,216],{"class":170},[160,243,220],{"class":219},[160,245,223],{"class":170},[160,247,248],{"class":219}," --follow\n",[176,250,251,252,255,256,259],{},"Use Ctrl+C to stop following. ",[157,253,254],{},"--since"," accepts a timestamp in Unix milliseconds.\nWith ",[157,257,258],{},"--output json",", logs are newline-delimited records rather than one JSON\ndocument. Very long lines and high output rates are limited.",[176,261,262,263,266,267,270],{},"mm redacts configured secret values. If it cannot check a configured secret,\nit refuses to open the redacted stream. This cannot protect arbitrary sensitive\ndata your application writes to logs. Local raw access requires both ",[157,264,265],{},"--raw","\nand ",[157,268,269],{},"--approve-high-risk",".",[145,272,274],{"id":273},"run-a-command","Run a command",[176,276,277,278,281],{},"Put the command after ",[157,279,280],{},"--",":",[150,283,285],{"className":152,"code":284,"language":154,"meta":155,"style":155},"mm service exec api --stack app -- .\u002Fapp --version\nmm service exec api --stack app --user 1000:1000 --workdir \u002Fworkspace -- .\u002Ftool check\n",[157,286,287,311],{"__ignoreMap":155},[160,288,289,291,293,296,298,300,302,305,308],{"class":162,"line":163},[160,290,167],{"class":166},[160,292,171],{"class":170},[160,294,295],{"class":170}," exec",[160,297,216],{"class":170},[160,299,220],{"class":219},[160,301,223],{"class":170},[160,303,304],{"class":219}," --",[160,306,307],{"class":170}," .\u002Fapp",[160,309,310],{"class":219}," --version\n",[160,312,313,315,317,319,321,323,325,328,331,334,337,339,342],{"class":162,"line":233},[160,314,167],{"class":166},[160,316,171],{"class":170},[160,318,295],{"class":170},[160,320,216],{"class":170},[160,322,220],{"class":219},[160,324,223],{"class":170},[160,326,327],{"class":219}," --user",[160,329,330],{"class":170}," 1000:1000",[160,332,333],{"class":219}," --workdir",[160,335,336],{"class":170}," \u002Fworkspace",[160,338,304],{"class":219},[160,340,341],{"class":170}," .\u002Ftool",[160,343,344],{"class":170}," check\n",[176,346,347,348,351],{},"Arguments are passed directly, without adding a shell. Pipes and redirects\nare not interpreted inside the container. If the service has several running\ncontainers, select one with ",[157,349,350],{},"--container",". The command's exit code is returned\nto your shell.",[176,353,354],{},"For an interactive shell on a local target:",[150,356,358],{"className":152,"code":357,"language":154,"meta":155,"style":155},"mm service shell api --stack app --approve-high-risk\n",[157,359,360],{"__ignoreMap":155},[160,361,362,364,366,369,371,373,375],{"class":162,"line":163},[160,363,167],{"class":166},[160,365,171],{"class":170},[160,367,368],{"class":170}," shell",[160,370,216],{"class":170},[160,372,220],{"class":219},[160,374,223],{"class":170},[160,376,377],{"class":219}," --approve-high-risk\n",[176,379,380,381,384,385,388],{},"An exec ",[157,382,383],{},"--env"," value must be a secret reference such as\n",[157,386,387],{},"NAME=provider:\u002F\u002Flocation",", not a plaintext value. When secret environment\nvalues are supplied, output is suppressed and TTY mode is unavailable.",[145,390,392],{"id":391},"restart-a-service","Restart a service",[150,394,396],{"className":152,"code":395,"language":154,"meta":155,"style":155},"mm service restart api\n",[157,397,398],{"__ignoreMap":155},[160,399,400,402,404,407],{"class":162,"line":163},[160,401,167],{"class":166},[160,403,171],{"class":170},[160,405,406],{"class":170}," restart",[160,408,409],{"class":170}," api\n",[176,411,412],{},"This restarts every container of the service on a local target, including\ncontainers that have exited. The image, configuration, and volumes stay as\ndeployed: to apply a changed variable or image, deploy again instead.",[176,414,415],{},"On Docker Swarm the service's tasks are replaced in the order its update\npolicy sets, and the command returns once Swarm has accepted the update.",[176,417,418,419,270],{},"To restart one container of a service, select it in the\n",[180,420,183],{"href":421},".\u002Fterminal-ui#act-on-a-service-or-a-container",[145,423,425],{"id":424},"runtime-and-remote-support","Runtime and remote support",[176,427,428],{},"Docker Compose, Podman Compose, and Docker Swarm support logs and exec. Swarm\nlogs cover every node; Swarm exec runs in a task container on the node mm runs on.",[176,430,431,432,436,437,440,441,444,445,448],{},"SSH targets use the ",[180,433,435],{"href":434},".\u002Fremote-daemon","remote daemon",", with the permissions\ngranted by the host administrator. Remote exec currently supports output and\ncancellation, but not ",[157,438,439],{},"--stdin",", ",[157,442,443],{},"--tty",", or the interactive shell wrapper.\n",[157,446,447],{},"mm service restart"," does not work on SSH targets yet; deploy again to replace\nthe containers.\nThe container runtime itself never connects to a remote engine socket.",[450,451,452],"style",{},"html pre.shiki code .svrjQ, html code.shiki .svrjQ{--shiki-default:var(--mm-code-function)}html pre.shiki code .sv8ni, html code.shiki .sv8ni{--shiki-default:var(--mm-code-string)}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sbRf1, html code.shiki .sbRf1{--shiki-default:var(--mm-code-option)}html pre.shiki code .s1Wbj, html code.shiki .s1Wbj{--shiki-default:var(--mm-code-constant)}",{"title":155,"searchDepth":233,"depth":233,"links":454},[455,456,457,458,459],{"id":147,"depth":233,"text":148},{"id":187,"depth":233,"text":188},{"id":273,"depth":233,"text":274},{"id":391,"depth":233,"text":392},{"id":424,"depth":233,"text":425},"Check running services, follow logs, and execute a command in a container.","md",{},true,{"title":111,"description":460},"docs\u002Fruntime-observability","qVCqviWkXybNhqUsXgd5kbsaD-npU-SeRvNGXVo1yWw",1794512546197]