7 个版本
0.1.6 | 2022年12月18日 |
---|---|
0.1.4 | 2021年5月6日 |
0.1.3 | 2021年4月26日 |
0.1.2 | 2021年3月8日 |
0.0.1 | 2020年3月14日 |
#900 在 命令行实用程序
每月 25 次下载
115KB
2.5K SLoC
Horust 是一个用 Rust 编写的监督/初始化系统,设计用于在容器内运行。
目录
目标
- 监督:成为一个功能齐全的监督系统,设计用于在容器中运行(但不仅限于此)。
- 易于理解:代码易于理解、修改和删除,以满足需要。
- 完整性:可以作为您自己的
init
系统的直接替代品。 - 稳定可靠:成为您最喜欢的埃及神,在所有用例中都值得信赖。
状态
到目前为止,这应被视为 Alpha 软件版本。也就是说,您可以使用它,但请自行决定。
使用方法
假设您想创建一个网站健康监控系统。您可以使用 Horust 和一个小型 Python 脚本来创建一个。
1. 创建一个新的目录
将包含我们的服务
mkdir -p /etc/horust/services
2. 创建您的第一个 Horust 服务
提示:您还可以使用
horust --sample-service > new_service.toml
来引导创建新服务的创建。
在 /etc/horust/services/healthchecker.toml
下为 Horust 创建一个新的配置文件
command = "/tmp/healthcheck.py"
start-delay = "10s"
[restart]
strategy = "never"
这里有一些注意事项
在启动时,Horust 将读取此服务文件,并运行 command
。根据重启策略 "never
",一旦服务完成了其任务,它将 不会重启,Horust 将退出。
如您所见,它将运行 /tmp/healthcheck.py
Python 脚本,该脚本尚不存在。让我们创建它!
3. 创建您的 Python 脚本
在 /tmp/healthcheck.py
下创建一个新的 Python 脚本
#!/usr/bin/env python3
import urllib.request
import sys
req = urllib.request.Request("https://www.google.com", method="HEAD")
resp = urllib.request.urlopen(req)
if resp.status == 200:
sys.exit(0)
else:
sys.exit(1)
别忘了使其可执行
chmod +x /tmp/healthcheck.py
4. 构建Horust
这一步仅在此步骤中需要,因为我们还没有发布版本,或者如果你喜欢尝试最新的功能。
构建Horust需要Rust。安装完成后,可以使用Rust的cargo
来构建Horust。
cargo build --release
4. 运行Horust
现在你可以直接
./horust
默认情况下,Horust在/etc/horust/services
文件夹内搜索服务(我们在步骤1中已创建该文件夹)。
从现在起,每隔10秒,Horust将向https://google.it发送一个HTTP HEAD
请求。如果响应与200
不同,则存在问题!
在这种情况下,我们只是以不同的退出代码退出(即退出代码为1
而不是0
)。但在现实生活中,你可以触发其他操作——比如将此信息存储在数据库中进行分析,或者发送电子邮件给网站所有者。
5. 完成工作
使用Ctrl+C停止Horust。Horust将向所有正在运行的服务发送SIGTERM
信号,如果在一段时间内没有收到回复,它将通过发送额外的SIGKILL
信号来终止它们。
查看文档以获取服务配置文件上所有可用选项的完整参考。以下是一个概述。
command = "/bin/bash -c 'echo hello world'"
start-delay = "2s"
start-after = ["database", "backend.toml"]
stdout = "STDOUT"
stderr = "/var/logs/hello_world_svc/stderr.log"
user = "root"
working-directory = "/tmp/"
[restart]
strategy = "never"
backoff = "0s"
attempts = 0
[healthiness]
http-endpoint = "https://127.0.0.1:8080/healthcheck"
file-path = "/var/myservice/up"
[failure]
successful-exit-code = [ 0, 1, 255]
strategy = "ignore"
[termination]
signal = "TERM"
wait = "10s"
die-if-failed = ["db.toml"]
[environment]
keep-env = false
re-export = [ "PATH", "DB_PASS"]
additional = { key = "value"}
贡献
感谢您考虑为horust做出贡献!要开始,请查看CONTRIBUTING.md。
许可证
Horust在MIT许可下提供。请阅读附带的许可文件。
依赖项
~7–20MB
~287K SLoC