You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Go to file
wangyj 184295c57e
update .gitignore
6 years ago
.vscode update .gitignore 6 years ago
docs add gif page 8 years ago
gops update .gitignore 6 years ago
hipchat add hipchat lib 8 years ago
pushover add pushover, it seems blocked in china 8 years ago
res update .gitignore 6 years ago
.fsw.yml try to fix branch, but log still duplicate 8 years ago
.gitignore update .gitignore 6 years ago
.gopack.yml auto generate version from git, close #11 8 years ago
.goreleaser.yml add build support for raspberry 7 years ago
.travis.yml update doc 7 years ago
LICENSE Initial commit 9 years ago
README.md update .gitignore 6 years ago
README_ZH.md update zh readme 8 years ago
assets_dev.go update .gitignore 6 years ago
assets_generate.go update .gitignore 6 years ago
broadcast.go update .gitignore 6 years ago
broadcast_test.go update .gitignore 6 years ago
build_remote.sh update .gitignore 6 years ago
build_standalone.sh update .gitignore 6 years ago
cmds.go update .gitignore 6 years ago
config.go update .gitignore 6 years ago
fsm.go update .gitignore 6 years ago
fsm_test.go update .gitignore 6 years ago
get.sh fix get.sh error arch check 7 years ago
glide.yaml update .gitignore 6 years ago
gosuv.go update .gitignore 6 years ago
sigchld_unix.go loop reaping dead children 7 years ago
utils.go change update to github, not finished yet 7 years ago
web.go update .gitignore 6 years ago

README.md

gosuv

Build Status

中文README 不是很全,能看懂英文的还是尽量看英文

current is in beta

Process management writtern by golang, inspired by python-supervisor

So why write another supervisor?

I have been using python-supervisor for many years and there are something uncomfortable feelings.

  1. Log can't contains ANSI color chars
  2. The configuration file can add on the web, often forgot some settings.
  3. supervisorctl reload will cause supervisord restarted
  4. Hard to set status change to fatal notifications.
  5. No process performance monitor page.
  6. Program starts with no common environ, eg, missing HOME and USER variable
  7. Kill process default is not group kill which make sub process still running.
  8. More... will added when I think of it.

Features

  • Web control page

  • HTTP Basic auth

  • Github webhook

  • Single log page, include search support

  • 中文文档

Requirements

Go version at least 1.6+

Installation

Binaries

The fastest way is run with. Default install location is /usr/local/bin, change env-var BINDIR will also change install location.

curl https://raw.githubusercontent.com/codeskyblue/gosuv/master/get.sh | bash

Or just download binaries

https://github.com/codeskyblue/gosuv/releases

Thanks to goreleaser which makes publish binaries automaticly.

Build from source

go get -d github.com/codeskyblue/gosuv
cd $GOPATH/src/github.com/codeskyblue/gosuv
go generate # package html resources into go
go build -tags vfs

Quick start

After you installed gosuv, the first thing is to start server.

gosuv start-server

Basic operations

$ gosuv status
PROGRAM NAME            STATUS
test                    running
test_again              stopped

$ gosuv stop test
$ gosuv start test

Open web http://localhost:11313 to see the manager page. And follow the gif to add a program to gosuv.

gosuv web

Configuration

Default config file stored in directory $HOME/.gosuv/, Set env-var GOSUV_HOME_DIR can change config file store directory.

  • file programs.yml contains all program settings.
  • file config.yml contains server config

File config.yml can be generated by gosuv conftest

Example config.yaml

server:
  httpauth:
    enabled: true
    username: admin
    password: admin
  addr: :8083
  name: 10.10.99.177
notifications:
  dingtalk:
    groups:
    - secret: c1b8032******************aa736a
      mobile:
      - "153********"
client:
  server_url: http://admin:admin@localhost:8083

Logs can be found in $HOME/.gosuv/log/

Edit config file(default located in $HOME/.gosuv/programs.yml) and run gosuv reload will take effect immediately.

Design

HTTP is follow the RESTFul guide.

Get or Update program

<GET|PUT> /api/programs/:name

Add new program

POST /api/programs

Del program

DELETE /api/programs/:name

State

Only 4 states. ref

states

Notification

Configuration example

- demo-program:
  command: ...
  notifications:
    pushover:
      api_key: [token]
      users:
      - [user1]
      - [user2]

Now only support pushover, and only status change to fatal will get notified.

Integrate with github (todo)

This is feature that will helps update your deployment environment once your updated in the github.

This part is set in the programs.yml, take look the example

- demo-program:
  command: python app.py
  directory: /opt/demo
  webhook:
    github:
      secret: 123456
      command: git pull origin master

LICENSE

MIT