github.com/m3db/m3@v1.5.1-0.20231129193456-75a402aa583b/src/m3em/README.md (about)

     1  m3em
     2  ==============================================================================================
     3  
     4  `m3em` (pronounced `meme`) is an acronym for M3 Environment Manager. [ccm](https://github.com/pcmanus/ccm)`:C* :: m3em:m3db`. Unlike `ccm`, `m3em` permits remote host operations.
     5  
     6  The goal of `m3em` is to make it easy to create, manage and destroy services across hosts. It is meant for testing clustered services like [m3db](https://github.com/m3db/m3) and [m3aggregator](https://github.com/m3db/m3) .
     7  
     8  ## Components
     9  There are two primary components in m3em:
    10  
    11  (1) API constructs encapsulating placement interactions (see `cluster` package), along with remote process orchestration (see `node` package).
    12  
    13  (2) `m3em_agent`: process running on remote hosts. It's responsible for process lifecycle, heartbeating back to the coordinating host.
    14  
    15  ## Usage Example
    16  - For API usage, refer `tools/dtest` in [M3DB](https://github.com/m3db/m3)
    17  
    18  ### m3em_agent
    19  
    20  ```
    21  $ make m3em_agent
    22  $ scp ./out/m3em_agent <remote-host>:<remote-path>
    23  $ ssh <remote-host>
    24  $ cat >m3em.agent.yaml <<EOF
    25  server:
    26    listenAddress: "0.0.0.0:14541"
    27    debugAddress: "0.0.0.0:24541"
    28  
    29  metrics:
    30    sampleRate: 0.02
    31    m3:
    32      hostPort: "127.0.0.1:9052"
    33      service: "m3em"
    34      includeHost: true
    35      env: "development"
    36  
    37  agent:
    38    workingDir: /var/m3em-agent
    39    startupCmds:
    40      - path: /bin/echo
    41        args:
    42          - "sample startup command"
    43    releaseCmds:
    44      - path: /bin/echo
    45        args:
    46          - "sample release command"
    47    testEnvVars:
    48      UBER_DATACENTER: sjc1
    49  EOF
    50  $ /remote-path/m3em_agent -f m3em.agent.yaml
    51  ```