Skip to content
This repository has been archived by the owner on Feb 7, 2022. It is now read-only.

craftslab/metalflow

Repository files navigation

metalflow

Actions Status Docker Go Report Card License Tag

Introduction

metalflow is a master of metalbeat written in Go.

Prerequisites

  • Gin >= 1.6.0
  • Go >= 1.15.0
  • GORM >= 1.20.11
  • PostgreSQL >= 12.5
  • etcd == 3.3.25
  • gRPC == 1.26.0

Build

git clone https://github.com/craftslab/metalflow.git

cd metalflow
make build

Run

./metalflow --config-file="config.yml" --listen-url="127.0.0.1:9080"

Docker

git clone https://github.com/craftslab/metalflow.git

cd metalflow
docker build --no-cache -f Dockerfile -t craftslab/metalflow:latest .
docker run -p 9080:9080 craftslab/metalflow:latest /metalflow --config-file="/config.yml" --listen-url="127.0.0.1:9080"

Stack

docker swarm init

mkdir -p /var/lib/postgresql/data
docker stack deploy -c Dockerstack.yml metalflow
docker stack services metalflow
docker stack rm metalflow

docker swarm leave --force

Usage

usage: metalflow --config-file=CONFIG-FILE [<flags>]

Metal Flow

Flags:
  --help                     Show context-sensitive help (also try --help-long
                             and --help-man).
  --version                  Show application version.
  --config-file=CONFIG-FILE  Config file (.yml)
  --listen-url=":9080"       Listen url

Settings

metalflow parameters can be set in the directory config.

An example of configuration in config.yml:

apiVersion: v1
kind: master
metadata:
  name: metalflow
spec:
  etcd:
    host: 127.0.0.1
    port: 2379
  postgres:
    host: 127.0.0.1
    port: 5432
    user: postgres
    pass: postgres
    db: metalflow

Design

design

Etcd

  • Agent
key: /metalflow/agent/{HOST}/register
val: metalbeat
  • Master
key: /metalflow/worker/{HOST}/dispatch
val: {COMMAND}

PostgreSQL

  • Admin
pgAdmin: http://127.0.0.1:9081

user: user@domain.com
pass: postgres
  • Backup
pg_dump -h 127.0.0.1 -p 5432 -U postgres -d metalflow -E utf8 -F t -b -v -f metalflow.tar
  • Restore
pg_restore -h 127.0.0.1 -p 5432 -U postgres -O -d metalflow -v metalflow.tar

Swagger

http://127.0.0.1:9080/swagger/index.html

License

Project License can be found here.

Reference