RM新时代网站-首页

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>Application Manager程序管理器

Application Manager程序管理器

2022-06-22 | zip | 0.00 MB | 次下載 | 免費

資料介紹

授權協(xié)議 MIT
開發(fā)語言 C/C++
軟件類型 開源軟件

軟件簡介

Application Manager,程序管理器,可以用來替代supervisor和cron-tab,用來管理計算機上部署的各種類型的程序,支持定視任務,長任務,提供命令行和REST接口。

Setup build environment on Ubuntu

apt-get?install?g++?git?make?zlib1g-dev?libssl-dev?cmake
apt-get?install?libboost-all-dev?libcpprest-dev?libjsoncpp-dev?libace-dev?libgoogle-glog-dev?libcctz-dev

?

REST APIs

# Application Manager
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
![coverage](https://img.shields.io/badge/coverage-90%25-yellowgreen.svg?maxAge=2592000)
![version](https://img.shields.io/badge/version-1.1.0-blue.svg?maxAge=2592000)

## Introduction
Application Manager is a daemon application to manage different types of sub-applications(process), each application can be a specific jobs, the app-manager will make sure all defined applications running on-time with defined behavior. provide REST APIs for integrate with outside app, provide command-line to start/stop and register new app easily. Also can be a JWT server.

The internal timer is multi-threaded with high-precision that can be used to replace Linux cron-tab and supervisor.


Supported applications ?| Behavior
---|---
Long running application | Monitor app running all time and restart when exited immediately
Short runing application | Periodic startup app
Periodic long running application |Long running applicatin but will be restart periodic
Extra Features | Application can define avialable time range in a day
Application can define envionment variables
Application can define resource (memory & CPU) limitation (cgroup on Linux)
SSL support
Collect host/app resource usage
Remote run shell commands
JWT authentication


## Setup build environment on CentOS/Ubuntu/Debian
```
git clone https://github.com/laoshanxi/app-manager.git
sudo sh app-manager/autogen.sh
```
## Build
```
cd app-manager
make
```

## REST APIs

Method | URI | Desc
---|---|---
GET | /app/$app-name | Get an application infomation
GET | /app/$app-name/testrun?timeout=5 | Test run an application
GET | /app/$app-name/testrun/output?process_uuid=uuidabc | Get the stdout and stderr for the test run
GET | /app-manager/applications | Get all application infomation
GET | /app-manager/resources | Get host resource usage
GET | /app-manager/config | Get all the configuration
PUT | /app/$app-name | Register a new application
POST| /app/$app-name?action=start | Start an application
POST| /app/$app-name?action=stop | Stop an application
POST| /authenticate | JWT authenticate
DELETE| /app/$app-name | Unregister an application

## How to install
**CentOS**:
```
wget https://github.com/laoshanxi/app-manager/releases/download/v1.0/appmanager-1.0-1.x86_64.rpm
sudo yum install ./appmanager-1.0-1.x86_64.rpm -y
```
If you directly run command line from installation console, there will have issue on dependency libraries, you need source /opt/appmanager/script/app.bashrc to get the environment. for the new console will be OK, the source operation was automaticlly add to /etc/bashrc
```
$ appc view
appc: error while loading shared libraries: libcpprest.so.2.10: cannot open shared object file: No such file or directory

$ source /opt/appmanager/script/app.bashrc?

$ appc view
id user ?active pid ? return memory name ? ? ? ?command_line
1 ?root ?start ?4485 ?0 ? ? ?0.3M ? period ? ? ?/bin/sleep 20
2 ?root ?start ?2048 ?0 ? ? ?1.9M ? ping ? ? ? ?ping www.baidu.com
```
**Ubuntu**:
```
$ apt-get install appmanager_1.0_amd64.deb
```

## Show all sub command

```
$ appc
Commands:
? view ? ? ? ?List application[s]
? config ? ? ?Display configurations
? resource ? ?Display host resource usage
? start ? ? ? Start a application
? stop ? ? ? ?Stop a application
? restart ? ? Restart a application
? reg ? ? ? ? Add a new application
? unreg ? ? ? Remove an application
? test ? ? ? ?Test run an application and get output
? sh ? ? ? ? ?Use shell run a command and get output

Run 'appc COMMAND --help' for more information on a command.

Usage: ?appc [COMMAND] [ARG...] [flags]
```


## List application[s]

```
$ appc view
id user ?active pid ? return memory name ? ? ? ?command_line
1 ?root ?start ?2350 ?0 ? ? ?0.3M ? period ? ? ?/bin/sleep 20
2 ?root ?start ?1860 ?0 ? ? ?1.9M ? ping ? ? ? ?ping www.baidu.com
$ appc view -n ping
id user ?active pid ? return memory name ? ? ? ?command_line
1 ?root ?start ?1860 ?0 ? ? ?1.9M ? ping ? ? ? ?ping www.baidu.com
```

## Display host resource usage

```
$ appc resource
{
? ?"cpu_cores" : 4,
? ?"cpu_processors" : 4,
? ?"cpu_sockets" : 1,
? ?"host_name" : "myubuntu",
? ?"mem_freeSwap_bytes" : 1023406080,
? ?"mem_free_bytes" : 3755048960,
? ?"mem_totalSwap_bytes" : 1023406080,
? ?"mem_total_bytes" : 5189935104,
? ?"net_ip" : [
? ? ? {
? ? ? ? ?"docker0" : "172.17.0.1"
? ? ? },
? ? ? {
? ? ? ? ?"enp0s3" : "10.0.2.15"
? ? ? }
? ?]
}
```

## Display configurations

```
$ appc config
{
? ? ? ? "Applications" :?
? ? ? ? [
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "active" : 1,
? ? ? ? ? ? ? ? ? ? ? ? "command_line" : "/bin/sleep 20",
? ? ? ? ? ? ? ? ? ? ? ? "daily_limitation" :?
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "daily_end" : "23:00:00",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "daily_start" : "09:00:00"
? ? ? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? ? ? "env" :?
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "TEST_ENV1" : "value",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "TEST_ENV2" : "value"
? ? ? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? ? ? "keep_running" : true,
? ? ? ? ? ? ? ? ? ? ? ? "name" : "period",
? ? ? ? ? ? ? ? ? ? ? ? "posix_timezone" : "CST+8:00:00",
? ? ? ? ? ? ? ? ? ? ? ? "resource_limit" :?
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "cpu_shares" : 100,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "memory_mb" : 200,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "memory_virt_mb" : 300
? ? ? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? ? ? "run_as" : "root",
? ? ? ? ? ? ? ? ? ? ? ? "run_once" : false,
? ? ? ? ? ? ? ? ? ? ? ? "start_interval_seconds" : 30,
? ? ? ? ? ? ? ? ? ? ? ? "start_interval_timeout" : 0,
? ? ? ? ? ? ? ? ? ? ? ? "start_time" : "2018-01-01 16:00:00",
? ? ? ? ? ? ? ? ? ? ? ? "working_dir" : "/opt"
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "active" : 1,
? ? ? ? ? ? ? ? ? ? ? ? "command_line" : "ping www.baidu.com",
? ? ? ? ? ? ? ? ? ? ? ? "name" : "ping",
? ? ? ? ? ? ? ? ? ? ? ? "run_as" : "root",
? ? ? ? ? ? ? ? ? ? ? ? "run_once" : false,
? ? ? ? ? ? ? ? ? ? ? ? "working_dir" : "/tmp"
? ? ? ? ? ? ? ? }
? ? ? ? ],
? ? ? ? "Description" : "myhost",
? ? ? ? "LogLevel" : "DEBUG",
? ? ? ? "RestListenPort" : 6060,
? ? ? ? "SSLCertificateFile" : "server.crt",
? ? ? ? "SSLCertificateKeyFile" : "server.key",
? ? ? ? "SSLEnabled" : true,
? ? ? ? "ScheduleIntervalSeconds" : 2
}

```

## Register a new application

```
$ appc reg
Register a new application:
? -n [ --name ] arg ? ? ? ? ? ? ?application name
? -u [ --user ] arg (=root) ? ? ?application process running user name
? -c [ --cmd ] arg ? ? ? ? ? ? ? full command line with arguments
? -w [ --workdir ] arg (=/tmp) ? working directory
? -a [ --active ] arg (=1) ? ? ? application active status (start is true, stop
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?is false)
? -t [ --start_time ] arg ? ? ? ?start date time for short running app (e.g.,?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'2018-01-01 09:00:00')
? -s [ --daily_start ] arg ? ? ? daily start time (e.g., '09:00:00')
? -d [ --daily_end ] arg ? ? ? ? daily end time (e.g., '20:00:00')
? -m [ --memory ] arg ? ? ? ? ? ?memory limit in MByte
? -v [ --virtual_memory ] arg ? ?virtual memory limit in MByte
? -p [ --cpu_shares ] arg ? ? ? ?CPU shares (relative weight)
? -d [ --daily_end ] arg ? ? ? ? daily end time (e.g., '20:00:00')
? -e [ --env ] arg ? ? ? ? ? ? ? environment variables (e.g., -e env1=value1 -e
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?env2=value2)
? -i [ --interval ] arg ? ? ? ? ?start interval seconds for short running app
? -x [ --extra_time ] arg ? ? ? ?extra timeout for short running app,the value?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?must less than interval ?(default 0)
? -z [ --timezone ] arg ? ? ? ? ?posix timezone for the application, reflect?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[start_time|daily_start|daily_end] (e.g.,?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'WST+08:00' is Australia Standard Time)
? -k [ --keep_running ] arg (=0) monitor and keep running for short running app
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?in start interval
? -f [ --force ] ? ? ? ? ? ? ? ? force without confirm.
? -h [ --help ] ? ? ? ? ? ? ? ? ?help message

??
$ appc reg -n ping -u kfc -c 'ping www.google.com' -w /opt
Application already exist, are you sure you want to update the application (y/n)?
y
{
? ?"active" : 1,
? ?"command_line" : "ping www.google.com",
? ?"name" : "ping",
? ?"pid" : -1,
? ?"return" : 0,
? ?"run_as" : "kfc",
? ?"working_dir" : "/opt"
}
```


## Remove an application
```
appc unreg -n ping
Are you sure you want to remove the application (y/n)?
y
Success
```

## Start an application
```
$ appc start -n ping
```

## Stop an application
```
$ appc stop -n ping
```

## Test run an application and get stdout
``` sh
$ appc test -n ping -t 5
PING www.a.shifen.com (220.181.112.244) 56(84) bytes of data.
64 bytes from 220.181.112.244: icmp_seq=1 ttl=55 time=20.0 ms
64 bytes from 220.181.112.244: icmp_seq=2 ttl=55 time=20.1 ms
64 bytes from 220.181.112.244: icmp_seq=3 ttl=55 time=20.1 ms
64 bytes from 220.181.112.244: icmp_seq=4 ttl=55 time=20.1 ms
64 bytes from 220.181.112.244: icmp_seq=5 ttl=55 time=20.1 ms
```

## Run a shell command and get stdout
``` sh
$ appc sh -e LD_LIBRARY_PATH=/opt/appmanager/lib64 -c "appc view"?
{
? ? ? ? "active" : 0,
? ? ? ? "command_line" : "/bin/sh -c 'export LD_LIBRARY_PATH=/opt/appmanager/lib64;appc view'",
? ? ? ? "env" :?
? ? ? ? {
? ? ? ? ? ? ? ? "LD_LIBRARY_PATH" : "/opt/appmanager/lib64"
? ? ? ? },
? ? ? ? "memory" : 0,
? ? ? ? "name" : "58de823f-cecf-4b67-b362-d08db46167f6",
? ? ? ? "pid" : -1,
? ? ? ? "return" : 0,
? ? ? ? "run_as" : "root",
? ? ? ? "run_once" : true,
? ? ? ? "working_dir" : "/tmp"
}

id user ?active pid ? return memory name ? ? ? ?command_line
1 ?root ?start ?2605 ?0 ? ? ?0.3M ? period ? ? ?/bin/sleep 20
2 ?root ?start ?1860 ?0 ? ? ?1.9M ? ping ? ? ? ?ping www.baidu.com
3 ?root ?stop ? 0 ? ? 0 ? ? ?0 ? ? ?58de823f-c* /bin/sh -c 'export LD_LIBRARY_PATH=/opt/appmanager/lib64;appc view'
Process already finished or killed by timeout event
application <58de823f-cecf-4b67-b362-d08db46167f6> removed.
```

![example](https://github.com/laoshanxi/app-manager/blob/master/doc/example.gif?raw=true)?

## Remote run a shell command
![appc_sh](https://github.com/laoshanxi/app-manager/blob/master/doc/appc_sh.gif?raw=true)?

## Usage scenarios
1. Integrate with package installation script and register startup command to app manager automaticlly
2. Install on remote host to execute command remotly and get output (can build-up web ssh)
3. Get resource usage (cpu/memory) for each application and host resource status

## 3rd party deependencies
- [C++11](http://www.cplusplus.com/articles/cpp11)
- [ACE](https://github.com/DOCGroup/ACE_TAO)
- [Microsoft cpprestsdk](https://github.com/Microsoft/cpprestsdk)
- [boost](https://github.com/boostorg/boost)
- [jsoncpp](https://github.com/open-source-parsers/jsoncpp)
- [log4cpp](http://log4cpp.sourceforge.net)
- [jwt_cpp](https://thalhammer.it/projects/jwt_cpp)

## Design
### Thread model

URI
GET /app/$app-name
GET /app-manager/applications
GET /app-manager/config
PUT /app/$app-name
POST /app/$app-name?action=start
POST /app/$app-name?action=stop
DELETE /app/$app-name

Show all sub command

$?appc
Commands:
??view????????List?application[s]
??config??????Display?configurations
??start???????Start?a?application
??stop????????Stop?a?application
??reg?????????Add?a?new?application
??unreg???????Remove?an?application

Run?'appc?COMMAND?--help'?for?more?information?on?a?command.

Usage:??appc?[COMMAND]?[ARG...]?[flags]
?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
RM新时代网站-首页