哪吒监控的Dashboard已经添加本地化,支持多个语言,你可以在开发新功能时遵循以下步骤来支持本地化
WARNING
哪吒监控使用 Crowdin 平台翻译文本,请不要直接修改除 zh-CN.toml
以外的toml文件
使用说明
- 你可以直接使用
/resource/l10n/zh-CN.toml
中的配置来替换新功能中的文本 - 如果新功能中有新的文本,请将新文本拉取到
zh-CN.toml
中 - 在Pull Request被合并后,你可以前往 Crowdin 平台贡献新文本的翻译
diff --git a/assets/guide_api.md.2a8eaeae.js b/assets/guide_api.md.2a8eaeae.js new file mode 100644 index 00000000..2b942c0d --- /dev/null +++ b/assets/guide_api.md.2a8eaeae.js @@ -0,0 +1,113 @@ +import{_ as t,c as o,o as u,d as q}from"./app.2c402e15.js";const _='{"title":"API\u63A5\u53E3\uFF08\u5141\u8BB8\u4F7F\u7528API Token\u8BA4\u8BC1\u4E0ECookies\u8BA4\u8BC1\uFF09","description":"","frontmatter":{},"headers":[{"level":2,"title":"API\u63A5\u53E3\uFF08\u5141\u8BB8\u4F7F\u7528API Token\u8BA4\u8BC1\u4E0ECookies\u8BA4\u8BC1\uFF09","slug":"api\u63A5\u53E3\uFF08\u5141\u8BB8\u4F7F\u7528api-token\u8BA4\u8BC1\u4E0Ecookies\u8BA4\u8BC1\uFF09"}],"relativePath":"guide/api.md"}',n={},e=q(`
Token\u8BA4\u8BC1\u65B9\u5F0F\uFF1A
Request Headers:
+Authorization: Token
+
\u4E0B\u9762\u793A\u4F8B\u4E2D\u7684\u8D1F\u6570\u65F6\u95F4\u6233\u4E3A\uFF080000-00-00\uFF09
\u76EE\u524D\u8868\u793A\u9762\u677F\u4E0A\u7EBF\u540E\u8BE5\u670D\u52A1\u5668\u4ECE\u672A\u6C47\u62A5\u8FC7
\u4F46\u4E0D\u5EFA\u8BAE\u7528\u6B63\u8D1F\u6027\u5224\u65AD\u72B6\u6001
\u83B7\u53D6\u670D\u52A1\u5668\u5217\u8868\uFF1AGET /api/v1/server/list?tag=
query: tag (ServerTag \u63D0\u4F9B\u6B64\u53C2\u6570\u5219\u4EC5\u67E5\u8BE2\u8BE5\u5206\u7EC4\u4E0B\u7684\u670D\u52A1\u5668)
{
+ "code": 0,
+ "message": "success",
+ "result": [
+ {
+ "id": 1,
+ "name": "Server1",
+ "tag": "Tag1",
+ "last_active": 1653014667,
+ "ipv4": "1.1.1.1",
+ "ipv6": "",
+ "valid_ip": "1.1.1.1"
+ },
+ {
+ "id": 2,
+ "name": "Server2",
+ "tag": "Tag2",
+ "last_active": -62135596800,
+ "ipv4": "",
+ "ipv6": "",
+ "valid_ip": ""
+ }
+ ]
+}
+
\u83B7\u53D6\u670D\u52A1\u5668\u8BE6\u60C5\uFF1AGET /api/v1/server/details?id=&tag=
query: id (ServerID \u4EE5\u9017\u53F7\u5206\u9694 \u63D0\u4F9B\u6B64\u53C2\u6570\u5219\u67E5\u8BE2\u8BE5\u5217\u8868\u5BF9\u5E94\u7684\u670D\u52A1\u5668 \u540C\u65F6\u65E0\u89C6tag\u53C2\u6570)
query: tag (ServerTag \u63D0\u4F9B\u6B64\u53C2\u6570\u5219\u4EC5\u67E5\u8BE2\u8BE5\u5206\u7EC4\u4E0B\u7684\u670D\u52A1\u5668)
{
+ "code": 0,
+ "message": "success",
+ "result": [
+ {
+ "id": 1,
+ "name": "Server1",
+ "tag": "Tag1",
+ "last_active": 1653015042,
+ "ipv4": "1.1.1.1",
+ "ipv6": "",
+ "valid_ip": "1.1.1.1",
+ "host": {
+ "Platform": "darwin",
+ "PlatformVersion": "12.3.1",
+ "CPU": [
+ "Apple M1 Pro 1 Physical Core"
+ ],
+ "MemTotal": 17179869184,
+ "DiskTotal": 2473496842240,
+ "SwapTotal": 0,
+ "Arch": "arm64",
+ "Virtualization": "",
+ "BootTime": 1652683962,
+ "CountryCode": "hk",
+ "Version": ""
+ },
+ "status": {
+ "CPU": 17.330210772540017,
+ "MemUsed": 14013841408,
+ "SwapUsed": 0,
+ "DiskUsed": 2335048912896,
+ "NetInTransfer": 2710273234,
+ "NetOutTransfer": 695454765,
+ "NetInSpeed": 10806,
+ "NetOutSpeed": 5303,
+ "Uptime": 331080,
+ "Load1": 5.23486328125,
+ "Load5": 4.873046875,
+ "Load15": 3.99267578125,
+ "TcpConnCount": 195,
+ "UdpConnCount": 70,
+ "ProcessCount": 437
+ }
+ },
+ {
+ "id": 2,
+ "name": "Server2",
+ "tag": "Tag2",
+ "last_active": -62135596800,
+ "ipv4": "",
+ "ipv6": "",
+ "valid_ip": "",
+ "host": {
+ "Platform": "",
+ "PlatformVersion": "",
+ "CPU": null,
+ "MemTotal": 0,
+ "DiskTotal": 0,
+ "SwapTotal": 0,
+ "Arch": "",
+ "Virtualization": "",
+ "BootTime": 0,
+ "CountryCode": "",
+ "Version": ""
+ },
+ "status": {
+ "CPU": 0,
+ "MemUsed": 0,
+ "SwapUsed": 0,
+ "DiskUsed": 0,
+ "NetInTransfer": 0,
+ "NetOutTransfer": 0,
+ "NetInSpeed": 0,
+ "NetOutSpeed": 0,
+ "Uptime": 0,
+ "Load1": 0,
+ "Load5": 0,
+ "Load15": 0,
+ "TcpConnCount": 0,
+ "UdpConnCount": 0,
+ "ProcessCount": 0
+ }
+ }
+ ]
+}
+
Token\u8BA4\u8BC1\u65B9\u5F0F\uFF1A
Request Headers:
-Authorization: Token
-
\u83B7\u53D6\u670D\u52A1\u5668\u5217\u8868\uFF1AGET /api/v1/server/list?tag=
query: tag (ServerTag \u63D0\u4F9B\u6B64\u53C2\u6570\u5219\u4EC5\u67E5\u8BE2\u8BE5\u5206\u7EC4\u4E0B\u7684\u670D\u52A1\u5668)
{
- "code": 0,
- "message": "success",
- "result": [
- {
- "id": 1,
- "name": "ServerName",
- "tag": "ServerTag",
- "ipv4": "1.1.1.1",
- "ipv6": "",
- "valid_ip": "1.1.1.1"
- }
- ]
-}
-
\u83B7\u53D6\u670D\u52A1\u5668\u8BE6\u60C5\uFF1AGET /api/v1/server/details?id=&tag=
query: id (ServerID \u4EE5\u9017\u53F7\u5206\u9694 \u63D0\u4F9B\u6B64\u53C2\u6570\u5219\u67E5\u8BE2\u8BE5\u5217\u8868\u5BF9\u5E94\u7684\u670D\u52A1\u5668 \u540C\u65F6\u65E0\u89C6tag\u53C2\u6570)
query: tag (ServerTag \u63D0\u4F9B\u6B64\u53C2\u6570\u5219\u4EC5\u67E5\u8BE2\u8BE5\u5206\u7EC4\u4E0B\u7684\u670D\u52A1\u5668)
{
- "code": 0,
- "message": "success",
- "result": [
- {
- "id": 1,
- "name": "ServerName",
- "tag": "ServerTag",
- "ipv4": "1.1.1.1",
- "ipv6": "",
- "valid_ip": "1.1.1.1",
- "host": {
- "Platform": "darwin",
- "PlatformVersion": "12.3.1",
- "CPU": [
- "Apple M1 Pro 1 Physical Core"
- ],
- "MemTotal": 17179869184,
- "DiskTotal": 2473496842240,
- "SwapTotal": 0,
- "Arch": "arm64",
- "Virtualization": "",
- "BootTime": 1652683962,
- "CountryCode": "hk",
- "Version": ""
- },
- "status": {
- "CPU": 10.94117647050606,
- "MemUsed": 14150975488,
- "SwapUsed": 0,
- "DiskUsed": 2138323378176,
- "NetInTransfer": 652628744,
- "NetOutTransfer": 465447325,
- "NetInSpeed": 2156,
- "NetOutSpeed": 4254,
- "Uptime": 157738,
- "Load1": 3.82373046875,
- "Load5": 3.74169921875,
- "Load15": 4.5966796875,
- "TcpConnCount": 214,
- "UdpConnCount": 48,
- "ProcessCount": 451
- }
- }
- ]
-}
-
哪吒监控的Dashboard已经添加本地化,支持多个语言,你可以在开发新功能时遵循以下步骤来支持本地化
WARNING
哪吒监控使用 Crowdin 平台翻译文本,请不要直接修改除 zh-CN.toml
以外的toml文件
/resource/l10n/zh-CN.toml
中的配置来替换新功能中的文本zh-CN.toml
中Comming soon
Comming soon
chmod +x /etc/init.d/nezha-service
赋予执行权限/etc/init.d/nezha-service enable && /etc/init.d/nezha-service start
/opt/nezha/agent/nezha-agent --edit-agent-config
来选择自定义的网卡和分区,然后重启 Agent 即可生效通过执行 ./nezha-agent --help
查看支持的参数,如果你使用了一键脚本安装Agent,可以编辑 /etc/systemd/system/nezha-agent.service
,在 ExecStart=
这一行的末尾加上以下参数
--report-delay
控制系统信息上报的间隔,默认为 1 秒,可以设置为 3 来进一步降低 agent 端系统资源占用(配置区间 1-4)--skip-conn
不监控连接数,推荐 机场/连接密集型服务器或CPU占用较高的服务器设置--skip-procs
不监控进程数,也可以降低 agent 占用--disable-auto-update
禁止 自动更新 Agent(安全特性)--disable-force-update
禁止 强制更新 Agent(安全特性)--disable-command-execute
禁止在 Agent 上执行定时任务、打开在线终端(安全特性)--tls
启用 SSL/TLS 加密(使用 nginx 反向代理 Agent 的 grpc 连接,并且 nginx 开启 SSL/TLS 时,需要启用该项配置)Comming soon
notifications
servers
services
settings
tasks
请查看Dashboard相关-后台显示的IP和Agent实际IP不一致?
在此不再赘述。
多出现在国内主机中,目前一键脚本只从github直接获取安装脚本,您可以多尝试几次,或者手动安装Agent,别忘了使用镜像。
Token认证方式:
Request Headers:
Authorization: Token
-
获取服务器列表:GET /api/v1/server/list?tag=
query: tag (ServerTag 提供此参数则仅查询该分组下的服务器)
{
+
下面示例中的负数时间戳为(0000-00-00)
目前表示面板上线后该服务器从未汇报过
但不建议用正负性判断状态
获取服务器列表:GET /api/v1/server/list?tag=
query: tag (ServerTag 提供此参数则仅查询该分组下的服务器)
{
"code": 0,
"message": "success",
"result": [
{
"id": 1,
- "name": "ServerName",
- "tag": "ServerTag",
+ "name": "Server1",
+ "tag": "Tag1",
+ "last_active": 1653014667,
"ipv4": "1.1.1.1",
"ipv6": "",
"valid_ip": "1.1.1.1"
+ },
+ {
+ "id": 2,
+ "name": "Server2",
+ "tag": "Tag2",
+ "last_active": -62135596800,
+ "ipv4": "",
+ "ipv6": "",
+ "valid_ip": ""
}
]
}
@@ -35,8 +45,9 @@ Authorization: Token
"result": [
{
"id": 1,
- "name": "ServerName",
- "tag": "ServerTag",
+ "name": "Server1",
+ "tag": "Tag1",
+ "last_active": 1653015042,
"ipv4": "1.1.1.1",
"ipv6": "",
"valid_ip": "1.1.1.1",
@@ -56,27 +67,66 @@ Authorization: Token
"Version": ""
},
"status": {
- "CPU": 10.94117647050606,
- "MemUsed": 14150975488,
+ "CPU": 17.330210772540017,
+ "MemUsed": 14013841408,
"SwapUsed": 0,
- "DiskUsed": 2138323378176,
- "NetInTransfer": 652628744,
- "NetOutTransfer": 465447325,
- "NetInSpeed": 2156,
- "NetOutSpeed": 4254,
- "Uptime": 157738,
- "Load1": 3.82373046875,
- "Load5": 3.74169921875,
- "Load15": 4.5966796875,
- "TcpConnCount": 214,
- "UdpConnCount": 48,
- "ProcessCount": 451
+ "DiskUsed": 2335048912896,
+ "NetInTransfer": 2710273234,
+ "NetOutTransfer": 695454765,
+ "NetInSpeed": 10806,
+ "NetOutSpeed": 5303,
+ "Uptime": 331080,
+ "Load1": 5.23486328125,
+ "Load5": 4.873046875,
+ "Load15": 3.99267578125,
+ "TcpConnCount": 195,
+ "UdpConnCount": 70,
+ "ProcessCount": 437
+ }
+ },
+ {
+ "id": 2,
+ "name": "Server2",
+ "tag": "Tag2",
+ "last_active": -62135596800,
+ "ipv4": "",
+ "ipv6": "",
+ "valid_ip": "",
+ "host": {
+ "Platform": "",
+ "PlatformVersion": "",
+ "CPU": null,
+ "MemTotal": 0,
+ "DiskTotal": 0,
+ "SwapTotal": 0,
+ "Arch": "",
+ "Virtualization": "",
+ "BootTime": 0,
+ "CountryCode": "",
+ "Version": ""
+ },
+ "status": {
+ "CPU": 0,
+ "MemUsed": 0,
+ "SwapUsed": 0,
+ "DiskUsed": 0,
+ "NetInTransfer": 0,
+ "NetOutTransfer": 0,
+ "NetInSpeed": 0,
+ "NetOutSpeed": 0,
+ "Uptime": 0,
+ "Load1": 0,
+ "Load5": 0,
+ "Load15": 0,
+ "TcpConnCount": 0,
+ "UdpConnCount": 0,
+ "ProcessCount": 0
}
}
]
}
哪吒监控支持对服务器的负载、CPU、内存、硬盘、带宽、流量、月流量、进程数、连接数进行监控,并在其中某项达到用户设定值时发送报警通知
#NEZHA#
是面板消息占位符,面板触发通知时会自动用实际消息替换占位符
Body 内容是JSON
格式的:当请求类型为 FORM 时,值为 key:value
的形式,value
里面可放置占位符,通知时会自动替换。当请求类型为 JSON 时 只会简单进行字符串替换后直接提交到URL
。
URL 里面也可放置占位符,请求时会进行简单的字符串替换。
你可以参考以下的通知方式示例,也可以根据自己的需求灵活设置推送方式
server酱示例
wxpusher 示例,需要关注你的应用
{"appToken":"你的appToken","topicIds":[],"content":"#NEZHA#","contentType":"1","uids":["你的uid"]}
Telegram 示例 @haitau 贡献
cpu
、memory
、swap
、disk
net_in_speed
入站网速、net_out_speed
出站网速、net_all_speed
双向网速、transfer_in
入站流量、transfer_out
出站流量、transfer_all
双向流量offline
离线监控load1
、load5
、load15
负载process_count
进程数 目前取线程数占用资源太多,暂时不支持tcp_conn_count
、udp_conn_count
连接数0
监控所有,通过 ignore
忽略特定服务器1
忽略所有,通过 ignore
监控特定服务器[{"type":"offline","duration":10, "cover":0, "ignore":{"5": true}}]
cover
使用,内容为服务器id和布尔值,例如:{"1": true, "2":false}
完整示例:
TIP
添加一个离线报警
[{"Type":"offline","Duration":10}]
TIP
添加一个监控 CPU 持续 10s 超过 50% 且 内存持续 20s 占用低于 20% 的报警
[{"Type":"cpu","Min":0,"Max":50,"Duration":10},{"Type":"memory","Min":20,"Max":0,"Duration":20}]
可以用作月流量报警
transfer_in_cycle
周期内的入站流量transfer_out_cycle
周期内的出站流量transfer_all_cycle
周期内双向流量和2022-01-11T08:00:00.00+08:00
hour
,可选(hour
, day
, week
, month
, year
)示例: ID 为 3 的服务器(ignore 里面定义),以每月 15 号为统计周期,周期内统计的出站月流量达到 1TB 时报警 [{"type":"transfer_out_cycle","max":1000000000000,"cycle_start":"2022-01-11T08:00:00.00+08:00","cycle_interval":1,"cycle_unit":"month","cover":1,"ignore":{"3":true}}]
/opt/nezha/agent/nezha-agent -s 面板IP或非CDN域名:面板RPC端口 -p Agent密钥 -d
查看日志是否是因为 DNS、网络不佳导致超时(timeout)nc -v 域名/IP 面板RPC端口
或者 telnet 域名/IP 面板RPC端口
来检验是否是网络问题,检查本机与面板服务器的出入站防火墙,如果无法判断问题可借助 https://port.ping.pe/ 提供的端口检查工具进行检测。停止面板
/opt/nezha
文件夹,复制到新环境相同位置解压启动面板
主机区域负责管理Agent,是哪吒探针中最基础的区域,也是其他功能的基础。
第一步是添加主机,可以自定义名称、分组、排序和备注。
拥有相同分组的主机会在受支持的主题中划分到一起进行显示,备注仅会在后台显示,无需担心泄露信息。
请参考前文安装Agent
推荐使用一键安装,即配置好参数后,点击主机一键安装列上的按钮,复制到相应主机进行安装。
强制更新对应的是自定义agent监控项目中的--disable-auto-update和--disable-force-update。
默认情况下,Agent会自动更新,无需干预。但当用户关闭自动更新后,也可以选中指定主机进行强制更新。
disable-force-update开启时此功能不生效。
即WebShell,disable-command-execute开启时此功能不生效。
Linux和Windows均可用,可使用Ctrl+Shift+V粘贴。
连接失败请参考实时通道断开/在线终端连接失败。
注意在线终端功能中,Agent也是通过WebSocket连接到用户使用域名,而非通过grpc交互。
服务区域是设置 Agent 监控外部网站或服务器的功能设置区
设置好的服务监控可以在主页中的 “服务” 页查看监控结果
如需新增一个监控,可以进入管理面板中的 “服务” 页,点击“添加监控”
新增一个服务监控,你需要设置以下参数:
名称
- 自定义一个名称
类型
- 选择一个监控类型,目前哪吒监控支持三种监控类型,分别是 “HTTP-GET”、“ICMP-Ping” 和 “TCP-Ping”
目标
- 根据你选择的类型不同,目标的设置方法也不同
HTTP-GET
: 选择此类型,你应该输入一个URL作为目标,URL需添加http://
或https://
如果你的目标URL是https://
,将会同时监控该URL的SSL证书,当SSL证书到期或发生变更,会触发提醒
例如: https://example.com
ICMP-Ping
: 选择此类型时,你应该输入一个域名或IP,不含端口号
例如:1.1.1.1 或 example.com
TCP-Ping
: 选择此类型时,你应该输入一个域名或IP并包含端口号
例如:1.1.1.1:80 或 example.com:22
请求间隔
: 设定 Agent 每次请求目标的时间间隔,以秒为单位
覆盖范围
: 选择一条规则来确定要使用哪些 Agent 来请求目标
特定服务器
: 配合覆盖范围使用,选择规则内需要排除的 Agent
通知方式组
: 选择你已经在 “报警” 页设置好的通知方式,点击这里了解详情
启用故障通知
: 根据需要选择是否接收目标故障通知,默认为不勾选
设置完成后,点击 “添加” 即可
稍等片刻前往主页的 “服务” 页,查看监控结果
如需对已有的服务监控进行管理,可以前往管理面板中的 “服务” 页
选择一条监控配置,点击右侧的图标进行编辑或删除
在任务区域中,可以设置计划任务,定期任务,多服务器批量执行任务
哪吒监控支持推送命令到 Agent 执行,因此此功能非常灵活,使用此功能可以定期结合 restic、rclone 给服务器备份,或者定期重启某项服务来重置网络连接
进入管理面板的 “任务” 页,点击 “添加计划任务”
添加计划任务你需要填入以下参数:
名称
- 自定义一个任务名称
计划
- 设置计划时间,时间的格式为: * * * * * *
分别对应 秒 分 时 天 月 星期
,详情见计划表达式格式
如:0 0 3 * * *
对应为 每天3点
命令
- 你可以在这里设置需要执行的命令,就像写 Shell/Bat 脚本一样,但是不推荐换行,多个命令使用 &&/&
连接
例如执行定期重启命令,可以在这里输入 reboot
覆盖范围
和 特定服务器
- 跟“服务”页中的设置类似,选择规则来确定哪些 Agent 执行计划任务
通知方式组
- 选择你已经在 “报警” 页设置好的通知方式,点击这里了解详情
推送成功的消息
- 勾选此项,任务执行成功后会触发消息通知
如需对已有的计划任务进行管理,可以前往管理面板中的 “任务” 页
选择一条任务配置,右侧的三个图标,分别是:
立即执行
- 点击后将忽略计划时间,立刻执行任务编辑
- 点击可以修改任务配置删除
- 删除这条计划任务source ~/.bashrc
或者使用绝对路径执行