Compare commits
7 Commits
feature_En
...
osrc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d136b09d0f | ||
|
|
81896f9ba1 | ||
|
|
630c571f28 | ||
|
|
39d31ad196 | ||
|
|
70c31f1db7 | ||
|
|
589d178586 | ||
|
|
7c54bf0203 |
122
OSRC.md
Normal file
122
OSRC.md
Normal file
@@ -0,0 +1,122 @@
|
||||
|
||||
## HertzBeat 赫兹跳动在开源运行时OSRC部署流程
|
||||
|
||||
### HertzBeat介绍
|
||||
|
||||
> 易用友好的监控告警系统。
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
**官网: [hertzbeat.com](https://hertzbeat.com) | [tancloud.cn](https://tancloud.cn)**
|
||||
|
||||
> [HertzBeat赫兹跳动](https://github.com/dromara/hertzbeat) 是由[Dromara](https://dromara.org)孵化,[TanCloud](https://tancloud.cn)开源的一个支持网站,API,PING,端口,数据库,操作系统等监控类型,拥有易用友好的可视化操作界面的开源监控告警项目。
|
||||
> 提供了对应的 **[SAAS版本监控云](https://console.tancloud.cn)**,中小团队和个人无需再为了监控自己的网站资源,而去部署一套繁琐的监控系统,**[登录即可免费开始](https://console.tancloud.cn)**。
|
||||
> HertzBeat 支持[自定义监控](https://hertzbeat.com/docs/advanced/extend-point) ,只用通过配置YML文件我们就可以自定义需要的监控类型和指标,来满足常见的个性化需求。
|
||||
> HertzBeat 模块化,`manager, collector, scheduler, warehouse, alerter` 各个模块解耦合,方便理解与定制开发。
|
||||
> HertzBeat 支持更自由化的告警配置(计算表达式),支持告警通知,告警模版,邮件钉钉微信飞书等及时通知送达
|
||||
> 欢迎登录 HertzBeat 的 [云环境TanCloud](https://console.tancloud.cn) 试用发现更多。
|
||||
> 正在快速迭代中,欢迎参与加入一起共建项目开源生态。
|
||||
|
||||
> `HertzBeat`的多类型支持,易扩展,低耦合,希望能帮助开发者和中小团队快速搭建自有监控系统。
|
||||
|
||||
----
|
||||
|
||||
### 在开源运行时社区的部署过程
|
||||
|
||||
1. 注册开源运行时社区账户 osrc.com
|
||||
|
||||
进入网站 osrc.com 登录注册,购买需要的云服务器或Serverless
|
||||
|
||||
2. 本地安装osrc开发者工具
|
||||
```
|
||||
# clone maplecloudy-osrc-tools to local
|
||||
git clone https://github.com/maplecloudy/maplecloudy-osrt-tools.git
|
||||
# 下载后通过maven在本地安装
|
||||
mvn clean install
|
||||
# 进入osrc-cli目录安装cli
|
||||
npm install
|
||||
npm link
|
||||
# 支持 osrc 看cli是否安装成功
|
||||
osrc
|
||||
```
|
||||
|
||||
4. 部署依赖服务-MYSQL和TDengine
|
||||
|
||||
> HertzBeat最少依赖于 关系型数据库[MYSQL5+](https://www.mysql.com/) 和 时序性数据库[TDengine2+](https://www.taosdata.com/getting-started)
|
||||
> 我们需要将依赖服务部署到公有云上,即数据存储自己保存,计算运行在开源运行时社区,保证数据安全性。
|
||||
|
||||
###### 部署MYSQL
|
||||
- docker安装MYSQl
|
||||
`docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7`
|
||||
- 创建名称为hertzbeat的数据库
|
||||
- 执行位于项目仓库/script/sql/目录下的数据库脚本 [schema.sql](https://gitee.com/dromara/hertzbeat/raw/master/script/sql/schema.sql)
|
||||
|
||||
详细步骤参考 [依赖服务MYSQL安装初始化](https://hertzbeat.com/docs/start/mysql-init)
|
||||
|
||||
###### 部署TDengine
|
||||
- docker安装TDengine
|
||||
`docker run -d -p 6030-6049:6030-6049 -p 6030-6049:6030-6049/udp --name tdengine tdengine/tdengine:2.4.0.12`
|
||||
- 创建名称为hertzbeat的数据库
|
||||
|
||||
详细步骤参考 [依赖服务TDengine安装初始化](https://hertzbeat.com/docs/start/tdengine-init)
|
||||
|
||||
2. 拉取hertzbeat项目代码,git切换到`osrc`分支
|
||||
|
||||
[github仓库](https://github.com/dromara/hertzbeat) [gitee仓库](https://github.com/dromara/hertzbeat)
|
||||
```
|
||||
git clone https://github.com/dromara/hertzbeat.git
|
||||
git checkout osrc
|
||||
```
|
||||
3. 配置MYSQL-TDengine服务连接
|
||||
|
||||
修改位于 `hertzbeat/manager/resources/application.yml` 的配置文件
|
||||
需要替换里面的MYSQL服务和TDengine服务参数,IP端口账户密码
|
||||
具体替换参数如下:
|
||||
```
|
||||
spring.datasource.url
|
||||
spring.datasource.username
|
||||
spring.datasource.password
|
||||
|
||||
warehouse.store.td-engine.url
|
||||
warehouse.store.td-engine.username
|
||||
warehouse.store.td-engine.password
|
||||
|
||||
```
|
||||
|
||||
4. 注册OSRC账户,上传部署hertzbeat后端服务
|
||||
|
||||
进入网站 https://osrc.com , 注册用户
|
||||
在本地hertzbeat项目下执行 `mvn clean intall` 部署上传到osrc
|
||||
注意交互控制台会提示输入账户密码登录。
|
||||
|
||||
5. 启动hertzbeat后端服务
|
||||
|
||||
进入网站 https://osrc.com, 个人中心 -> 我的应用 -> 启动服务
|
||||
|
||||
<img alt="tan-cloud" src="https://tancloud.gd2.qingstor.com/tmp/%E6%88%AA%E5%B1%8F2022-04-19%2017.59.20.png" width="1000"/>
|
||||
|
||||
6. 构建前端项目
|
||||
|
||||
在本地hertzbeat项目下 `web-app` 目录下执行 `yarn build`
|
||||
|
||||
7. 上传部署hertzbeat前端服务
|
||||
|
||||
在本地hertzbeat项目下 `web-app` 目录下执行 `osrc deploy`
|
||||
|
||||
8. 配置前端代理
|
||||
|
||||
进入网站 https://osrc.com, 个人中心 -> 我的pages -> 代理配置
|
||||
配置前端调用接口流量走刚刚部署的后台服务
|
||||
<img alt="tan-cloud" src="https://tancloud.gd2.qingstor.com/tmp/cc.png" width="1000"/>
|
||||
|
||||
9. 部署完成,发布应用
|
||||
部署OK,点击page页面连接即可使用服务!
|
||||
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
|
||||
**官网: [hertzbeat.com](https://hertzbeat.com) | [tancloud.cn](https://tancloud.cn)**
|
||||
|
||||
在开源运行时社区[OSCR.COM](https://osrc.com)快速运行HertzBeat - [部署流程](https://osrc.com/user/articles/wiki_776513931985080320)
|
||||
|
||||
## 🎡 <font color="green">介绍</font>
|
||||
|
||||
> [HertzBeat赫兹跳动](https://github.com/dromara/hertzbeat) 是由[Dromara](https://dromara.org)孵化,[TanCloud](https://tancloud.cn)开源的一个支持网站,API,PING,端口,数据库,操作系统等监控类型,拥有易用友好的可视化操作界面的开源监控告警项目。
|
||||
@@ -62,6 +64,8 @@
|
||||
- 如果您不想部署而是直接使用,我们提供SAAS监控云-[TanCloud探云](https://console.tancloud.cn),即刻 **[登录注册](https://console.tancloud.cn)** 免费使用。
|
||||
- 如果您是想将HertzBeat部署到内网环境搭建监控系统,请参考下面的 [部署文档](https://hertzbeat.com/docs/start/quickstart) 进行操作。
|
||||
|
||||
安装部署视频教程: [HertzBeat安装部署-BiliBili](https://www.bilibili.com/video/BV1GY41177YL)
|
||||
|
||||
### 🐵 依赖服务部署
|
||||
|
||||
> HertzBeat最少依赖于 关系型数据库[MYSQL5+](https://www.mysql.com/) 和 时序性数据库[TDengine2+](https://www.taosdata.com/getting-started)
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
package com.usthe.alert;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 数据仓储配置属性
|
||||
*
|
||||
* @author tom
|
||||
* @date 2021/11/24 10:38
|
||||
*/
|
||||
@@ -12,11 +14,22 @@ import org.springframework.stereotype.Component;
|
||||
@ConfigurationProperties(prefix = "alerter")
|
||||
public class AlerterProperties {
|
||||
|
||||
private String consoleUrl = "https://console.tancloud.cn";
|
||||
|
||||
public String getConsoleUrl() {
|
||||
return consoleUrl;
|
||||
}
|
||||
|
||||
public void setConsoleUrl(String url) {
|
||||
this.consoleUrl = url;
|
||||
}
|
||||
|
||||
/**
|
||||
* 数据入口配置属性
|
||||
*/
|
||||
private EntranceProperties entrance;
|
||||
|
||||
|
||||
public EntranceProperties getEntrance() {
|
||||
return entrance;
|
||||
}
|
||||
@@ -25,6 +38,7 @@ public class AlerterProperties {
|
||||
this.entrance = entrance;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 数据入口配置属性
|
||||
* 入口可以是从kafka rabbitmq rocketmq等消息中间件获取数据
|
||||
@@ -98,4 +112,5 @@ public class AlerterProperties {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
18
home/docs/help/alert_console.md
Normal file
18
home/docs/help/alert_console.md
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
id: alert_console
|
||||
title: 告警模板中自定义的控制台地址
|
||||
sidebar_label: 告警模板登录台地址
|
||||
---
|
||||
|
||||
> 阈值触发后发送告警信息,通过钉钉/企业微信/飞书机器人通知或者使用邮箱通知的时候,告警内容中有登录控制台的详情链接
|
||||
|
||||
|
||||
### 自定义设置
|
||||
|
||||
在我们的启动配置文件application.yml中,找到下面的配置
|
||||
```yml
|
||||
alerter:
|
||||
console-url: #这里就是我们的自定义控制台地址
|
||||
```
|
||||
|
||||
默认值是赫兹跳动的官方控制台地址
|
||||
@@ -6,6 +6,8 @@ sidebar_label: Docker方式部署
|
||||
|
||||
> 推荐使用docker部署HertzBeat
|
||||
|
||||
安装部署视频教程: [HertzBeat安装部署-BiliBili](https://www.bilibili.com/video/BV1GY41177YL)
|
||||
|
||||
1. 下载安装Docker环境
|
||||
Docker 工具自身的下载请参考 [Docker官网文档](https://docs.docker.com/get-docker/)。
|
||||
安装完毕后终端查看Docker版本是否正常输出。
|
||||
@@ -46,72 +48,102 @@ sidebar_label: Docker方式部署
|
||||
配置文件内容参考 项目仓库[/script/sureness.yml](https://gitee.com/dromara/hertzbeat/blob/master/script/sureness.yml)
|
||||
|
||||
```yaml
|
||||
|
||||
resourceRole:
|
||||
- /account/auth/refresh===post===[role1,role2,role3,role4]
|
||||
|
||||
excludedResource:
|
||||
- /account/auth/**===*
|
||||
- /===get
|
||||
- /i18n/**===get
|
||||
- /apps/hierarchy===get
|
||||
- /console/**===get
|
||||
- /**/*.html===get
|
||||
- /**/*.js===get
|
||||
- /**/*.css===get
|
||||
- /**/*.ico===get
|
||||
- /**/*.ttf===get
|
||||
- /**/*.png===get
|
||||
- /**/*.gif===get
|
||||
|
||||
resourceRole:
|
||||
- /account/auth/refresh===post===[admin,user,guest]
|
||||
- /apps/**===get===[admin,user,guest]
|
||||
- /monitor/**===get===[admin,user,guest]
|
||||
- /monitor/**===post===[admin,user]
|
||||
- /monitor/**===put===[admin,user]
|
||||
- /monitor/**===delete==[admin]
|
||||
- /monitors/**===get===[admin,user,guest]
|
||||
- /monitors/**===post===[admin,user]
|
||||
- /monitors/**===put===[admin,user]
|
||||
- /monitors/**===delete===[admin]
|
||||
- /alert/**===get===[admin,user,guest]
|
||||
- /alert/**===post===[admin,user]
|
||||
- /alert/**===put===[admin,user]
|
||||
- /alert/**===delete===[admin]
|
||||
- /alerts/**===get===[admin,user,guest]
|
||||
- /alerts/**===post===[admin,user]
|
||||
- /alerts/**===put===[admin,user]
|
||||
- /alerts/**===delete===[admin]
|
||||
- /notice/**===get===[admin,user,guest]
|
||||
- /notice/**===post===[admin,user]
|
||||
- /notice/**===put===[admin,user]
|
||||
- /notice/**===delete===[admin]
|
||||
- /summary/**===get===[admin,user,guest]
|
||||
- /summary/**===post===[admin,user]
|
||||
- /summary/**===put===[admin,user]
|
||||
- /summary/**===delete===[admin]
|
||||
|
||||
excludedResource:
|
||||
- /account/auth/**===*
|
||||
- /===get
|
||||
- /i18n/**===get
|
||||
- /apps/hierarchy===get
|
||||
# web ui 静态资源
|
||||
- /console/**===get
|
||||
- /**/*.html===get
|
||||
- /**/*.js===get
|
||||
- /**/*.css===get
|
||||
- /**/*.ico===get
|
||||
- /**/*.ttf===get
|
||||
- /**/*.png===get
|
||||
- /**/*.gif===get
|
||||
- /**/*.png===*
|
||||
- /swagger-resources/**===get
|
||||
- /v2/api-docs===get
|
||||
- /v3/api-docs===get
|
||||
|
||||
# 用户账户信息
|
||||
# 下面有 admin tom lili 三个账户
|
||||
# eg: admin 拥有[role1,role2]角色,密码为admin
|
||||
# eg: tom 拥有[role1,role2,role3],密码为tom@123
|
||||
# eg: lili 拥有[role1,role2],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
|
||||
account:
|
||||
- appId: admin
|
||||
credential: admin
|
||||
role: [role1,role2]
|
||||
- appId: tom
|
||||
credential: tom@123
|
||||
role: [role1,role2,role3]
|
||||
- appId: lili
|
||||
# 注意 Digest认证不支持加盐加密的密码账户
|
||||
# 加盐加密的密码,通过 MD5(password+salt)计算
|
||||
# 此账户的原始密码为 lili
|
||||
credential: 1A676730B0C7F54654B0E09184448289
|
||||
salt: 123
|
||||
role: [role1,role2]
|
||||
# swagger ui 资源
|
||||
- /swagger-resources/**===get
|
||||
- /v2/api-docs===get
|
||||
- /v3/api-docs===get
|
||||
|
||||
account:
|
||||
- appId: admin
|
||||
credential: admin
|
||||
role: [admin,user]
|
||||
- appId: tom
|
||||
credential: tom@123
|
||||
role: [user]
|
||||
- appId: guest
|
||||
credential: guest
|
||||
role: [guest]
|
||||
- appId: lili
|
||||
# 注意 Digest认证不支持加盐加密的密码账户
|
||||
# 加盐加密的密码,通过 MD5(password+salt)计算
|
||||
# 此账户的原始密码为 lili
|
||||
credential: 1A676730B0C7F54654B0E09184448289
|
||||
salt: 123
|
||||
role: [guest]
|
||||
|
||||
```
|
||||
|
||||
修改sureness.yml的如下**部分参数**:**[注意⚠️sureness配置的其它默认参数需保留]**
|
||||
|
||||
```yaml
|
||||
|
||||
# 用户账户信息
|
||||
# 下面有 admin tom lili 三个账户
|
||||
# eg: admin 拥有[role1,role2]角色,密码为admin
|
||||
# eg: tom 拥有[role1,role2,role3],密码为tom@123
|
||||
# eg: lili 拥有[role1,role2],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
|
||||
account:
|
||||
- appId: admin
|
||||
credential: admin
|
||||
role: [role1,role2]
|
||||
- appId: tom
|
||||
credential: tom@123
|
||||
role: [role1,role2,role3]
|
||||
- appId: lili
|
||||
# 注意 Digest认证不支持加盐加密的密码账户
|
||||
# 加盐加密的密码,通过 MD5(password+salt)计算
|
||||
# 此账户的原始密码为 lili
|
||||
credential: 1A676730B0C7F54654B0E09184448289
|
||||
salt: 123
|
||||
role: [role1,role2]
|
||||
# 用户账户信息
|
||||
# 下面有 admin tom lili 三个账户
|
||||
# eg: admin 拥有[admin,user]角色,密码为admin
|
||||
# eg: tom 拥有[user],密码为tom@123
|
||||
# eg: lili 拥有[guest],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
|
||||
account:
|
||||
- appId: admin
|
||||
credential: admin
|
||||
role: [admin,user]
|
||||
- appId: tom
|
||||
credential: tom@123
|
||||
role: [user]
|
||||
- appId: guest
|
||||
credential: guest
|
||||
role: [guest]
|
||||
- appId: lili
|
||||
# 注意 Digest认证不支持加盐加密的密码账户
|
||||
# 加盐加密的密码,通过 MD5(password+salt)计算
|
||||
# 此账户的原始密码为 lili
|
||||
credential: 1A676730B0C7F54654B0E09184448289
|
||||
salt: 123
|
||||
role: [guest]
|
||||
|
||||
```
|
||||
|
||||
6. 启动HertzBeat Docker容器
|
||||
|
||||
@@ -5,6 +5,8 @@ sidebar_label: MYSQL安装初始化
|
||||
---
|
||||
MYSQL是一款值得信赖的关系型数据库,HertzBeat使用其存储监控信息,告警信息,配置信息等结构化关系数据。
|
||||
|
||||
安装部署视频教程: [HertzBeat安装部署-BiliBili](https://www.bilibili.com/video/BV1GY41177YL)
|
||||
|
||||
> 如果您已有MYSQL环境,可直接跳到SQL脚本执行那一步。
|
||||
|
||||
### 通过Docker方式安装MYSQL
|
||||
|
||||
@@ -3,7 +3,9 @@ id: package-deploy
|
||||
title: 通过安装包安装HertzBeat
|
||||
sidebar_label: 安装包方式部署
|
||||
---
|
||||
> HertzBeat支持在Linux Windows Mac系统安装运行,CPU支持X64/ARM64。由于安装包自身不包含JAVA运行环境,需您提前准备JAVA运行环境。
|
||||
> HertzBeat支持在Linux Windows Mac系统安装运行,CPU支持X86/ARM64。由于安装包自身不包含JAVA运行环境,需您提前准备JAVA运行环境。
|
||||
|
||||
安装部署视频教程: [HertzBeat安装部署-BiliBili](https://www.bilibili.com/video/BV1GY41177YL)
|
||||
|
||||
1. 安装JAVA运行环境-可参考[官方网站](http://www.oracle.com/technetwork/java/javase/downloads/index.html)
|
||||
要求:JDK8+(已验证JDK8)
|
||||
@@ -49,25 +51,30 @@ sidebar_label: 安装包方式部署
|
||||
修改sureness.yml的如下**部分参数**:**[注意⚠️sureness配置的其它默认参数需保留]**
|
||||
|
||||
```yaml
|
||||
# 用户账户信息
|
||||
# 下面有 admin tom lili 三个账户
|
||||
# eg: admin 拥有[role1,role2]角色,密码为admin
|
||||
# eg: tom 拥有[role1,role2,role3],密码为tom@123
|
||||
# eg: lili 拥有[role1,role2],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
|
||||
account:
|
||||
- appId: admin
|
||||
credential: admin
|
||||
role: [role1,role2]
|
||||
- appId: tom
|
||||
credential: tom@123
|
||||
role: [role1,role2,role3]
|
||||
- appId: lili
|
||||
# 注意 Digest认证不支持加盐加密的密码账户
|
||||
# 加盐加密的密码,通过 MD5(password+salt)计算
|
||||
# 此账户的原始密码为 lili
|
||||
credential: 1A676730B0C7F54654B0E09184448289
|
||||
salt: 123
|
||||
role: [role1,role2]
|
||||
|
||||
# 用户账户信息
|
||||
# 下面有 admin tom lili 三个账户
|
||||
# eg: admin 拥有[admin,user]角色,密码为admin
|
||||
# eg: tom 拥有[user],密码为tom@123
|
||||
# eg: lili 拥有[guest],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
|
||||
account:
|
||||
- appId: admin
|
||||
credential: admin
|
||||
role: [admin,user]
|
||||
- appId: tom
|
||||
credential: tom@123
|
||||
role: [user]
|
||||
- appId: guest
|
||||
credential: guest
|
||||
role: [guest]
|
||||
- appId: lili
|
||||
# 注意 Digest认证不支持加盐加密的密码账户
|
||||
# 加盐加密的密码,通过 MD5(password+salt)计算
|
||||
# 此账户的原始密码为 lili
|
||||
credential: 1A676730B0C7F54654B0E09184448289
|
||||
salt: 123
|
||||
role: [guest]
|
||||
|
||||
```
|
||||
|
||||
5. 部署启动
|
||||
|
||||
@@ -9,6 +9,8 @@ sidebar_label: 快速开始
|
||||
- 如果您不想部署而是直接使用,我们提供SAAS监控云-[TanCloud探云](https://console.tancloud.cn),即刻[登录注册](https://console.tancloud.cn)免费使用。
|
||||
- 如果您是想将HertzBeat部署到内网环境搭建监控系统,请参考下面的部署文档进行操作。
|
||||
|
||||
安装部署视频教程: [HertzBeat安装部署-BiliBili](https://www.bilibili.com/video/BV1GY41177YL)
|
||||
|
||||
### 🐵 依赖服务部署
|
||||
|
||||
> HertzBeat最少依赖于 关系型数据库[MYSQL5+](https://www.mysql.com/) 和 时序性数据库[TDengine2+](https://www.taosdata.com/getting-started)
|
||||
|
||||
@@ -5,8 +5,11 @@ sidebar_label: TDengine安装初始化
|
||||
---
|
||||
TDengine是一款国产的开源物联网时序型数据库,我们使用其替换了InfluxDb,来存储采集到的监控指标数据。
|
||||
|
||||
安装部署视频教程: [HertzBeat安装部署-BiliBili](https://www.bilibili.com/video/BV1GY41177YL)
|
||||
|
||||
> 如果您已有TDengine环境,可直接跳到创建数据库实例那一步。
|
||||
|
||||
|
||||
### 通过Docker方式安装TDengine
|
||||
> 可参考官方网站[安装教程](https://www.taosdata.com/docs/cn/v2.0/getting-started/docker)
|
||||
1. 下载安装Docker环境
|
||||
|
||||
@@ -60,7 +60,7 @@ module.exports = {
|
||||
announcementBar: {
|
||||
id: "github-star",
|
||||
content:
|
||||
'<font style="font-size: medium; font-weight: bolder">如果您喜欢TANCLOUD的开源产品HertzBeat,</font> <a target="_blank" style="font-size: medium; font-weight: bolder" rel="noopener noreferrer" href="https://github.com/dromara/hertzbeat">欢迎在 GitHub </a> <font style="font-size: medium; font-weight: bolder"> 或 </font><a target="_blank" style="font-size: medium; font-weight: bolder" rel="noopener noreferrer" href="https://gitee.com/dromara/hertzbeat">Gitee 给我们点赞! </a>⭐️',
|
||||
'<font style="font-size: medium; font-weight: bolder">If you like TANCLOUD-HertzBeat,</font> <a target="_blank" style="font-size: medium; font-weight: bolder" rel="noopener noreferrer" href="https://github.com/dromara/hertzbeat">give us a star on GitHub </a> <font style="font-size: medium; font-weight: bolder"> or </font><a target="_blank" style="font-size: medium; font-weight: bolder" rel="noopener noreferrer" href="https://gitee.com/dromara/hertzbeat">Gitee please! </a>⭐️⭐️',
|
||||
backgroundColor: '#7228B5',
|
||||
textColor: '#fafbfc',
|
||||
isCloseable: true,
|
||||
@@ -120,6 +120,10 @@ module.exports = {
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 'localeDropdown',
|
||||
position: 'right',
|
||||
},
|
||||
{
|
||||
label: '登录/注册',
|
||||
href: 'https://console.tancloud.cn',
|
||||
|
||||
@@ -125,14 +125,14 @@
|
||||
},
|
||||
"theme.docs.versions.latestVersionSuggestionLabel": {
|
||||
"message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).",
|
||||
"description": "The label userd to tell the user that he's browsing an unmaintained doc version"
|
||||
"description": "The label used to tell the user to check the latest version"
|
||||
},
|
||||
"theme.docs.versions.latestVersionLinkLabel": {
|
||||
"message": "latest version",
|
||||
"description": "The label used for the latest version suggestion link label"
|
||||
},
|
||||
"theme.common.editThisPage": {
|
||||
"message": "帮助我们修改文档",
|
||||
"message": "Edit this page",
|
||||
"description": "The link label to edit the current page"
|
||||
},
|
||||
"theme.common.headingLinkTitle": {
|
||||
@@ -192,7 +192,7 @@
|
||||
"description": "The ARIA label and placeholder for search button"
|
||||
},
|
||||
"Get Started": {
|
||||
"message": "快速开始"
|
||||
"message": "Get Started"
|
||||
},
|
||||
"theme.PwaReloadPopup.info": {
|
||||
"message": "New version available",
|
||||
@@ -214,61 +214,76 @@
|
||||
"message": "Live Editor",
|
||||
"description": "The live editor label of the live codeblocks"
|
||||
},
|
||||
"Support for Jvm Modern Frameworks": {
|
||||
"message": "适用大部分Jvm Web框架"
|
||||
"开箱即用": {
|
||||
"message": "Convenient"
|
||||
},
|
||||
"Focus on Protection of API": {
|
||||
"message": "面向API的高性能认证鉴权框架"
|
||||
"中小团队和个人无需再为了监控自己的网站资源,而去部署一套繁琐的监控系统。往往有时候,那套监控系统比自身网站消耗的资源还大。{TANCLOUD} 提供{SAAS}云版本,{console}即可开始您的服务监控。{br}安全是最重要的,我们对账户密钥和监控密钥全链路加密。": {
|
||||
"message": "Micro-teams no longer need to deploy a cumbersome monitoring system in order to monitor their own website resources. Often times, that monitoring system consumes more resources than its own website. {TANCLOUD} provides {SAAS} cloud, {console} can start your service monitoring. {br}Security is the most important, we encrypt the whole link of account key and monitoring key."
|
||||
},
|
||||
"Extendable": {
|
||||
"message": "可扩展"
|
||||
"多支持与自定义": {
|
||||
"message": "Custom Monitor"
|
||||
},
|
||||
"Compatible": {
|
||||
"message": "原生兼容"
|
||||
"HertzBeat目前支持对网站,API,PING连通性,端口可用性,SiteMap全站,数据库,操作系统等的监控,快速迭代提供更多的监控类型和性能指标。{br}我们提供了更自由化的阈值告警配置,支持邮箱,短信,webhook,钉钉,企业微信,飞书机器人等告警通知。{br}不同团队的监控需求千变万化,我们提供{custom},仅需配置YML就能快速接入监控系统。": {
|
||||
"message": "HertzBeat supports monitoring of website, api, ping connectivity, port availability, sitemap, database, operating system, etc., and provides more monitoring types and metrics. {br}We provide a more liberalized threshold alarm configuration, support email, SMS, webhook, DingTalk, WeChat, Feishu robot and other alarm notifications. {br}The monitoring needs of different teams are ever-changing. We provide {custom}, which can quickly access the monitoring system only by configuring YML."
|
||||
},
|
||||
"Multi And Fast": {
|
||||
"message": "多支持与高性能"
|
||||
"拥抱开源": {
|
||||
"message": "Opensource Friendly"
|
||||
},
|
||||
"Multi Support Samples": {
|
||||
"message": "大量集成样例"
|
||||
"HertzBeat监控系统代码开源,非常欢迎任何对此有兴趣的同学参与中来,我们一起进步,丰富的资源文档正在完善中。{br}中二的我们相信开源改变世界!{br}{github} {br}{gitee}": {
|
||||
"message": "The HertzBeat code is open source, and anyone who are interested in it are very welcome to participate. We will make progress together, and the rich resource documents are being improved. {br}We believe that open source can change the world! {br}{github} {br}{gitee}."
|
||||
},
|
||||
"Benchmark Compare": {
|
||||
"message": "基准性能测试"
|
||||
"易用友好的云监控系统": {
|
||||
"message": "Friendly Cloud Monitor System"
|
||||
},
|
||||
"Why Is High Performance": {
|
||||
"message": "为什么高性能"
|
||||
"即刻登录免费使用": {
|
||||
"message": "Login Now"
|
||||
},
|
||||
"Get Started With Sureness within Minutes": {
|
||||
"message": "几分钟入门Sureness"
|
||||
"theme.ErrorPageContent.title": {
|
||||
"message": "This page crashed.",
|
||||
"description": "The title of the fallback page when the page crashed"
|
||||
},
|
||||
"Focus on the protection of {restApi}. Based on {rbac}.{br}Provides {authentication} and {authorization}, etc.{br}Extension custom interface is {simple} and really {useful}.": {
|
||||
"message": "基于 {rbac} (用户-角色-资源)主要关注于对 {restApi} 的安全 (认证与鉴权) 保护。{br} 自定义Subject,Subject Creator,Processor和自定义数据源等良好的{interface}, {sample}和{doc}助急速理解扩展使用。"
|
||||
"theme.ErrorPageContent.tryAgain": {
|
||||
"message": "Try again",
|
||||
"description": "The label of the button to try again when the page crashed"
|
||||
},
|
||||
"Support {WebSockets}, HTTP containers ({Servlet} and {JaxRs}).{br}No framework dependency.{native} supports {SpringBoot}, {SpringWebFlux}, {Javalin}, {Quarkus},{Ktor}, {Solon}, {Jfinal}, {Micronaut} etc.": {
|
||||
"message": "支持 {WebSockets} ,主流 HTTP 容器 {Servlet} 和 {JaxRs}。{br} 无特定Web框架依赖, 原生支持 {SpringBoot}, {SpringWebFlux}, {Javalin}, {Quarkus}, {Ktor}, {Solon}, {Jfinal}, {Micronaut} 等。"
|
||||
"theme.BackToTopButton.buttonAriaLabel": {
|
||||
"message": "Scroll back to top",
|
||||
"description": "The ARIA label for the back to top button"
|
||||
},
|
||||
"Supports {jwt}, {basic}, {digest} etc.{br}{dynamic} modification of {perm}.{br}{high} with {tree}.": {
|
||||
"message": "原生拥有 {jwt}, {basic}, {digest} 等认证方式。{br} 支持{dynamicCn}(动态配置每个 API 谁有权访问)。{br} 基于{treeCn}拥有的{highCn}。"
|
||||
"theme.blog.archive.title": {
|
||||
"message": "Archive",
|
||||
"description": "The page & hero title of the blog archive page"
|
||||
},
|
||||
"Sureness allows you to security any server written with jvm modern frameworks such as {Spring}, {SpringBoot}, {SpringWebFlux}, {Javalin}, {Quarkus}, {Micronaut}, {Solon}, {Jfinal} or {Ktor} as well as frameworks for Kotlin.": {
|
||||
"message": "您可以通过使用Sureness来保护大部分JVM系语言的现代化框架搭建的后台服务,比如:Java 语言的 {Spring}, {SpringBoot}, {SpringWebFlux}, {Javalin}, {Quarkus}, {Micronaut}, {Solon}, {Jfinal} 和 Kotlin 语言的 {Ktor}."
|
||||
"theme.blog.archive.description": {
|
||||
"message": "Archive",
|
||||
"description": "The page & hero description of the blog archive page"
|
||||
},
|
||||
"The essence of Sureness is to use {interceptor}(like servlet filter or Spring interceptor) to intercept all rest requests for authenticating and authorizing.{br}So no matter any framework, as long as it has a interceptor, it can integrate with sureness. Sureness uses {handling}, {checkIn} will return {SubjectSum}(user information) when auth success, or throw different types of auth exceptions when auth error.": {
|
||||
"message": "Sureness的本质是使用{interceptor}(如 servlet filter or Spring interceptor)拦截所有API请求对其认证鉴权判断。{br} 所以对于任何Web框架,只要其支持拦截器{interceptor}, 就能轻松和Sureness集成。Sureness使用异常处理流程即{handling}, {checkIn} 方法会在认证鉴权成功后返回带有用户信息的 {SubjectSum} 对象,但认证鉴权失败时抛出不同类型的异常,用户根据这些异常来继续后面的流程。"
|
||||
"theme.blog.sidebar.navAriaLabel": {
|
||||
"message": "Blog recent posts navigation",
|
||||
"description": "The ARIA label for recent posts in the blog sidebar"
|
||||
},
|
||||
"{Benchmark} test shows Sureness to lose 0.026ms performance compared to frameless application, Shiro lose 0.088ms, Spring Security lose 0.116ms.{br}In contrast, Sureness basically does not consume performance, and the performance (TPS loss) is {times3} that of Shiro and {times4} that of Spring Security.{br}{increases}.": {
|
||||
"message": "基准测试显示 Sureness 对比无权限框架应用损耗 0.026ms 性能,Shiro 损耗 0.088ms,Spring Security 损耗 0.116ms,相比之下 Sureness 性能(参考TPS损耗)是 Shiro 的 {times3cn},Spring Security 的 {times4cn}。{br}{increaseCn}。"
|
||||
"theme.DocSidebarItem.toggleCollapsedCategoryAriaLabel": {
|
||||
"message": "Toggle the collapsible sidebar category '{label}'",
|
||||
"description": "The ARIA label to toggle the collapsible sidebar category"
|
||||
},
|
||||
"In a large number of requests, we found that the {linear} of the {filter} is a performance bottleneck. {br}So we used a {tree} instead of {ant}.{br}Practice has proved that it is very {effective}.": {
|
||||
"message": "在大量的请求和过滤链匹配下,我们发现主要的性能瓶颈在{linearCn}这。{br} 所以我们使用了{treeCn}来代替其它安全框架常用的{antCn}。{br} 实践效果证明这有效,提升了{effCn}。"
|
||||
"theme.docs.tagDocListPageTitle.nDocsTagged": {
|
||||
"message": "One doc tagged|{count} docs tagged",
|
||||
"description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)"
|
||||
},
|
||||
"We provide many tutorials and samples, you can refer to them to builda complete permission project within 10 minutes.{br}Have Fun!": {
|
||||
"message": "我们提供了很多教程和集成样例,您可以参考其中在10分钟之内使用 Sureness 做一个完整功能的认证鉴权项目。{br} Have Fun!"
|
||||
"theme.docs.tagDocListPageTitle": {
|
||||
"message": "{nDocsTagged} with \"{tagName}\"",
|
||||
"description": "The title of the page for a docs tag"
|
||||
},
|
||||
"Friend Links": {
|
||||
"message": "友情链接"
|
||||
"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": {
|
||||
"message": "← Back to main menu",
|
||||
"description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"
|
||||
},
|
||||
"Media Partners": {
|
||||
"message": "合作媒体"
|
||||
"theme.navbar.mobileVersionsDropdown.label": {
|
||||
"message": "Versions",
|
||||
"description": "The label for the navbar versions dropdown on mobile view"
|
||||
},
|
||||
"theme.TOCCollapsible.toggleButtonLabel": {
|
||||
"message": "On this page",
|
||||
"description": "The label used by the button on the collapsible TOC component"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
---
|
||||
title: 开源监控系统HertzBeat
|
||||
author: tom
|
||||
author_title: Tancloud
|
||||
author_url: https://github.com/tomsun28
|
||||
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
|
||||
tags: [integrate]
|
||||
---
|
||||
|
||||
|
||||
> 易用友好的高性能监控告警系统。
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## 📫 前言
|
||||
|
||||
> 毕业后投入很多业余时间也做了一些开源项目,[Sureness](https://github.com/dromara/sureness) [Bootshiro](https://gitee.com/tomsun28/bootshiro) [Issues-translate-action](https://github.com/usthe/issues-translate-action) ,
|
||||
> 当时上班有空就回答网友问题,下班回家写开源代码,远程帮人看问题,还总感觉时间不够用,当时想如果不去上班能做自己热爱的该多好。
|
||||
> 年轻就要折腾,何况还是自己很想做的。于是乎,21年底我放弃激励裸辞开始全职开源了(这里感谢老婆大人的全力支持),也是第一次全职创业。
|
||||
> 自己在APM领域做了多年,当然这次创业加开源的方向也就是老本行APM监控系统,我们开发一个支持多种监控指标(更多监控类型指标正在适配中),拥有自定义监控,支持阈值告警通知等功能,面向开发者友好的开源监控项目-HertzBeat赫兹跳动。
|
||||
> 想到很多开发者和团队拥有云上资源,可能只需要使用监控服务而并不想部署监控系统,我们也提供了可以直接登录使用的SAAS云监控版本-[TanCloud探云](https://console.tancloud.cn)。
|
||||
> 希望大家多多支持点赞,非常感谢。
|
||||
|
||||
## 🎡 <font color="green">介绍</font>
|
||||
|
||||
> [HertzBeat赫兹跳动](https://github.com/dromara/sureness) 是由[TanCloud](https://tancloud.cn)开源的一个支持网站,API,PING,端口,数据库等监控类型,拥有易用友好的可视化操作界面的开源监控告警项目。
|
||||
> 当然,我们也提供了对应的[SAAS云监控版本](https://console.tancloud.cn),中小团队和个人无需再为了监控自己的网站资源,而去部署一套繁琐的监控系统,[登录即可免费开始](https://console.tancloud.cn)监控之旅。
|
||||
> HertzBeat 支持自定义监控,只用通过配置YML文件我们就可以自定义需要的监控类型和指标,来满足常见的个性化需求。
|
||||
> HertzBeat 模块化,`manager, collector, scheduler, warehouse, alerter` 各个模块解耦合,方便理解与定制开发。
|
||||
> HertzBeat 支持更自由化的告警配置(计算表达式),支持告警通知,告警模版
|
||||
> 欢迎登录 HertzBeat 的 [云环境TanCloud](https://console.tancloud.cn) 试用发现更多。
|
||||
> 我们正在快速迭代中,欢迎参与加入共建项目开源生态。
|
||||
|
||||
> `HertzBeat`的多类型支持,易扩展,低耦合,希望能帮助开发者和中小团队快速搭建自有监控系统。
|
||||
|
||||
|
||||
## 🥐 模块
|
||||
|
||||
- **[manager](https://github.com/dromara/hertzbeat/tree/master/manager)** 提供监控管理,系统管理基础服务
|
||||
> 提供对监控的管理,监控应用配置的管理,系统用户租户后台管理等。
|
||||
- **[collector](https://github.com/dromara/hertzbeat/tree/master/collector)** 提供监控数据采集服务
|
||||
> 使用通用协议远程采集获取对端指标数据。
|
||||
- **[scheduler](https://github.com/dromara/hertzbeat/tree/master/scheduler)** 提供监控任务调度服务
|
||||
> 采集任务管理,一次性任务和周期性任务的调度分发。
|
||||
- **[warehouse](https://github.com/dromara/hertzbeat/tree/master/warehouse)** 提供监控数据仓储服务
|
||||
> 采集指标结果数据管理,数据落盘,查询,计算统计。
|
||||
- **[alerter](https://github.com/dromara/hertzbeat/tree/master/alerter)** 提供告警服务
|
||||
> 告警计算触发,监控状态联动,告警配置,告警通知。
|
||||
- **[web-app](https://github.com/dromara/hertzbeat/tree/master/web-app)** 提供可视化控制台页面
|
||||
> 监控告警系统可视化控制台前端(angular+ts+zorro)
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -0,0 +1,129 @@
|
||||
---
|
||||
title: 开源监控告警项目HertzBeat发布并进入Dromara孵化
|
||||
author: tom
|
||||
author_title: tom
|
||||
author_url: https://github.com/tomsun28
|
||||
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
|
||||
tags: [opensource]
|
||||
---
|
||||
|
||||
# 开源监控告警项目HertzBeat发布并进入Dromara孵化
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
**官网: [hertzbeat.com](https://hertzBeat.com) | [tancloud.cn](https://tancloud.cn)**
|
||||
|
||||
## 📫 前言
|
||||
|
||||
> 毕业后投入很多业余时间也做了一些开源项目 [Sureness](https://github.com/dromara/sureness) , [Bootshiro](https://gitee.com/tomsun28/bootshiro) , [Issues-translate-action](https://github.com/usthe/issues-translate-action) ,
|
||||
> 当时上班有空就回答网友问题,下班回家写开源代码,远程帮人看问题(大年30也看过😂),还总感觉时间不够用,当时想如果不去上班能做自己热爱的该多好,开源感觉是作为程序员的一种成就感吧。
|
||||
> 想着年轻就要折腾,何况还是自己很想做的。于是乎21年底放弃激励裸辞开始全职开源了,也是第一次全职创业(虽然大概率失败,但搏一搏,单车变摩托🤓)
|
||||
> 自己在APM领域做了多年,当然这次创业加开源的方向也就是老本行APM监控系统,我们开发一个支持多种监控指标(更多监控类型指标正在适配中),拥有自定义监控,支持阈值告警通知等功能,面向开发者友好的开源监控项目-HertzBeat赫兹跳动。
|
||||
> 为了感谢老婆大人的全力支持,hertzbeat服务端口默认为**1157**(遥遥无期)-老婆叫尧尧,我个人希望未来的宝宝叫午期(没有话语权可能性不大😂)
|
||||
> 想到很多开发者和团队拥有云上资源,可能只需要使用监控服务而并不想部署繁杂的监控系统(往往有时候那套监控系统比我们自身服务消耗的服务器资源还多😅),我们也提供了可以直接登录使用的SAAS云监控版本-[TanCloud探云](https://console.tancloud.cn)。
|
||||
> 希望老铁们多多支持点赞,非常感谢。
|
||||
|
||||
## 🎡 <font color="green">开始介绍</font>
|
||||
|
||||
> [HertzBeat赫兹跳动](https://github.com/dromara/hertzbeat) 是一个支持网站,API,PING,端口,数据库等监控类型,拥有易用友好的可视化操作界面的开源监控告警项目。
|
||||
> 我们提供了对应的[SAAS云监控版本](https://console.tancloud.cn),中小团队和个人无需再为了监控自己的网站资源,而去部署一套监控系统,[登录即可免费开始](https://console.tancloud.cn)监控之旅。
|
||||
> 监控需求指标往往千奇百怪,作为一个面向开发者的开源软件,[自定义监控](https://hertzbeat.com/docs/advanced/extend-point) 肯定是要安排上的,大家可以只通过配置YML文件我们就可以自定义需要的监控类型和指标,来满足常见的个性化需求。
|
||||
> HertzBeat 模块化,`manager, collector, scheduler, warehouse, alerter` 各个模块解耦合,方便大家理解上手与定制开发。
|
||||
> 我们也提供了更自由化的告警阈值配置,阈值触发表达式,三种告警级别,触发次数配置,支持告警通知模版,邮件webhook等方式告警通知,实时感知业务状态。
|
||||
> 更多功能欢迎登录 HertzBeat 的 [云环境TanCloud](https://console.tancloud.cn) 试用发现。
|
||||
> 我们正在快速迭代中,欢迎参与加入共建项目开源生态。
|
||||
|
||||
> `HertzBeat`的多类型支持,易扩展,低耦合,希望能帮助开发者和中小团队快速搭建自有监控系统。
|
||||
|
||||
可以通过演示视频来直观了解功能: https://www.bilibili.com/video/BV1Vi4y1f7i8
|
||||
|
||||
|
||||
## 🥐 模块
|
||||
|
||||
- **[manager](https://github.com/dromara/hertzbeat/tree/master/manager)** 提供监控管理,系统管理基础服务
|
||||
> 提供对监控的管理,监控应用配置的管理,系统用户租户后台管理等。
|
||||
- **[collector](https://github.com/dromara/hertzbeat/tree/master/collector)** 提供监控数据采集服务
|
||||
> 使用通用协议远程采集获取对端指标数据。
|
||||
- **[warehouse](https://github.com/dromara/hertzbeat/tree/master/warehouse)** 提供监控数据仓储服务
|
||||
> 采集指标结果数据管理,数据落盘,查询,计算统计。
|
||||
- **[alerter](https://github.com/dromara/hertzbeat/tree/master/alerter)** 提供告警服务
|
||||
> 告警计算触发,监控状态联动,告警配置,告警通知。
|
||||
- **[web-app](https://github.com/dromara/hertzbeat/tree/master/web-app)** 提供可视化控制台页面
|
||||
> 监控告警系统可视化控制台前端(angular+ts+zorro)
|
||||
|
||||

|
||||
|
||||
## 🐕 快速开始
|
||||
|
||||
- 如果您不想部署而是直接使用,我们提供SAAS监控云-[TanCloud探云](https://console.tancloud.cn),即刻 **[登录注册](https://console.tancloud.cn)** 免费使用。
|
||||
- 如果您是想将HertzBeat部署到内网环境搭建监控系统,请参考下面的 [部署文档](https://hertzbeat.com/docs/start/quickstart) 进行操作。
|
||||
|
||||
### 🐵 依赖服务部署
|
||||
|
||||
> HertzBeat最少依赖于 关系型数据库[MYSQL8+](https://www.mysql.com/) 和 时序性数据库[TDengine2+](https://www.taosdata.com/getting-started)
|
||||
|
||||
##### 安装MYSQL
|
||||
1. docker安装MYSQl
|
||||
`docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql`
|
||||
2. 创建名称为hertzbeat的数据库
|
||||
3. 执行位于项目仓库/script/sql/目录下的数据库脚本 [schema.sql](https://gitee.com/dromara/hertzbeat/raw/master/script/sql/schema.sql)
|
||||
|
||||
详细步骤参考 [依赖服务MYSQL安装初始化](https://hertzbeat.com/docs/start/mysql-init)
|
||||
|
||||
##### 安装TDengine
|
||||
1. docker安装TDengine
|
||||
`docker run -d -p 6030-6049:6030-6049 -p 6030-6049:6030-6049/udp --name tdengine tdengine/tdengine`
|
||||
2. 创建名称为hertzbeat的数据库
|
||||
|
||||
详细步骤参考 [依赖服务TDengine安装初始化](https://hertzbeat.com/docs/start/tdengine-init)
|
||||
|
||||
### 🍞 HertzBeat安装
|
||||
> HertzBeat支持通过源码安装启动,Docker容器运行和安装包方式安装部署。
|
||||
|
||||
##### Docker方式快速安装
|
||||
`docker run -d -p 1157:1157 --name hertzbeat tancloud/hertzbeat:latest`
|
||||
|
||||
详细步骤参考 [通过Docker方式安装HertzBeat](https://hertzbeat.com/docs/start/docker-deploy)
|
||||
|
||||
##### 通过安装包安装
|
||||
1. 下载您系统环境对应的安装包 [GITEE Release](https://gitee.com/dromara/hertzbeat/releases) [GITHUB Release](https://github.com/dromara/hertzbeat/releases)
|
||||
2. 配置HertzBeat的配置文件 hertzbeat/config/application.yml
|
||||
3. 部署启动 `$ ./startup.sh `
|
||||
|
||||
详细步骤参考 [通过安装包安装HertzBeat](https://hertzbeat.com/docs/start/package-deploy)
|
||||
|
||||
**HAVE FUN**
|
||||
|
||||
## 💬 社区交流
|
||||
|
||||
HertzBeat赫兹跳动为 [Dromara开源社区](https://dromara.org/) 孵化项目
|
||||
|
||||
##### 微信交流群
|
||||
|
||||
加微信号 tan-cloud 或 扫描下面账号二维码拉您进微信群。
|
||||
<img alt="tan-cloud" src="https://cdn.jsdelivr.net/gh/dromara/hertzbeat@gh-pages/img/docs/help/tan-cloud-wechat.jpg" width="200"/>
|
||||
|
||||
##### QQ交流群
|
||||
|
||||
加QQ群号 718618151 或 扫描下面的群二维码进群, 验证信息: tancloud
|
||||
|
||||
<img alt="tan-cloud" src="https://cdn.jsdelivr.net/gh/dromara/hertzbeat@gh-pages/img/docs/help/qq-qr.jpg" width="200"/>
|
||||
|
||||
##### 交流网站
|
||||
|
||||
[Dromara社区网站](https://dromara.org/)
|
||||
|
||||
[HertzBeat用户网站](https://support.qq.com/products/379369)
|
||||
|
||||
##### 仓库地址
|
||||
|
||||
[Github](https://github.com/dromara/hertzbeat) https://github.com/dromara/hertzbeat
|
||||
[Gitee](https://gitee.com/dromara/hertzbeat) https://gitee.com/dromara/hertzbeat
|
||||
|
||||
欢迎了解使用,看到这里不妨给个Star哦,灰常感谢!
|
||||
@@ -0,0 +1,70 @@
|
||||
---
|
||||
title: 裸辞后我做了个开源监控告警系统
|
||||
author: tom
|
||||
author_title: tom
|
||||
author_url: https://github.com/tomsun28
|
||||
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
|
||||
tags: [opensource]
|
||||
---
|
||||
|
||||
# 裸辞后我做了个开源监控告警系统
|
||||
|
||||
**官网: [hertzbeat.com](https://hertzBeat.com) | [tancloud.cn](https://tancloud.cn)**
|
||||
**仓库: [https://github.com/dromara/hertzbeat](https://github.com/dromara/hertzbeat) | [https://gitee.com/dromara/hertzbeat](https://gitee.com/dromara/hertzbeat)**
|
||||
|
||||
大家好,这里自荐一个我全职开发的监控告警项目-HertzBeat赫兹跳动,欢迎大家了解试用。
|
||||
|
||||
毕业后也投入很多业余时间也做了一些开源项目 [Sureness](https://github.com/dromara/sureness) , [Bootshiro](https://gitee.com/tomsun28/bootshiro) , [Issues-translate-action](https://github.com/usthe/issues-translate-action) ,
|
||||
当时上班有空就回答网友问题,下班回家写开源代码,远程帮人看问题(大年30也看过😂),还总感觉时间不够用,当时想如果不去上班能做自己热爱的该多好,开源或者技术上能帮助别人感觉是作为程序员的一种成就感吧。
|
||||
既然想做开源为啥不能全职去做呢,想着年轻就要折腾,何况还是自己很想做的。于是乎21年底放弃激励裸辞开始全职开源了,也是第一次全职创业(虽然大概率失败,但搏一搏,单车变摩托🤓)
|
||||
自己在APM领域做了多年,当然这次创业加开源的方向也就是老本行监控系统,我们开发一个支持多种监控指标(更多监控类型指标正在适配中),拥有自定义监控,支持阈值告警通知等功能,面向开发者友好的开源监控项目-HertzBeat赫兹跳动。
|
||||
为了感谢老婆大人的全力支持,hertzbeat服务端口默认为**1157**(遥遥无期)-老婆叫尧尧,我个人希望未来的宝宝叫午期(没有话语权可能性不大😂)
|
||||
想到很多开发者和团队拥有云上资源,可能只需要使用监控服务而并不想部署繁杂的监控系统(往往有时候那套监控系统比我们自身服务消耗的服务器资源还多😅),我们也提供了可以直接登录使用的SAAS云监控版本-[TanCloud探云](https://console.tancloud.cn)。
|
||||
希望老铁们多多支持了解试用点赞,非常感谢。
|
||||
|
||||
|
||||
### 介绍下HertzBeat
|
||||
|
||||
> HertzBeat赫兹跳动 是一个支持网站,API,PING,端口,全站,数据库等监控类型,拥有易用友好的可视化操作界面的开源监控告警项目。
|
||||
|
||||
目前还在开发初期,后面会支持更多的监控类型。数据库,操作系统,云原生,中间件,应用服务等等通用的软件监控都计划安排上。
|
||||
在监控领域,监控需求指标啊这些往往千奇百怪,作为一个面向开发者的开源软件,[自定义监控](https://hertzbeat.com/docs/advanced/extend-point) 肯定是要安排上的,大家可以只通过配置YML文件就可以自定义需要的监控类型和指标,来满足常见的个性化需求。
|
||||
HertzBeat 也是模块化的,`manager, collector, scheduler, warehouse, alerter` 各个模块解耦合,方便理解上手和定制开发。
|
||||
我们也提供了更自由化的告警阈值配置,阈值触发表达式,三种告警级别,触发次数配置,支持告警通知模版,邮件webhook等方式告警通知,实时感知业务状态。
|
||||
更多功能欢迎登录 HertzBeat 的 [云环境TanCloud](https://console.tancloud.cn) https://console.tancloud.cn 试用发现。
|
||||
项目正在快速迭代中,欢迎参与加入进来我们一起共建项目开源生态。
|
||||
|
||||
**关于HertzBeat的云SAAS环境TanCloud - https://console.tancloud.cn**
|
||||
|
||||
我们很多开发者都会有自己的服务器,博客网站,数据库,云服务等云上资源。对于我们开发者或者中小团队,如何去花最小的精力去监控我们的云上资源,它们挂了或者异常能及时通知给我们进行处理,我感觉是值得探究的。
|
||||
如果是去自己部署一套监控系统在服务器上自己用,抛开学习成本和时间成本,往往有时候,那套监控系统比我们的自身网站消耗的服务器资源还大,这让原本紧张的服务器资源就更紧张了。
|
||||
|
||||
对此,我们提供了一个SAAS云监控服务,我们开发者或者中小团队个人无需再为了监控自己的网站等云上资源,而去部署一套繁琐的监控系统。
|
||||
[登录即可免费开始使用](https://console.tancloud.cn) https://console.tancloud.cn。目前云环境功能还在快速迭代中,租户,权限等功能都会安排上,欢迎试用提需求提意见。
|
||||
|
||||
|
||||
|
||||
老铁们可以通过演示视频来直观了解功能: https://www.bilibili.com/video/BV1Vi4y1f7i8
|
||||
|
||||
|
||||
|
||||
##### 欢迎联系交流哦
|
||||
|
||||
**微信交流群**
|
||||
|
||||
加微信号 tan-cloud 或 扫描下面账号二维码拉进微信群。
|
||||
<img alt="tan-cloud" src="https://cdn.jsdelivr.net/gh/dromara/hertzbeat@gh-pages/img/docs/help/tan-cloud-wechat.jpg" width="200"/>
|
||||
|
||||
**QQ交流群**
|
||||
|
||||
加QQ群号 718618151 或 扫描下面的群二维码进群, 验证信息: tancloud
|
||||
|
||||
<img alt="tan-cloud" src="https://cdn.jsdelivr.net/gh/dromara/hertzbeat@gh-pages/img/docs/help/qq-qr.jpg" width="200"/>
|
||||
|
||||
**仓库地址**
|
||||
|
||||
[Github](https://github.com/dromara/hertzbeat) https://github.com/dromara/hertzbeat
|
||||
[Gitee](https://gitee.com/dromara/hertzbeat) https://gitee.com/dromara/hertzbeat
|
||||
|
||||
欢迎老铁们了解使用反馈意见,看到这里不妨给个Star哦,灰常感谢,弯腰!!
|
||||
如果有老哥老妹觉得不错可以投入,欢迎加入进来我们一起搞哦,现在急需懂前端,后台,运维的老哥老妹你了。
|
||||
@@ -0,0 +1,85 @@
|
||||
---
|
||||
title: HertzBeat赫兹节拍 v1.0.beta.4 发布,易用友好的监控告警系统
|
||||
author: tom
|
||||
author_title: tom
|
||||
author_url: https://github.com/tomsun28
|
||||
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
|
||||
tags: [opensource]
|
||||
---
|
||||
|
||||
HertzBeat赫兹跳动是由Dromara孵化,TanCloud开源的一个支持网站,API,PING,端口,数据库,全站等监控类型,支持阈值告警,告警通知(邮箱,webhook,钉钉,企业微信,飞书机器人),拥有易用友好的可视化操作界面的开源监控告警项目。
|
||||
|
||||
官网:hertzbeat.com | tancloud.cn
|
||||
|
||||
此升级版本包含了大量特性与修复,包括用户急需的账户用户配置,丰富了主流第三方告警通知(企业微信机器人,钉钉机器人,飞书机器人),更好看的邮件模版,自定义邮件服务器等,欢迎使用。
|
||||
|
||||
版本特性:
|
||||
|
||||
1. 告警通知:集成飞书官方WebHook实现推送告警信息 #PR9 由 @learning-code 贡献 thanks
|
||||
2. 告警通知:实现企业微信WebHook告警信息推送 #PR8 由 @learning-code 贡献 thanks
|
||||
3. 告警通知:告警邮件通知模版优化 由 @learning-code 贡献 thanks
|
||||
4. 告警通知:集成钉钉群机器人实现推送告警信息
|
||||
5. 账户:暴露支持YML文件配置登陆用户账户信息
|
||||
6. 支持自定义邮件服务器
|
||||
7. 新增帮助中心,监控告警等功能使用过程中的帮助文档. https://tancloud.cn/docs/help/guide
|
||||
8. DOC其它文档更新,本地启动帮助
|
||||
9. 新LOGO更新
|
||||
10. 监控采集间隔时间放开为7天
|
||||
11. 新增controller接口入参限定修饰符 由 @learning-code 贡献 thanks
|
||||
|
||||
BUG修复
|
||||
1. 监控host参数修复校验.
|
||||
2. fixBug自定义邮件服务器未生效
|
||||
3. 邮件页面优化,fix告警级别未转译
|
||||
4. fix监控删除后告警定义关联未删除
|
||||
5. 调整jvm启动内存大小,fixOOM
|
||||
6. fixbug重启后状态异常监控无法触发恢复告警
|
||||
7. fix pmd error
|
||||
8. bugfix告警设置确定后异常,按钮还在旋转
|
||||
9. fix多余租户ID依赖
|
||||
10. fix receiver的email类型错误,调整弹出框大小
|
||||
11. fixbug告警定义关联监控不存在时异常
|
||||
|
||||
欢迎在线试用 https://console.tancloud.cn
|
||||
|
||||
版本升级注意⚠️
|
||||
|
||||
1.0-beta2升级上来,MYSQL的数据库需执行。
|
||||
ALTER TABLE alert_define_monitor_bind DROP monitor_name;
|
||||
|
||||
1.0-beta2,1.0-beta3升级上来,MYSQL的数据库需执行。
|
||||
ALTER TABLE notice_receiver ADD access_token varchar(255);
|
||||
|
||||
-----------------------
|
||||
|
||||
> [HertzBeat赫兹跳动](https://github.com/dromara/hertzbeat) 是由[Dromara](https://dromara.org)孵化,[TanCloud](https://tancloud.cn)开源的一个支持网站,API,PING,端口,数据库等监控类型,拥有易用友好的可视化操作界面的开源监控告警项目。
|
||||
> 我们也提供了对应的 **[SAAS版本监控云](https://console.tancloud.cn)**,中小团队和个人无需再为了监控自己的网站资源,而去部署一套繁琐的监控系统,**[登录即可免费开始](https://console.tancloud.cn)**。
|
||||
> HertzBeat 支持[自定义监控](https://hertzbeat.com/docs/advanced/extend-point) ,只用通过配置YML文件我们就可以自定义需要的监控类型和指标,来满足常见的个性化需求。
|
||||
> HertzBeat 模块化,`manager, collector, scheduler, warehouse, alerter` 各个模块解耦合,方便理解与定制开发。
|
||||
> HertzBeat 支持更自由化的告警配置(计算表达式),支持告警通知,告警模版,邮件钉钉微信飞书等及时通知送达
|
||||
> 欢迎登录 HertzBeat 的 [云环境TanCloud](https://console.tancloud.cn) 试用发现更多。
|
||||
> 我们正在快速迭代中,欢迎参与加入一起共建项目开源生态。
|
||||
|
||||
> `HertzBeat`的多类型支持,易扩展,低耦合,希望能帮助开发者和中小团队快速搭建自有监控系统。
|
||||
|
||||
老铁们可以通过演示视频来直观了解功能: https://www.bilibili.com/video/BV1Vi4y1f7i8
|
||||
|
||||
##### 欢迎联系交流哦
|
||||
|
||||
**微信交流群**
|
||||
|
||||
加微信号 tan-cloud 或 扫描下面账号二维码拉进微信群。
|
||||
<img alt="tan-cloud" src="https://cdn.jsdelivr.net/gh/dromara/hertzbeat@gh-pages/img/docs/help/tan-cloud-wechat.jpg" width="200"/>
|
||||
|
||||
**QQ交流群**
|
||||
|
||||
加QQ群号 718618151 或 扫描下面的群二维码进群, 验证信息: tancloud
|
||||
|
||||
<img alt="tan-cloud" src="https://cdn.jsdelivr.net/gh/dromara/hertzbeat@gh-pages/img/docs/help/qq-qr.jpg" width="200"/>
|
||||
|
||||
**仓库地址**
|
||||
|
||||
[Github](https://github.com/dromara/hertzbeat) https://github.com/dromara/hertzbeat
|
||||
[Gitee](https://gitee.com/dromara/hertzbeat) https://gitee.com/dromara/hertzbeat
|
||||
|
||||
看到这里不妨给个Star哦,灰常感谢,弯腰!!
|
||||
@@ -0,0 +1,71 @@
|
||||
---
|
||||
title: HertzBeat赫兹节拍 v1.0.beta.5 发布,易用友好的监控告警系统
|
||||
author: tom
|
||||
author_title: tom
|
||||
author_url: https://github.com/tomsun28
|
||||
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
|
||||
tags: [opensource]
|
||||
---
|
||||
|
||||
HertzBeat赫兹跳动是由Dromara孵化,TanCloud开源的一个支持网站,API,PING,端口,数据库,全站等监控类型,支持阈值告警,告警通知(邮箱,webhook,钉钉,企业微信,飞书机器人),拥有易用友好的可视化操作界面的开源监控告警项目。
|
||||
|
||||
官网:hertzbeat.com | tancloud.cn
|
||||
|
||||
此升级版本包含了dashboard仪表盘重新设计,阈值表达式支持多指标,丰富了数据库监控类型,新增mariaDB和postgreSQL数据库的监控,控制台页面新增帮助文档等,欢迎使用。
|
||||
|
||||
版本特性:
|
||||
|
||||
1. feature 支持mariadb监控类型 (#11)
|
||||
2. feature dashboard仪表盘重构 (#13)
|
||||
3. feature 告警配置支持多指标集合 !10 由 @pengliren 提出 thanks
|
||||
4. feature 支持postgresql数据库的监控 (#16)
|
||||
5. 新增监控默认开启探测.
|
||||
6. 新增mysql采集指标.
|
||||
7. 新增监控大类别,支持自定义监控页面菜单自动渲染
|
||||
8. 操作页面新增帮助链接,完善自定义和阈值帮助文档
|
||||
9. feat: 模拟浏览器设置为chrome浏览器 #Issues 14 由@learning-code 贡献 thanks
|
||||
|
||||
BUG修复
|
||||
1. 登陆改登录,傻傻分不清.
|
||||
2. 文档新增常见问题,采集器http参数优化校验.
|
||||
3. 采集器调度第0优先级失败则取消后续的优化.
|
||||
4. bugfix website monitor path Illegal character in path at index
|
||||
5. bugfix深色主题适配问题 (#10)
|
||||
6. fix国际化异常 放开hierarchy接口认证保护
|
||||
|
||||
欢迎在线试用 https://console.tancloud.cn
|
||||
|
||||
|
||||
-----------------------
|
||||
|
||||
> [HertzBeat赫兹跳动](https://github.com/dromara/hertzbeat) 是由[Dromara](https://dromara.org)孵化,[TanCloud](https://tancloud.cn)开源的一个支持网站,API,PING,端口,数据库等监控类型,拥有易用友好的可视化操作界面的开源监控告警项目。
|
||||
> 我们也提供了对应的 **[SAAS版本监控云](https://console.tancloud.cn)**,中小团队和个人无需再为了监控自己的网站资源,而去部署一套繁琐的监控系统,**[登录即可免费开始](https://console.tancloud.cn)**。
|
||||
> HertzBeat 支持[自定义监控](https://hertzbeat.com/docs/advanced/extend-point) ,只用通过配置YML文件我们就可以自定义需要的监控类型和指标,来满足常见的个性化需求。
|
||||
> HertzBeat 模块化,`manager, collector, scheduler, warehouse, alerter` 各个模块解耦合,方便理解与定制开发。
|
||||
> HertzBeat 支持更自由化的告警配置(计算表达式),支持告警通知,告警模版,邮件钉钉微信飞书等及时通知送达
|
||||
> 欢迎登录 HertzBeat 的 [云环境TanCloud](https://console.tancloud.cn) 试用发现更多。
|
||||
> 我们正在快速迭代中,欢迎参与加入一起共建项目开源生态。
|
||||
|
||||
> `HertzBeat`的多类型支持,易扩展,低耦合,希望能帮助开发者和中小团队快速搭建自有监控系统。
|
||||
|
||||
老铁们可以通过演示视频来直观了解功能: https://www.bilibili.com/video/BV1Vi4y1f7i8
|
||||
|
||||
##### 欢迎联系交流哦
|
||||
|
||||
**微信交流群**
|
||||
|
||||
加微信号 tan-cloud 或 扫描下面账号二维码拉进微信群。
|
||||
<img alt="tan-cloud" src="https://cdn.jsdelivr.net/gh/dromara/hertzbeat@gh-pages/img/docs/help/tan-cloud-wechat.jpg" width="200"/>
|
||||
|
||||
**QQ交流群**
|
||||
|
||||
加QQ群号 718618151 或 扫描下面的群二维码进群, 验证信息: tancloud
|
||||
|
||||
<img alt="tan-cloud" src="https://cdn.jsdelivr.net/gh/dromara/hertzbeat@gh-pages/img/docs/help/qq-qr.jpg" width="200"/>
|
||||
|
||||
**仓库地址**
|
||||
|
||||
[Github](https://github.com/dromara/hertzbeat) https://github.com/dromara/hertzbeat
|
||||
[Gitee](https://gitee.com/dromara/hertzbeat) https://gitee.com/dromara/hertzbeat
|
||||
|
||||
看到这里不妨给个Star哦,灰常感谢,弯腰!!
|
||||
@@ -0,0 +1,70 @@
|
||||
---
|
||||
title: HertzBeat赫兹节拍 v1.0.beta.6 发布,Linux监控来啦
|
||||
author: tom
|
||||
author_title: tom
|
||||
author_url: https://github.com/tomsun28
|
||||
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
|
||||
tags: [opensource]
|
||||
---
|
||||
|
||||
HertzBeat赫兹跳动是由Dromara孵化,TanCloud开源的一个支持网站,API,PING,端口,数据库,操作系统,全站等监控类型,支持阈值告警,告警通知(邮箱,webhook,钉钉,企业微信,飞书机器人),拥有易用友好的可视化操作界面的开源监控告警项目。
|
||||
|
||||
官网:hertzbeat.com | tancloud.cn
|
||||
|
||||
此升级版本包含了很多同学需要的Linux操作系统监控支持,支持其CPU,内存,磁盘,网络等指标,重要的是同步支持了SSH自定义,我们可以很方便的写脚本监控我们想要的Linux指标,也新增了对主流的数据库SqlServer监控支持等,更多功能欢迎使用。
|
||||
|
||||
版本特性:
|
||||
1. feature 新增支持Linux操作系统监控类型(支持CPU内存磁盘网卡等监控指标) (#20)
|
||||
2. feature 新增支持microsoft sqlserver数据库监控类型 (#37)
|
||||
3. feature 添加docker-compose部署方案 (#27) 由 @jx10086 贡献 thanks
|
||||
4. feature 监控列表支持状态过滤和字段搜索功能 (#29)
|
||||
5. feature 新增mysql,postgresql等数据库查询超时时间设置 (#18) 由 @学习代码的小白 贡献
|
||||
6. [纳管]修改为[监控]表述,[探测]修改为[测试]表述
|
||||
7. feature add github build and translate action (#22)
|
||||
8. feature 新增贡献指南,本地代码启动文档
|
||||
9. docs 指定mysql和tdengine版本,避免环境问题
|
||||
|
||||
BUG修复
|
||||
1. fix 由于链接复用不佳造成创建过多链接监控异常 (#26)
|
||||
2. fix 页面全局监控搜索结果异常 (#28) issue by @Suremotoo
|
||||
3. 代码优化 #I4U9BT 由 @学习代码的小白 贡献
|
||||
4. fix 服务启动脚本偶现端口占用误判问题
|
||||
5. 时间本地时区格式化 (#35)
|
||||
6. fix 此版本引入问题jdbc解析异常 (#36)
|
||||
7. fix jdbc并发注册加载时由于spi机制加载死锁问题 (#40)
|
||||
|
||||
欢迎在线试用 https://console.tancloud.cn.
|
||||
|
||||
-----------------------
|
||||
|
||||
> [HertzBeat赫兹跳动](https://github.com/dromara/hertzbeat) 是由[Dromara](https://dromara.org)孵化,[TanCloud](https://tancloud.cn)开源的一个支持网站,API,PING,端口,数据库,操作系统等监控类型,拥有易用友好的可视化操作界面的开源监控告警项目。
|
||||
> 我们也提供了对应的 **[SAAS版本监控云](https://console.tancloud.cn)**,中小团队和个人无需再为了监控自己的网站资源,而去部署一套繁琐的监控系统,**[登录即可免费开始](https://console.tancloud.cn)**。
|
||||
> HertzBeat 支持[自定义监控](https://hertzbeat.com/docs/advanced/extend-point) ,只用通过配置YML文件我们就可以自定义需要的监控类型和指标,来满足常见的个性化需求。
|
||||
> HertzBeat 模块化,`manager, collector, scheduler, warehouse, alerter` 各个模块解耦合,方便理解与定制开发。
|
||||
> HertzBeat 支持更自由化的告警配置(计算表达式),支持告警通知,告警模版,邮件钉钉微信飞书等及时通知送达
|
||||
> 欢迎登录 HertzBeat 的 [云环境TanCloud](https://console.tancloud.cn) 试用发现更多。
|
||||
> 我们正在快速迭代中,欢迎参与加入一起共建项目开源生态。
|
||||
|
||||
> `HertzBeat`的多类型支持,易扩展,低耦合,希望能帮助开发者和中小团队快速搭建自有监控系统。
|
||||
|
||||
老铁们可以通过演示视频来直观了解功能: https://www.bilibili.com/video/BV1Vi4y1f7i8
|
||||
|
||||
##### 欢迎联系交流哦
|
||||
|
||||
**微信交流群**
|
||||
|
||||
加微信号 tan-cloud 或 扫描下面账号二维码拉进微信群。
|
||||
<img alt="tan-cloud" src="https://cdn.jsdelivr.net/gh/dromara/hertzbeat@gh-pages/img/docs/help/tan-cloud-wechat.jpg" width="200"/>
|
||||
|
||||
**QQ交流群**
|
||||
|
||||
加QQ群号 718618151 或 扫描下面的群二维码进群, 验证信息: tancloud
|
||||
|
||||
<img alt="tan-cloud" src="https://cdn.jsdelivr.net/gh/dromara/hertzbeat@gh-pages/img/docs/help/qq-qr.jpg" width="200"/>
|
||||
|
||||
**仓库地址**
|
||||
|
||||
[Github](https://github.com/dromara/hertzbeat) https://github.com/dromara/hertzbeat
|
||||
[Gitee](https://gitee.com/dromara/hertzbeat) https://gitee.com/dromara/hertzbeat
|
||||
|
||||
看到这里不妨给个Star哦,灰常感谢,弯腰!!
|
||||
@@ -0,0 +1,92 @@
|
||||
---
|
||||
title: HertzBeat入GVP啦,并 v1.0.beta.7 发布,易用友好的云监控系统
|
||||
author: tom
|
||||
author_title: tom
|
||||
author_url: https://github.com/tomsun28
|
||||
author_image_url: https://avatars.githubusercontent.com/u/24788200?s=400&v=4
|
||||
tags: [opensource]
|
||||
---
|
||||
|
||||
|
||||
HertzBeat赫兹跳动 是一个由Dromara孵化的支持网站,API,PING,端口,数据库,全站,操作系统等监控类型,支持阈值告警,告警通知(邮箱,webhook,钉钉,企业微信,飞书机器人),拥有易用友好的可视化操作界面的开源监控告警项目。
|
||||
|
||||
很高兴Hertzbeat被评定为GVP - Gitee最有价值开源项目!
|
||||
|
||||
|
||||

|
||||
|
||||
老哥们帮忙在Gitee STAR起来,冲!https://gitee.com/dromara/hertzbeat
|
||||
|
||||
官网:hertzbeat.com | tancloud.cn
|
||||
|
||||
然后来说说最新的版本,这个版本看这么多feature,其实简单来说主要是这几个
|
||||
|
||||
支持了ORACLE数据库的监控,包括ORACLE的基本信息,表空间,连接数,TPS,QPS等指标
|
||||
|
||||
支持了LINUX的CPU利用率,内存利用率,磁盘占用相关指标,使LINUX监控贴合实际业务
|
||||
|
||||
还有前端参数支持了KEY-VALUE,以后我们就可以在页面上配置HTTP Headers等类似参数了,还有就是参数配置那优化改版,把非常用告警参数隐藏起来了,稍微好看些,然后支持了windows下bat启动脚本,更多的就是稳定性的提升和一些其它的小修复小需求啦!
|
||||
|
||||
|
||||
|
||||
版本特性:
|
||||
|
||||
1. feature 支持oracle数据库监控类型-xgf 由 @gf-8 贡献 thanks
|
||||
2. feature oracle监控支持tablespace,连接数,qps,tps等指标
|
||||
3. feature linux监控支持设置超时时间 (#49)
|
||||
4. feature 检测网站SSL证书是否过期 (#50) 由 @weihongbin 提出 thanks
|
||||
5. feature 页面配置参数支持KEY-VALUE数组(#57)
|
||||
6. feature API和网站监控支持页面配置Headers和Params (#58)(#59)
|
||||
7. feature API和网站监控支持页面配置 basic auth, digest auth (#60)
|
||||
8. feature http 端口跟随SSL是否启用变更443或80 (#61)
|
||||
9. feature 修改默认超时时间3000毫秒为6000毫秒 (#55)
|
||||
10. feature:make tdengine optional, not required (#62)
|
||||
11. feature:support win bat service (#65)
|
||||
12. feature:support hide advanced params define (#68)
|
||||
13. feature:enable auto redirect when 301 302 http code (#69)
|
||||
14. feature:only collect available metrics when detect (#70)
|
||||
15. feature:[website api]monitor support keyword match (#72)
|
||||
16. feature:support linux cpu usage,memory usage,disk free (#76)
|
||||
|
||||
BUG修复
|
||||
1. 添加sqlserver关联文档,fix connection指标入库tdengine失败 (#41)
|
||||
2. 使用docker部署TDengine,开放tcp访问端口!16 由 @老姜bei 贡献 thanks
|
||||
3. 补充sureness配置文档 避免误配导致权限异常
|
||||
4. bugfix:monitors always timeout alert (#67)
|
||||
5. code format and optimization 由 @学习代码的小白 贡献 thanks
|
||||
6. bugfix: remove oracle field - database_type due 11g not support 由 @syongaaa 贡献 thanks
|
||||
7. bugfix:fix linux interface metrics no instance (#75)
|
||||
|
||||
欢迎在线试用 https://console.tancloud.cn.
|
||||
|
||||
-----------------------
|
||||
|
||||
> [HertzBeat赫兹跳动](https://github.com/dromara/hertzbeat) 是一个支持网站,API,PING,端口,数据库,操作系统等监控类型,拥有易用友好的可视化操作界面的开源监控告警项目。
|
||||
> 我们也提供了对应的 **[SAAS版本监控云](https://console.tancloud.cn)**,中小团队和个人无需再为了监控自己的网站资源,而去部署一套繁琐的监控系统,**[登录即可免费开始](https://console.tancloud.cn)**。
|
||||
> HertzBeat 支持[自定义监控](https://hertzbeat.com/docs/advanced/extend-point) ,只用通过配置YML文件我们就可以自定义需要的监控类型和指标,来满足常见的个性化需求。
|
||||
> HertzBeat 模块化,`manager, collector, scheduler, warehouse, alerter` 各个模块解耦合,方便理解与定制开发。
|
||||
> HertzBeat 支持更自由化的告警配置(计算表达式),支持告警通知,告警模版,邮件钉钉微信飞书等及时通知送达
|
||||
> 欢迎登录 HertzBeat 的 [云环境TanCloud](https://console.tancloud.cn) 试用发现更多。
|
||||
> 我们正在快速迭代中,欢迎参与加入一起共建项目开源生态。
|
||||
|
||||
> `HertzBeat`的多类型支持,易扩展,低耦合,希望能帮助开发者和中小团队快速搭建自有监控系统。
|
||||
|
||||
老铁们可以通过演示视频来直观了解功能: https://www.bilibili.com/video/BV1DY4y1i7ts
|
||||
|
||||
欢迎在线试用 [https://console.tancloud.cn](https://gitee.com/link?target=https%3A%2F%2Fconsole.tancloud.cn)
|
||||
|
||||
优化后的参数输入界面:
|
||||

|
||||
|
||||
Linux新增指标:
|
||||

|
||||
|
||||
ORACLE监控:
|
||||
哦豁!oracle环境不在了,之前没有截图,先脑补一张!
|
||||
|
||||
**仓库地址**
|
||||
|
||||
[Github](https://github.com/dromara/hertzbeat) https://github.com/dromara/hertzbeat
|
||||
[Gitee](https://gitee.com/dromara/hertzbeat) https://gitee.com/dromara/hertzbeat
|
||||
|
||||
看到这里不妨给个Star支持下哦,灰常感谢,弯腰!!
|
||||
14
home/i18n/en/docusaurus-plugin-content-blog/options.json
Normal file
14
home/i18n/en/docusaurus-plugin-content-blog/options.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"title": {
|
||||
"message": "Blog",
|
||||
"description": "The title for the blog used in SEO"
|
||||
},
|
||||
"description": {
|
||||
"message": "Blog",
|
||||
"description": "The description for the blog used in SEO"
|
||||
},
|
||||
"sidebar.title": {
|
||||
"message": "Recent posts",
|
||||
"description": "The label for the left sidebar"
|
||||
}
|
||||
}
|
||||
@@ -3,20 +3,48 @@
|
||||
"message": "下一篇",
|
||||
"description": "The label for version current"
|
||||
},
|
||||
"sidebar.docs.category.Guides": {
|
||||
"message": "入门",
|
||||
"description": "The label for category Guides in sidebar docs"
|
||||
"sidebar.docs.category.快速入门": {
|
||||
"message": "Guides",
|
||||
"description": "The label for category 快速入门 in sidebar docs"
|
||||
},
|
||||
"sidebar.docs.category.Advanced": {
|
||||
"message": "进阶扩展",
|
||||
"description": "The label for category Advanced in sidebar docs"
|
||||
"sidebar.docs.category.自定义监控": {
|
||||
"message": "Custom Monitor",
|
||||
"description": "The label for category 自定义监控 in sidebar docs"
|
||||
},
|
||||
"sidebar.docs.category.Integrate": {
|
||||
"message": "集成案例",
|
||||
"description": "The label for category Integrate in sidebar docs"
|
||||
"sidebar.docs.category.HTTP协议": {
|
||||
"message": "HTTP Protocol",
|
||||
"description": "The label for category HTTP协议 in sidebar docs"
|
||||
},
|
||||
"sidebar.docs.category.Others": {
|
||||
"message": "其它",
|
||||
"description": "The label for category Others in sidebar docs"
|
||||
"sidebar.docs.category.JDBC协议": {
|
||||
"message": "JDBC Protocol",
|
||||
"description": "The label for category JDBC协议 in sidebar docs"
|
||||
},
|
||||
"sidebar.docs.category.SSH协议": {
|
||||
"message": "SSH Protocol",
|
||||
"description": "The label for category SSH协议 in sidebar docs"
|
||||
},
|
||||
"sidebar.docs.category.帮助文档": {
|
||||
"message": "Help",
|
||||
"description": "The label for category 帮助文档 in sidebar docs"
|
||||
},
|
||||
"sidebar.docs.category.应用服务监控": {
|
||||
"message": "Service Monitor",
|
||||
"description": "The label for category 应用服务监控 in sidebar docs"
|
||||
},
|
||||
"sidebar.docs.category.数据库监控": {
|
||||
"message": "Database Monitor",
|
||||
"description": "The label for category 数据库监控 in sidebar docs"
|
||||
},
|
||||
"sidebar.docs.category.操作系统": {
|
||||
"message": "OS Monitor",
|
||||
"description": "The label for category 操作系统 in sidebar docs"
|
||||
},
|
||||
"sidebar.docs.category.阈值告警配置": {
|
||||
"message": "Threshold Alarm Setting",
|
||||
"description": "The label for category 阈值告警配置 in sidebar docs"
|
||||
},
|
||||
"sidebar.docs.category.告警通知配置": {
|
||||
"message": "Alarm Notice Setting",
|
||||
"description": "The label for category 告警通知配置 in sidebar docs"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
---
|
||||
id: extend-http-default
|
||||
title: HTTP协议系统默认解析方式
|
||||
sidebar_label: 系统默认解析方式
|
||||
---
|
||||
> HTTP接口调用获取响应数据后,用HertzBeat默认的解析方式去解析响应数据。
|
||||
|
||||
**此需接口响应数据结构符合HertzBeat指定的数据结构规则**
|
||||
|
||||
### HertzBeat数据格式规范
|
||||
注意⚠️ 响应数据为JSON
|
||||
|
||||
单层格式:key-value
|
||||
```json
|
||||
{
|
||||
"metricName1": "metricValue",
|
||||
"metricName2": "metricValue",
|
||||
"metricName3": "metricValue",
|
||||
"metricName4": "metricValue"
|
||||
}
|
||||
```
|
||||
多层格式:数组里面套key-value
|
||||
```json
|
||||
[
|
||||
{
|
||||
"metricName1": "metricValue",
|
||||
"metricName2": "metricValue",
|
||||
"metricName3": "metricValue",
|
||||
"metricName4": "metricValue"
|
||||
},
|
||||
{
|
||||
"metricName1": "metricValue",
|
||||
"metricName2": "metricValue",
|
||||
"metricName3": "metricValue",
|
||||
"metricName4": "metricValue"
|
||||
}
|
||||
]
|
||||
```
|
||||
样例:
|
||||
查询自定义系统的CPU信息,其暴露接口为 `/metrics/cpu`,我们需要其中的`hostname,core,useage`指标
|
||||
若只有一台虚拟机,其单层格式为:
|
||||
```json
|
||||
{
|
||||
"hostname": "linux-1",
|
||||
"core": 1,
|
||||
"usage": 78.0,
|
||||
"allTime": 200,
|
||||
"runningTime": 100
|
||||
}
|
||||
```
|
||||
若有多台虚拟机,其多层格式为:
|
||||
```json
|
||||
[
|
||||
{
|
||||
"hostname": "linux-1",
|
||||
"core": 1,
|
||||
"usage": 78.0,
|
||||
"allTime": 200,
|
||||
"runningTime": 100
|
||||
},
|
||||
{
|
||||
"hostname": "linux-2",
|
||||
"core": 3,
|
||||
"usage": 78.0,
|
||||
"allTime": 566,
|
||||
"runningTime": 34
|
||||
},
|
||||
{
|
||||
"hostname": "linux-3",
|
||||
"core": 4,
|
||||
"usage": 38.0,
|
||||
"allTime": 500,
|
||||
"runningTime": 20
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
**对应的监控配置定义文件YML可以配置为如下**
|
||||
|
||||
```yaml
|
||||
# 此监控类型所属类别:service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控
|
||||
category: custom
|
||||
# 监控应用类型(与文件名保持一致) eg: linux windows tomcat mysql aws...
|
||||
app: example
|
||||
name:
|
||||
zh-CN: 模拟应用类型
|
||||
en-US: EXAMPLE APP
|
||||
# 参数映射map. 这些为输入参数变量,即可以用^_^host^_^的形式写到后面的配置中,系统自动变量值替换
|
||||
# type是参数类型: 0-number数字, 1-string明文字符串, 2-secret加密字符串
|
||||
# 强制固定必须参数 - host
|
||||
configmap:
|
||||
- key: host
|
||||
type: 1
|
||||
- key: port
|
||||
type: 0
|
||||
# 指标组列表
|
||||
metrics:
|
||||
# 第一个监控指标组 cpu
|
||||
# 注意:内置监控指标有 (responseTime - 响应时间)
|
||||
- name: cpu
|
||||
# 指标组调度优先级(0-127)越小优先级越高,优先级低的指标组会等优先级高的指标组采集完成后才会被调度,相同优先级的指标组会并行调度采集
|
||||
# 优先级为0的指标组为可用性指标组,即它会被首先调度,采集成功才会继续调度其它指标组,采集失败则中断调度
|
||||
priority: 0
|
||||
# 指标组中的具体监控指标
|
||||
fields:
|
||||
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
|
||||
- field: hostname
|
||||
type: 1
|
||||
instance: true
|
||||
- field: usage
|
||||
type: 0
|
||||
unit: '%'
|
||||
- field: core
|
||||
type: 0
|
||||
# 监控采集使用协议 eg: sql, ssh, http, telnet, wmi, snmp, sdk
|
||||
protocol: http
|
||||
# 当protocol为http协议时具体的采集配置
|
||||
http:
|
||||
# 主机host: ipv4 ipv6 域名
|
||||
host: ^_^host^_^
|
||||
# 端口
|
||||
port: ^_^port^_^
|
||||
# url请求接口路径
|
||||
url: /metrics/cpu
|
||||
# 请求方式 GET POST PUT DELETE PATCH
|
||||
method: GET
|
||||
# 是否启用ssl/tls,即是http还是https,默认false
|
||||
ssl: false
|
||||
# 响应数据解析方式: default-系统规则,jsonPath-jsonPath脚本,website-网站可用性指标监控
|
||||
# 这里使用HertzBeat默认解析
|
||||
parseType: default
|
||||
```
|
||||
@@ -0,0 +1,149 @@
|
||||
---
|
||||
id: extend-http-jsonpath
|
||||
title: HTTP协议JsonPath解析方式
|
||||
sidebar_label: JsonPath解析方式
|
||||
---
|
||||
> HTTP接口调用获取响应数据后,用JsonPath脚本解析的解析方式去解析响应数据。
|
||||
|
||||
注意⚠️ 响应数据为JSON格式
|
||||
|
||||
**使用JsonPath脚本将响应数据解析成符合HertzBeat指定的数据结构规则的数据**
|
||||
|
||||
#### JsonPath操作符
|
||||
[JSONPath在线验证](https://www.jsonpath.cn)
|
||||
|
||||
| JSONPATH | 帮助描述 |
|
||||
| ----------- | ----------- |
|
||||
| $ | 根对象或元素 |
|
||||
| @ | 当前对象或元素 |
|
||||
| . or [] | 子元素操作符 |
|
||||
| .. | 递归匹配所有子元素 |
|
||||
| * | 通配符. 匹配所有对象或元素. |
|
||||
| [] | 下标运算符,JsonPath索引从0开始 |
|
||||
| [,] | 连接运算符,将多个结果拼成数组返回,JSONPath允许使用别名. |
|
||||
| [start:end:step] | 数组切片运算符 |
|
||||
| ?() | 过滤器(脚本)表达式. |
|
||||
| () | 脚本表达式. |
|
||||
|
||||
#### HertzBeat数据格式规范
|
||||
单层格式:key-value
|
||||
```json
|
||||
{
|
||||
"metricName1": "metricValue",
|
||||
"metricName2": "metricValue",
|
||||
"metricName3": "metricValue",
|
||||
"metricName4": "metricValue"
|
||||
}
|
||||
```
|
||||
多层格式:数组里面套key-value
|
||||
```json
|
||||
[
|
||||
{
|
||||
"metricName1": "metricValue",
|
||||
"metricName2": "metricValue",
|
||||
"metricName3": "metricValue",
|
||||
"metricName4": "metricValue"
|
||||
},
|
||||
{
|
||||
"metricName1": "metricValue",
|
||||
"metricName2": "metricValue",
|
||||
"metricName3": "metricValue",
|
||||
"metricName4": "metricValue"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
#### 样例
|
||||
|
||||
查询自定义系统的数值信息,其暴露接口为 `/metrics/person`,我们需要其中的`type,num`指标
|
||||
接口返回的原始数据如下:
|
||||
```json
|
||||
{
|
||||
"firstName": "John",
|
||||
"lastName" : "doe",
|
||||
"age" : 26,
|
||||
"address" : {
|
||||
"streetAddress": "naist street",
|
||||
"city" : "Nara",
|
||||
"postalCode" : "630-0192"
|
||||
},
|
||||
"number": [
|
||||
{
|
||||
"type": "core",
|
||||
"num": 3343
|
||||
},
|
||||
{
|
||||
"type": "home",
|
||||
"num": 4543
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
我们使用JsonPath脚本解析,对应的脚本为: `$.number[*]` ,解析后的数据结构如下:
|
||||
```json
|
||||
[
|
||||
{
|
||||
"type": "core",
|
||||
"num": 3343
|
||||
},
|
||||
{
|
||||
"type": "home",
|
||||
"num": 4543
|
||||
}
|
||||
]
|
||||
```
|
||||
此数据结构符合HertzBeat的数据格式规范,成功提取指标`type,num`值。
|
||||
|
||||
**对应的监控配置定义文件YML可以配置为如下**
|
||||
|
||||
```yaml
|
||||
# 此监控类型所属类别:service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控
|
||||
category: custom
|
||||
# 监控应用类型(与文件名保持一致) eg: linux windows tomcat mysql aws...
|
||||
app: example
|
||||
name:
|
||||
zh-CN: 模拟应用类型
|
||||
en-US: EXAMPLE APP
|
||||
# 参数映射map. 这些为输入参数变量,即可以用^_^host^_^的形式写到后面的配置中,系统自动变量值替换
|
||||
# type是参数类型: 0-number数字, 1-string明文字符串, 2-secret加密字符串
|
||||
# 强制固定必须参数 - host
|
||||
configmap:
|
||||
- key: host
|
||||
type: 1
|
||||
- key: port
|
||||
type: 0
|
||||
# 指标组列表
|
||||
metrics:
|
||||
# 第一个监控指标组 person
|
||||
# 注意:内置监控指标有 (responseTime - 响应时间)
|
||||
- name: cpu
|
||||
# 指标组调度优先级(0-127)越小优先级越高,优先级低的指标组会等优先级高的指标组采集完成后才会被调度,相同优先级的指标组会并行调度采集
|
||||
# 优先级为0的指标组为可用性指标组,即它会被首先调度,采集成功才会继续调度其它指标组,采集失败则中断调度
|
||||
priority: 0
|
||||
# 指标组中的具体监控指标
|
||||
fields:
|
||||
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
|
||||
- field: type
|
||||
type: 1
|
||||
instance: true
|
||||
- field: num
|
||||
type: 0
|
||||
# 监控采集使用协议 eg: sql, ssh, http, telnet, wmi, snmp, sdk
|
||||
protocol: http
|
||||
# 当protocol为http协议时具体的采集配置
|
||||
http:
|
||||
# 主机host: ipv4 ipv6 域名
|
||||
host: ^_^host^_^
|
||||
# 端口
|
||||
port: ^_^port^_^
|
||||
# url请求接口路径
|
||||
url: /metrics/person
|
||||
# 请求方式 GET POST PUT DELETE PATCH
|
||||
method: GET
|
||||
# 是否启用ssl/tls,即是http还是https,默认false
|
||||
ssl: false
|
||||
# 响应数据解析方式: default-系统规则,jsonPath-jsonPath脚本,website-网站可用性指标监控
|
||||
# 这里使用jsonPath解析
|
||||
parseType: $.number[*]
|
||||
```
|
||||
@@ -0,0 +1,215 @@
|
||||
---
|
||||
id: extend-http
|
||||
title: HTTP协议自定义监控
|
||||
sidebar_label: HTTP协议自定义监控
|
||||
---
|
||||
> 从[自定义监控](extend-point)了解熟悉了怎么自定义类型,指标,协议等,这里我们来详细介绍下用HTTP协议自定义指标监控。
|
||||
|
||||
### HTTP协议采集流程
|
||||
【**HTTP接口调用**】->【**响应校验**】->【**响应数据解析**】->【**默认方式解析|JsonPath脚本解析 | XmlPath解析(todo) | Prometheus解析(todo)**】->【**指标数据提取**】
|
||||
|
||||
由流程可见,我们自定义一个HTTP协议的监控类型,需要配置HTTP请求参数,配置获取哪些指标,对响应数据配置解析方式和解析脚本。
|
||||
HTTP协议支持我们自定义HTTP请求路径,请求header,请求参数,请求方式,请求体等。
|
||||
|
||||
**系统默认解析方式**:http接口返回hertzbeat规定的json数据结构,即可用默认解析方式解析数据提取对应的指标数据,详细介绍见 [**系统默认解析**](extend-http-default)
|
||||
**JsonPath脚本解析方式**:用JsonPath脚本对响应的json数据进行解析,返回系统指定的数据结构,然后提供对应的指标数据,详细介绍见 [**JsonPath脚本解析**](extend-http-jsonpath)
|
||||
|
||||
|
||||
### 自定义步骤
|
||||
|
||||
配置自定义监控类型需新增配置两个YML文件
|
||||
1. 用监控类型命名的监控配置定义文件 - 例如:example.yml 需位于安装目录 /hertzbeat/define/app/ 下
|
||||
2. 用监控类型命名的监控参数定义文件 - 例如:example.yml 需位于安装目录 /hertzbeat/define/param/ 下
|
||||
3. 重启hertzbeat系统,我们就适配好了一个新的自定义监控类型。
|
||||
|
||||
-------
|
||||
下面详细介绍下这俩文件的配置用法,请注意看使用注释。
|
||||
|
||||
### 监控配置定义文件
|
||||
|
||||
> 监控配置定义文件用于定义 *监控类型的名称(国际化), 请求参数映射, 指标信息, 采集协议配置信息*等。
|
||||
|
||||
样例:自定义一个名称为example_http的自定义监控类型,其使用HTTP协议采集指标数据。
|
||||
文件名称: example_http.yml 位于 /define/app/example_http.yml
|
||||
|
||||
```yaml
|
||||
# 此监控类型所属类别:service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控
|
||||
category: custom
|
||||
# 监控应用类型(与文件名保持一致) eg: linux windows tomcat mysql aws...
|
||||
app: example_http
|
||||
name:
|
||||
zh-CN: 模拟应用类型
|
||||
en-US: EXAMPLE APP
|
||||
# 参数映射map. 这些为输入参数变量,即可以用^_^host^_^的形式写到后面的配置中,系统自动变量值替换
|
||||
# type是参数类型: 0-number数字, 1-string明文字符串, 2-secret加密字符串
|
||||
# 强制固定必须参数 - host
|
||||
configmap:
|
||||
- key: host
|
||||
type: 1
|
||||
- key: port
|
||||
type: 0
|
||||
- key: username
|
||||
type: 1
|
||||
- key: password
|
||||
type: 2
|
||||
# 指标组列表
|
||||
metrics:
|
||||
# 第一个监控指标组 cpu
|
||||
# 注意:内置监控指标有 (responseTime - 响应时间)
|
||||
- name: cpu
|
||||
# 指标组调度优先级(0-127)越小优先级越高,优先级低的指标组会等优先级高的指标组采集完成后才会被调度,相同优先级的指标组会并行调度采集
|
||||
# 优先级为0的指标组为可用性指标组,即它会被首先调度,采集成功才会继续调度其它指标组,采集失败则中断调度
|
||||
priority: 0
|
||||
# 指标组中的具体监控指标
|
||||
fields:
|
||||
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
|
||||
- field: hostname
|
||||
type: 1
|
||||
instance: true
|
||||
- field: usage
|
||||
type: 0
|
||||
unit: '%'
|
||||
- field: cores
|
||||
type: 0
|
||||
- field: waitTime
|
||||
type: 0
|
||||
unit: s
|
||||
# (非必须)监控指标别名,与上面的指标名映射。用于采集接口数据字段不直接是最终指标名称,需要此别名做映射转换
|
||||
aliasFields:
|
||||
- hostname
|
||||
- core1
|
||||
- core2
|
||||
- usage
|
||||
- allTime
|
||||
- runningTime
|
||||
# (非必须)指标计算表达式,与上面的别名一起作用,计算出最终需要的指标值
|
||||
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
|
||||
calculates:
|
||||
- hostname=hostname
|
||||
- cores=core1+core2
|
||||
- usage=usage
|
||||
- waitTime=allTime-runningTime
|
||||
# 监控采集使用协议 eg: sql, ssh, http, telnet, wmi, snmp, sdk
|
||||
protocol: http
|
||||
# 当protocol为http协议时具体的采集配置
|
||||
http:
|
||||
# 主机host: ipv4 ipv6 域名
|
||||
host: ^_^host^_^
|
||||
# 端口
|
||||
port: ^_^port^_^
|
||||
# url请求接口路径
|
||||
url: /metrics/cpu
|
||||
# 请求方式 GET POST PUT DELETE PATCH
|
||||
method: GET
|
||||
# 是否启用ssl/tls,即是http还是https,默认false
|
||||
ssl: false
|
||||
# 请求头内容
|
||||
headers:
|
||||
apiVersion: v1
|
||||
# 请求参数内容
|
||||
params:
|
||||
param1: param1
|
||||
param2: param2
|
||||
# 认证
|
||||
authorization:
|
||||
# 认证方式: Basic Auth, Digest Auth, Bearer Token
|
||||
type: Basic Auth
|
||||
basicAuthUsername: ^_^username^_^
|
||||
basicAuthPassword: ^_^password^_^
|
||||
# 响应数据解析方式: default-系统规则,jsonPath-jsonPath脚本,website-网站可用性指标监控
|
||||
# todo xmlPath-xmlPath脚本,prometheus-Prometheus数据规则
|
||||
parseType: jsonPath
|
||||
parseScript: '$'
|
||||
|
||||
- name: memory
|
||||
priority: 1
|
||||
fields:
|
||||
- field: hostname
|
||||
type: 1
|
||||
instance: true
|
||||
- field: total
|
||||
type: 0
|
||||
unit: kb
|
||||
- field: usage
|
||||
type: 0
|
||||
unit: '%'
|
||||
- field: speed
|
||||
type: 0
|
||||
protocol: http
|
||||
http:
|
||||
host: ^_^host^_^
|
||||
port: ^_^port^_^
|
||||
url: /metrics/memory
|
||||
method: GET
|
||||
headers:
|
||||
apiVersion: v1
|
||||
params:
|
||||
param1: param1
|
||||
param2: param2
|
||||
authorization:
|
||||
type: Basic Auth
|
||||
basicAuthUsername: ^_^username^_^
|
||||
basicAuthPassword: ^_^password^_^
|
||||
parseType: default
|
||||
```
|
||||
|
||||
### 监控参数定义文件
|
||||
|
||||
> 监控参数定义文件用于定义 *需要的输入参数字段结构定义(前端页面根据结构渲染输入参数框)*。
|
||||
|
||||
样例:自定义一个名称为example_http的自定义监控类型,其使用HTTP协议采集指标数据。
|
||||
文件名称: example_http.yml 位于 //define/param/example_http.yml
|
||||
|
||||
```yaml
|
||||
# 监控应用类型名称(与文件名保持一致) eg: linux windows tomcat mysql aws...
|
||||
app: example_http
|
||||
# 强制固定必须参数 - host(ipv4,ipv6,域名)
|
||||
param:
|
||||
# field-字段名称标识符
|
||||
- field: host
|
||||
# name-参数字段显示名称
|
||||
name: 主机Host
|
||||
# type-字段类型,样式(大部分映射input标签type属性)
|
||||
type: host
|
||||
# 是否是必输项 true-必填 false-可选
|
||||
required: true
|
||||
- field: port
|
||||
name: 端口
|
||||
type: number
|
||||
# 当type为number时,用range表示范围
|
||||
range: '[0,65535]'
|
||||
required: true
|
||||
# 端口默认值
|
||||
defaultValue: 80
|
||||
# 参数输入框提示信息
|
||||
placeholder: '请输入端口'
|
||||
- field: username
|
||||
name: 用户名
|
||||
type: text
|
||||
# 当type为text时,用limit表示字符串限制大小
|
||||
limit: 20
|
||||
required: false
|
||||
- field: password
|
||||
name: 密码
|
||||
type: password
|
||||
required: false
|
||||
- field: ssl
|
||||
name: 启动SSL
|
||||
# 当type为boolean时,前端用switch展示开关
|
||||
type: boolean
|
||||
required: false
|
||||
- field: method
|
||||
name: 请求方式
|
||||
type: radio
|
||||
required: true
|
||||
# 当type为radio单选框,checkbox复选框时,option表示可选项值列表 {name1:value1,name2:value2}
|
||||
options:
|
||||
- label: GET请求
|
||||
value: GET
|
||||
- label: POST请求
|
||||
value: POST
|
||||
- label: PUT请求
|
||||
value: PUT
|
||||
- label: DELETE请求
|
||||
value: DELETE
|
||||
```
|
||||
@@ -0,0 +1,252 @@
|
||||
---
|
||||
id: extend-jdbc
|
||||
title: JDBC协议自定义监控
|
||||
sidebar_label: JDBC协议自定义监控
|
||||
---
|
||||
> 从[自定义监控](extend-point)了解熟悉了怎么自定义类型,指标,协议等,这里我们来详细介绍下用JDBC(目前支持mysql,mariadb,postgresql,sqlserver)自定义指标监控。
|
||||
> JDBC协议自定义监控可以让我们很方便的通过写SQL查询语句就能监控到我们想监控的指标
|
||||
|
||||
### JDBC协议采集流程
|
||||
【**系统直连MYSQL**】->【**运行SQL查询语句**】->【**响应数据解析:oneRow, multiRow, columns**】->【**指标数据提取**】
|
||||
|
||||
由流程可见,我们自定义一个JDBC协议的监控类型,需要配置JDBC请求参数,配置获取哪些指标,配置查询SQL语句。
|
||||
|
||||
### 数据解析方式
|
||||
SQL查询回来的数据字段和我们需要的指标映射,就能获取对应的指标数据,目前映射解析方式有三种:oneRow, multiRow, columns
|
||||
|
||||
#### **oneRow**
|
||||
> 查询一行数据, 通过查询返回结果集的列名称,和查询的字段映射
|
||||
|
||||
例如:
|
||||
查询的指标字段为:one tow three four
|
||||
查询SQL:select one, tow, three, four from book limit 1;
|
||||
这里指标字段就能和响应数据一一映射为一行采集数据。
|
||||
|
||||
#### **multiRow**
|
||||
> 查询多行数据, 通过查询返回结果集的列名称,和查询的字段映射
|
||||
|
||||
例如:
|
||||
查询的指标字段为:one tow three four
|
||||
查询SQL:select one, tow, three, four from book;
|
||||
这里指标字段就能和响应数据一一映射为多行采集数据。
|
||||
|
||||
#### **columns**
|
||||
> 采集一行指标数据, 通过查询的两列数据(key-value),key和查询的字段匹配,value为查询字段的值
|
||||
|
||||
例如:
|
||||
查询字段:one tow three four
|
||||
查询SQL:select key, value from book;
|
||||
SQL响应数据:
|
||||
|
||||
| key | value |
|
||||
| ----------- | ----------- |
|
||||
| one | 243 |
|
||||
| two | 435 |
|
||||
| three | 332 |
|
||||
| four | 643 |
|
||||
|
||||
这里指标字段就能和响应数据的key映射,获取对应的value为其采集监控数据。
|
||||
|
||||
### 自定义步骤
|
||||
|
||||
配置自定义监控类型需新增配置两个YML文件
|
||||
1. 用监控类型命名的监控配置定义文件 - 例如:example_sql.yml 需位于安装目录 /hertzbeat/define/app/ 下
|
||||
2. 用监控类型命名的监控参数定义文件 - 例如:example_sql.yml 需位于安装目录 /hertzbeat/define/param/ 下
|
||||
3. 重启hertzbeat系统,我们就适配好了一个新的自定义监控类型。
|
||||
|
||||
-------
|
||||
下面详细介绍下这俩文件的配置用法,请注意看使用注释。
|
||||
|
||||
### 监控配置定义文件
|
||||
|
||||
> 监控配置定义文件用于定义 *监控类型的名称(国际化), 请求参数映射, 指标信息, 采集协议配置信息*等。
|
||||
|
||||
样例:自定义一个名称为example_sql的自定义监控类型,其使用JDBC协议采集指标数据。
|
||||
文件名称: example_sql.yml 位于 /define/app/example_sql.yml
|
||||
|
||||
```yaml
|
||||
# 此监控类型所属类别:service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控
|
||||
category: db
|
||||
# 监控应用类型(与文件名保持一致) eg: linux windows tomcat mysql aws...
|
||||
app: example_sql
|
||||
name:
|
||||
zh-CN: 模拟MYSQL应用类型
|
||||
en-US: MYSQL EXAMPLE APP
|
||||
# 参数映射map. 这些为输入参数变量,即可以用^_^host^_^的形式写到后面的配置中,系统自动变量值替换
|
||||
# type是参数类型: 0-number数字, 1-string明文字符串, 2-secret加密字符串
|
||||
# 强制固定必须参数 - host
|
||||
configmap:
|
||||
- key: host
|
||||
type: 1
|
||||
- key: port
|
||||
type: 0
|
||||
- key: username
|
||||
type: 1
|
||||
- key: password
|
||||
type: 2
|
||||
- key: database
|
||||
type: 1
|
||||
- key: url
|
||||
type: 1
|
||||
# 指标组列表
|
||||
metrics:
|
||||
- name: basic
|
||||
# 指标组调度优先级(0-127)越小优先级越高,优先级低的指标组会等优先级高的指标组采集完成后才会被调度,相同优先级的指标组会并行调度采集
|
||||
# 优先级为0的指标组为可用性指标组,即它会被首先调度,采集成功才会继续调度其它指标组,采集失败则中断调度
|
||||
priority: 0
|
||||
# 指标组中的具体监控指标
|
||||
fields:
|
||||
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
|
||||
- field: version
|
||||
type: 1
|
||||
instance: true
|
||||
- field: port
|
||||
type: 1
|
||||
- field: datadir
|
||||
type: 1
|
||||
- field: max_connections
|
||||
type: 0
|
||||
# (非必须)监控指标别名,与上面的指标名映射。用于采集接口数据字段不直接是最终指标名称,需要此别名做映射转换
|
||||
aliasFields:
|
||||
- version
|
||||
- version_compile_os
|
||||
- version_compile_machine
|
||||
- port
|
||||
- datadir
|
||||
- max_connections
|
||||
# (非必须)指标计算表达式,与上面的别名一起作用,计算出最终需要的指标值
|
||||
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
|
||||
calculates:
|
||||
- port=port
|
||||
- datadir=datadir
|
||||
- max_connections=max_connections
|
||||
- version=version+"_"+version_compile_os+"_"+version_compile_machine
|
||||
protocol: jdbc
|
||||
jdbc:
|
||||
# 主机host: ipv4 ipv6 域名
|
||||
host: ^_^host^_^
|
||||
# 端口
|
||||
port: ^_^port^_^
|
||||
platform: mysql
|
||||
username: ^_^username^_^
|
||||
password: ^_^password^_^
|
||||
database: ^_^database^_^
|
||||
# SQL查询方式: oneRow, multiRow, columns
|
||||
queryType: columns
|
||||
# sql
|
||||
sql: show global variables where Variable_name like 'version%' or Variable_name = 'max_connections' or Variable_name = 'datadir' or Variable_name = 'port';
|
||||
url: ^_^url^_^
|
||||
|
||||
- name: status
|
||||
priority: 1
|
||||
fields:
|
||||
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
|
||||
- field: threads_created
|
||||
type: 0
|
||||
- field: threads_connected
|
||||
type: 0
|
||||
- field: threads_cached
|
||||
type: 0
|
||||
- field: threads_running
|
||||
type: 0
|
||||
# (非必须)监控指标别名,与上面的指标名映射。用于采集接口数据字段不直接是最终指标名称,需要此别名做映射转换
|
||||
aliasFields:
|
||||
- threads_created
|
||||
- threads_connected
|
||||
- threads_cached
|
||||
- threads_running
|
||||
# (非必须)指标计算表达式,与上面的别名一起作用,计算出最终需要的指标值
|
||||
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
|
||||
calculates:
|
||||
- threads_created=threads_created
|
||||
- threads_connected=threads_connected
|
||||
- threads_cached=threads_cached
|
||||
- threads_running=threads_running
|
||||
protocol: jdbc
|
||||
jdbc:
|
||||
# 主机host: ipv4 ipv6 域名
|
||||
host: ^_^host^_^
|
||||
# 端口
|
||||
port: ^_^port^_^
|
||||
platform: mysql
|
||||
username: ^_^username^_^
|
||||
password: ^_^password^_^
|
||||
database: ^_^database^_^
|
||||
# SQL查询方式: oneRow, multiRow, columns
|
||||
queryType: columns
|
||||
# sql
|
||||
sql: show global status where Variable_name like 'thread%' or Variable_name = 'com_commit' or Variable_name = 'com_rollback' or Variable_name = 'questions' or Variable_name = 'uptime';
|
||||
url: ^_^url^_^
|
||||
|
||||
- name: innodb
|
||||
priority: 2
|
||||
fields:
|
||||
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
|
||||
- field: innodb_data_reads
|
||||
type: 0
|
||||
unit: 次数
|
||||
- field: innodb_data_writes
|
||||
type: 0
|
||||
unit: 次数
|
||||
- field: innodb_data_read
|
||||
type: 0
|
||||
unit: kb
|
||||
- field: innodb_data_written
|
||||
type: 0
|
||||
unit: kb
|
||||
protocol: jdbc
|
||||
jdbc:
|
||||
# 主机host: ipv4 ipv6 域名
|
||||
host: ^_^host^_^
|
||||
# 端口
|
||||
port: ^_^port^_^
|
||||
platform: mysql
|
||||
username: ^_^username^_^
|
||||
password: ^_^password^_^
|
||||
database: ^_^database^_^
|
||||
# SQL查询方式: oneRow, multiRow, columns
|
||||
queryType: columns
|
||||
# sql
|
||||
sql: show global status where Variable_name like 'innodb%';
|
||||
url: ^_^url^_^
|
||||
```
|
||||
|
||||
### 监控参数定义文件
|
||||
|
||||
> 监控参数定义文件用于定义 *需要的输入参数字段结构定义(前端页面根据结构渲染输入参数框)*。
|
||||
|
||||
样例:自定义一个名称为example_sql的自定义监控类型,其使用JDBC协议采集指标数据。
|
||||
文件名称: example_sql.yml 位于 /define/param/example_sql.yml
|
||||
|
||||
```yaml
|
||||
app: example_sql
|
||||
param:
|
||||
- field: host
|
||||
name: 主机Host
|
||||
type: host
|
||||
required: true
|
||||
- field: port
|
||||
name: 端口
|
||||
type: number
|
||||
range: '[0,65535]'
|
||||
required: true
|
||||
defaultValue: 80
|
||||
placeholder: '请输入端口'
|
||||
- field: database
|
||||
name: 数据库名称
|
||||
type: text
|
||||
required: false
|
||||
- field: username
|
||||
name: 用户名
|
||||
type: text
|
||||
limit: 20
|
||||
required: false
|
||||
- field: password
|
||||
name: 密码
|
||||
type: password
|
||||
required: false
|
||||
- field: url
|
||||
name: URL
|
||||
type: text
|
||||
required: false
|
||||
```
|
||||
@@ -1,6 +1,206 @@
|
||||
---
|
||||
id: extend-point
|
||||
title: 进阶扩展
|
||||
sidebar_label: 扩展点
|
||||
title: 自定义监控
|
||||
sidebar_label: 自定义监控
|
||||
---
|
||||
> HertzBeat拥有自定义监控能力,您只需配置两个YML文件就能适配一款自定义的监控类型。
|
||||
> 目前自定义监控支持[HTTP协议](extend-http),[JDBC协议](extend-jdbc)(mysql,mariadb,postgresql..),[SSH协议](extend-ssh),后续会支持更多通用协议(ssh telnet wmi snmp)。
|
||||
|
||||
### 自定义步骤
|
||||
|
||||
配置自定义监控类型需新增配置两个YML文件
|
||||
1. 用监控类型命名的监控配置定义文件 - 例如:example.yml 需位于安装目录 /hertzbeat/define/app/ 下
|
||||
2. 用监控类型命名的监控参数定义文件 - 例如:example.yml 需位于安装目录 /hertzbeat/define/param/ 下
|
||||
3. 重启hertzbeat系统,我们就适配好了一个新的自定义监控类型。
|
||||
|
||||
-------
|
||||
下面详细介绍下这俩文件的配置用法。
|
||||
|
||||
### 监控配置定义文件
|
||||
|
||||
> 监控配置定义文件用于定义 *监控类型的名称(国际化), 请求参数映射, 指标信息, 采集协议配置信息*等。
|
||||
|
||||
样例:自定义一个名称为example的自定义监控类型,其使用HTTP协议采集指标数据。
|
||||
文件名称: example.yml 位于 /define/app/example.yml
|
||||
|
||||
```yaml
|
||||
# 此监控类型所属类别:service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控
|
||||
category: custom
|
||||
# 监控应用类型(与文件名保持一致) eg: linux windows tomcat mysql aws...
|
||||
app: example
|
||||
name:
|
||||
zh-CN: 模拟应用类型
|
||||
en-US: EXAMPLE APP
|
||||
# 参数映射map. 这些为输入参数变量,即可以用^_^host^_^的形式写到后面的配置中,系统自动变量值替换
|
||||
# type是参数类型: 0-number数字, 1-string明文字符串, 2-secret加密字符串
|
||||
# 强制固定必须参数 - host
|
||||
configmap:
|
||||
- key: host
|
||||
type: 1
|
||||
- key: port
|
||||
type: 0
|
||||
- key: username
|
||||
type: 1
|
||||
- key: password
|
||||
type: 2
|
||||
# 指标组列表
|
||||
metrics:
|
||||
# 第一个监控指标组 cpu
|
||||
# 注意:内置监控指标有 (responseTime - 响应时间)
|
||||
- name: cpu
|
||||
# 指标组调度优先级(0-127)越小优先级越高,优先级低的指标组会等优先级高的指标组采集完成后才会被调度,相同优先级的指标组会并行调度采集
|
||||
# 优先级为0的指标组为可用性指标组,即它会被首先调度,采集成功才会继续调度其它指标组,采集失败则中断调度
|
||||
priority: 0
|
||||
# 指标组中的具体监控指标
|
||||
fields:
|
||||
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
|
||||
- field: hostname
|
||||
type: 1
|
||||
instance: true
|
||||
- field: usage
|
||||
type: 0
|
||||
unit: '%'
|
||||
- field: cores
|
||||
type: 0
|
||||
- field: waitTime
|
||||
type: 0
|
||||
unit: s
|
||||
# (非必须)监控指标别名,与上面的指标名映射。用于采集接口数据字段不直接是最终指标名称,需要此别名做映射转换
|
||||
aliasFields:
|
||||
- hostname
|
||||
- core1
|
||||
- core2
|
||||
- usage
|
||||
- allTime
|
||||
- runningTime
|
||||
# (非必须)指标计算表达式,与上面的别名一起作用,计算出最终需要的指标值
|
||||
# eg: cores=core1+core2, usage=usage, waitTime=allTime-runningTime
|
||||
calculates:
|
||||
- hostname=hostname
|
||||
- cores=core1+core2
|
||||
- usage=usage
|
||||
- waitTime=allTime-runningTime
|
||||
# 监控采集使用协议 eg: sql, ssh, http, telnet, wmi, snmp, sdk
|
||||
protocol: http
|
||||
# 当protocol为http协议时具体的采集配置
|
||||
http:
|
||||
# 主机host: ipv4 ipv6 域名
|
||||
host: ^_^host^_^
|
||||
# 端口
|
||||
port: ^_^port^_^
|
||||
# url请求接口路径
|
||||
url: /metrics/cpu
|
||||
# 请求方式 GET POST PUT DELETE PATCH
|
||||
method: GET
|
||||
# 是否启用ssl/tls,即是http还是https,默认false
|
||||
ssl: false
|
||||
# 请求头内容
|
||||
headers:
|
||||
apiVersion: v1
|
||||
# 请求参数内容
|
||||
params:
|
||||
param1: param1
|
||||
param2: param2
|
||||
# 认证
|
||||
authorization:
|
||||
# 认证方式: Basic Auth, Digest Auth, Bearer Token
|
||||
type: Basic Auth
|
||||
basicAuthUsername: ^_^username^_^
|
||||
basicAuthPassword: ^_^password^_^
|
||||
# 响应数据解析方式: default-系统规则,jsonPath-jsonPath脚本,website-网站可用性指标监控
|
||||
# todo xmlPath-xmlPath脚本,prometheus-Prometheus数据规则
|
||||
parseType: jsonPath
|
||||
parseScript: '$'
|
||||
|
||||
- name: memory
|
||||
priority: 1
|
||||
fields:
|
||||
- field: hostname
|
||||
type: 1
|
||||
instance: true
|
||||
- field: total
|
||||
type: 0
|
||||
unit: kb
|
||||
- field: usage
|
||||
type: 0
|
||||
unit: '%'
|
||||
- field: speed
|
||||
type: 0
|
||||
protocol: http
|
||||
http:
|
||||
host: ^_^host^_^
|
||||
port: ^_^port^_^
|
||||
url: /metrics/memory
|
||||
method: GET
|
||||
headers:
|
||||
apiVersion: v1
|
||||
params:
|
||||
param1: param1
|
||||
param2: param2
|
||||
authorization:
|
||||
type: Basic Auth
|
||||
basicAuthUsername: ^_^username^_^
|
||||
basicAuthPassword: ^_^password^_^
|
||||
parseType: default
|
||||
```
|
||||
|
||||
### 监控参数定义文件
|
||||
|
||||
> 监控参数定义文件用于定义 *需要的输入参数字段结构定义(前端页面根据结构渲染输入参数框)*。
|
||||
|
||||
样例:自定义一个名称为example的自定义监控类型,其使用HTTP协议采集指标数据。
|
||||
文件名称: example.yml 位于 /define/param/example.yml
|
||||
|
||||
```yaml
|
||||
# 监控应用类型名称(与文件名保持一致) eg: linux windows tomcat mysql aws...
|
||||
app: example
|
||||
# 强制固定必须参数 - host(ipv4,ipv6,域名)
|
||||
param:
|
||||
# field-字段名称标识符
|
||||
- field: host
|
||||
# name-参数字段显示名称
|
||||
name: 主机Host
|
||||
# type-字段类型,样式(大部分映射input标签type属性)
|
||||
type: host
|
||||
# 是否是必输项 true-必填 false-可选
|
||||
required: true
|
||||
- field: port
|
||||
name: 端口
|
||||
type: number
|
||||
# 当type为number时,用range表示范围
|
||||
range: '[0,65535]'
|
||||
required: true
|
||||
# 端口默认值
|
||||
defaultValue: 80
|
||||
# 参数输入框提示信息
|
||||
placeholder: '请输入端口'
|
||||
- field: username
|
||||
name: 用户名
|
||||
type: text
|
||||
# 当type为text时,用limit表示字符串限制大小
|
||||
limit: 20
|
||||
required: false
|
||||
- field: password
|
||||
name: 密码
|
||||
type: password
|
||||
required: false
|
||||
- field: ssl
|
||||
name: 启动SSL
|
||||
# 当type为boolean时,前端用switch展示开关
|
||||
type: boolean
|
||||
required: false
|
||||
- field: method
|
||||
name: 请求方式
|
||||
type: radio
|
||||
required: true
|
||||
# 当type为radio单选框,checkbox复选框时,option表示可选项值列表 {name1:value1,name2:value2}
|
||||
options:
|
||||
- label: GET请求
|
||||
value: GET
|
||||
- label: POST请求
|
||||
value: POST
|
||||
- label: PUT请求
|
||||
value: PUT
|
||||
- label: DELETE请求
|
||||
value: DELETE
|
||||
```
|
||||
|
||||
@@ -0,0 +1,220 @@
|
||||
---
|
||||
id: extend-ssh
|
||||
title: SSH协议自定义监控
|
||||
sidebar_label: SSH协议自定义监控
|
||||
---
|
||||
> 从[自定义监控](extend-point)了解熟悉了怎么自定义类型,指标,协议等,这里我们来详细介绍下用SSH协议自定义指标监控。
|
||||
> SSH协议自定义监控可以让我们很方便的通过写sh命令脚本就能监控采集到我们想监控的Linux指标
|
||||
|
||||
### SSH协议采集流程
|
||||
【**系统直连Linux**】->【**运行SHELL命令脚本语句**】->【**响应数据解析:oneRow, multiRow**】->【**指标数据提取**】
|
||||
|
||||
由流程可见,我们自定义一个SSH协议的监控类型,需要配置SSH请求参数,配置获取哪些指标,配置查询脚本语句。
|
||||
|
||||
### 数据解析方式
|
||||
SHELL脚本查询回来的数据字段和我们需要的指标映射,就能获取对应的指标数据,目前映射解析方式有两种:oneRow, multiRow,能满足绝大部分指标需求。
|
||||
|
||||
#### **oneRow**
|
||||
> 查询出一列数据, 通过查询返回结果集的字段值(一行一个值)与字段映射
|
||||
|
||||
例如:
|
||||
需要查询Linux的指标 hostname-主机名称,uptime-启动时间
|
||||
主机名称原始查询命令:`hostname`
|
||||
启动时间原始查询命令:`uptime | awk -F "," '{print $1}'`
|
||||
则在hertzbeat对应的这两个指标的查询脚本为(用`;`将其连接到一起):
|
||||
`hostname; uptime | awk -F "," '{print $1}'`
|
||||
终端响应的数据为:
|
||||
```
|
||||
tombook
|
||||
14:00:15 up 72 days
|
||||
```
|
||||
则最后采集到的指标数据一一映射为:
|
||||
hostname值为 `tombook`
|
||||
uptime值为 `14:00:15 up 72 days`
|
||||
|
||||
这里指标字段就能和响应数据一一映射为一行采集数据。
|
||||
|
||||
#### **multiRow**
|
||||
> 查询多行数据, 通过查询返回结果集的列名称,和查询的指标字段映射
|
||||
|
||||
例如:
|
||||
查询的Linux内存相关指标字段:total-内存总量 used-已使用内存 free-空闲内存 buff-cache-缓存大小 available-可用内存
|
||||
内存指标原始查询命令为:`free -m`, 控制台响应:
|
||||
```shell
|
||||
total used free shared buff/cache available
|
||||
Mem: 7962 4065 333 1 3562 3593
|
||||
Swap: 8191 33 8158
|
||||
```
|
||||
在heartbeat中multiRow格式解析需要响应数据列名称和指标值一一映射,则对应的查询SHELL脚本为:
|
||||
`free -m | grep Mem | awk 'BEGIN{print "total used free buff_cache available"} {print $2,$3,$4,$6,$7}'`
|
||||
控制台响应为:
|
||||
```shell
|
||||
total used free buff_cache available
|
||||
7962 4066 331 3564 3592
|
||||
```
|
||||
|
||||
这里指标字段就能和响应数据一一映射为采集数据。
|
||||
|
||||
### 自定义步骤
|
||||
|
||||
配置自定义监控类型需新增配置两个YML文件
|
||||
1. 用监控类型命名的监控配置定义文件 - 例如:example_linux.yml 需位于安装目录 /hertzbeat/define/app/ 下
|
||||
2. 用监控类型命名的监控参数定义文件 - 例如:example_linux.yml 需位于安装目录 /hertzbeat/define/param/ 下
|
||||
3. 重启hertzbeat系统,我们就适配好了一个新的自定义监控类型。
|
||||
|
||||
-------
|
||||
下面详细介绍下这俩文件的配置用法,请注意看使用注释。
|
||||
|
||||
### 监控配置定义文件
|
||||
|
||||
> 监控配置定义文件用于定义 *监控类型的名称(国际化), 请求参数映射, 指标信息, 采集协议配置信息*等。
|
||||
|
||||
样例:自定义一个名称为example_linux的自定义监控类型,其使用SSH协议采集指标数据。
|
||||
文件名称: example_linux.yml 位于 /define/app/example_linux.yml
|
||||
|
||||
```yaml
|
||||
# 此监控类型所属类别:service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控
|
||||
category: os
|
||||
# 监控应用类型(与文件名保持一致) eg: linux windows tomcat mysql aws...
|
||||
app: example_linux
|
||||
name:
|
||||
zh-CN: 模拟LINUX应用类型
|
||||
en-US: LINUX EXAMPLE APP
|
||||
# 参数映射map. 这些为输入参数变量,即可以用^_^host^_^的形式写到后面的配置中,系统自动变量值替换
|
||||
# type是参数类型: 0-number数字, 1-string明文字符串, 2-secret加密字符串
|
||||
# 强制固定必须参数 - host
|
||||
configmap:
|
||||
- key: host
|
||||
type: 1
|
||||
- key: port
|
||||
type: 0
|
||||
- key: username
|
||||
type: 1
|
||||
- key: password
|
||||
type: 2
|
||||
# 指标组列表
|
||||
metrics:
|
||||
# 第一个监控指标组 basic
|
||||
# 注意:内置监控指标有 (responseTime - 响应时间)
|
||||
- name: basic
|
||||
# 指标组调度优先级(0-127)越小优先级越高,优先级低的指标组会等优先级高的指标组采集完成后才会被调度,相同优先级的指标组会并行调度采集
|
||||
# 优先级为0的指标组为可用性指标组,即它会被首先调度,采集成功才会继续调度其它指标组,采集失败则中断调度
|
||||
priority: 0
|
||||
# 指标组中的具体监控指标
|
||||
fields:
|
||||
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
|
||||
- field: hostname
|
||||
type: 1
|
||||
instance: true
|
||||
- field: version
|
||||
type: 1
|
||||
- field: uptime
|
||||
type: 1
|
||||
# 监控采集使用协议 eg: sql, ssh, http, telnet, wmi, snmp, sdk
|
||||
protocol: ssh
|
||||
# 当protocol为http协议时具体的采集配置
|
||||
ssh:
|
||||
# 主机host: ipv4 ipv6 域名
|
||||
host: ^_^host^_^
|
||||
# 端口
|
||||
port: ^_^port^_^
|
||||
username: ^_^username^_^
|
||||
password: ^_^password^_^
|
||||
script: (uname -r ; hostname ; uptime | awk -F "," '{print $1}' | sed "s/ //g") | sed ":a;N;s/\n/^/g;ta" | awk -F '^' 'BEGIN{print "version hostname uptime"} {print $1, $2, $3}'
|
||||
# 响应数据解析方式:oneRow, multiRow
|
||||
parseType: multiRow
|
||||
|
||||
- name: cpu
|
||||
priority: 1
|
||||
fields:
|
||||
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
|
||||
- field: info
|
||||
type: 1
|
||||
- field: cores
|
||||
type: 0
|
||||
unit: 核数
|
||||
- field: interrupt
|
||||
type: 0
|
||||
unit: 个数
|
||||
- field: load
|
||||
type: 1
|
||||
- field: context_switch
|
||||
type: 0
|
||||
unit: 个数
|
||||
# 监控采集使用协议 eg: sql, ssh, http, telnet, wmi, snmp, sdk
|
||||
protocol: ssh
|
||||
# 当protocol为http协议时具体的采集配置
|
||||
ssh:
|
||||
# 主机host: ipv4 ipv6 域名
|
||||
host: ^_^host^_^
|
||||
# 端口
|
||||
port: ^_^port^_^
|
||||
username: ^_^username^_^
|
||||
password: ^_^password^_^
|
||||
script: "LANG=C lscpu | awk -F: '/Model name/ {print $2}';awk '/processor/{core++} END{print core}' /proc/cpuinfo;uptime | sed 's/,/ /g' | awk '{for(i=NF-2;i<=NF;i++)print $i }' | xargs;vmstat 1 1 | awk 'NR==3{print $11}';vmstat 1 1 | awk 'NR==3{print $12}'"
|
||||
parseType: oneRow
|
||||
|
||||
- name: memory
|
||||
priority: 2
|
||||
fields:
|
||||
# 指标信息 包括 field名称 type字段类型:0-number数字,1-string字符串 instance是否为实例主键 unit:指标单位
|
||||
- field: total
|
||||
type: 0
|
||||
unit: Mb
|
||||
- field: used
|
||||
type: 0
|
||||
unit: Mb
|
||||
- field: free
|
||||
type: 0
|
||||
unit: Mb
|
||||
- field: buff_cache
|
||||
type: 0
|
||||
unit: Mb
|
||||
- field: available
|
||||
type: 0
|
||||
unit: Mb
|
||||
# 监控采集使用协议 eg: sql, ssh, http, telnet, wmi, snmp, sdk
|
||||
protocol: ssh
|
||||
# 当protocol为http协议时具体的采集配置
|
||||
ssh:
|
||||
# 主机host: ipv4 ipv6 域名
|
||||
host: ^_^host^_^
|
||||
# 端口
|
||||
port: ^_^port^_^
|
||||
username: ^_^username^_^
|
||||
password: ^_^password^_^
|
||||
script: free -m | grep Mem | awk 'BEGIN{print "total used free buff_cache available"} {print $2,$3,$4,$6,$7}'
|
||||
parseType: multiRow
|
||||
```
|
||||
|
||||
### 监控参数定义文件
|
||||
|
||||
> 监控参数定义文件用于定义 *需要的输入参数字段结构定义(前端页面根据结构渲染输入参数框)*。
|
||||
|
||||
样例:自定义一个名称为example_linux的自定义监控类型,其使用SSH协议采集指标数据。
|
||||
文件名称: example_linux.yml 位于 /define/param/example_linux.yml
|
||||
|
||||
```yaml
|
||||
app: example_linux
|
||||
param:
|
||||
- field: host
|
||||
name: 主机Host
|
||||
type: host
|
||||
required: true
|
||||
- field: port
|
||||
name: 端口
|
||||
type: number
|
||||
range: '[0,65535]'
|
||||
required: true
|
||||
defaultValue: 22
|
||||
placeholder: '请输入端口'
|
||||
- field: username
|
||||
name: 用户名
|
||||
type: text
|
||||
limit: 20
|
||||
required: true
|
||||
- field: password
|
||||
name: 密码
|
||||
type: password
|
||||
required: true
|
||||
```
|
||||
@@ -1,65 +0,0 @@
|
||||
---
|
||||
id: contributing
|
||||
title: 参与贡献
|
||||
sidebar_label: 参与贡献
|
||||
---
|
||||
|
||||
Contributing to Sureness
|
||||
=======================================
|
||||
Very welcome to Contribute this project, go further and better with sureness.
|
||||
Firstly, thanks for your interest in contributing! I hope that this will be a pleasant first experience for you, and that you will return to continue contributing.
|
||||
|
||||
Components of Repository:
|
||||
- [sureness's kernel code--sureness-core](https://github.com/usthe/sureness/tree/master/core)
|
||||
- [sureness integration springboot sample(configuration file scheme)--sample-bootstrap](https://github.com/usthe/sureness/tree/master/sample-bootstrap)
|
||||
- [sureness integration springboot sample(database scheme)-sample-tom](https://github.com/usthe/sureness/tree/master/sample-tom)
|
||||
- [sample projects using sureness in each framework(javalin,ktor,quarkus)--samples](https://github.com/usthe/sureness/tree/master/samples)
|
||||
|
||||
## How to contribute?
|
||||
|
||||
Most of the contributions that we receive are code contributions, but you can
|
||||
also contribute to the documentation or simply report solid bugs
|
||||
for us to fix.
|
||||
|
||||
For new contributors, please take a look at issues or pull requests with a tag called below.
|
||||
|
||||
[Good first issue](https://github.com/usthe/sureness/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
|
||||
[Help wanted](https://github.com/usthe/sureness/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)
|
||||
[Good first pull request](https://github.com/usthe/sureness/issues?q=label%3A%22good+first+pull+request%22+)
|
||||
|
||||
## Join discussion
|
||||
|
||||
[Github Discussion](https://github.com/usthe/sureness/discussions)
|
||||
[Gitter Channel](https://gitter.im/usthe/sureness)
|
||||
|
||||
----
|
||||
----
|
||||
|
||||
参与贡献
|
||||
=======================================
|
||||
|
||||
非常欢迎参与项目贡献,我们致力于维护一个互相帮助的快乐社区。
|
||||
|
||||
仓库的组成部分:
|
||||
- [sureness的核心代码--sureness-core](https://github.com/usthe/sureness/tree/master/core)
|
||||
- [使用sureness集成springboot搭建权限项目(配置文件方案)--sample-bootstrap](https://github.com/usthe/sureness/tree/master/sample-bootstrap)
|
||||
- [使用sureness集成springboot搭建权限项目(数据库方案)--sample-tom](https://github.com/usthe/sureness/tree/master/sample-tom)
|
||||
- [各个框架使用sureness的样例项目(javalin,ktor,quarkus)--samples](https://github.com/usthe/sureness/tree/master/samples)
|
||||
|
||||
|
||||
## 如何贡献?
|
||||
|
||||
我们不仅仅接收代码的贡献提交,您也可以通过提交文档的更新或者BUG的报告来参与社区贡献。
|
||||
|
||||
如果是新的贡献者,请首先了解参考如下样例的提交Issues,提交Pull Requests如果工作。
|
||||
|
||||
[Good first issue](https://github.com/usthe/sureness/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
|
||||
[Help wanted](https://github.com/usthe/sureness/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22)
|
||||
[Good first pull request](https://github.com/usthe/sureness/issues?q=label%3A%22good+first+pull+request%22+)
|
||||
|
||||
## 加入交流
|
||||
|
||||
[Github Discussion](https://github.com/usthe/sureness/discussions)
|
||||
[Gitter Channel](https://gitter.im/usthe/sureness)
|
||||
QQ交流群:390083213
|
||||
微信公众号:sureness
|
||||
@@ -0,0 +1,18 @@
|
||||
---
|
||||
id: alert_console
|
||||
title: 告警模板中自定义的控制台地址
|
||||
sidebar_label: 告警模板登录台地址
|
||||
---
|
||||
|
||||
> 阈值触发后发送告警信息,通过钉钉/企业微信/飞书机器人通知或者使用邮箱通知的时候,告警内容中有登录控制台的详情链接
|
||||
|
||||
|
||||
### 自定义设置
|
||||
|
||||
在我们的启动配置文件application.yml中,找到下面的配置
|
||||
```yml
|
||||
alerter:
|
||||
console-url: #这里就是我们的自定义控制台地址
|
||||
```
|
||||
|
||||
默认值是赫兹跳动的官方控制台地址
|
||||
@@ -0,0 +1,40 @@
|
||||
---
|
||||
id: alert_dingtalk
|
||||
title: 告警钉钉机器人通知
|
||||
sidebar_label: 告警钉钉机器人通知
|
||||
---
|
||||
|
||||
> 阈值触发后发送告警信息,通过钉钉机器人通知到接收人。
|
||||
|
||||
### 操作步骤
|
||||
|
||||
1. **【钉钉桌面客户端】-> 【群设置】-> 【智能群助手】-> 【添加新建机器人-选自定义】-> 【设置机器人名称头像】-> 【注意⚠️设置自定义关键字: TanCloud】 ->【添加成功后复制其WebHook地址】**
|
||||
|
||||
> 注意⚠️ 新增机器人时需在安全设置块需设置其自定义关键字: TanCloud ,其它安全设置加签或IP段不填写
|
||||
|
||||

|
||||
|
||||
2. **【保存机器人的WebHook地址access_token值】**
|
||||
|
||||
> 例如: webHook地址:`https://oapi.dingtalk.com/robot/send?access_token=43aac28a236e001285ed84e473f8eabee70f63c7a70287acb0e0f8b65fade64f`
|
||||
> 其机器人access_token值为 `43aac28a236e001285ed84e473f8eabee70f63c7a70287acb0e0f8b65fade64f`
|
||||
|
||||
3. **【告警通知】->【新增接收人】 ->【选择钉钉机器人通知方式】->【设置钉钉机器人ACCESS_TOKEN】-> 【确定】**
|
||||
|
||||

|
||||
|
||||
4. ** 配置关联的告警通知策略⚠️ 【新增通知策略】-> 【将刚设置的接收人关联】-> 【确定】**
|
||||
|
||||
> ** 注意⚠️ 新增了接收人并不代表已经生效可以接收告警信息,还需配置关联的告警通知策略,即指定哪些消息发给哪些接收人 **。
|
||||
|
||||

|
||||
|
||||
|
||||
### 钉钉机器人通知常见问题
|
||||
|
||||
1. 钉钉群未收到机器人告警通知
|
||||
> 请排查在告警中心是否已有触发的告警信息
|
||||
> 请排查钉钉机器人是否配置了安全自定义关键字:TanCloud
|
||||
> 请排查是否配置正确机器人ACCESS_TOKEN,是否已配置告警策略关联
|
||||
|
||||
其它问题可以通过交流群ISSUE反馈哦!
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
id: alert_email
|
||||
title: 告警邮件通知
|
||||
sidebar_label: 告警邮件通知
|
||||
---
|
||||
|
||||
> 阈值触发后发送告警信息,通过邮件通知到接收人。
|
||||
|
||||
### 操作步骤
|
||||
|
||||
1. **【告警通知】->【新增接收人】 ->【选择邮件通知方式】**
|
||||
|
||||

|
||||
|
||||
2. **【获取验证码】-> 【输入邮箱验证码】-> 【确定】**
|
||||

|
||||
|
||||

|
||||
|
||||
3. ** 配置关联的告警通知策略⚠️ 【新增通知策略】-> 【将刚设置的接收人关联】-> 【确定】**
|
||||
|
||||
> ** 注意⚠️ 新增了接收人并不代表已经生效可以接收告警信息,还需配置关联的告警通知策略,即指定哪些消息发给哪些接收人 **。
|
||||
|
||||

|
||||
|
||||
|
||||
### 邮件通知常见问题
|
||||
|
||||
1. 自己内网部署的HertzBeat无法接收到邮件通知
|
||||
> HertzBeat需要自己配置邮件服务器,TanCloud无需,请确认是否在application.yml配置了自己的邮件服务器
|
||||
|
||||
2. 云环境TanCloud无法接收到邮件通知
|
||||
> 请排查在告警中心是否已有触发的告警信息
|
||||
> 请排查是否配置正确邮箱,是否已配置告警策略关联
|
||||
> 请查询邮箱的垃圾箱里是否把告警邮件拦截
|
||||
|
||||
其它问题可以通过交流群ISSUE反馈哦!
|
||||
@@ -0,0 +1,33 @@
|
||||
---
|
||||
id: alert_feishu
|
||||
title: 告警飞书机器人通知
|
||||
sidebar_label: 告警飞书机器人通知
|
||||
---
|
||||
|
||||
> 阈值触发后发送告警信息,通过飞书机器人通知到接收人。
|
||||
|
||||
### 操作步骤
|
||||
|
||||
1. **【飞书客户端】-> 【群设置】-> 【群机器人】-> 【添加新建机器人】-> 【设置机器人名称头像】-> 【添加成功后复制其WebHook地址】**
|
||||
|
||||
2. **【保存机器人的WebHook地址的KEY值】**
|
||||
|
||||
> 例如: webHook地址:`https://open.feishu.cn/open-apis/bot/v2/hook/3adafc96-23d0-4cd5-8feb-17f6e0b5fcs4`
|
||||
> 其机器人KEY值为 `3adafc96-23d0-4cd5-8feb-17f6e0b5fcs4`
|
||||
|
||||
3. **【告警通知】->【新增接收人】 ->【选择飞书机器人通知方式】->【设置飞书机器人KEY】-> 【确定】**
|
||||
|
||||
4. ** 配置关联的告警通知策略⚠️ 【新增通知策略】-> 【将刚设置的接收人关联】-> 【确定】**
|
||||
|
||||
> ** 注意⚠️ 新增了接收人并不代表已经生效可以接收告警信息,还需配置关联的告警通知策略,即指定哪些消息发给哪些接收人 **。
|
||||
|
||||

|
||||
|
||||
|
||||
### 飞书机器人通知常见问题
|
||||
|
||||
1. 飞书群未收到机器人告警通知
|
||||
> 请排查在告警中心是否已有触发的告警信息
|
||||
> 请排查是否配置正确机器人KEY,是否已配置告警策略关联
|
||||
|
||||
其它问题可以通过交流群ISSUE反馈哦!
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
id: alert_threshold
|
||||
title: 阈值告警配置
|
||||
sidebar_label: 阈值告警配置
|
||||
---
|
||||
|
||||
> 对监控指标配置告警阈值(警告告警,严重告警,紧急告警),系统根据阈值配置和采集指标数据计算触发告警。
|
||||
|
||||
### 操作步骤
|
||||
|
||||
1. **【告警配置】->【新增阈值】-> 【配置后确定】**
|
||||
|
||||

|
||||
|
||||
如上图:
|
||||
|
||||
**指标对象**:选择我们需要配置阈值的监控指标对象 例如:网站监控类型下的 -> summary指标集合下的 -> responseTime响应时间指标
|
||||
**阈值触发表达式**:根据此表达式来计算判断是否触发阈值,表达式环境变量和操作符见页面提示,例如:设置响应时间大于50触发告警,表达式为 `responseTime > 50`。阈值表达式详细帮助见 [阈值表达式帮助](alert_threshold_expr)
|
||||
**告警级别**:触发阈值的告警级别,从低到高依次为:警告-warning,严重-critical,紧急-emergency
|
||||
**触发次数**:设置触发阈值多少次之后才会真正的触发告警
|
||||
**通知模版**:告警触发后发送的通知信息模版,模版环境变量见页面提示,例如:`${app}.${metrics}.${metric}指标的值为${responseTime},大于50触发告警`
|
||||
**全局默认**: 设置此阈值是否对全局的此类指标都应用有效,默认否。新增阈值后还需将阈值与监控对象关联,这样阈值才会对此监控生效。
|
||||
**启用告警**:此告警阈值配置开启生效或关闭
|
||||
|
||||
2. ** 阈值关联监控⚠️ 【告警配置】-> 【将刚设置的阈值】-> 【配置关联监控】-> 【配置后确定】**
|
||||
|
||||
> ** 注意⚠️ 新增阈值后还需将阈值与监控对象关联(即设置此阈值对哪些监控有效),这样阈值才会对此监控生效 **。
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
**阈值告警配置完毕,已经被成功触发的告警信息可以在【告警中心】看到。**
|
||||
**若需要将告警信息邮件,微信,钉钉飞书通知给相关人员,可以在【告警通知】配置。**
|
||||
|
||||
其它问题可以通过交流群ISSUE反馈哦!
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
id: alert_threshold_expr
|
||||
title: 阈值触发表达式
|
||||
sidebar_label: 阈值触发表达式
|
||||
---
|
||||
|
||||
> 在我们配置阈值告警时,需要配置阈值触发表达式,系统根据表达式和监控指标值计算触发是否告警,这里详细介绍下表达式使用。
|
||||
|
||||
#### 表达式支持的操作符
|
||||
|
||||
```
|
||||
equals(str1,str2)
|
||||
==
|
||||
<
|
||||
<=
|
||||
>
|
||||
>=
|
||||
!=
|
||||
( )
|
||||
+
|
||||
-
|
||||
&&
|
||||
||
|
||||
```
|
||||
|
||||
丰富的操作符让我们可以很自由的定义表达式。
|
||||
注意⚠️ 字符串的相等请用 `equals(str1,str2)` 数字类型的相等判断请用== 或 !=
|
||||
|
||||
#### 支持的环境变量
|
||||
> 环境变量即指标值等支持的变量,用于在表达式中,阈值计算判断时会将变量替换成实际值进行计算
|
||||
|
||||
非固定环境变量:这些变量会根据我们选择的监控指标对象而动态变化,例如我们选择了**网站监控的响应时间指标**,则环境变量就有 `responseTime - 此为响应时间变量`
|
||||
如果我们想设置**网站监控的响应时间大于400时**触发告警,则表达式为 `responseTime>400`
|
||||
|
||||
固定环境变量(不常用):`instance : 所属行实例值`
|
||||
此变量主要用于计算多实例时,比如采集到c盘d盘的`usage`(`usage为非固定环境变量`),我们只想设置**c盘的usage大于80**时告警,则表达式为 `equals(instance,"c")&&usage>80`
|
||||
|
||||
#### 表达式设置案例
|
||||
|
||||
1. 网站监控->响应时间大于等于400ms时触发告警
|
||||
`responseTime>=400`
|
||||
2. API监控->响应时间大于3000ms时触发告警
|
||||
`responseTime>3000`
|
||||
3. 全站监控->URL(instance)路径为 `https://baidu.com/book/3` 的响应时间大于200ms时触发告警
|
||||
`equals(instance,"https://baidu.com/book/3")&&responseTime>200`
|
||||
4. MYSQL监控->status指标组->threads_running(运行线程数)指标大于7时触发告警
|
||||
`threads_running>7`
|
||||
|
||||
若遇到问题可以通过交流群ISSUE交流反馈哦!
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
id: alert_webhook
|
||||
title: 告警WebHook回调通知
|
||||
sidebar_label: 告警WebHook通知
|
||||
---
|
||||
|
||||
> 阈值触发后发送告警信息,通过post请求方式调用WebHook接口通知到接收人。
|
||||
|
||||
### 操作步骤
|
||||
|
||||
1. **【告警通知】->【新增接收人】 ->【选择WebHook通知方式】-> 【设置WebHook回调地址】 -> 【确定】**
|
||||
|
||||

|
||||
|
||||
2. ** 配置关联的告警通知策略⚠️ 【新增通知策略】-> 【将刚设置的接收人关联】-> 【确定】**
|
||||
|
||||
> ** 注意⚠️ 新增了接收人并不代表已经生效可以接收告警信息,还需配置关联的告警通知策略,即指定哪些消息发给哪些接收人 **。
|
||||
|
||||

|
||||
|
||||
### WebHook回调POST请求体BODY内容
|
||||
|
||||
内容格式:JSON
|
||||
```json
|
||||
{
|
||||
"id":76456,
|
||||
"target":"available",
|
||||
"monitorId":5739609486000128,
|
||||
"monitorName":"API_poetry.apiopen.top",
|
||||
"priority":0,
|
||||
"content":"监控紧急可用性告警: UN_CONNECTABLE",
|
||||
"status":0,
|
||||
"times":1,
|
||||
"tenantId":10000,
|
||||
"gmtCreate":"2022-02-25T13:32:13",
|
||||
"gmtUpdate":"2022-02-25T13:32:13"
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### webhook通知常见问题
|
||||
|
||||
1. WebHook回调未生效
|
||||
> 请查看告警中心是否已经产生此条告警信息
|
||||
> 请排查配置的WebHook回调地址是否正确
|
||||
|
||||
其它问题可以通过交流群ISSUE反馈哦!
|
||||
@@ -0,0 +1,37 @@
|
||||
---
|
||||
id: alert_wework
|
||||
title: 告警企业微信通知
|
||||
sidebar_label: 告警企业微信通知
|
||||
---
|
||||
|
||||
> 阈值触发后发送告警信息,通过企业微信机器人通知到接收人。
|
||||
|
||||
### 操作步骤
|
||||
|
||||
1. **【企业微信端】-> 【群设置】-> 【群机器人】-> 【添加新建机器人】-> 【设置机器人名称头像】-> 【添加成功后复制其WebHook地址】**
|
||||
|
||||

|
||||
|
||||
2. **【保存机器人的WebHook地址的KEY值】**
|
||||
|
||||
> 例如: webHook地址:`https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=3adafc96-23d0-4cd5-8feb-17f6e0b5fcs4`
|
||||
> 其机器人KEY值为 `3adafc96-23d0-4cd5-8feb-17f6e0b5fcs4`
|
||||
|
||||
3. **【告警通知】->【新增接收人】 ->【选择企业微信机器人通知方式】->【设置企业微信机器人KEY】-> 【确定】**
|
||||
|
||||

|
||||
|
||||
4. ** 配置关联的告警通知策略⚠️ 【新增通知策略】-> 【将刚设置的接收人关联】-> 【确定】**
|
||||
|
||||
> ** 注意⚠️ 新增了接收人并不代表已经生效可以接收告警信息,还需配置关联的告警通知策略,即指定哪些消息发给哪些接收人 **。
|
||||
|
||||

|
||||
|
||||
|
||||
### 企业微信机器人通知常见问题
|
||||
|
||||
1. 企业微信群未收到机器人告警通知
|
||||
> 请排查在告警中心是否已有触发的告警信息
|
||||
> 请排查是否配置正确机器人KEY,是否已配置告警策略关联
|
||||
|
||||
其它问题可以通过交流群ISSUE反馈哦!
|
||||
@@ -0,0 +1,35 @@
|
||||
---
|
||||
id: api
|
||||
title: 监控:HTTP API
|
||||
sidebar_label: HTTP API
|
||||
---
|
||||
|
||||
> 调用HTTP API接口,查看接口是否可用,对其响应时间等指标进行监测
|
||||
|
||||
### 配置参数
|
||||
|
||||
| 参数名称 | 参数帮助描述 |
|
||||
| ----------- | ----------- |
|
||||
| 监控Host | 被监控的对端IPV4,IPV6或域名。注意⚠️不带协议头(eg: https://, http://)。 |
|
||||
| 监控名称 | 标识此监控的名称,名称需要保证唯一性。 |
|
||||
| 端口 | 网站对外提供的端口,http一般默认为80,https一般默认为443。 |
|
||||
| 相对路径 | 网站地址除IP端口外的后缀路径,例如 `www.tancloud.cn/console` 网站的相对路径为 `/console`。 |
|
||||
| 请求方式 | 设置接口调用的请求方式:GET,POST,PUT,DELETE。 |
|
||||
| 启用HTTPS | 是否通过HTTPS访问网站,注意⚠️开启HTTPS一般默认对应端口需要改为443 |
|
||||
| 用户名 | 接口Basic认证或Digest认证时使用的用户名 |
|
||||
| 密码 | 接口Basic认证或Digest认证时使用的密码 |
|
||||
| Content-Type | 设置携带BODY请求体数据请求时的资源类型 |
|
||||
| 请求BODY | 设置携带BODY请求体数据,PUT POST请求方式时有效 |
|
||||
| 采集间隔 | 监控周期性采集数据间隔时间,单位秒,可设置的最小间隔为10秒 |
|
||||
| 是否探测 | 新增监控前是否先探测检查监控可用性,探测成功才会继续新增修改操作 |
|
||||
| 描述备注 | 更多标识和描述此监控的备注信息,用户可以在这里备注信息 |
|
||||
|
||||
### 采集指标
|
||||
|
||||
#### 指标集合:summary
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| responseTime | ms毫秒 | 网站响应时间 |
|
||||
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
---
|
||||
id: fullsite
|
||||
title: 监控:全站监控
|
||||
sidebar_label: 全站监控
|
||||
---
|
||||
|
||||
> 对网站的全部页面监测是否可用
|
||||
> 往往一个网站有多个不同服务提供的页面,我们通过采集网站暴露出来的网站地图SiteMap来监控全站。
|
||||
> 注意⚠️,此监控需您网站支持SiteMap。我们支持XML和TXT格式的SiteMap。
|
||||
|
||||
### 配置参数
|
||||
|
||||
| 参数名称 | 参数帮助描述 |
|
||||
| ----------- | ----------- |
|
||||
| 监控Host | 被监控的对端IPV4,IPV6或域名。注意⚠️不带协议头(eg: https://, http://)。 |
|
||||
| 监控名称 | 标识此监控的名称,名称需要保证唯一性。 |
|
||||
| 端口 | 网站对外提供的端口,http一般默认为80,https一般默认为443。 |
|
||||
| 网站地图 | 网站SiteMap地图地址的相对路径,例如:/sitemap.xml。 |
|
||||
| 启用HTTPS | 是否通过HTTPS访问网站,注意⚠️开启HTTPS一般默认对应端口需要改为443 |
|
||||
| 采集间隔 | 监控周期性采集数据间隔时间,单位秒,可设置的最小间隔为10秒 |
|
||||
| 是否探测 | 新增监控前是否先探测检查监控可用性,探测成功才会继续新增修改操作 |
|
||||
| 描述备注 | 更多标识和描述此监控的备注信息,用户可以在这里备注信息 |
|
||||
|
||||
### 采集指标
|
||||
|
||||
#### 指标集合:summary
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| url | 无 | 网页的URL路径 |
|
||||
| statusCode | 无 | 请求此网页的响应HTTP状态码 |
|
||||
| responseTime | ms毫秒 | 网站响应时间 |
|
||||
| errorMsg | 无 | 请求此网站反馈的错误信息 |
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
id: guide
|
||||
title: 帮助中心
|
||||
sidebar_label: 帮助入门
|
||||
---
|
||||
|
||||
> TanCloud - 易用友好的高性能监控云
|
||||
> 使用过程中的帮助文档,辅助信息
|
||||
|
||||
## 🔬 监控服务
|
||||
|
||||
> 定时采集监控对端服务暴露的性能指标,提供可视化界面,处理数据供告警等服务调度。
|
||||
> 规划的监控类型:应用服务,数据库,操作系统,云原生,开源中间件
|
||||
|
||||
### 应用服务监控
|
||||
|
||||
[网站监测](website)      [HTTP API](api)      [PING连通性](ping)      [端口可用性](port)      [全站监控](fullsite)
|
||||
|
||||
### 数据库监控
|
||||
|
||||
[MYSQL数据库监控](mysql)      [MariaDB数据库监控](mariadb)      [PostgreSQL数据库监控](postgresql)      [SqlServer数据库监控](sqlserver)      [Oracle数据库监控](oracle)
|
||||
|
||||
### 操作系统监控
|
||||
|
||||
[Linux操作系统监控](linux)     
|
||||
|
||||
## 💡 告警服务
|
||||
|
||||
> 更自由化的阈值告警配置,支持邮箱,短信,webhook,钉钉,企业微信,飞书机器人等告警通知。
|
||||
> 告警服务的定位是阈值准确及时触发,告警通知及时可达。
|
||||
|
||||
### 告警中心
|
||||
|
||||
> 已触发的告警信息中心,提供告警删除,告警处理,标记未处理,告警级别状态等查询过滤。
|
||||
|
||||
### 告警配置
|
||||
|
||||
> 指标阈值配置,提供表达式形式的指标阈值配置,可设置告警级别,触发次数,告警通知模版和是否启用,关联监控等功能。
|
||||
|
||||
详见 [阈值告警](alert_threshold)      [阈值表达式](alert_threshold_expr)
|
||||
|
||||
### 告警通知
|
||||
|
||||
> 触发告警信息后,除了显示在告警中心列表外,还可以用指定方式(邮件钉钉微信飞书等)通知给指定接收人。
|
||||
> 告警通知提供设置不同类型的通知方式,如邮件接收人,企业微信机器人通知,钉钉机器人通知,飞书机器人通知。
|
||||
> 接收人设置后需要设置关联的告警通知策略,来配置哪些告警信息发给哪些接收人。
|
||||
|
||||
|
||||
[配置邮箱通知](alert_email)      [配置WebHook通知](alert_webhook)      [配置企业微信机器人通知](alert_wework)
|
||||
[配置钉钉机器人通知](alert_dingtalk)      [配置飞书机器人通知](alert_feishu)
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
id: issue
|
||||
title: 常见问题
|
||||
sidebar_label: 常见问题
|
||||
---
|
||||
|
||||
### 监控常见问题
|
||||
|
||||
1. ** 页面反馈:monitor.host:监控Host必须是ipv4,ipv6或域名 **
|
||||
> 如信息所示,输入的监控Host须是ipv4,ipv6或域名,不能携带协议头,例如协议头http
|
||||
|
||||
2. ** 网站API等监控反馈statusCode:403或401,但对端服务本身无需认证,浏览器直接访问是OK **
|
||||
> 请排查是否是被防火墙拦截,如宝塔等默认设置了对请求header中`User-Agent=Apache-HttpClient`的拦截,若被拦截请删除此拦截规则。(v1.0.beat5版本已将user-agent模拟成浏览器此问题不存在)
|
||||
|
||||
3. 安装包部署的hertzbeat下ping连通性监控异常
|
||||
安装包安装部署的hertzbeat,对ping连通性监控不可用,但本地直接ping是可用的。
|
||||
> 安装包部署需要配置java虚拟机root权限启动hertzbeat从而使用ICMP,若未启用root权限则是判断telnet对端7号端口是否开通
|
||||
> docker安装默认启用无此问题
|
||||
|
||||
### Docker部署常见问题
|
||||
|
||||
1. **MYSQL,TDENGINE和HertzBeat都Docker部署在同一主机上,HertzBeat使用localhost或127.0.0.1连接数据库失败**
|
||||
此问题本质为Docker容器访问宿主机端口连接失败,由于docker默认网络模式为Bridge模式,其通过localhost访问不到宿主机。
|
||||
> 解决办法一:配置application.yml将数据库的连接地址由localhost修改为宿主机的对外IP
|
||||
> 解决办法二:使用Host网络模式启动Docker,即使Docker容器和宿主机共享网络 `docker run -d --network host .....`
|
||||
|
||||
2. **按照流程部署,访问 http://ip:1157/console 无界面**
|
||||
请参考下面几点排查问题:
|
||||
> 一:依赖服务MYSQL数据库,TDENGINE数据库是否已按照启动成功,对应hertzbeat数据库是否已创建,SQL脚本是否执行
|
||||
> 二:HertzBeat的配置文件 `application.yml` 里面的依赖服务IP账户密码等配置是否正确
|
||||
> 三:若都无问题可以 `docker logs hertzbeat` 查看容器日志是否有明显错误,提issue或交流群或社区反馈
|
||||
|
||||
3. **日志报错TDengine连接或插入SQL失败**
|
||||
> 一:排查配置的数据库账户密码是否正确,数据库是否创建
|
||||
> 二:若是安装包安装的TDengine2.3+,除了启动server外,还需执行 `systemctl start taosadapter` 启动 adapter
|
||||
|
||||
### 安装包部署常见问题
|
||||
|
||||
1. **按照流程部署,访问 http://ip:1157/console 无界面**
|
||||
请参考下面几点排查问题:
|
||||
> 一:依赖服务MYSQL数据库,TDENGINE数据库是否已按照启动成功,对应hertzbeat数据库是否已创建,SQL脚本是否执行
|
||||
> 二:HertzBeat的配置文件 `hertzbeat/config/application.yml` 里面的依赖服务IP账户密码等配置是否正确
|
||||
> 三:若都无问题可以查看 `hertzbeat/logs/` 目录下面的运行日志是否有明显错误,提issue或交流群或社区反馈
|
||||
|
||||
2. **日志报错TDengine连接或插入SQL失败**
|
||||
> 一:排查配置的数据库账户密码是否正确,数据库是否创建
|
||||
> 二:若是安装包安装的TDengine2.3+,除了启动server外,还需执行 `systemctl start taosadapter` 启动 adapter
|
||||
@@ -0,0 +1,81 @@
|
||||
---
|
||||
id: linux
|
||||
title: 监控:Linux操作系统监控
|
||||
sidebar_label: Linux操作系统
|
||||
---
|
||||
|
||||
> 对Linux操作系统的通用性能指标进行采集监控。
|
||||
|
||||
### 配置参数
|
||||
|
||||
| 参数名称 | 参数帮助描述 |
|
||||
| ----------- | ----------- |
|
||||
| 监控Host | 被监控的对端IPV4,IPV6或域名。注意⚠️不带协议头(eg: https://, http://)。 |
|
||||
| 监控名称 | 标识此监控的名称,名称需要保证唯一性。 |
|
||||
| 端口 | Linux SSH对外提供的端口,默认为22。 |
|
||||
| 用户名 | SSH连接用户名,可选 |
|
||||
| 密码 | SSH连接密码,可选 |
|
||||
| 采集间隔 | 监控周期性采集数据间隔时间,单位秒,可设置的最小间隔为10秒 |
|
||||
| 是否探测 | 新增监控前是否先探测检查监控可用性,探测成功才会继续新增修改操作 |
|
||||
| 描述备注 | 更多标识和描述此监控的备注信息,用户可以在这里备注信息 |
|
||||
|
||||
### 采集指标
|
||||
|
||||
#### 指标集合:basic
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| hostname | 无 | 主机名称 |
|
||||
| version | 无 | 操作系统版本 |
|
||||
| uptime | 无 | 系统运行时间 |
|
||||
|
||||
#### 指标集合:cpu
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| info | 无 | CPU型号 |
|
||||
| cores | 核数 | CPU内核数量 |
|
||||
| interrupt | 个数 | CPU中断数量 |
|
||||
| load | 无 | CPU最近1/5/15分钟的平均负载 |
|
||||
| context_switch | 个数 | 当前上下文切换数量 |
|
||||
| usage | % | CPU使用率 |
|
||||
|
||||
|
||||
#### 指标集合:memory
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| total | Mb | 总内存容量 |
|
||||
| used | Mb | 用户程序内存量 |
|
||||
| free | Mb | 空闲内存容量 |
|
||||
| buff_cache | Mb | 缓存占用内存 |
|
||||
| available | Mb | 剩余可用内存容 |
|
||||
| usage | % | 内存使用率 |
|
||||
|
||||
#### 指标集合:disk
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| disk_num | 块数 | 磁盘总数 |
|
||||
| partition_num | 分区数 | 分区总数 |
|
||||
| block_write | 块数 | 写入磁盘的总块数 |
|
||||
| block_read | 块数 | 从磁盘读出的块数 |
|
||||
| write_rate | iops | 每秒写磁盘块的速率 |
|
||||
|
||||
#### 指标集合:interface
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| interface_name | 无 | 网卡名称 |
|
||||
| receive_bytes | byte | 入站数据流量(bytes) |
|
||||
| transmit_bytes | byte | 出站数据流量(bytes) |
|
||||
|
||||
#### 指标集合:disk_free
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| filesystem | 无 | 文件系统的名称 |
|
||||
| used | Mb | 已使用磁盘大小 |
|
||||
| available | Mb | 可用磁盘大小 |
|
||||
| usage | % | 使用率 |
|
||||
| mounted | 无 | 挂载点目录 |
|
||||
@@ -0,0 +1,56 @@
|
||||
---
|
||||
id: mariadb
|
||||
title: 监控:MariaDB数据库监控
|
||||
sidebar_label: MariaDB数据库
|
||||
---
|
||||
|
||||
> 对MariaDB数据库的通用性能指标进行采集监控。支持MariaDB5+。
|
||||
|
||||
### 配置参数
|
||||
|
||||
| 参数名称 | 参数帮助描述 |
|
||||
| ----------- | ----------- |
|
||||
| 监控Host | 被监控的对端IPV4,IPV6或域名。注意⚠️不带协议头(eg: https://, http://)。 |
|
||||
| 监控名称 | 标识此监控的名称,名称需要保证唯一性。 |
|
||||
| 端口 | 数据库对外提供的端口,默认为3306。 |
|
||||
| 查询超时时间 | 设置SQL查询未响应数据时的超时时间,单位ms毫秒,默认3000毫秒。 |
|
||||
| 数据库名称 | 数据库实例名称,可选。 |
|
||||
| 用户名 | 数据库连接用户名,可选 |
|
||||
| 密码 | 数据库连接密码,可选 |
|
||||
| URL | 数据库连接URL,可选,若配置,则URL里面的数据库名称,用户名密码等参数会覆盖上面配置的参数 |
|
||||
| 采集间隔 | 监控周期性采集数据间隔时间,单位秒,可设置的最小间隔为10秒 |
|
||||
| 是否探测 | 新增监控前是否先探测检查监控可用性,探测成功才会继续新增修改操作 |
|
||||
| 描述备注 | 更多标识和描述此监控的备注信息,用户可以在这里备注信息 |
|
||||
|
||||
### 采集指标
|
||||
|
||||
#### 指标集合:basic
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| version | 无 | 数据库版本 |
|
||||
| port | 无 | 数据库暴露服务端口 |
|
||||
| datadir | 无 | 数据库存储数据盘地址 |
|
||||
| max_connections | 无 | 数据库最大连接数 |
|
||||
|
||||
#### 指标集合:status
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| threads_created | 无 | MariaDB已经创建的总连接数 |
|
||||
| threads_connected | 无 | MariaDB已经连接的连接数 |
|
||||
| threads_cached | 无 | MariaDB当前缓存的连接数 |
|
||||
| threads_running | 无 | MariaDB当前活跃的连接数 |
|
||||
|
||||
|
||||
#### 指标集合:innodb
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| innodb_data_reads | 无 | innodb平均每秒从文件中读取的次数 |
|
||||
| innodb_data_writes | 无 | innodb平均每秒从文件中写入的次数 |
|
||||
| innodb_data_read | KB | innodb平均每秒钟读取的数据量,单位为KB |
|
||||
| innodb_data_written | KB | innodb平均每秒钟写入的数据量,单位为KB |
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
---
|
||||
id: mysql
|
||||
title: 监控:MYSQL数据库监控
|
||||
sidebar_label: MYSQL数据库
|
||||
---
|
||||
|
||||
> 对MYSQL数据库的通用性能指标进行采集监控。支持MYSQL5+。
|
||||
|
||||
### 配置参数
|
||||
|
||||
| 参数名称 | 参数帮助描述 |
|
||||
| ----------- | ----------- |
|
||||
| 监控Host | 被监控的对端IPV4,IPV6或域名。注意⚠️不带协议头(eg: https://, http://)。 |
|
||||
| 监控名称 | 标识此监控的名称,名称需要保证唯一性。 |
|
||||
| 端口 | 数据库对外提供的端口,默认为3306。 |
|
||||
| 查询超时时间 | 设置SQL查询未响应数据时的超时时间,单位ms毫秒,默认3000毫秒。 |
|
||||
| 数据库名称 | 数据库实例名称,可选。 |
|
||||
| 用户名 | 数据库连接用户名,可选 |
|
||||
| 密码 | 数据库连接密码,可选 |
|
||||
| URL | 数据库连接URL,可选,若配置,则URL里面的数据库名称,用户名密码等参数会覆盖上面配置的参数 |
|
||||
| 采集间隔 | 监控周期性采集数据间隔时间,单位秒,可设置的最小间隔为10秒 |
|
||||
| 是否探测 | 新增监控前是否先探测检查监控可用性,探测成功才会继续新增修改操作 |
|
||||
| 描述备注 | 更多标识和描述此监控的备注信息,用户可以在这里备注信息 |
|
||||
|
||||
### 采集指标
|
||||
|
||||
#### 指标集合:basic
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| version | 无 | 数据库版本 |
|
||||
| port | 无 | 数据库暴露服务端口 |
|
||||
| datadir | 无 | 数据库存储数据盘地址 |
|
||||
| max_connections | 无 | 数据库最大连接数 |
|
||||
|
||||
#### 指标集合:status
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| threads_created | 无 | MySql已经创建的总连接数 |
|
||||
| threads_connected | 无 | MySql已经连接的连接数 |
|
||||
| threads_cached | 无 | MySql当前缓存的连接数 |
|
||||
| threads_running | 无 | MySql当前活跃的连接数 |
|
||||
|
||||
|
||||
#### 指标集合:innodb
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| innodb_data_reads | 无 | innodb平均每秒从文件中读取的次数 |
|
||||
| innodb_data_writes | 无 | innodb平均每秒从文件中写入的次数 |
|
||||
| innodb_data_read | KB | innodb平均每秒钟读取的数据量,单位为KB |
|
||||
| innodb_data_written | KB | innodb平均每秒钟写入的数据量,单位为KB |
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
id: oracle
|
||||
title: 监控:ORACLE数据库监控
|
||||
sidebar_label: ORACLE数据库
|
||||
---
|
||||
|
||||
> 对ORACLE数据库的通用性能指标进行采集监控。
|
||||
|
||||
### 配置参数
|
||||
|
||||
| 参数名称 | 参数帮助描述 |
|
||||
| ----------- | ----------- |
|
||||
| 监控Host | 被监控的对端IPV4,IPV6或域名。注意⚠️不带协议头(eg: https://, http://)。 |
|
||||
| 监控名称 | 标识此监控的名称,名称需要保证唯一性。 |
|
||||
| 端口 | 数据库对外提供的端口,默认为1521。 |
|
||||
| 查询超时时间 | 设置SQL查询未响应数据时的超时时间,单位ms毫秒,默认3000毫秒。 |
|
||||
| 数据库名称 | 数据库实例名称,可选。 |
|
||||
| 用户名 | 数据库连接用户名,可选 |
|
||||
| 密码 | 数据库连接密码,可选 |
|
||||
| URL | 数据库连接URL,可选,若配置,则URL里面的数据库名称,用户名密码等参数会覆盖上面配置的参数 |
|
||||
| 采集间隔 | 监控周期性采集数据间隔时间,单位秒,可设置的最小间隔为10秒 |
|
||||
| 是否探测 | 新增监控前是否先探测检查监控可用性,探测成功才会继续新增修改操作 |
|
||||
| 描述备注 | 更多标识和描述此监控的备注信息,用户可以在这里备注信息 |
|
||||
|
||||
### 采集指标
|
||||
|
||||
#### 指标集合:basic
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| database_version | 无 | 数据库版本 |
|
||||
| database_type | 无 | 数据库类型 |
|
||||
| hostname | 无 | 主机名称 |
|
||||
| instance_name | 无 | 数据库实例名称 |
|
||||
| startup_time | 无 | 数据库启动时间 |
|
||||
| status | 无 | 数据库状态 |
|
||||
|
||||
#### 指标集合:tablespace
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| file_id | 无 | 文件ID |
|
||||
| file_name | 无 | 文件名称 |
|
||||
| tablespace_name | 无 | 所属表空间名称 |
|
||||
| status | 无 | 状态 |
|
||||
| bytes | MB | 大小 |
|
||||
| blocks | 无 | 区块数量 |
|
||||
|
||||
#### 指标集合:user_connect
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| username | 无 | 用户名 |
|
||||
| counts | 个数 | 当前连接数量 |
|
||||
|
||||
#### 指标集合:performance
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| qps | QPS | I/O Requests per Second 每秒IO请求数量 |
|
||||
| tps | TPS | User Transaction Per Sec 每秒用户事物处理数量 |
|
||||
| mbps | MBPS | I/O Megabytes per Second 每秒 I/O 兆字节数量 |
|
||||
@@ -0,0 +1,27 @@
|
||||
---
|
||||
id: ping
|
||||
title: 监控:PING连通性
|
||||
sidebar_label: PING连通性
|
||||
---
|
||||
|
||||
> 对对端HOST地址进行PING操作,判断其连通性
|
||||
|
||||
### 配置参数
|
||||
|
||||
| 参数名称 | 参数帮助描述 |
|
||||
| ----------- | ----------- |
|
||||
| 监控Host | 被监控的对端IPV4,IPV6或域名。注意⚠️不带协议头(eg: https://, http://)。 |
|
||||
| 监控名称 | 标识此监控的名称,名称需要保证唯一性。 |
|
||||
| Ping超时时间 | 设置PING未响应数据时的超时时间,单位ms毫秒,默认3000毫秒。 |
|
||||
| 采集间隔 | 监控周期性采集数据间隔时间,单位秒,可设置的最小间隔为10秒 |
|
||||
| 是否探测 | 新增监控前是否先探测检查监控可用性,探测成功才会继续新增修改操作 |
|
||||
| 描述备注 | 更多标识和描述此监控的备注信息,用户可以在这里备注信息 |
|
||||
|
||||
### 采集指标
|
||||
|
||||
#### 指标集合:summary
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| responseTime | ms毫秒 | 网站响应时间 |
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
id: port
|
||||
title: 监控:端口可用性
|
||||
sidebar_label: 端口可用性
|
||||
---
|
||||
|
||||
> 判断对端服务暴露端口是否可用,进而判断对端服务是否可用,采集响应时间等指标进行监测
|
||||
|
||||
### 配置参数
|
||||
|
||||
| 参数名称 | 参数帮助描述 |
|
||||
| ----------- | ----------- |
|
||||
| 监控Host | 被监控的对端IPV4,IPV6或域名。注意⚠️不带协议头(eg: https://, http://)。 |
|
||||
| 监控名称 | 标识此监控的名称,名称需要保证唯一性。 |
|
||||
| 端口 | 网站对外提供的端口,http一般默认为80,https一般默认为443。 |
|
||||
| 连接超时时间 | 端口连接的等待超时时间,单位毫秒,默认3000毫秒。 |
|
||||
| 采集间隔 | 监控周期性采集数据间隔时间,单位秒,可设置的最小间隔为10秒 |
|
||||
| 是否探测 | 新增监控前是否先探测检查监控可用性,探测成功才会继续新增修改操作 |
|
||||
| 描述备注 | 更多标识和描述此监控的备注信息,用户可以在这里备注信息 |
|
||||
|
||||
### 采集指标
|
||||
|
||||
#### 指标集合:summary
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| responseTime | ms毫秒 | 网站响应时间 |
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
id: postgresql
|
||||
title: 监控:PostgreSQL数据库监控
|
||||
sidebar_label: PostgreSQL数据库
|
||||
---
|
||||
|
||||
> 对PostgreSQL数据库的通用性能指标进行采集监控。支持PostgreSQL 10+。
|
||||
|
||||
### 配置参数
|
||||
|
||||
| 参数名称 | 参数帮助描述 |
|
||||
| ----------- | ----------- |
|
||||
| 监控Host | 被监控的对端IPV4,IPV6或域名。注意⚠️不带协议头(eg: https://, http://)。 |
|
||||
| 监控名称 | 标识此监控的名称,名称需要保证唯一性。 |
|
||||
| 端口 | 数据库对外提供的端口,默认为5432。 |
|
||||
| 查询超时时间 | 设置SQL查询未响应数据时的超时时间,单位ms毫秒,默认3000毫秒。 |
|
||||
| 数据库名称 | 数据库实例名称,可选。 |
|
||||
| 用户名 | 数据库连接用户名,可选 |
|
||||
| 密码 | 数据库连接密码,可选 |
|
||||
| URL | 数据库连接URL,可选,若配置,则URL里面的数据库名称,用户名密码等参数会覆盖上面配置的参数 |
|
||||
| 采集间隔 | 监控周期性采集数据间隔时间,单位秒,可设置的最小间隔为10秒 |
|
||||
| 是否探测 | 新增监控前是否先探测检查监控可用性,探测成功才会继续新增修改操作 |
|
||||
| 描述备注 | 更多标识和描述此监控的备注信息,用户可以在这里备注信息 |
|
||||
|
||||
### 采集指标
|
||||
|
||||
#### 指标集合:basic
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| server_version | 无 | 数据库服务器的版本号 |
|
||||
| port | 无 | 数据库服务器端暴露服务端口 |
|
||||
| server_encoding | 无 | 数据库服务器端的字符集编码 |
|
||||
| data_directory | 无 | 数据库存储数据盘地址 |
|
||||
| max_connections | 连接数 | 数据库最大连接数 |
|
||||
|
||||
#### 指标集合:state
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| name | 无 | 数据库名称,或share-object为共享对象。 |
|
||||
| conflicts | 次数 | 由于与恢复冲突而在这个数据库中被取消的查询的数目 |
|
||||
| deadlocks | 个数 | 在这个数据库中被检测到的死锁数 |
|
||||
| blks_read | 次数 | 在这个数据库中被读取的磁盘块的数量 |
|
||||
| blks_hit | 次数 | 磁盘块被发现已经在缓冲区中的次数,这样不需要一次读取(这只包括 PostgreSQL 缓冲区中的命中,而不包括在操作系统文件系统缓冲区中的命中) |
|
||||
| blk_read_time | ms | 在这个数据库中后端花费在读取数据文件块的时间 |
|
||||
| blk_write_time | ms | 在这个数据库中后端花费在写数据文件块的时间 |
|
||||
| stats_reset | 无 | 这些统计信息上次被重置的时间 |
|
||||
|
||||
|
||||
#### 指标集合:activity
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| running | 连接数 | 当前客户端连接数 |
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
id: sqlserver
|
||||
title: 监控:SqlServer数据库监控
|
||||
sidebar_label: SqlServer数据库
|
||||
---
|
||||
|
||||
> 对SqlServer数据库的通用性能指标进行采集监控。支持SqlServer 2017+。
|
||||
|
||||
### 配置参数
|
||||
|
||||
| 参数名称 | 参数帮助描述 |
|
||||
| ----------- | ----------- |
|
||||
| 监控Host | 被监控的对端IPV4,IPV6或域名。注意⚠️不带协议头(eg: https://, http://)。 |
|
||||
| 监控名称 | 标识此监控的名称,名称需要保证唯一性。 |
|
||||
| 端口 | 数据库对外提供的端口,默认为1433。 |
|
||||
| 查询超时时间 | 设置SQL查询未响应数据时的超时时间,单位ms毫秒,默认3000毫秒。 |
|
||||
| 数据库名称 | 数据库实例名称,可选。 |
|
||||
| 用户名 | 数据库连接用户名,可选 |
|
||||
| 密码 | 数据库连接密码,可选 |
|
||||
| URL | 数据库连接URL,可选,若配置,则URL里面的数据库名称,用户名密码等参数会覆盖上面配置的参数 |
|
||||
| 采集间隔 | 监控周期性采集数据间隔时间,单位秒,可设置的最小间隔为10秒 |
|
||||
| 是否探测 | 新增监控前是否先探测检查监控可用性,探测成功才会继续新增修改操作 |
|
||||
| 描述备注 | 更多标识和描述此监控的备注信息,用户可以在这里备注信息 |
|
||||
|
||||
### 采集指标
|
||||
|
||||
#### 指标集合:basic
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| machine_name | 无 | 运行服务器实例的 Windows 计算机名称 |
|
||||
| server_name | 无 | 与Windows实例关联的服务器和实例信息SQL Server |
|
||||
| version | 无 | 实例的版本,SQL Server,格式为"major.minor.build.revision" |
|
||||
| edition | 无 | 已安装的 实例的产品SQL Server版本 |
|
||||
| start_time | 无 | 数据库启动时间 |
|
||||
|
||||
#### 指标集合:performance_counters
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| database_pages | 无 | Database pages, 已获得的页面数(缓冲池) |
|
||||
| target_pages | 无 | Target pages, 缓冲池必须的理想页面数 |
|
||||
| page_life_expectancy | s,秒 | Page life expectancy, 数据页在缓冲池中驻留的时间,这个时间一般会大于 300 |
|
||||
| buffer_cache_hit_ratio | % | Buffer cache hit ratio, 数据库缓冲池高速缓冲命中率,被请求的数据在缓冲池中被找到的概率,一般会大于 80% 才算正常,否则可能是缓冲池容量太小 |
|
||||
| checkpoint_pages_sec | 无 | Checkpoint pages/sec, 检查点每秒写入磁盘的脏页个数,如果数据过高,证明缺少内存容量 |
|
||||
| page_reads_sec | 无 | Page reads/sec, 缓存池中每秒读的页数 |
|
||||
| page_writes_sec | 无 | Page writes/sec, 缓存池中每秒写的页数 |
|
||||
|
||||
|
||||
#### 指标集合:connection
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| user_connection | 无 | 已连接的会话数 |
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
---
|
||||
id: website
|
||||
title: 监控:网站监测
|
||||
sidebar_label: 网站监测
|
||||
---
|
||||
|
||||
> 对网站是否可用,响应时间等指标进行监测
|
||||
|
||||
### 配置参数
|
||||
|
||||
| 参数名称 | 参数帮助描述 |
|
||||
| ----------- | ----------- |
|
||||
| 监控Host | 被监控的对端IPV4,IPV6或域名。注意⚠️不带协议头(eg: https://, http://)。 |
|
||||
| 监控名称 | 标识此监控的名称,名称需要保证唯一性。 |
|
||||
| 端口 | 网站对外提供的端口,http一般默认为80,https一般默认为443。 |
|
||||
| 相对路径 | 网站地址除IP端口外的后缀路径,例如 `www.tancloud.cn/console` 网站的相对路径为 `/console`。 |
|
||||
| 启用HTTPS | 是否通过HTTPS访问网站,注意⚠️开启HTTPS一般默认对应端口需要改为443 |
|
||||
| 采集间隔 | 监控周期性采集数据间隔时间,单位秒,可设置的最小间隔为10秒 |
|
||||
| 是否探测 | 新增监控前是否先探测检查监控可用性,探测成功才会继续新增修改操作 |
|
||||
| 描述备注 | 更多标识和描述此监控的备注信息,用户可以在这里备注信息 |
|
||||
|
||||
### 采集指标
|
||||
|
||||
#### 指标集合:summary
|
||||
|
||||
| 指标名称 | 指标单位 | 指标帮助描述 |
|
||||
| ----------- | ----------- | ----------- |
|
||||
| responseTime | ms毫秒 | 网站响应时间 |
|
||||
|
||||
@@ -1,57 +1,51 @@
|
||||
---
|
||||
id: introduce
|
||||
title: HertzBeat赫兹跳动
|
||||
sidebar_label: 介绍
|
||||
title: HertzBeat
|
||||
sidebar_label: Introduce
|
||||
slug: /
|
||||
---
|
||||
|
||||
> 易用友好的高性能监控告警系统。
|
||||
> Friendly cloud monitoring system.
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
## 📫 前言
|
||||
|
||||
> 毕业后投入很多业余时间也做了一些开源项目,[Sureness](https://github.com/dromara/sureness) [Bootshiro](https://gitee.com/tomsun28/bootshiro) [Issues-translate-action](https://github.com/usthe/issues-translate-action) ,
|
||||
> 当时上班有空就回答网友问题,下班回家写开源代码,远程帮人看问题,还总感觉时间不够用,当时想如果不去上班能做自己热爱的该多好。
|
||||
> 年轻就要折腾,何况还是自己很想做的。于是乎,21年底我放弃激励裸辞开始全职开源了(这里感谢老婆大人的全力支持),也是第一次全职创业。
|
||||
> 自己在APM领域做了多年,当然这次创业加开源的方向也就是老本行APM监控系统,我们开发一个支持多种监控指标(更多监控类型指标正在适配中),拥有自定义监控,支持阈值告警通知等功能,面向开发者友好的开源监控项目-HertzBeat赫兹跳动。
|
||||
> 想到很多开发者和团队拥有云上资源,可能只需要使用监控服务而并不想部署监控系统,我们也提供了可以直接登录使用的SAAS云监控版本-[TanCloud探云](https://console.tancloud.cn)。
|
||||
> 希望大家多多支持点赞,非常感谢。
|
||||
|
||||
## 🎡 <font color="green">介绍</font>
|
||||
|
||||
> [HertzBeat赫兹跳动](https://github.com/dromara/sureness) 是由[TanCloud](https://tancloud.cn)开源的一个支持网站,API,PING,端口,数据库等监控类型,拥有易用友好的可视化操作界面的开源监控告警项目。
|
||||
> 当然,我们也提供了对应的[SAAS云监控版本](https://console.tancloud.cn),中小团队和个人无需再为了监控自己的网站资源,而去部署一套繁琐的监控系统,[登录即可免费开始](https://console.tancloud.cn)监控之旅。
|
||||
> HertzBeat 支持自定义监控,只用通过配置YML文件我们就可以自定义需要的监控类型和指标,来满足常见的个性化需求。
|
||||
> HertzBeat 模块化,`manager, collector, scheduler, warehouse, alerter` 各个模块解耦合,方便理解与定制开发。
|
||||
> HertzBeat 支持更自由化的告警配置(计算表达式),支持告警通知,告警模版
|
||||
> 欢迎登录 HertzBeat 的 [云环境TanCloud](https://console.tancloud.cn) 试用发现更多。
|
||||
> 我们正在快速迭代中,欢迎参与加入共建项目开源生态。
|
||||
|
||||
> `HertzBeat`的多类型支持,易扩展,低耦合,希望能帮助开发者和中小团队快速搭建自有监控系统。
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
|
||||
## 🥐 模块
|
||||
## 🎡 <font color="green">Introduction</font>
|
||||
|
||||
- **[manager](https://github.com/dromara/hertzbeat/tree/master/manager)** 提供监控管理,系统管理基础服务
|
||||
> 提供对监控的管理,监控应用配置的管理,系统用户租户后台管理等。
|
||||
- **[collector](https://github.com/dromara/hertzbeat/tree/master/collector)** 提供监控数据采集服务
|
||||
> 使用通用协议远程采集获取对端指标数据。
|
||||
- **[scheduler](https://github.com/dromara/hertzbeat/tree/master/scheduler)** 提供监控任务调度服务
|
||||
> 采集任务管理,一次性任务和周期性任务的调度分发。
|
||||
- **[warehouse](https://github.com/dromara/hertzbeat/tree/master/warehouse)** 提供监控数据仓储服务
|
||||
> 采集指标结果数据管理,数据落盘,查询,计算统计。
|
||||
- **[alerter](https://github.com/dromara/hertzbeat/tree/master/alerter)** 提供告警服务
|
||||
> 告警计算触发,监控状态联动,告警配置,告警通知。
|
||||
- **[web-app](https://github.com/dromara/hertzbeat/tree/master/web-app)** 提供可视化控制台页面
|
||||
> 监控告警系统可视化控制台前端(angular+ts+zorro)
|
||||
> [HertzBeat](https://github.com/dromara/hertzbeat) is an opensource monitoring and alarm project incubated by [Dromara](https://dromara.org) and open sourced by [TanCloud](https://tancloud.cn), which supports Website, API, PING, Port, Database, OS Monitor etc.
|
||||
> We also provide **[Monitoring Cloud For Saas](https://console.tancloud.cn)**, people no longer need to deploy a cumbersome monitoring system in order to monitor their website resources. **[Sign in to get started for free](https://console.tancloud.cn)**.
|
||||
> HertzBeat supports more liberal threshold alarm configuration (calculation expression), supports alarm notification, alarm template, email, DingDing, WeChat FeiShu and WebHook.
|
||||
> Most important is HertzBeat supports [Custom Monitoring](https://hertzbeat.com/docs/advanced/extend-point), just by configuring the YML file, we can customize the monitoring types and metrics what we need.
|
||||
> HertzBeat is modular, `manager, collector, scheduler, warehouse, alerter` modules are decoupled for easy understanding and custom development.
|
||||
> Welcome to HertzBeat's [Cloud Environment TanCloud](https://console.tancloud.cn) to try and discover more.
|
||||
> Welcome to join us to build hertzbeat together.
|
||||
|
||||

|
||||
> `HertzBeat`'s multi-type support, easy expansion, low coupling, hope to help developers and micro teams to quickly build their own monitoring system.
|
||||
|
||||
----
|
||||
|
||||
## 🥐 Architecture
|
||||
|
||||
- **[manager](https://github.com/dromara/hertzbeat/tree/master/manager)** Provide monitoring management, system management basic services.
|
||||
> Provides monitoring management, monitoring configuration management, system user management, etc.
|
||||
- **[collector](https://github.com/dromara/hertzbeat/tree/master/collector)** Provide metrics data collection services.
|
||||
> Use common protocols to remotely collect and obtain peer-to-peer metrics data.
|
||||
- **[scheduler](https://github.com/dromara/hertzbeat/tree/master/scheduler)** Provide monitoring task scheduling service.
|
||||
> Collection task management, scheduling and distribution of one-time tasks and periodic tasks.
|
||||
- **[warehouse](https://github.com/dromara/hertzbeat/tree/master/warehouse)** Provide monitoring data warehousing services.
|
||||
> Metrics data management, data query, calculation and statistics.
|
||||
- **[alerter](https://github.com/dromara/hertzbeat/tree/master/alerter)** Provide alert service.
|
||||
> Alarm calculation trigger, monitoring status linkage, alarm configuration, and alarm notification.
|
||||
- **[web-app](https://github.com/dromara/hertzbeat/tree/master/web-app)** Provide web ui.
|
||||
> Angular Web UI.
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
id: contact
|
||||
title: Join discussion
|
||||
sidebar_label: Discussion
|
||||
---
|
||||
|
||||
> If you need any help or want to exchange suggestions during the use process, you can discuss and exchange through ISSUE or Github Discussion.
|
||||
|
||||
[GITHUB ISSUES](https://github.com/dromara/hertzbeat/issues)
|
||||
[GITEE ISSUES](https://gitee.com/dromara/hertzbeat/issues)
|
||||
|
||||
##### Github Discussion
|
||||
|
||||
Welcome to Discuss in [Github Discussion](https://github.com/dromara/hertzbeat/discussions)
|
||||
|
||||
##### Public WeChat
|
||||
|
||||
<img alt="tan-cloud" src="https://cdn.jsdelivr.net/gh/dromara/hertzbeat/home/static/img/wechat.png" width="400"/>
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
---
|
||||
id: contributing
|
||||
title: 参与贡献
|
||||
sidebar_label: 参与贡献
|
||||
---
|
||||
|
||||
参与贡献
|
||||
=======================================
|
||||
|
||||
非常欢迎参与项目贡献,我们致力于维护一个互相帮助的快乐社区。
|
||||
|
||||
### 模块
|
||||
|
||||
- **[manager](https://github.com/dromara/hertzbeat/tree/master/manager)** 提供监控管理,系统管理基础服务
|
||||
> 提供对监控的管理,监控应用配置的管理,系统用户租户后台管理等。
|
||||
- **[collector](https://github.com/dromara/hertzbeat/tree/master/collector)** 提供监控数据采集服务
|
||||
> 使用通用协议远程采集获取对端指标数据。
|
||||
- **[scheduler](https://github.com/dromara/hertzbeat/tree/master/scheduler)** 提供监控任务调度服务
|
||||
> 采集任务管理,一次性任务和周期性任务的调度分发。
|
||||
- **[warehouse](https://github.com/dromara/hertzbeat/tree/master/warehouse)** 提供监控数据仓储服务
|
||||
> 采集指标结果数据管理,数据落盘,查询,计算统计。
|
||||
- **[alerter](https://github.com/dromara/hertzbeat/tree/master/alerter)** 提供告警服务
|
||||
> 告警计算触发,监控状态联动,告警配置,告警通知。
|
||||
- **[web-app](https://github.com/dromara/hertzbeat/tree/master/web-app)** 提供可视化控制台页面
|
||||
> 监控告警系统可视化控制台前端
|
||||
|
||||

|
||||
|
||||
## 如何贡献?
|
||||
|
||||
我们不仅仅接收代码的贡献提交,您也可以通过提交文档的更新或者BUG的报告来参与社区贡献。
|
||||
|
||||
如果是新的贡献者,请首先了解参考仓库提交Issues,提交Pull Requests如何工作。
|
||||
|
||||
https://github.com/dromara/hertzbeat/issues
|
||||
https://github.com/dromara/hertzbeat/pulls
|
||||
https://gitee.com/dromara/hertzbeat/issues
|
||||
https://gitee.com/dromara/hertzbeat/pulls
|
||||
|
||||
## 本地代码工程启动
|
||||
|
||||
此为前后端分离项目,本地代码启动需将后端 [manager](https://github.com/dromara/hertzbeat/tree/master/manager) 和前端 [web-app](https://github.com/dromara/hertzbeat/tree/master/web-app) 分别启动生效。
|
||||
|
||||
### 后端启动
|
||||
|
||||
1. 部署启动依赖服务`MYSQL`和`TDengine`数据库
|
||||
2. 需要`maven3+`和`java8+`环境
|
||||
3. 修改配置文件的依赖服务地址等信息-`manager/src/main/resources/application.yml`
|
||||
4. 启动`manager`服务 `manager/src/main/java/com/usthe/manager/Manager.java`
|
||||
|
||||
### 前端启动
|
||||
|
||||
1. 需要nodejs npm环境
|
||||
下载地址:https://nodejs.org/en/download
|
||||
2. 安装yarn `npm install -g yarn`
|
||||
3. 在前端工程目录web-app下执行 `yarn install`
|
||||
4. 全局安装angular-cli `npm install -g @angular/cli@12 --registry=https://registry.npm.taobao.org`
|
||||
5. 待本地后端启动后,在web-app目录下启动本地前端 `ng serve --open`
|
||||
6. 浏览器访问 localhost:4200 即可开始
|
||||
|
||||
## 加入交流
|
||||
|
||||
[Github Discussion](https://github.com/dromara/hertzbeat/discussions)
|
||||
加微信号 tan-cloud 拉您进微信交流群
|
||||
加QQ群号 718618151 进QQ交流群, 验证信息: tancloud
|
||||
微信公众号:tancloudtech
|
||||
[Dromara社区网站](https://dromara.org/)
|
||||
[HertzBeat用户网站](https://support.qq.com/products/379369)
|
||||
@@ -0,0 +1,13 @@
|
||||
---
|
||||
id: design
|
||||
title: 设计文档
|
||||
sidebar_label: 设计文档
|
||||
---
|
||||
|
||||
### HertzBeat Architecture
|
||||
|
||||

|
||||
|
||||
### TanCloud Architecture
|
||||
|
||||
TanCloud is a SAAS cluster version based on HertzBeat, which adopts a multi-cluster and multi-tenant architecture model.
|
||||
@@ -0,0 +1,837 @@
|
||||
---
|
||||
id: policy
|
||||
title: TanCloud 隐私政策 / TanCloud Privacy Policy
|
||||
sidebar_label: 隐私政策
|
||||
---
|
||||
|
||||
> 本版更新日期:2022 年 02 月 17 日
|
||||
|
||||
欢迎使用绵阳探云科技有限公司(下称" TanCloud ")提供的产品和服务! TanCloud (或简称"我们")深知个人信息对您的重要性,我们一向庄严承诺保护使用我们的产品和服务(以下统称" TanCloud 服务")之用户(以下统称"用户"或"您")的个人信息及隐私安全。您在使用 TanCloud 服务时,我们可能会收集和使用您的相关个人信息(或简称"个人信息")。 《 TanCloud 隐私政策》(以下简称"本政策")适用于我们提供的 TanCloud 服务, 未满十八周岁的用户,请在法定监护人的陪同下阅读本政策,并特别注意未成年人使用条款。特别地,如果您是未满 14 周岁的儿童,还应请您的监护人仔细阅读本政策,经监护人同意后,您方可使用 TanCloud 服务。 我们希望通过本政策向您说明我们在收集和使用您相关个人信息时对应的处理规则,以及我们为您提供的访问、更正、删除和保护这些个人信息的方式,以便更好的保障您的权益。
|
||||
|
||||
适用范围:(a)在您使用 TanCloud 服务,或访问 TanCloud 服务相关的网页时, TanCloud 自动接收并记录的您的浏览器和计算机上的信息,包括但不限于您的 IP 地址、浏览器的类型、使用的语言、访问日期和时间、软硬件特征信息及您需求的网页记录等数据;(b) TanCloud 通过合法途径从商业伙伴处取得的用户个人数据。
|
||||
|
||||
您了解并同意,以下信息不适用本隐私权政策:(a)在使用 TanCloud 服务提供的搜索服务时输入的关键字信息;(b) TanCloud 收集到的您在 TanCloud 服务发布的有关信息数据,包括但不限于参与活动、成交信息及评价详情;(c)违反法律规定或违反 TanCloud 服务规则行为及 TanCloud 已对您采取的措施。
|
||||
|
||||
本政策将帮助您了解以下内容:
|
||||
|
||||
一、我们如何收集和使用您的个人信息
|
||||
|
||||
二、我们如何使用 Cookies 或同类技术
|
||||
|
||||
三、我们可能共享、转让和披露的个人信息
|
||||
|
||||
四、我们如何保留、储存和保护您的个人信息安全
|
||||
|
||||
五、如何管理您的个人信息
|
||||
|
||||
六、第三方服务
|
||||
|
||||
七、未成年人保护
|
||||
|
||||
八、通知和修订
|
||||
|
||||
九、法律适用与管辖
|
||||
|
||||
十、如何联系我们
|
||||
|
||||
【特别提示】请您在使用 TanCloud 服务前,仔细阅读(未成年人请在监护人陪同下阅读)并了解本政策(特别是加粗或下划线标注的内容),以做出适当选择。一旦您使用或在我们更新本政策后继续使用我们的产品或服务,即意味着您同意本政策并同意我们按照本政策处理您的相关个人信息。
|
||||
|
||||
本政策适用于 TanCloud 服务,如与 TanCloud 与您之间的《专业服务合同》同类条款之约定存在不一致的,以本政策为准。如我们提供的某一单项服务不适用本政策的,该服务中会以适当方式明示排除适用本政策。
|
||||
|
||||
一、我们如何收集和使用您的个人信息
|
||||
|
||||
我们收集您的个人信息主要是为了您和其他用户能够更容易和更满意地使用 TanCloud 服务。而这些个人信息有助于我们实现这一目标。
|
||||
|
||||
(一)我们将通过以下途径收集和获得您的个人信息:
|
||||
|
||||
1、您提供的个人信息。
|
||||
|
||||
(1)您在注册 TanCloud 服务的帐号或使用 TanCloud 服务时,向我们提供的个人信息,包括您的手机号码,并且您可以自愿选择填写您的昵称、头像、性别、年龄、学历、学校、身份证号码、收件人姓名、收件人联系方式、收货地址基本信息。如果您仅需使用浏览、了解 TanCloud ,您不需要注册账户及提供上述信息。如果您不提供这些信息,并不会影响您使用 TanCloud 的基本功能;
|
||||
|
||||
(2)您通过 TanCloud 服务向其他方提供的共享个人信息,以及您使用 TanCloud 服务时所储存的个人信息。
|
||||
|
||||
请注意,如您在 TanCloud 服务中其他用户可见的公开区域内上传或发布的个人信息中、您对其他人上传或发布的信息作出的回应中公开您的个人信息,该等个人信息可能会被他人收集并加以使用,只要您不删除您所公开或共享的个人信息,有关个人信息可能一直留存在公众领域;即使您删除共享个人信息,有关个人信息仍可能由其他用户或不受我们控制的第三方独立地缓存、复制或储存,或由其他用户或该等第三方在公众领域保存。如您将个人信息通过上述渠道公开或共享,由此造成您的个人信息泄露,我们不承担责任。因此,我们提醒并请您慎重考虑是否通过上述渠道公开或共享您的个人信息。当您发现他人不正当地收集或使用您的个人信息时,您可以通过本政策第九条【如何联系我们】约定的联系方式联络我们。
|
||||
|
||||
2、其他方分享的您的个人信息。亦即其他方使用 TanCloud 服务时所提供有关您的共享个人信息。
|
||||
|
||||
3、我们获取的您的个人信息。您在使用 TanCloud 服务时,我们收集、汇总、记录的个人信息。
|
||||
|
||||
(二)我们会出于以下目的,收集和使用您以下类型的个人信息:
|
||||
|
||||
1、帮助您完成注册、登录及注销
|
||||
|
||||
为便于我们为您提供完整的 TanCloud 服务,您需要提供基本注册或登录个人信息,包括使用手机号码注册登录或提供第三方账号登录 TanCloud 。如果您仅需使用浏览、查询、搜索等基本服务,您不需要注册成为 TanCloud 用户及提供上述个人信息。
|
||||
|
||||
2、客服与售后
|
||||
|
||||
依照相关法律法规规定及监管要求,或当您与我们联系时,我们的客服或售后可能会需要您提供真实身份信息(姓名、身份证)和账号信息以核验您的身份,以便帮助您问题,或记录相关问题的处理方案及结果。
|
||||
|
||||
请注意,您的身份信息属于个人敏感信息,请您谨慎提供,如果拒绝提供您将可能无法获得相关服务,但不影响其他功能与服务的正常使用。
|
||||
|
||||
3、维护基础功能的正常运行
|
||||
|
||||
在您使用我们服务过程中,为识别账号异常状态、了解产品适配性,向您提供浏览、搜索、注册/登录、查看和编辑个人资料、购买服务/产品、支付的服务,维护基础功能的正常运行,我们可能会自动收集、储存关于您使用的服务以及使用方式的信息并将这些信息进行关联,这些信息包括:
|
||||
|
||||
(1)日志信息:当您使用我们的服务时,我们可能会自动收集您对我们服务的详细使用情况,作为有关网络日志保存。日志信息包括您的登录账号、搜索查询内容、IP 地址、浏览器的类型、电信运营商、网络环境、使用的语言、访问日期和时间及您访问的网页浏览记录、Push 打开记录、崩溃记录、停留时长、刷新记录、发布记录、关注、订阅、收藏及分享。
|
||||
|
||||
(2)设备信息:我们可能会根据您在软件安装及使用中授予的具体权限,接收并记录您所使用的设备相关信息(包括设备标识符( IMEI / MAC / OPEN UDID )、Serial、SIM 卡 IMSI 识别码、设备机型、操作系统及版本、客户端版本、设备分辨率、包名、设备设置、进程及软件列表、Android ID、IDFA、UUID、软硬件特征信息)、设备所在位置相关信息(包括 IP 地址、GPS 位置以及能够提供相关个人信息的 WLAN 接入点、蓝牙和基站传感器信息)。
|
||||
|
||||
同时为了收集上述基本的个人设备信息,我们将会申请访问您的设备信息的权限,我们收集这些信息是为了向您提供我们基本服务和基础功能,如您拒绝提供上述权限将可能导致您无法使用我们的产品与服务。
|
||||
|
||||
请注意,单独的设备信息、日志信息是无法识别特定自然人身份的个人信息。如果我们将这类非个人信息与其他个人信息结合用于识别特定自然人身份,或者将其与个人信息结合使用,则在结合使用期间,这类非个人信息将被视为个人信息,除取得您授权或法律法规另有规定外,我们会将该类个人信息做匿名化、去标识化处理。这些信息在结合使用期间,将作为您的个人信息按照本隐私政策处理与保护。
|
||||
|
||||
4、向您提供商品或服务
|
||||
|
||||
(1)个人信息的分享与发布:您在使用 TanCloud 服务时、上传和/或发布个人信息以及进行相关行为时,我们将收集您上传、发布或形成的个人信息,并有权展示您的昵称、头像和发布内容。
|
||||
|
||||
(2)商品或服务交付:当您在我们的商品或服务中订购具体商品或服务时,我们会通过系统为您生成购买该商品或服务的订单。为便于向您交付您在 TanCloud 购买的商品或服务,您可能需提供收货人个人身份信息、姓名、购买者主体及相关信息、订购人、联系电话、支付状态信息。如果您拒绝提供此类个人信息,我们将无法完成相关交付服务。如您通过 TanCloud 服务为其他人订购商品或服务,您需要提供该实际订购人的前述个人信息。向我们提供该实际订购人的前述个人信息之前,您需确保您已经取得其授权同意。
|
||||
|
||||
在您使用 TanCloud 服务时, TanCloud 将会收集、储存您上传的图片、语音信息,我们的相关识别程序会对这些数据进行处理分析。
|
||||
|
||||
(3)为完成订单支付、交付商品或服务、确认交易状态及为您提供售后与争议解决服务,我们会通过您基于交易所选择的交易对象、支付机构、物流公司等收集与交易进度相关的您的账号、订单、交易、支付、物流信息,或将您的交易信息共享给上述服务提供者。
|
||||
|
||||
(4)订单管理:为展示您的账户的订单信息及保障您的售后权益, TanCloud 会收集您在使用 TanCloud 过程中产生的订单信息、交易和消费记录用于向您展示及便于您对订单进行管理。
|
||||
|
||||
(5)客服与售后服务:当您联系我们的客服或使用其他用户响应功能时(包括提出售中售后申请、个人信息保护投诉或建议、其他客户投诉和需求),我们可能需要您提供必要的个人信息以匹配并核验您的用户身份,以便保障您的账号与系统安全。我们可能还会保存您的联系方式(您与我们联系时使用的或您向我们主动提供的其他联系方式)、您与我们的通信/通话记录和内容、与您需求相关联的其他必要信息,以便与您联系或帮助您解决问题,或记录相关问题的处理方案及结果。
|
||||
|
||||
5、我们通过间接方式收集到的您的个人信息:
|
||||
|
||||
我们可能从管理关联方、第三方合作伙伴获取您授权共享的相关个人信息。我们可能从第三方获取您授权共享的账户信息(头像、昵称、登录时间)并在您同意本政策后将您的第三方账户与您的 TanCloud 服务账户绑定,使您可以通过第三方账户直接登录并使用我们的产品与/或服务。我们将在符合相关法律法规规定,并依据与关联方或第三方合作伙伴的约定、确信其提供的个人信息来源合法的前提下,收集并使用您的这些个人信息。
|
||||
|
||||
6、向您发送通知
|
||||
|
||||
我们可能在必需时(例如当我们由于系统维护而暂停某一单项服务、变更、终止提供某一单项服务时)向您发出与服务有关的通知。
|
||||
|
||||
如您不希望继续接收我们推送的消息,您可要求我们停止推送,例如:根据短信退订指引要求我们停止发送推广短信,或在移动端设备中进行设置,不再接收我们推送的消息;但我们依法律规定或服务协议约定发送消息的情形除外。
|
||||
|
||||
7、为您提供安全保障
|
||||
|
||||
为提高您使用我们及合作伙伴提供服务的安全性,保护您或其他用户或公众的人身财产安全免遭侵害,更好地预防钓鱼网站、欺诈、网络漏洞、计算机病毒、网络攻击、网络侵入等安全风险,更准确地识别违反法律法规或 TanCloud 服务相关协议规则的情况,我们可能会收集、使用或整合您的账户信息、交易信息、设备信息、日志信息以及我们关联公司、合作伙伴取得您授权或依据法律共享的个人信息,来综合判断您账户及交易风险、进行身份验证、检测及防范安全事件,并依法采取必要的记录、审计、分析、处置措施。
|
||||
|
||||
8、其他
|
||||
|
||||
您了解并同意,在收集您的个人信息后,我们可能通过技术手段对数据进行去标识化处理,去标识化处理的信息将无法识别您的身份,在此情况下我们有权使用已经去标识化的信息,对用户数据库进行分析并予以商业化的利用,而无需另行获得您的同意。
|
||||
|
||||
请您注意,如果我们要将您的个人信息用于本政策中未载明的其他用途或额外收集未提及的其他个人信息,我们会另行事先请您同意(确认同意的方式:勾选、弹窗、站内信、邮件、短信方式)。一旦您同意,该等额外用途将视为本政策的一部分,该等额外个人信息也将适用本政策。
|
||||
|
||||
如果我们要将您的个人信息用于本政策中未载明的其他用途或额外收集未提及的其他个人信息,我们会依法通过页面提示、交互流程、网站公告或其他方式另行征得您的同意。在此过程中,您可通过本政策第九条【如何联系我们】约定的联系方式联络我们。
|
||||
|
||||
9、征得授权同意的例外
|
||||
|
||||
根据相关法律法规规定,以下情形中收集您的个人信息无需征得您的授权同意:
|
||||
|
||||
(1)与个人信息控制者履行法律法规规定的义务相关的;
|
||||
|
||||
(2)与国家安全、国防安全直接相关的;
|
||||
|
||||
(3)与公共安全、公共卫生、重大公共利益直接相关的;
|
||||
|
||||
(4)与刑事侦查、起诉、审判和判决执行等直接相关的;
|
||||
|
||||
(5)出于维护个人信息主体或其他个人的生命、财产等重大合法权益但又很难得到本人授权同意的;
|
||||
|
||||
(6)所涉及的个人信息是个人信息主体自行向社会公众公开的;
|
||||
|
||||
(7)根据个人信息主体要求签订和履行合同所必需的;
|
||||
|
||||
(8)从合法公开披露的信息中收集个人信息的,如合法的新闻报道、政府信息公开等渠道;
|
||||
|
||||
(9)维护所提供产品或服务的安全稳定运行所必需的,如发现、处置产品或服务的故障;
|
||||
|
||||
10、您理解并同意, TanCloud 服务可能需要您在您的设备中开启特定的访问权限,以实现这些权限所涉及个人信息的收集和使用:
|
||||
|
||||
(1)如我们访问您的摄像头,是为了使您可以使用摄像头进行扫码、拍摄,用于实现登录、使用"拍照"功能支付、图片评论、拍照取词、拍照翻译及上传头像;
|
||||
|
||||
(2)如我们访问您的相册,是为了使您可以实现您设备中的照片、图片或视频的取用与上传、发表评论/分享、使用相册中的图片上传头像;
|
||||
|
||||
(3)如我们访问您的存储,是为了使您可以实现裁剪头像图片、崩溃日志查询等功能;
|
||||
|
||||
(4)如我们访问您的麦克风,是为了使您可以实现语音翻译功能、语音评论、与客服实现语音交互以及语音教学交互功能,在这些功能中我们会收集您的录音内容以识别您的具体需求。
|
||||
|
||||
(5)如我们访问您的浏览器,是为了使您可以实现“自动登录”等功能,在这些功能中我们将收集您浏览器的相关数据以识别具体需求。
|
||||
|
||||
当您需要关闭该功能时,大多数移动设备都会支持您的这项需求,具体方法请参考或联系您移动设备的服务商或生产商。请您注意,您开启任一权限即代表您授权我们可以收集和使用相关个人信息来为您提供对应服务,您一旦关闭任一权限即代表您取消了授权,我们将不再基于对应权限继续收集和使用相关个人信息,也无法为您提供该权限所对应的服务。但是,您关闭权限的决定不会影响您使用已授权其他权限的功能,以及此前基于您的授权所进行的个人信息收集及使用。
|
||||
|
||||
11、有关个人敏感信息的提示
|
||||
|
||||
以上由您提供或我们收集您的个人信息中,可能包含您的个人敏感信息,包括银行账号、交易和消费记录、虚拟财产信息、系统账号、邮箱地址及其有关的密码、电话号码、网页浏览记录、位置信息。请您谨慎并留意个人敏感信息,您同意您的个人敏感信息我们可以按本政策所述的目的和方式来处理。
|
||||
|
||||
二、我们如何使用 Cookies 或同类技术
|
||||
|
||||
(一) Cookies
|
||||
|
||||
我们或我们的第三方合作伙伴可能通过 Cookies 获取和使用您的个人信息,并将该等个人信息储存为日志信息。
|
||||
|
||||
通过使用 Cookies ,我们向您提供简单易行并富个性化的网络体验。一个 Cookies 是少量的数据,它们从一个网络服务器送至您的浏览器并存在计算机硬盘上。我们使用 Cookies 是为了让您可以受益。比如,为使得 TanCloud 的登录过程更快捷,您可以选择把用户名存在一个 Cookies 中。这样下次当您要登录 TanCloud 的服务时能更加方便快捷。Cookies 能帮助我们确定您连接的页面和内容,您在 TanCloud 特定服务上花费的时间和您所选择的 TanCloud 服务。
|
||||
|
||||
Cookies 使得我们能更好、更快地为您服务,并且使您在 TanCloud 服务上的经历更富个性化。然而,您应该能够控制 Cookies 是否以及怎样被你的浏览器接受。请查阅您的浏览器附带的文件以获得更多这方面的信息。
|
||||
|
||||
我们和第三方合作伙伴可能通过 Cookies 收集和使用您的个人信息,并将该等个人信息储存。
|
||||
|
||||
我们使用自己的 Cookies ,可能用于以下用途:
|
||||
|
||||
(1)记住您的身份。Cookies 有助于我们辨认您作为我们的注册用户的身份,或保存您向我们提供有关您的喜好或其他个人信息;
|
||||
|
||||
(2)分析您使用我们服务的情况。我们可利用 Cookies 来了解您使用 TanCloud 服务进行什么活动、或哪些服务或服务最受欢迎;
|
||||
|
||||
(3)广告优化。 Cookies 有助于我们根据您的个人信息,向您提供与您相关的广告而非进行普遍的广告投放。
|
||||
|
||||
我们为上述目的使用 Cookies 的同时,可能将通过 Cookies 收集的非个人身份信息汇总提供给广告商和其他伙伴,用于分析您和其他用户如何使用 TanCloud 服务并用于广告服务。
|
||||
|
||||
TanCloud 服务上可能会有广告商和其他合作方放置的 Cookies 。这些 Cookies 可能会收集与您相关的非个人身份信息,以用于分析用户如何使用该等服务、向您发送您可能感兴趣的广告,或用于评估广告服务的效果。这些第三方 Cookies 收集和使用该等个人信息不受本政策约束,而是受到其自身的个人信息保护声明约束,我们不对第三方的 Cookies 承担责任。
|
||||
|
||||
您可以通过浏览器或用户选择机制拒绝或管理 Cookies 。但请您注意,如果您停用 Cookies ,我们有可能无法为您提供最佳的服务体验,某些服务也可能无法正常使用。同时,您仍然将收到广告,只是这些广告与您的相关性会降低。
|
||||
|
||||
(二)网站信标和像素标签
|
||||
|
||||
除 Cookies 外,我们还会在网站上使用网站信标和像素标签等其他同类技术。例如,我们向您发送的电子邮件可能含有链接至我们网站内容的地址链接,如果您点击该链接,我们则会跟踪此次点击,帮助我们了解您的产品或服务偏好以便于我们主动改善客户服务体验。网站信标通常是一种嵌入到网站或电子邮件中的透明图像。借助于电子邮件中的像素标签,我们能够获知电子邮件是否被打开。如果您不希望自己的活动以这种方式被追踪,则可以随时从我们的寄信名单中退订。
|
||||
|
||||
三、我们可能共享、转让或披露的个人信息
|
||||
|
||||
(一)共享
|
||||
|
||||
您同意我们依据本政策向我们的关联方或相关法人团体、与我们合作的一些商业合作伙伴(合称"信息接收方")共享您的个人信息。我们将积极帮助您了解信息接收方对个人信息的存储、使用等情况,以及您享有的访问、更正、删除、注销账户等权利。除以下情形外,未经您同意,我们不会与我们及我们的信息接收方之外的任何第三方共享您的个人信息:
|
||||
|
||||
1、向您提供我们的服务。我们可能向信息接收方共享您的个人信息,以实现您需要的核心功能或提供您需要的服务;
|
||||
|
||||
2、维护和改善我们的服务。我们可能向信息接收方共享您的个人信息,以帮助我们为您提供更有针对性、更完善的服务,例如:代表我们发出电子邮件或推送通知的通讯服务提供商;
|
||||
|
||||
3、实现本政策第一条"我们如何收集和使用您的个人信息"部分所述目的;
|
||||
|
||||
4、履行我们在本政策或我们与您达成的其他协议中的义务和行使我们的权利;
|
||||
|
||||
5、向委托我们进行推广的信息接收方共享,目的是为了使该等委托方了解推广的覆盖面和有效性。比如我们可以告知该委托方有多少人看了他们的推广信息或在看到这些信息后购买了委托方的商品,或者向他们提供不能识别个人身份的统计信息,帮助他们了解其受众或顾客。
|
||||
|
||||
6、在法律法规允许的范围内,为了遵守法律、维护我们及我们的关联方或合作伙伴、您或其他 TanCloud 用户或社会公众利益、财产或安全免遭损害,比如为防止欺诈等违法活动和减少信用风险,我们可能与其他公司和组织交换个人信息。不过,这并不包括违反本政策中所作的承诺而为获利目的出售、出租、共享或以其它方式披露的个人信息。
|
||||
|
||||
7、应您合法需求,协助处理您与他人的纠纷或争议;
|
||||
|
||||
8、应您的监护人合法要求而提供您的个人信息;
|
||||
|
||||
9、根据与您签署的服务协议(包括在线签署的电子协议以及相应的平台规则)或其他的法律文件约定所提供;
|
||||
|
||||
10、基于学术研究而提供;
|
||||
|
||||
11、基于符合法律法规的社会公共利益而提供。
|
||||
|
||||
我们仅会出于合法、正当、必要、特定、明确的目的共享您的个人信息。对我们与之共享个人信息的公司、组织和个人,我们会与其签署严格的保密协定,要求他们按照我们的说明、本政策以及其他任何相关的保密和安全措施来处理个人信息。
|
||||
|
||||
(二)转让
|
||||
|
||||
1、随着我们业务的持续发展,我们有可能进行合并、收购、资产转让或类似的交易,而您的个人信息有可能作为此类交易的一部分而被转移。我们会要求新的持有您个人信息的公司、组织继续受本政策的约束,否则,我们将要求该公司、组织重新向您征求授权同意。
|
||||
|
||||
2、在获得您的明确同意后,我们会向其他方转让您的个人信息。
|
||||
|
||||
(三)披露
|
||||
|
||||
我们仅会在以下情况下,且采取符合业界标准的安全防护措施的前提下,才会披露您的个人信息:
|
||||
|
||||
1、根据您的需求,在您明确同意的披露方式下披露您所指定的个人信息;
|
||||
|
||||
2、根据法律、法规的要求、强制性的行政执法或司法要求所必须提供您个人信息的情况下,我们可能会依据所要求的个人信息类型和披露方式披露您的个人信息。在符合法律法规的前提下,当我们收到上述披露个人信息的请求时,我们会要求接收方必须出具与之相应的法律文件,如传票或调查函。我们坚信,对于要求我们提供的个人信息,应该在法律允许的范围内尽可能保持透明。我们对所有的请求都进行了慎重的审查,以确保其具备合法依据,且仅限于执法部门因特定调查目的且有合法权利获取的数据。
|
||||
|
||||
(四)共享、转让、披露个人信息时事先征得授权同意的例外
|
||||
|
||||
以下情形中,共享、转让、公开披露您的个人信息无需事先征得您的授权同意:
|
||||
|
||||
1、与个人信息控制者履行法律法规规定的义务相关的;
|
||||
|
||||
2、与国家安全、国防安全有关的;
|
||||
|
||||
3、与公共安全、公共卫生、重大公共利益有关的;
|
||||
|
||||
4、与刑事侦查、起诉、审判和判决执行等司法或行政执法有关的;
|
||||
|
||||
5、出于维护您或其他个人的生命、财产等重大合法权益但又很难得到本人同意的;
|
||||
|
||||
6、您自行向社会公众公开的个人信息;
|
||||
|
||||
7、从合法公开披露的信息中收集个人信息的,如合法的新闻报道、政府信息公开等渠道。
|
||||
|
||||
根据法律规定,共享、转让经去标识化处理的个人信息,且确保数据接收方无法复原并重新识别个人信息主体的,不属于个人信息的对外共享、转让及公开披露行为,对此类数据的保存及处理将无需另行向您通知并征得您的同意。
|
||||
|
||||
四、我们如何保留、储存和保护您的个人信息安全
|
||||
|
||||
(一)我们仅在本政策所述目的所必需期间和法律法规及监管规定的时限内保存您的个人信息, TanCloud 判断前述期限的标准包括:
|
||||
|
||||
1、完成与您相关的交易目的、维护相应交易及业务记录、应对您可能的查询或投诉;
|
||||
|
||||
2、保证 TanCloud 为您提供服务的安全和质量;
|
||||
|
||||
3、您是否同意更长的留存期间;
|
||||
|
||||
4、是否存在保留期限的其他特别约定。
|
||||
|
||||
在您的个人信息超出保留期间后, TanCloud 会根据适用法律的要求删除您的个人信息,或使其匿名化处理(如您为未成年人,在您的个人信息超出保留期间后, TanCloud 会按照相关法律法规要求对您的个人信息进行相应处理)。如因特殊情形无法按照相关要求删除的,平台将对该部分事项向您进行说明。
|
||||
|
||||
如我们终止服务或运营,我们将及时停止继续收集您个人信息的活动,同时会遵守相关法律法规要求提前向您通知,并在终止服务或运营后对您的个人信息进行删除或匿名化处理,法律法规或监管部门另有规定的除外。
|
||||
|
||||
(二)我们在中华人民共和国境内运营中收集和产生的个人信息,存储在中国境内。以下情形除外:
|
||||
|
||||
1、法律法规有明确规定;
|
||||
|
||||
2、获得您的授权同意;
|
||||
|
||||
3、您使用的产品、服务涉及跨境,我们需要向境外提供您的个人信息的。
|
||||
|
||||
针对以上情形,我们会确保依据本政策及国家法律法规要求对您的个人信息提供足够的保护。
|
||||
|
||||
(三)我们非常重视个人信息安全,指定了特定人员,并采取一切合理可行的措施,保护您的个人信息:
|
||||
|
||||
1、数据安全技术措施
|
||||
|
||||
我们会采用符合业界标准的安全防护措施,包括建立合理的制度规范、安全技术来防止您的个人信息遭到未经授权的访问使用、修改,避免数据的损坏或丢失。网络服务采取了多种加密技术,例如在某些服务中,我们将利用加密技术来保护您的个人信息,采取加密技术对您的个人信息进行加密保存,并通过隔离技术进行隔离。在个人信息使用时,例如个人信息展示、个人信息关联计算,我们会采用多种数据脱敏技术增强个人信息在使用中的安全性。采用严格的数据访问权限控制和多重身份认证技术保护个人信息,避免数据被违规使用。
|
||||
|
||||
2、我们为保护个人信息采取的其他安全措施
|
||||
|
||||
(1)我们通过建立数据分类分级制度、数据安全管理规范、数据安全开发规范来管理规范个人信息的存储和使用。
|
||||
|
||||
(2)我们通过个人信息接触者保密协议、监控和审计机制来对数据进行全面安全控制。
|
||||
|
||||
(3)我们还会举办安全和隐私保护培训课程,加强员工对于保护个人信息重要性的认识和安全意识。
|
||||
|
||||
(4)我们仅允许有必要知晓这些个人信息的我们及我们关联方的员工、合作伙伴访问您的个人信息,并为此设置了严格的访问权限控制和监控机制。我们同时要求可能接触到您的个人信息的所有人员履行相应的保密义务。如果未能履行这些义务,可能会被追究法律责任或被中止与我们的合作关系。
|
||||
|
||||
3、互联网并非绝对安全的环境,而且电子邮件、即时通讯、社交软件或其他服务软件等与其他用户的交流方式无法确定是否完全加密,我们建议您使用此类工具时请使用复杂密码,并注意保护您的个人信息安全。
|
||||
|
||||
4、我们将尽力确保或担保您发送给我们的任何个人信息的安全性。如果我们的物理、技术、或管理防护设施遭到破坏,导致个人信息被非授权访问、公开披露、篡改、或毁坏,导致您的合法权益受损,我们将承担相应的法律责任。
|
||||
|
||||
(四)安全事件处置
|
||||
|
||||
在不幸发生个人信息安全事件后,我们将按照法律法规的要求,及时向您告知:安全事件的基本情况和可能的影响、我们已采取或将要采取的处置措施、您可自主防范和降低风险的建议、对您的补救措施等。我们同时将及时将事件相关情况以邮件、信函、短信、电话、推送通知等方式告知您,难以逐一告知个人信息主体时,我们会采取合理、有效的方式发布公告。同时,我们还将按照监管部门要求,主动上报个人信息安全事件的处置情况。
|
||||
|
||||
请您理解,由于技术的限制以及风险防范的局限,即便我们已经尽量加强安全措施,也无法始终保证个人信息百分之百的安全。您需要了解,您接入 TanCloud 服务所用的系统和通讯网络,有可能因我们可控范围外的情况而发生问题。
|
||||
|
||||
五、如何管理您的个人信息
|
||||
|
||||
我们鼓励您更新和修改您的个人信息以使其更准确有效,也请您理解,您更正、删除、撤回授权或停止使用 TanCloud 服务的决定,并不影响我们此前基于您的授权而开展的个人信息处理。
|
||||
|
||||
您可以通过以下方式来管理您的个人信息:
|
||||
|
||||
(一)访问您的个人信息
|
||||
|
||||
1、账户个人信息:如果您希望访问您的账户中的个人基本个人信息(包括头像、昵称、生日、公司、地址等),您可以登录账号通过"个人中心"进行访问。
|
||||
|
||||
2、订单个人信息:您可以在"控制台-费用管理-订单信息"查看您的所有订单状态。
|
||||
|
||||
(二)更正您的个人信息
|
||||
|
||||
如果您希望更正您的账户中的个人基本个人信息(包括头像、昵称、手机号等),您可以登录账号在"个人中心"进行修改。
|
||||
|
||||
(三)删除您的个人信息
|
||||
|
||||
您可以通过"(一)访问、更正您的个人信息"中列明的方式自主删除您的部分个人信息。在部分个人信息删除时,我们可能会要求您进行身份验证,以保障个人信息安全。
|
||||
|
||||
在以下情形中,您可以向我们提出删除个人信息的请求:
|
||||
|
||||
1、如果我们处理个人信息的行为违反法律法规;
|
||||
|
||||
2、如果我们收集、使用您的个人信息,却未征得您的授权同意;
|
||||
|
||||
3、如果我们处理个人信息的行为严重违反了与您的约定;
|
||||
|
||||
4、如果我们不再为您提供 TanCloud 服务。
|
||||
|
||||
若我们决定响应您的删除请求,我们还将同时尽可能通知从我们处获得您的个人信息的实体,要求其及时删除,除非法律法规另有规定,或这些实体获得您的独立授权。
|
||||
|
||||
(四)改变您授权同意的范围
|
||||
|
||||
您总是可以选择是否披露个人信息。有些个人信息是使用 TanCloud 服务所必需的,但大多数其他个人信息的提供是由您决定的。您可以通过"本条(一)访问、更正您的个人信息"中列明的方式"删除个人信息、关闭设备功能或注销账号等方式改变您授权我们继续收集个人信息的范围或通过本政策第九条【如何联系我们】约定的联系方式联络我们撤回您的授权,一般情况下,我们将在十五天内予以回复。
|
||||
|
||||
(五)注销您的账号
|
||||
|
||||
如果您不再使用 TanCloud 服务,在符合服务协议约定条件及国家相关法律法规规定的情况下,您可以通过登录" TanCloud "-"个人中心"-"安全等级"-"账号注销"所示的流程或本政策第九条【如何联系我们】约定的联系方式联络我们注销您的账号,一般情况下,我们将在十五个工作日内为您注销账号,届时我们将停止为您提供 TanCloud 服务。当您的帐号注销或被删除后,与该帐号相关的 TanCloud 服务项下的全部服务资料和数据将被删除或匿名化处理,但法律法规另有规定的除外。
|
||||
|
||||
(六)获取个人信息副本:您可以通过邮箱 sales@TanCloud.cn 服务渠道联系我们并且告知我们您想要获取您的个人信息副本,一般情况下,我们将在收到您的问题之日起十五天内予以回复。
|
||||
|
||||
(七)响应您的上述请求
|
||||
|
||||
为保障安全,您可能需要提供书面请求,或以其他方式证明您的身份。我们可能会先要求您验证自己的身份,然后再处理您的请求。对于您合理的请求,我们原则上不收取费用,但对多次重复、超出合理限度的请求,我们将视情收取一定成本费用。对于那些无端重复、需要过多技术手段(例如,需要开发新系统或从根本上改变现行惯例)、给他人合法权益带来风险或者非常不切实际(例如,涉及备份磁带上存放的信息)的请求,我们可能会予以拒绝。
|
||||
|
||||
在以下情形中,我们将无法响应您的请求:
|
||||
|
||||
1、与我们履行法律法规规定的义务相关的;
|
||||
|
||||
2、与国家安全、国防安全直接相关的;
|
||||
|
||||
3、与公共安全、公共卫生、重大公共利益直接相关的;
|
||||
|
||||
4、与刑事侦查、起诉、审判和执行判决等直接相关的;
|
||||
|
||||
5、我们有充分证据表明您存在主观恶意或滥用权利的;
|
||||
|
||||
6、出于维护您或其他个人的生命、财产等重大合法权益但又很难得到本人同意的;
|
||||
|
||||
7、响应您的请求将导致您或其他个人、组织的合法权益受到严重损害的;
|
||||
|
||||
8、涉及商业秘密的。
|
||||
|
||||
六、第三方服务
|
||||
|
||||
TanCloud 服务可能链接至第三方提供的社交媒体或其他服务(包括网站或其他服务形式)。包括:
|
||||
|
||||
(一)您可利用"分享"键将某些 TanCloud 服务内容分享到第三方服务,或您将第三方服务内容分享到 TanCloud 。这些功能可能会收集您的信息(包括您的日志信息),并可能在您的电脑装置 Cookies,从而正常运行上述功能;
|
||||
|
||||
(二)我们通过广告或我们服务的其他方式向您提供链接,使您可以链接至第三方的服务或网站;
|
||||
|
||||
(三)其他接入第三方服务的情形。为实现本政策中声明的目的,我们可能会接入第三方服务商提供的 SDK 或其他类似的应用程序,并将我们依照本政策收集的您的某些信息共享给该等第三方服务商,以便提供更好的客户服务和用户体验。目前,我们接入的第三方服务商主要包括以下几种类型:
|
||||
|
||||
(1)用于广告相关服务,包括广告展示、广告数据监测/统计等;
|
||||
|
||||
(2)用于消息推送功能,包括手机厂商 Push 推送、特定事件提醒等;
|
||||
|
||||
(3)用于支付相关服务,包括订单支付、交易行为核验、收入结算、支付信息汇总统计等;
|
||||
|
||||
(4)用于在您同意的情况下获取设备位置权限、搜集设备信息和日志信息等;
|
||||
|
||||
(5)用于第三方授权服务,包括第三方帐号登陆、将有关内容分享至第三方产品等;
|
||||
|
||||
(6)用于支持产品功能模块,包括在线直播、视频播放、语音识别、智能客服、内容存储等;
|
||||
|
||||
我们接入的部分第三方 SDK 或类似应用程序可能会收集您的个人信息,如您在我们的服务中使用这类由第三方提供的服务时,您同意将由其直接收集和处理您的信息。我们会评估这类第三方服务收集个人信息的合法性、正当性、必要性,要求该等第三方对您的个人信息采取保护措施,并严格遵守相关法律法规与监管要求。您也可以选择通过本政策"如何联系我们"章节所列的反馈渠道联系我们,我们会尽快为您作出解答。
|
||||
|
||||
如上所述服务由相关的第三方负责运营。您使用该等第三方服务(包括您向该等第三方提供的任何个人信息),须受第三方自己的服务条款及个人信息保护声明(而非本政策)约束,您需要仔细阅读其条款。我们仅会出于正当、必要、特定的目的共享您的信息。我们会要求他们履行相关保密义务并采取相应的安全措施。
|
||||
|
||||
七、未成年人保护
|
||||
|
||||
如您为未满 18 周岁的未成年人的,请务必让您的监护人仔细阅读本政策,并在征得您的监护人同意的前提下使用我们的服务或向我们提供个人信息。我们将根据国家相关法律法规的规定保护未成年人的相关个人信息。如监护人发现相关未成年人个人信息为未成年人自行填写,需要进行修改或删除处理的,请随时与我们联系。
|
||||
|
||||
特别地,若您是 14 周岁以下的儿童,请您通知您的监护人,并在您使用 TanCloud 服务、提交个人信息之前,寻求其同意和指导。
|
||||
|
||||
八、通知和修订
|
||||
|
||||
我们可能适时修改本政策的条款,该等修改构成本政策的一部分。对于重大变更,我们会提供更显著的通知,您如果不同意该等变更,可以选择停止使用 TanCloud 服务;如您仍然继续使用 TanCloud 服务的,即表示同意受经修订的本政策的约束。
|
||||
|
||||
我们鼓励您在每次使用 TanCloud 服务时都查阅我们的隐私政策。
|
||||
|
||||
我们可能在必需时(例如当我们由于系统维护而暂停某一项服务时)发出与服务有关的公告。您可能无法取消这些与服务有关、性质不属于推广的公告。
|
||||
|
||||
最后,您必须对您的账号和密码信息负有保密义务。任何情况下,请小心妥善保管。
|
||||
|
||||
九、法律适用与管辖
|
||||
|
||||
如果出现纠纷,双方协商一致解决;如果双方无法通过协商解决争端,则双方同意由中国国际经济贸易仲裁委员会(简称" CIETAC ")根据 CIETAC 有效的仲裁规则以及适用法律在中国北京进行仲裁,仲裁语言为中文,并由3名仲裁员进行审理。
|
||||
|
||||
十、如何联系我们
|
||||
|
||||
绵阳探云科技有限公司的联系地址为:四川省绵阳市涪城区绵安路35号。我们将按照本政策保护您的个人信息。
|
||||
|
||||
我们指定了个人信息保护专门人员,如您有关于个人信息安全的投诉和举报,或您对本政策、您的个人信息的相关事宜有任何问题、意见或建议,以及有关本政策或 TanCloud 的隐私措施的问题,请与我们联系:电话:18781603458;邮箱地址: gongchao@tancloud.cn 。
|
||||
|
||||
一般情况下,我们将在收到您的问题、意见或建议之日起十五天内予以回复。
|
||||
|
||||
TanCloud Privacy Policy
|
||||
|
||||
Welcome to use the products and services provided by MianYang TanCloud Technology Co., Ltd. (hereinafter referred to as "TanCloud"). TanCloud (or "we" for short) is well aware of the importance of personal information to you, and we have always solemnly promised to protect users who use our products and services (hereinafter collectively referred to as "TanCloud services") (hereinafter collectively referred to as "users" or "you") Personal information and privacy security. When you use the TanCloud service, we may collect and use your personal information (or "personal information" for short). "TanCloud Privacy Policy" (hereinafter referred to as "this policy") applies to the TanCloud service we provide. Users under the age of 18, please read this policy with a legal guardian, and pay special attention to the terms of use for minors. In particular, if you are a child under the age of 14, you should also ask your guardian to read this policy carefully, and you can use the TanCloud service only with the consent of the guardian. We hope to use this policy to explain to you the corresponding processing rules when we collect and use your personal information, as well as the ways we can provide you with access, correction, deletion and protection of this personal information, so as to better protect your rights and interests .
|
||||
|
||||
Scope of application: (a) When you use the TanCloud service or visit the webpage related to the TanCloud service, TanCloud automatically receives and records the information on your browser and computer, including but not limited to your IP address and browser type , The language used, the date and time of the visit, the software and hardware feature information, and the webpage records you need; (b) TanCloud obtains user personal data from business partners through legal means.
|
||||
|
||||
You understand and agree that the following information does not apply to this privacy policy: (a) Keyword information entered when using the search service provided by the TanCloud service; (b) The relevant information and data collected by TanCloud that you publish on the TanCloud service, including But it is not limited to participation in activities, transaction information and evaluation details; (c) Violation of legal provisions or violations of TanCloud service rules and the measures TanCloud has taken against you.
|
||||
|
||||
This policy will help you understand the following:
|
||||
|
||||
1. How we collect and use your personal information
|
||||
|
||||
2. How do we use Cookies or similar technologies
|
||||
|
||||
3. Personal information that we may share, transfer and disclose
|
||||
|
||||
4. How do we keep, store and protect the security of your personal information
|
||||
|
||||
5. How to manage your personal information
|
||||
|
||||
6. third-party services
|
||||
|
||||
7. Protection of minors
|
||||
|
||||
8. Notice and Amendment
|
||||
|
||||
9. Application of Law and Jurisdiction
|
||||
|
||||
10. How to contact us
|
||||
|
||||
【Special Reminder】 Please read carefully before using the TanCloud service (minors, please read it with a guardian) and understand this policy (especially the content marked in bold or underlined) to make an appropriate choice. Once you use or continue to use our products or services after we update this policy, it means that you agree to this policy and agree that we process your personal information in accordance with this policy.
|
||||
|
||||
This policy applies to TanCloud services. If there is any inconsistency with the similar terms of the "Professional Service Contract" between TanCloud and you, this policy shall prevail. If a single service we provide does not apply to this policy, the service will expressly exclude the application of this policy in an appropriate manner.
|
||||
|
||||
1. How we collect and use your personal information:
|
||||
|
||||
We collect your personal information mainly for you and other users to use the TanCloud service more easily and satisfactorily. And this personal information helps us achieve this goal.
|
||||
|
||||
A. We will collect and obtain your personal information through the following channels:
|
||||
|
||||
a. The personal information you provide.
|
||||
|
||||
ⅰ. The personal information you provide to us when you register for the TanCloud service account or use the TanCloud service, including your mobile phone number, and you can voluntarily choose to fill in your nickname, profile picture, gender, age, education, school, identity Certificate number, recipient’s name, recipient’s contact information, and basic information about the delivery address. If you only need to browse and understand TanCloud, you do not need to register an account and provide the above information. If you do not provide this information, it will not affect your use of the basic functions of TanCloud;
|
||||
|
||||
ⅱ. The shared personal information you provide to other parties through the TanCloud service, and the personal information stored when you use the TanCloud service.
|
||||
|
||||
Please note that if you upload or publish your personal information in a public area visible to other users in the TanCloud service, or disclose your personal information in your response to information uploaded or published by others, such personal information may be Collected and used by others, as long as you do not delete the personal information that you have disclosed or shared, the relevant personal information may remain in the public domain; even if you delete the shared personal information, the relevant personal information may still be owned by other users or not under our control The third party independently caches, copies, or stores, or saves it in the public domain by other users or such third parties. If you disclose or share your personal information through the aforementioned channels, we will not be liable for the leakage of your personal information. Therefore, we remind and ask you to carefully consider whether to disclose or share your personal information through the above channels. When you find that others have improperly collected or used your personal information, you can contact us through the contact information stipulated in Article 9 of this Policy [How to Contact Us].
|
||||
|
||||
b. Your personal information shared by other parties. That is, the shared personal information about you provided by other parties when using the TanCloud service.
|
||||
|
||||
c. Your personal information we have obtained. When you use the TanCloud service, we collect, aggregate, and record personal information.
|
||||
|
||||
B. We will collect and use the following types of personal information of you for the following purposes:
|
||||
|
||||
a. Help you complete registration, login and logout
|
||||
|
||||
In order for us to provide you with a complete TanCloud service, you need to provide basic registration or login personal information, including using your mobile phone number to register and log in or provide a third-party account to log in to TanCloud. If you only need to use basic services such as browsing, querying, and searching, you do not need to register as an TanCloud user and provide the above-mentioned personal information.
|
||||
|
||||
b. Customer service and after-sales
|
||||
|
||||
In accordance with relevant laws and regulations and regulatory requirements, or when you contact us, our customer service or after-sales service may require you to provide real identity information (name, ID) and account information to verify your identity in order to help you with questions, Or record the solutions and results of related issues.
|
||||
|
||||
Please note that your identity information is personally sensitive information. Please provide it with caution. If you refuse to provide it, you may not be able to obtain related services, but it will not affect the normal use of other functions and services.
|
||||
|
||||
c. Maintain the normal operation of basic functions
|
||||
|
||||
During your use of our services, in order to identify the abnormal status of your account and understand the suitability of the product, provide you with services such as browsing, searching, registering/logging in, viewing and editing personal information, purchasing services/products, and paying, and maintaining basic functions In normal operation, we may automatically collect and store information about the services you use and how you use them and associate these information, including:
|
||||
|
||||
ⅰ. Log information: When you use our services, we may automatically collect your detailed usage of our services and save them as relevant web logs. Log information includes your login account, search query content, IP address, browser type, telecom operator, network environment, language used, access date and time, and web browsing records you visit, Push open records, crash records, Stay time, refresh record, publish record, follow, subscribe, favorite and share.
|
||||
|
||||
ⅱ. Device information: We may receive and record the device-related information (including device identifiers (IMEI/MAC/OPEN UDID), Serial, SIM card) according to the specific permissions granted by you during software installation and use. IMSI identification code, device model, operating system and version, client version, device resolution, package name, device settings, process and software list, Android ID, IDFA, UUID, software and hardware feature information), information about the location of the device (Including IP address, GPS location, and WLAN access point, Bluetooth and base station sensor information that can provide relevant personal information).
|
||||
|
||||
At the same time, in order to collect the above basic personal device information, we will apply for permission to access your device information. We collect this information to provide you with our basic services and basic functions. If you refuse to provide the above permissions, you may be unable to use it. Our products and services.
|
||||
|
||||
Please note that separate device information and log information are personal information that cannot identify a specific natural person. If we combine this type of non-personal information with other personal information to identify a specific natural person, or use it in combination with personal information, during the combined use period, this type of non-personal information will be treated as personal information, except for obtaining you Unless otherwise provided by authorization or laws and regulations, we will anonymize and de-identify this type of personal information. During the combined use, this information will be treated and protected as your personal information in accordance with this privacy policy.
|
||||
|
||||
d. Provide you with goods or services
|
||||
|
||||
ⅰ. Sharing and publishing of personal information: When you use the TanCloud service, upload and/or publish personal information, and perform related actions, we will collect the personal information you upload, publish or form, and have the right to display your nickname , Avatar and post content.
|
||||
|
||||
ⅱ. Delivery of goods or services: When you order specific goods or services from our goods or services, we will generate an order for you to purchase the goods or services through the system. In order to facilitate the delivery to you of the goods or services you have purchased on TanCloud, you may need to provide the recipient's personal identification information, name, purchaser's subject and related information, orderer, contact number, and payment status information. If you refuse to provide such personal information, we will not be able to complete the relevant delivery services. If you order goods or services for others through the TanCloud service, you need to provide the aforementioned personal information of the actual orderer. Before providing us with the aforementioned personal information of the actual orderer, you need to ensure that you have obtained his authorization and consent.
|
||||
|
||||
When you use the TanCloud service, TanCloud will collect and store the pictures and voice information you upload, and our relevant recognition program will process and analyze these data.
|
||||
|
||||
ⅲ. In order to complete order payment, deliver goods or services, confirm transaction status, and provide you with after-sales and dispute resolution services, we will collect information related to the transaction progress through the transaction object, payment institution, logistics company, etc. you select based on the exchange. Your account number, order, transaction, payment, logistics information, or share your transaction information with the above-mentioned service providers.
|
||||
|
||||
ⅳ. Order management: In order to display the order information of your account and protect your after-sales rights and interests, TanCloud will collect the order information, transaction and consumption records generated during your use of TanCloud to show you and facilitate your order processing manage.
|
||||
|
||||
ⅴ. Customer service and after-sales service: When you contact our customer service or use other user response functions (including in-sales and after-sales applications, personal information protection complaints or suggestions, other customer complaints and needs), we may need you to provide necessary Personal information is used to match and verify your user identity in order to protect your account and system security. We may also save your contact information (used when you contact us or other contact information you voluntarily provide to us), your communication/call records and content with us, and other necessary information related to your needs, In order to contact you or help you solve the problem, or record the solution and result of the related problem.
|
||||
|
||||
e. Your personal information that we have collected indirectly:
|
||||
|
||||
We may obtain relevant personal information that you have authorized to share from management affiliates and third-party partners. We may obtain the account information (avatar, nickname, login time) that you authorized to share from a third party and bind your third-party account with your TanCloud service account after you agree to this policy, so that you can directly use the third-party account Log in and use our products and/or services. We will collect and use your personal information in compliance with relevant laws and regulations, and in accordance with agreements with affiliates or third-party partners, and we are confident that the source of the personal information provided by them is legal.
|
||||
|
||||
f. Send you a notice
|
||||
|
||||
We may issue service-related notices to you when necessary (for example, when we suspend a single service, change, or terminate the provision of a single service due to system maintenance).
|
||||
|
||||
If you do not want to continue to receive our push messages, you can ask us to stop pushing, for example: according to the SMS unsubscription guidelines, ask us to stop sending promotional messages, or set up in the mobile device to no longer receive our push messages; but Except when we send messages in accordance with legal regulations or service agreements.
|
||||
|
||||
g. Provide you with security
|
||||
|
||||
In order to improve the security of your use of the services provided by us and our partners, protect the personal and property safety of you or other users or the public from infringement, and better prevent phishing websites, fraud, network vulnerabilities, computer viruses, network attacks, network intrusions, etc. Security risks, to more accurately identify violations of laws and regulations or TanCloud service-related agreement rules, we may collect, use or integrate your account information, transaction information, device information, log information, and our affiliates and partners obtain your authorization Or use personal information shared by law to comprehensively judge your account and transaction risks, conduct identity verification, detect and prevent security incidents, and take necessary recording, auditing, analysis, and disposal measures in accordance with the law.
|
||||
|
||||
h. Other
|
||||
|
||||
You understand and agree that after collecting your personal information, we may de-identify the data through technical means. The de-identified information will not be able to identify you. In this case, we have the right to use the de-identified The user’s database is analyzed and used commercially without obtaining your consent.
|
||||
|
||||
Please note that if we want to use your personal information for other purposes not specified in this policy or collect additional personal information that is not mentioned, we will separately ask you to agree in advance (the way to confirm consent: check, Pop-up window, station letter, mail, short message method). Once you agree, these additional uses will be regarded as part of this policy, and this policy will also apply to such additional personal information.
|
||||
|
||||
If we want to use your personal information for other purposes not specified in this policy or collect additional personal information that is not mentioned, we will obtain additional information from you through page prompts, interactive processes, website announcements, or other methods. agree. During this process, you can contact us through the contact information stipulated in Article 9 of this policy [How to Contact Us].
|
||||
|
||||
i. Exceptions for obtaining authorization and consent
|
||||
|
||||
According to relevant laws and regulations, the collection of your personal information in the following situations does not require your authorization and consent:
|
||||
|
||||
ⅰ. It is related to the performance of the obligations stipulated by laws and regulations by the personal information controller;
|
||||
|
||||
ⅱ. It is directly related to national security and national defense security;
|
||||
|
||||
ⅲ. It is directly related to public safety, public health, and major public interests;
|
||||
|
||||
ⅳ. Directly related to criminal investigation, prosecution, trial, and execution of judgments;
|
||||
|
||||
ⅴ. In order to protect the life and property of the personal information subject or other individuals, but it is difficult to obtain the authorization and consent of the person;
|
||||
|
||||
ⅵ. The personal information involved is disclosed to the public by the subject of personal information on his own initiative;
|
||||
|
||||
ⅶ. Necessary for signing and performing contracts according to the requirements of the personal information subject;
|
||||
|
||||
ⅷ. Collecting personal information from legally publicly disclosed information, such as legal news reports, government information disclosure and other channels;
|
||||
|
||||
ⅸ. Necessary to maintain the safe and stable operation of the products or services provided, such as discovering and disposing of product or service failures;
|
||||
|
||||
j. You understand and agree that the TanCloud service may require you to enable specific access permissions in your device to achieve the collection and use of personal information involved in these permissions:
|
||||
|
||||
ⅰ. If we visit your camera, it is for you to use the camera to scan the code and take pictures, which is used to realize login, use the "photograph" function to pay, comment on pictures, take photos with words, take pictures, translate and upload avatars;
|
||||
|
||||
ⅱ. If we visit your photo album, it is to enable you to access and upload photos, pictures or videos in your device, post comments/share, and upload avatars using pictures in the photo album;
|
||||
|
||||
ⅲ. If we visit your storage, it is to enable you to implement functions such as cropping avatar pictures and querying crash logs;
|
||||
|
||||
ⅳ. If we access your microphone, it is to enable you to implement voice translation functions, voice comments, voice interaction with customer service, and voice teaching interaction functions. In these functions, we will collect your recording content to identify your specific need.
|
||||
|
||||
ⅴ. If we visit your browser, it is to enable you to realize "automatic login" and other functions. In these functions, we will collect relevant data of your browser to identify specific needs.
|
||||
|
||||
When you need to turn off this feature, most mobile devices will support your need. For specific methods, please refer to or contact your mobile device service provider or manufacturer. Please note that if you enable any permission, you authorize us to collect and use relevant personal information to provide you with corresponding services. Once you close any permission, you cancel the authorization, and we will no longer continue to collect based on the corresponding permissions. And the use of related personal information cannot provide you with the services corresponding to this authority. However, your decision to turn off permissions will not affect your use of authorized functions of other permissions, as well as the collection and use of personal information previously based on your authorization.
|
||||
|
||||
k. Reminders about personal sensitive information
|
||||
|
||||
The above personal information provided by you or collected by us may contain your sensitive personal information, including bank account numbers, transaction and consumption records, virtual property information, system account numbers, email addresses and related passwords, phone numbers, web browsing Record, location information. Please be cautious and pay attention to sensitive personal information. You agree that we can process your sensitive personal information in accordance with the purposes and methods described in this policy.
|
||||
|
||||
2. How do we use Cookies or similar technologies
|
||||
|
||||
a. Cookies
|
||||
|
||||
We or our third-party partners may obtain and use your personal information through Cookies, and store such personal information as log information.
|
||||
|
||||
Through the use of Cookies, we provide you with a simple and personalized network experience. A cookie is a small amount of data, which is sent from a web server to your browser and stored on the computer hard drive. We use Cookies to benefit you. For example, in order to make the login process of TanCloud faster, you can choose to store the user name in a Cookies. This will be more convenient and faster next time you want to log in to the TanCloud service. Cookies can help us determine the page and content you are connected to, the time you spend on the TanCloud specific service and the TanCloud service you choose.
|
||||
|
||||
Cookies enables us to serve you better and faster, and makes your experience on the TanCloud service more personalized. However, you should be able to control whether and how Cookies are accepted by your browser. Please refer to the file attached to your browser for more information on this.
|
||||
|
||||
We and third-party partners may collect and use your personal information through Cookies, and store such personal information.
|
||||
|
||||
We use our own Cookies, which may be used for the following purposes:
|
||||
|
||||
(1) Remember your identity. Cookies helps us to recognize your identity as our registered user, or save your preferences or other personal information about you provided to us;
|
||||
|
||||
(2) Analyze your use of our services. We can use Cookies to understand what activities you use TanCloud services for, or which services or services are most popular;
|
||||
|
||||
(3) Advertising optimization. Cookies helps us to provide you with advertisements that are relevant to you based on your personal information instead of general advertising.
|
||||
|
||||
While we use Cookies for the above purposes, we may aggregate the non-personally identifiable information collected through Cookies to advertisers and other partners to analyze how you and other users use the TanCloud service and use it for advertising services.
|
||||
|
||||
There may be Cookies placed by advertisers and other partners on the TanCloud service. These Cookies may collect non-personally identifiable information related to you to analyze how users use these services, send you advertisements that may be of interest to you, or evaluate the effectiveness of advertising services. The collection and use of such personal information by these third-party Cookies is not restricted by this policy, but by their own personal information protection statement. We are not responsible for third-party Cookies.
|
||||
|
||||
You can reject or manage Cookies through the browser or user selection mechanism. However, please note that if you disable Cookies, we may not be able to provide you with the best service experience, and some services may not be available normally. At the same time, you will still receive advertisements, but the relevance of these advertisements to you will be reduced.
|
||||
|
||||
b. Web beacons and pixel tags
|
||||
|
||||
In addition to Cookies, we also use other similar technologies such as web beacons and pixel tags on our website. For example, the email we send you may contain an address link that links to the content of our website. If you click the link, we will track the click to help us understand your product or service preferences so that we can proactively improve customer service Experience. A web beacon is usually a transparent image embedded in a website or email. With the help of the pixel tags in the email, we can know whether the email has been opened. If you do not want your activities to be tracked in this way, you can unsubscribe from our mailing list at any time.
|
||||
|
||||
3. Personal information that we may share, transfer or disclose
|
||||
|
||||
a. Sharing
|
||||
|
||||
You agree that we share your personal information with our affiliates or related legal entities, and some business partners that cooperate with us (collectively referred to as "information recipients") in accordance with this policy. We will actively help you understand the storage and use of personal information by the information recipient, as well as your rights to access, correct, delete, and cancel your account. Except for the following circumstances, without your consent, we will not share your personal information with any third party other than us and our information recipient:
|
||||
|
||||
ⅰ. Provide you with our services. We may share your personal information with the information recipient to achieve the core functions you need or provide the services you need;
|
||||
|
||||
ⅱ. Maintain and improve our services. We may share your personal information with information recipients to help us provide you with more targeted and better services, for example: communication service providers that send emails or push notifications on our behalf;
|
||||
|
||||
ⅲ. To achieve the purpose stated in the section "How do we collect and use your personal information" in Article 1 of this policy;
|
||||
|
||||
ⅳ. Fulfill our obligations and exercise our rights in this policy or other agreements we have reached with you;
|
||||
|
||||
ⅴ. The purpose of sharing with the information recipients who entrust us to promote is to make the entrusting parties understand the coverage and effectiveness of the promotion. For example, we can tell the entrusting party how many people have viewed their promotion information or purchased the entrusting party’s goods after seeing this information, or provide them with unidentifiable statistical information to help them understand their audience or customers.
|
||||
|
||||
ⅵ. To the extent permitted by laws and regulations, in order to comply with the law, protect us and our affiliates or partners, you or other TanCloud users, or the public from damage to the interests, property or safety of the public, for example, to prevent fraud and other illegal activities and To reduce credit risk, we may exchange personal information with other companies and organizations. However, this does not include personal information that is sold, rented, shared or otherwise disclosed for profit in violation of the commitments made in this policy.
|
||||
|
||||
ⅶ. Assist in handling disputes or disputes between you and others in response to your legal needs;
|
||||
|
||||
ⅷ. Provide your personal information in response to the legal request of your guardian;
|
||||
|
||||
ⅸ. Provided in accordance with the service agreement signed with you (including the electronic agreement signed online and the corresponding platform rules) or other legal documents;
|
||||
|
||||
ⅹ. Provided based on academic research;
|
||||
|
||||
ⅺ. Provided based on the public interest in compliance with laws and regulations.
|
||||
|
||||
We will only share your personal information for legal, legitimate, necessary, specific and clear purposes. For companies, organizations and individuals with whom we share personal information, we will sign strict confidentiality agreements with them, requiring them to handle personal information in accordance with our instructions, this policy and any other relevant confidentiality and security measures.
|
||||
|
||||
b. Transfer
|
||||
|
||||
ⅰ. With the continuous development of our business, we may conduct mergers, acquisitions, asset transfers or similar transactions, and your personal information may be transferred as part of such transactions. We will require new companies and organizations that hold your personal information to continue to be bound by this policy, otherwise, we will require that companies and organizations to re-seek authorization and consent from you.
|
||||
|
||||
ⅱ. After obtaining your explicit consent, we will transfer your personal information to other parties.
|
||||
|
||||
c. Disclosure
|
||||
|
||||
We will only disclose your personal information under the following circumstances and adopting industry-standard safety protection measures:
|
||||
|
||||
ⅰ. According to your needs, disclose your designated personal information in a disclosure method that you explicitly agree to;
|
||||
|
||||
ⅱ. In cases where your personal information must be provided in accordance with the requirements of laws and regulations, compulsory administrative law enforcement or judicial requirements, we may disclose your personal information based on the type of personal information required and the method of disclosure. Under the premise of complying with laws and regulations, when we receive the above request for the disclosure of personal information, we will require the recipient to issue corresponding legal documents, such as subpoenas or investigation letters. We firmly believe that the personal information we are required to provide should be as transparent as possible to the extent permitted by law. We have carefully reviewed all requests to ensure that they have a legal basis and are limited to data obtained by law enforcement agencies for specific investigation purposes and have legal rights.
|
||||
|
||||
d. Exceptions for obtaining prior authorization and consent when sharing, transferring, or disclosing personal information
|
||||
|
||||
In the following situations, sharing, transferring, and publicly disclosing your personal information does not require your prior authorization and consent:
|
||||
|
||||
ⅰ. Related to personal information controllers fulfilling obligations stipulated by laws and regulations;
|
||||
|
||||
ⅱ. Related to national security and national defense security;
|
||||
|
||||
ⅲ. Related to public safety, public health, and major public interests;
|
||||
|
||||
ⅳ. Related to judicial or administrative law enforcement such as criminal investigation, prosecution, trial, and execution of judgments;
|
||||
|
||||
ⅴ. In order to protect your or other individuals' life, property and other major legal rights and interests, but it is difficult to obtain the consent of the person;
|
||||
|
||||
ⅵ. Your personal information disclosed to the public on your own;
|
||||
|
||||
ⅶ. Collect personal information from legally publicly disclosed information, such as legal news reports, government information disclosure and other channels.
|
||||
|
||||
According to laws and regulations, sharing and transferring personal information that has been de-identified, and ensuring that the data recipient cannot restore and re-identify the subject of personal information does not belong to the external sharing, transfer, and public disclosure of personal information. The storage and processing will not need to notify you separately and obtain your consent.
|
||||
|
||||
4. How do we keep, store and protect the security of your personal information
|
||||
|
||||
a. We only store your personal information for the period necessary for the purpose stated in this policy and within the time limit prescribed by laws, regulations and supervision. TanCloud's criteria for judging the aforementioned period include:
|
||||
|
||||
ⅰ. Complete transaction purposes related to you, maintain corresponding transaction and business records, and respond to your possible inquiries or complaints;
|
||||
|
||||
ⅱ. Ensure the safety and quality of the services provided by TanCloud;
|
||||
|
||||
ⅲ. Do you agree to a longer retention period;
|
||||
|
||||
ⅳ. Whether there is any other special agreement on the retention period.
|
||||
|
||||
After your personal information exceeds the retention period, TanCloud will delete or anonymize your personal information in accordance with the requirements of applicable laws (if you are a minor, after your personal information exceeds the retention period, TanCloud will follow Relevant laws and regulations require that your personal information be processed accordingly). If it is impossible to delete it in accordance with relevant requirements due to special circumstances, the platform will explain this part of the matter to you.
|
||||
|
||||
If we terminate the service or operation, we will promptly stop the activities of continuing to collect your personal information, and at the same time, we will comply with relevant laws and regulations to notify you in advance, and delete or anonymize your personal information after terminating the service or operation. Unless otherwise provided by laws, regulations or regulatory authorities.
|
||||
|
||||
b. The personal information collected and generated during our operations within the territory of the People's Republic of China is stored in the territory of China. Except in the following situations:
|
||||
|
||||
ⅰ. There are clear provisions in laws and regulations;
|
||||
|
||||
ⅱ. Obtain your authorization and consent;
|
||||
|
||||
ⅲ. The products and services you use involve cross-border, and we need to provide your personal information overseas.
|
||||
|
||||
In response to the above circumstances, we will ensure that your personal information is adequately protected in accordance with this policy and national laws and regulations.
|
||||
|
||||
c. We attach great importance to personal information security, designate specific personnel, and take all reasonable and feasible measures to protect your personal information:
|
||||
|
||||
ⅰ. Data security technical measures
|
||||
|
||||
We will adopt safety protection measures that comply with industry standards, including the establishment of reasonable system specifications and safety technologies to prevent your personal information from unauthorized access, use, modification, and data damage or loss. Network services adopt a variety of encryption technologies. For example, in some services, we will use encryption technology to protect your personal information, use encryption technology to encrypt and store your personal information, and isolate it through isolation technology. When using personal information, such as personal information display and personal information association calculations, we will use a variety of data desensitization technologies to enhance the security of personal information in use. Strict data access control and multi-identity authentication technology are adopted to protect personal information and prevent data from being used in violation of regulations.
|
||||
|
||||
ⅱ. Other security measures we take to protect personal information
|
||||
|
||||
(1) We manage and regulate the storage and use of personal information by establishing a data classification and grading system, data security management specifications, and data security development specifications.
|
||||
|
||||
(2) We conduct comprehensive security control of data through confidentiality agreements, monitoring and auditing mechanisms for personal information contacts.
|
||||
|
||||
(3) We will also organize security and privacy protection training courses to strengthen employees’ awareness and security awareness of the importance of protecting personal information.
|
||||
|
||||
(4) We only allow employees and partners of us and our affiliates who need to know this personal information to access your personal information, and we have set up strict access control and monitoring mechanisms for this purpose. We also require all personnel who may have access to your personal information to perform corresponding confidentiality obligations. If you fail to fulfill these obligations, you may be held accountable or be suspended from our cooperative relationship.
|
||||
|
||||
ⅲ. The Internet is not an absolutely secure environment, and the communication methods with other users such as e-mail, instant messaging, social software or other service software cannot be determined whether it is completely encrypted. We recommend that you use complex passwords when using such tools, and pay attention. Protect your personal information security.
|
||||
|
||||
ⅳ. We will try our best to ensure or guarantee the security of any personal information you send to us. If our physical, technical, or management protection facilities are damaged, resulting in unauthorized access, public disclosure, tampering, or destruction of personal information, resulting in damage to your legitimate rights and interests, we will bear the corresponding legal responsibility.
|
||||
|
||||
d. Security incident handling
|
||||
|
||||
In the unfortunate event of a personal information security incident, we will promptly inform you in accordance with the requirements of laws and regulations: the basic situation and possible impact of the security incident, the disposal measures we have taken or will take, and what you can independently prevent and reduce risks Suggestions, remedies for you, etc. At the same time, we will promptly notify you of the relevant information of the incident by email, letter, text message, phone call, push notification, etc. If it is difficult to inform the subject of personal information one by one, we will take a reasonable and effective way to issue an announcement. At the same time, we will also proactively report the handling of personal information security incidents in accordance with the requirements of the regulatory authorities.
|
||||
|
||||
Please understand that due to technical limitations and risk prevention limitations, even if we have tried our best to strengthen security measures, we cannot always guarantee the 100% security of personal information. You need to understand that the system and communication network you use to access the TanCloud service may cause problems due to circumstances beyond our control.
|
||||
|
||||
5. How to manage your personal information
|
||||
|
||||
We encourage you to update and modify your personal information to make it more accurate and effective. Please understand that your decision to correct, delete, withdraw your authorization or stop using the TanCloud service will not affect our previous personal information based on your authorization. Information processing.
|
||||
|
||||
You can manage your personal information in the following ways:
|
||||
|
||||
a. Access your personal information
|
||||
|
||||
ⅰ. Account personal information: If you want to access the basic personal information in your account (including avatar, nickname, birthday, company, address, etc.), you can log in to your account and access it through the "personal center".
|
||||
|
||||
ⅱ. Order personal information: You can check the status of all your orders in "Control Panel-Expense Management-Order Information".
|
||||
|
||||
b. Correct your personal information
|
||||
|
||||
If you want to correct the basic personal information in your account (including avatar, nickname, mobile phone number, etc.), you can log in to your account and make changes in the "Personal Center".
|
||||
|
||||
c. Delete your personal information
|
||||
|
||||
You can voluntarily delete part of your personal information through the methods listed in "(1) Accessing and Correcting Your Personal Information". When some personal information is deleted, we may require you to verify your identity to protect the security of your personal information.
|
||||
|
||||
In the following situations, you can request us to delete personal information:
|
||||
|
||||
ⅰ. If our handling of personal information violates laws and regulations;
|
||||
|
||||
ⅱ. If we collect and use your personal information, but have not obtained your authorization;
|
||||
|
||||
ⅲ. If our handling of personal information seriously violates our agreement with you;
|
||||
|
||||
ⅳ. If we no longer provide you with TanCloud service.
|
||||
|
||||
If we decide to respond to your deletion request, we will also notify the entities that have obtained your personal information from us as much as possible at the same time, requiring them to delete them in a timely manner, unless laws and regulations provide otherwise, or these entities obtain your independent authorization.
|
||||
|
||||
d. Change the scope of your authorization
|
||||
|
||||
You can always choose whether to disclose personal information. Some personal information is necessary to use the TanCloud service, but the provision of most other personal information is up to you. You can change the scope of your authorization to continue to collect personal information by "deleting personal information, turning off device functions, or canceling your account" in the methods listed in "This Article (1) Accessing and Correcting Your Personal Information" or through the ninth of this policy. Article [How to Contact Us] Contact us with the agreed contact information to withdraw your authorization. Under normal circumstances, we will reply within 15 days.
|
||||
|
||||
e. Cancel your account
|
||||
|
||||
If you no longer use the TanCloud service, you can log in to the process shown in "TanCloud"-"Personal Center"-"Security Level"-"Account Logout" if it complies with the stipulated conditions of the service agreement and relevant national laws and regulations. Or contact us to cancel your account in the contact information stipulated in Article 9 of this Policy [How to Contact Us]. Generally, we will cancel your account within 15 working days, at which time we will stop providing you with TanCloud services. When your account is cancelled or deleted, all service information and data under the TanCloud service related to that account will be deleted or anonymized, unless otherwise provided by laws and regulations.
|
||||
|
||||
f. Obtaining a copy of personal information: You can contact us through the email sales@TanCloud.cn service channel and inform us that you want to obtain a copy of your personal information. Generally, we will receive your question ten days after receiving your question. Respond within five days.
|
||||
|
||||
g. Responding to your above request
|
||||
|
||||
To ensure safety, you may need to provide a written request or prove your identity in other ways. We may ask you to verify your identity before processing your request. For your reasonable requests, we do not charge fees in principle, but for repeated requests that exceed reasonable limits, we will charge a certain cost as appropriate. For those who are unreasonably repeated, require too many technical means (for example, the need to develop new systems or fundamentally change current practices), bring risks to the legitimate rights and interests of others, or are very impractical (for example, involving information stored on backup tapes) Request, we may reject it.
|
||||
|
||||
In the following situations, we will not be able to respond to your request:
|
||||
|
||||
ⅰ. Related to our fulfillment of obligations stipulated by laws and regulations;
|
||||
|
||||
ⅱ. It is directly related to national security and national defense security;
|
||||
|
||||
ⅲ. It is directly related to public safety, public health, and major public interests;
|
||||
|
||||
ⅳ. Directly related to criminal investigation, prosecution, trial and execution of judgments;
|
||||
|
||||
ⅴ. We have sufficient evidence to show that you have subjective malice or abuse of rights;
|
||||
|
||||
ⅵ. In order to protect your or other individuals' life, property and other major legal rights and interests, but it is difficult to obtain the consent of the person;
|
||||
|
||||
ⅶ. Responding to your request will cause serious damage to the legitimate rights and interests of you or other individuals or organizations;
|
||||
|
||||
ⅷ. Involving commercial secrets.
|
||||
|
||||
6. Third-party services
|
||||
|
||||
The TanCloud service may be linked to social media or other services (including websites or other forms of services) provided by third parties. include:
|
||||
|
||||
a. You can use the "Share" button to share certain TanCloud service content to third-party services, or you can share third-party service content to TanCloud. These functions may collect your information (including your log information), and may install Cookies on your computer to operate the above functions normally;
|
||||
|
||||
b. We provide you with links through advertisements or other methods of our services, so that you can link to third-party services or websites;
|
||||
|
||||
c. Other access to third-party services. In order to achieve the purpose stated in this policy, we may access SDK or other similar applications provided by third-party service providers, and share certain information about you collected by us in accordance with this policy to such third-party service providers. In order to provide better customer service and user experience. Currently, the third-party service providers we access mainly include the following types:
|
||||
|
||||
ⅰ. For advertising-related services, including advertising display, advertising data monitoring/statistics, etc.;
|
||||
|
||||
ⅱ. Used for message push functions, including push push from mobile phone manufacturers, reminders of specific events, etc.;
|
||||
|
||||
ⅲ. For payment-related services, including order payment, transaction verification, income settlement, payment information summary statistics, etc.;
|
||||
|
||||
ⅳ. It is used to obtain device location permissions, collect device information and log information, etc. with your consent;
|
||||
|
||||
ⅴ. Used for third-party authorization services, including third-party account login, sharing relevant content to third-party products, etc.;
|
||||
|
||||
ⅵ. Used to support product functional modules, including online live broadcast, video playback, voice recognition, intelligent customer service, content storage, etc.;
|
||||
|
||||
Some third-party SDKs or similar applications that we access may collect your personal information. If you use such third-party services in our services, you agree that they will directly collect and process your information. We will evaluate the legality, legitimacy, and necessity of personal information collected by such third-party services, and require these third parties to take protective measures for your personal information, and strictly abide by relevant laws, regulations and regulatory requirements. You can also choose to contact us through the feedback channels listed in the "How to Contact Us" section of this policy, and we will answer you as soon as possible.
|
||||
|
||||
The services mentioned above are operated by relevant third parties. Your use of such third-party services (including any personal information you provide to such third parties) is subject to the third party's own terms of service and personal information protection statement (not this policy), and you need to read its terms carefully. We will only share your information for legitimate, necessary, and specific purposes. We will require them to fulfill relevant confidentiality obligations and take corresponding security measures.
|
||||
|
||||
7. Protection of minors
|
||||
|
||||
If you are a minor under the age of 18, please be sure to ask your guardian to read this policy carefully and use our services or provide us with personal information with the consent of your guardian. We will protect the personal information of minors in accordance with relevant national laws and regulations. If the guardian finds that the relevant minor’s personal information is filled out by the minor himself and needs to be modified or deleted, please feel free to contact us.
|
||||
|
||||
In particular, if you are a child under the age of 14, please notify your guardian and seek their consent and guidance before you use the TanCloud service and submit personal information.
|
||||
|
||||
8. Notification and Amendment
|
||||
|
||||
We may revise the terms of this policy in due course, and such revisions form part of this policy. For major changes, we will provide more noticeable notifications. If you do not agree with the changes, you can choose to stop using the TanCloud service; if you continue to use the TanCloud service, you agree to be bound by this revised policy.
|
||||
|
||||
We encourage you to review our privacy policy every time you use the TanCloud service.
|
||||
|
||||
We may issue service-related announcements when necessary (for example, when we suspend a certain service due to system maintenance). You may not be able to cancel these service-related announcements that are not promotional in nature.
|
||||
|
||||
Finally, you must keep your account and password information confidential. In any case, please keep it carefully and properly.
|
||||
|
||||
9. Application of law and jurisdiction
|
||||
|
||||
If there is a dispute, the two parties will resolve the dispute through negotiation; if the two parties cannot resolve the dispute through negotiation, both parties agree that the China International Economic and Trade Arbitration Commission ("CIETAC") will conduct arbitration in Beijing, China in accordance with CIETAC's effective arbitration rules and applicable laws. The language of the arbitration It is in Chinese and will be heard by 3 arbitrators.
|
||||
|
||||
10. How to contact us
|
||||
|
||||
The contact address of MianYang TanCloud Technology Co., Ltd. is: No.35, Mian'an Road, FuCheng District, Mianyang City, Sichuan Province. We will protect your personal information in accordance with this policy.
|
||||
|
||||
We have designated personal information protection personnel, if you have complaints and reports about personal information security, or you have any questions, comments or suggestions about this policy, your personal information related matters, and privacy measures related to this policy or TanCloud If you have any questions, please contact us: Tel: 18781603458; Email address: gongchao@tancloud.cn.
|
||||
|
||||
Under normal circumstances, we will reply within fifteen days from the date of receiving your questions, comments or suggestions.
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
id: private
|
||||
title: 私有化部署
|
||||
sidebar_label: 私有化部署
|
||||
---
|
||||
如果您的团队想私有化部署此监控系统,目前我们提供两种方案。
|
||||
|
||||
#### 社区版监控产品HertzBeat(完全免费)
|
||||
|
||||
我们提供社区版监控产品 HertzBeat, 可以直接参考[HertzBeat部署文档](/docs)下载部署, 对个人或企业完全免费。
|
||||
安装部署过程中遇到的问题可以通过[社区,微信群,QQ群等](/docs/others/contact)反馈交流学习。
|
||||
我们也提供有偿远程安装部署服务。
|
||||
|
||||
#### HertzBeat的集群SAAS版本-TanCloud(付费)
|
||||
|
||||
此版本即[TanCloud官网](https://console.tancloud.cn)环境对应版本,对比HertzBeat拥有集群,用户,租户等功能,适合中大型团队企业。
|
||||
此版本为付费版本,关于TanCloud私有化部署方案及价格,请加我们微信 tomsun28 咨询,加微信请备注:私有化+团队名
|
||||
@@ -0,0 +1,19 @@
|
||||
---
|
||||
id: resource
|
||||
title: 相关资源
|
||||
sidebar_label: 相关资源
|
||||
---
|
||||
|
||||
## 图标资源
|
||||
|
||||
### TANCLOUD-HertzBeat LOGO
|
||||
|
||||

|
||||
|
||||
下载: [SVG](https://gitee.com/dromara/hertzbeat/raw/master/home/static/img/tancloud-logo.svg) [JPG](https://gitee.com/dromara/hertzbeat/raw/master/home/static/img/tancloud-logo.jpg)
|
||||
|
||||
### TANCLOUD 品牌 LOGO
|
||||
|
||||

|
||||
|
||||
下载: [SVG](https://gitee.com/dromara/hertzbeat/raw/master/home/static/img/tancloud-brand.svg) [JPG](https://gitee.com/dromara/hertzbeat/raw/master/home/static/img/tancloud-brand.jpg)
|
||||
@@ -0,0 +1,235 @@
|
||||
---
|
||||
id: service
|
||||
title: TanCloud 通用服务条款 / TanCloud Subscription Agreement
|
||||
sidebar_label: 通用服务条款
|
||||
---
|
||||
|
||||
> 本版更新日期:2022 年 02 月 17 日
|
||||
|
||||
欢迎您与绵阳探云科技科技有限公司(以下简称“TanCloud”)共同签署本《TanCloud 产品服务协议》(下称“本协议”)并使用 TanCloud 服务!
|
||||
|
||||
协议中条款前所列索引关键词仅为帮助您理解该条款表达的主旨之用,不影响或限制本协议条款的含义或解释。为维护您自身权益,建议您仔细阅读各条款具体表述。
|
||||
|
||||
【审慎阅读】您在同意本协议之前,应当认真阅读本协议。请您务必审慎阅读、充分理解各条款的内容,特别是免除或者限制责任的条款、法律适用和争议解决条款,这些条款将以粗体下划线标识,您应重点阅读。如您对协议有任何疑问,可以向客服和相关业务部门进行咨询。
|
||||
|
||||
【签约动作】当您阅读并点击同意本协议或以其他方式选择接受本协议后,即表示您已充分阅读、理解并接受本协议的全部内容,并与TanCloud达成一致。本协议自您通过网络页面点击确认或以其他方式选择接受本协议之日起成立。阅读本协议的过程中,如果您不同意本协议或其中任何条款约定,请勿进行签约动作。
|
||||
|
||||
通用服务条款
|
||||
1. 签约主体及协议范围
|
||||
本服务协议是您与绵阳探云科技科技有限公司就您使用 TanCloud 服务所签署的服务协议。
|
||||
|
||||
2. 服务内容
|
||||
本条款中“服务”指:TanCloud 服务 tancloud.cn 网站和客户端(以下单独或统称“TanCloud”)所展示的、您申请订购且 TanCloud 同意向您提供的服务
|
||||
|
||||
3. 服务费用
|
||||
3.1. 服务费用将在您订购页面予以列明公示,您可自行选择具体服务类型并按列明的价格予以支付。TanCloud 仅供选择先付费的服务。
|
||||
|
||||
3.2. 先付费:
|
||||
|
||||
3.2.1. 在您付费之后,TanCloud 才开始为您提供服务。您未在下单后立即付费的,订单会失效,订单失效后 TanCloud 与您就服务所达成的合意失效。
|
||||
|
||||
3.2.2. 服务期满双方愿意继续合作的,您至少应在服务期满前7天内支付续费款项,以使服务得以继续进行。
|
||||
|
||||
3.3. TanCloud 保留在您未按照约定支付全部费用之前不向您提供服务和/或技术支持,或者终止服务和/或技术支持的权利。同时,TanCloud 保留对您的欠费要求您按日承担万分之五的违约金以及追究其他法律责任的权利。
|
||||
|
||||
3.4. 您完全理解 TanCloud 价格体系中所有的赠送服务项目或优惠活动均为 TanCloud 在正常服务价格之外的一次性特别优惠,赠送的服务项目或优惠活动不可折价、冲抵服务价格。
|
||||
|
||||
4. 您的权利和义务
|
||||
4.1. 成功订购服务后,您有权要求 TanCloud 按照本服务协议以及 TanCloud 网站相关页面所展示的服务说明、技术规范等内容向您提供服务。
|
||||
|
||||
4.2. 您订购 TanCloud 的服务后,您可享受免费的售后服务。除此之外 TanCloud 并提供其他付费的技术服务。
|
||||
|
||||
4.3. 您应按照 TanCloud 的网站页面提示及本服务协议的约定支付相应服务费用。
|
||||
|
||||
4.4. 就 TanCloud 服务的使用应符合 TanCloud 的《服务使用规则》以及本服务协议。
|
||||
|
||||
4.5. 您对自己存放在 TanCloud 云平台上的数据以及进入和管理 TanCloud 云平台上各类产品与服务的口令、密码的完整性和保密性负责。因您维护不当或保密不当致使上述数据、口令、密码等丢失或泄漏所引起的损失和后果均由您承担。
|
||||
|
||||
4.6. 您须依照《网络安全法》、《互联网信息服务管理办法》等法律法规的规定保留自己网站的访问日志记录,包括发布的信息内容及其发布时间、互联网地址(IP)、域名等,国家有关机关依法查询时应配合提供。您将承担未按规定保留相关记录而引起的相应法律责任。
|
||||
|
||||
4.7. 为了数据的安全,您应负责您数据的备份工作。 TanCloud 的产品或服务可能会为您配置数据备份的功能或工具,您负责操作以完成备份。
|
||||
|
||||
4.8. 您应对您的用户业务数据的来源及内容负责,TanCloud 提示您谨慎判断数据来源及内容的合法性。您将承担因您的用户业务数据内容违反法律法规、部门规章或国家政策而造成的相应结果及责任。
|
||||
|
||||
4.9. 您理解并同意,中华人民共和国的国家秘密受法律保护,您有保守中华人民共和国的国家秘密的义务;您使用 TanCloud 服务应遵守相关保密法律法规的要求,并不得危害中华人民共和国国家秘密的安全。
|
||||
|
||||
4.10. 您还应仔细阅读并遵守 TanCloud 在网站页面上展示的相应服务说明、技术规范、使用流程、操作文档等内容(以上简称“操作指引”),依照相关操作指引进行操作。您将承担违反相关操作指引所引起的后果;同时,TanCloud 郑重提示您,请把握风险谨慎操作。
|
||||
|
||||
5. TanCloud 的权利、义务
|
||||
5.1. TanCloud 应按照约定提供服务。
|
||||
|
||||
5.2. 服务期限内,TanCloud 将为您提供如下售后服务:
|
||||
|
||||
5.2.1. TanCloud 将提供 7×24 企业微信服务群以及在线工单咨询服务,解答您在使用中的问题;
|
||||
|
||||
5.2.2. TanCloud 将为您提供故障支持服务,您应通过在线工单申报故障; TanCloud 将及时就您非人为操作所出现的故障提供支持,但因您的人为原因和/或不可抗力、以及其他非 TanCloud 控制范围内的事项除外。
|
||||
|
||||
5.3. 您还可通过 TanCloud 获得其他付费的售后服务,具体详见 TanCloud 的网站相关页面的收费售后服务内容。
|
||||
|
||||
5.4. TanCloud 仅负责 TanCloud 提供的软件的运营维护,TanCloud 软件之外部分(如您的身份源、数据源、应用程序)由您负责。
|
||||
|
||||
5.5. 您了解 TanCloud 无法保证其所提供的服务毫无瑕疵(如 TanCloud 安全产品并不能保证您的硬件或软件的绝对安全),但 TanCloud 承诺不断提升服务质量及服务水平。所以您同意:即使 TanCloud 提供的服务存在瑕疵,但上述瑕疵是当时行业技术水平所无法避免的,其将不被视为 TanCloud 违约。您同意和 TanCloud 一同合作解决上述瑕疵问题。
|
||||
|
||||
5.6. TanCloud 的某些服务可能具备账户授权管理功能,即您可将您对服务的全部或部分操作权限授权给您指定的一个或多个被授权账户,此种情况下,任一被授权账户下进行的所有操作行为,均将被视为您通过本人账户所进行的行为,都将由您承担相应的责任和由此产生的服务费用
|
||||
|
||||
5.7. 您理解并认可,TanCloud 将为您提供基于某些服务的安全协议(如 LDAP、SAML、OIDC)以及管理与监控的相关功能及服务(如“用户概览”),尽管 TanCloud 对该等服务经过详细的测试,但并不能保证其与所有的软硬件系统完全兼容,亦不能保证其软件及服务的完全准确性。如果出现不兼容及软件错误的情况,您应立即关闭或停止使用相关功能,并及时联系 TanCloud ,获得技术支持。
|
||||
|
||||
5.8. 您应理解并同意,TanCloud 在对服务进行公测、邀测等您免费试(使)用服务期间或免费服务额度内,虽然 TanCloud 会对服务可用性和可靠性提供支撑,但将不对任何服务可用性、可靠性做出承诺,TanCloud 亦不对您使用或不能使用 TanCloud 服务的工作或结果承担任何责任。 TanCloud 保留日后对该等免费服务收取费用的可能性,收取服务费用之前,TanCloud 将另行通知您。
|
||||
|
||||
6. 用户业务数据
|
||||
6.1. TanCloud 理解并认可,您通过 TanCloud 提供的服务,加工、存储、上传、下载、分发以及通过其他方式处理的数据,均为您的用户业务数据,您完全拥有您的用户业务数据。
|
||||
|
||||
6.2. 就用户业务数据,TanCloud 除执行您的服务要求外,不进行任何未获授权的使用及披露;但以下情形除外:
|
||||
|
||||
6.2.1. 在国家有关机关依法查询或调阅用户业务数据时,TanCloud 具有按照相关法律法规或政策文件要求提供配合,并向第三方或者行政、司法等机构披露的义务;
|
||||
|
||||
6.2.2. 您和 TanCloud 另行协商一致。
|
||||
|
||||
6.3. 您可自行对您的用户业务数据进行删除、更改等操作。如您释放服务或删除数据的,TanCloud 将删除您的数据,按照您的指令不再保留该等数据。就数据的删除、更改等操作,您应谨慎操作
|
||||
|
||||
6.4. 当服务期届满、服务提前终止(包括双方协商一致提前终止,其他原因导致的提前终止等)或您发生欠费时,除法律法规明确规定、主管部门要求或双方另有约定外,TanCloud 仅在一定的缓冲期(以您所订购的服务适用的专有条款、产品文档、服务说明等所载明的时限为准)内继续存储您的用户业务数据(如有),缓冲期届满 TanCloud 将删除所有用户业务数据,包括所有缓存或者备份的副本,不再保留您的任何用户业务数据。
|
||||
|
||||
6.5. 用户业务数据一经删除,即不可恢复;您应承担数据因此被删除所引发的后果和责任,您理解并同意,TanCloud 没有继续保留、导出或者返还用户业务数据的义务。
|
||||
|
||||
6.6. TanCloud 恪守对用户的安全承诺,根据适用的法律保护用户存储在 TanCloud 数据中心的数据。
|
||||
|
||||
7. 知识产权
|
||||
7.1. 在本协议项下一方向对方提供的任何资料、技术或技术支持、软件、服务等的知识产权均属于提供一方或其合法权利人所有; 除提供方或合法权利人明示同意外,另一方无权复制、传播、转让、许可或提供他人使用上述知识成果,否则应承担相应的责任。
|
||||
|
||||
7.2. 您应保证提交 TanCloud 的素材、对 TanCloud 服务的使用及使用 TanCloud 服务所产生的成果未侵犯任何第三方的合法权益。 TanCloud 应保证向您提供的服务未侵犯任何第三方的合法权益。
|
||||
|
||||
7.3. 如果第三方机构或个人对您使用 TanCloud 服务所涉及的相关素材的知识产权归属提出质疑或投诉,或对您使用的 TanCloud 服务的知识产权的归属提出质疑或投诉,您和 TanCloud 均有责任出具相关知识产权证明材料,并配合对方的相关投诉处理工作。对于因此引起的索赔、诉讼或可能向其提起诉讼,违约方应负责解决,承担费用和损失,以及使另一方免责。
|
||||
|
||||
8. 保密条款
|
||||
8.1. 本服务条款所称保密信息,是指一方(以下简称“接受方”)从对方(以下简称“披露方”)取得的、获知的、或因双方履行本协议而产生的商业秘密(包括财务秘密)、技术秘密、经营诀窍和(或)其他应予保密的信息和资料(包括产品资料,产品计划,价格,财务及营销规划,业务战略,客户信息,客户数据,研发,软件,硬件,API应用数据接口,技术说明,设计,特殊公式,特殊算法等),无论上述信息和资料以何种形式或载于何种载体,无论披露方在披露时是否以口头、图像或书面等方式表明其具有保密性。
|
||||
|
||||
8.2. 双方应采取适当措施妥善保存对方提供的保密信息,措施的审慎程度不少于其保护自身的保密信息时的审慎程度。双方仅能将保密信息用于与本协议项下的有关用途或目的。
|
||||
|
||||
8.3. 双方保证保密信息仅可在各自一方从事该业务的负责人和雇员范围内知悉,并严格限制接触上述保密信息的员工遵守本条之保密义务。
|
||||
|
||||
8.4. 本条上述限制条款不适用于以下情况:
|
||||
|
||||
8.4.1. 在签署本协议之时或之前,该保密信息已以合法方式属接受方所有;
|
||||
|
||||
8.4.2. 保密信息在通知给接受方时,已经公开或能从公开领域获得;
|
||||
|
||||
8.4.3. 保密信息是接受方从与其没有保密或不透露义务的第三方获得的;
|
||||
|
||||
8.4.4. 在不违反本协议约定责任的前提下,该保密信息已经公开或能从公开领域获得;
|
||||
|
||||
8.4.5. 该保密信息是接受方或其关联或附属公司独立开发,而且未从通知方或其关联或附属公司获得的信息中获益;
|
||||
|
||||
8.4.6. 接受方应法院或其它法律、行政管理部门要求(通过口头提问、询问、要求资料或文件、传唤、民事或刑事调查或其他程序)因而透露保密信息;
|
||||
|
||||
8.4.7. 接受方为向行政管理部门、行业协会等机构申请某项业务资质、获得某项认定、或符合国家、行业标准/认证,需结合对方情况向前述机构提交材料或进行说明的而披露的信息,在该等情况下,接受方应秉持必要情况下最少披露原则及要求因此获知保密信息的机构按不低于本协议的标准予以保密。
|
||||
|
||||
8.5. 您和 TanCloud 都应尽最大的努力保护上述保密信息不被泄露。一旦发现有上述保密信息泄露事件,双方应合作采取一切合理措施避免或者减轻损害后果的产生。如因此给对方造成损失的,应赔偿因此给对方造成的直接经济损失。
|
||||
|
||||
9. 服务的开通、终止与变更
|
||||
9.1. 先付费的服务:
|
||||
|
||||
9.1.1. 您付费后服务即开通,开通后您获得 TanCloud 向您发送的登录、使用服务的密钥、口令即可使用服务,服务期限自开通之时起算(而非自您获得登录、使用服务的密钥、口令时起算);
|
||||
|
||||
9.1.2. 以包年包月等固定期限形式售卖的服务,服务期限至订购的期限届满为止;以资源包(或套餐包)形式售卖的服务,服务期限则至您订购的资源包服务期限到期或资源包中的服务被使用完毕为止(以前述二者早发生为准);
|
||||
|
||||
9.1.3. 您应在服务期限内将资源包的服务数量使用完毕,如资源包的服务期限届满,您已订购但未使用完毕的服务将被作废且 TanCloud 将不提供其他替代或补充。
|
||||
|
||||
9.1.4. 您对于服务的使用将优先消耗订购的资源包,除法定及双方另行约定外,如资源包中的各项服务使用完毕或者服务期限到期,且您未继续订购资源包服务但持续使用此项服务的,TanCloud 将视为您使用 TanCloud 以后付费形式售卖的该服务(如有),TanCloud 将持续计费并根据计费结果予以扣划服务费用。
|
||||
|
||||
9.2. 发生下列情形之一的,服务期限提前终止:
|
||||
|
||||
9.2.1. 双方协商一致提前终止的;
|
||||
|
||||
9.2.2. 您严重违反本协议(包括,您严重违反相关法律法规规定,或您严重违反本协议项下之任一承诺内容等),TanCloud 有权提前终止服务直至清除您的全部数据;
|
||||
|
||||
9.2.3. 您理解并充分认可,虽然 TanCloud 已经建立(并将根据技术的发展不断完善)必要的技术措施来防御包括计算机病毒、网络入侵和攻击破坏(包括DDoS)等危害网络安全事项或行为(以下统称该等行为),但鉴于网络安全技术的局限性、相对性以及该等行为的不可预见性,因此如因您网站遭遇该等行为而给 TanCloud 或者 TanCloud 的其他网络或服务器(包括本地及外地和国际的网络、服务器等)带来危害,或影响 TanCloud 与国际互联网或者 TanCloud 与特定网络、服务器及 TanCloud 内部的通畅联系,TanCloud 可决定暂停或终止服务。如果终止服务的,将按照实际提供服务月份计算(不足一个月的按天计)服务费用,将剩余款项(如有)返还。
|
||||
|
||||
9.2.4. TanCloud 可提前30天在 TanCloud 网站上通告或给您发网站内通知或书面通知的方式终止本服务服务协议;届时 TanCloud 应将您已预付但未消费的款项退还至您的 TanCloud 账户。
|
||||
|
||||
9.3. 您理解并认可,为技术升级、服务体系升级、或因经营策略调整或配合国家重大技术、法规政策等变化,TanCloud 不保证永久的提供某种服务,并有权变更所提供服务的形式、规格或其他方面(如服务的价格和计费模式),在终止该种服务或进行此种变更前,TanCloud 将尽最大努力且提前以网站公告、站内信、邮件或短信等一种或多种方式进行事先通知。
|
||||
|
||||
10. 违约责任
|
||||
10.1. 您违反本协议中的承诺、保证条款、服务使用规则或义务的任一内容,或 TanCloud 根据其判断认为您的使用行为存在异常的,TanCloud 均有权就其情节,根据独立判断并单方采取以下措施中的一种或多种:(1)限制、中止使用服务;(2)终止提供服务,终止本协议;(3)追究您的法律责任;(4)其他 TanCloud 认为适合的处理措施。 TanCloud 依据前述约定采取中止服务、终止服务等措施而造成的用户损失将由您承担。
|
||||
|
||||
10.2. 如因您违反有关法律法规或者本协议、相关规则之规定,使 TanCloud 遭受任何损失、受到其他用户、任何第三方的索赔或任何行政管理部门的处罚,您应对 TanCloud、其他用户或相关第三方的实际损失进行全额赔偿,包括合理的律师费用。
|
||||
|
||||
10.3. 您理解且同意,鉴于计算机、互联网的特殊性,下述情况不属于 TanCloud 违约:
|
||||
|
||||
10.3.1. TanCloud 在进行系统及服务器配置、维护、升级时,需要短时间中断服务;
|
||||
|
||||
10.3.2. 由于 Internet 上的通路阻塞造成您网站访问速度下降。
|
||||
|
||||
10.4. 如果因 TanCloud 原因造成您连续 72 小时不能正常使用服务的,您可终止接受服务,但非 TanCloud 控制之内的原因引起的除外。
|
||||
|
||||
10.5. 在任何情况下,TanCloud 均不对任何间接性、后果性、惩戒性、偶然性、特殊性的损害,包括您使用 TanCloud 服务而遭受的利润损失承担责任(即使您已被告知该等损失的可能性)。
|
||||
|
||||
10.6. 在法律允许的情况下,TanCloud 在本协议项下所承担的损失赔偿责任不超过就该服务过往 12 个月所缴纳的服务费用的总和。
|
||||
|
||||
11. 不可抗力
|
||||
11.1. 因不可抗力或者其他意外事件,使得本服务条款的履行不可能、不必要或者无意义的,遭受不可抗力、意外事件的一方不承担责任。
|
||||
|
||||
11.2. 不可抗力、意外事件是指不能预见、不能克服并不能避免且对一方或双方当事人造成重大影响的客观事件,包括自然灾害如洪水、地震、瘟疫流行等以及社会事件如战争、动乱、政府行为、电信主干线路中断、黑客、网路堵塞、电信部门技术调整和政府管制等。
|
||||
|
||||
12. 法律适用及争议解决
|
||||
12.1. 本协议之订立、生效、解释、修订、补充、终止、执行与争议解决均适用中华人民共和国大陆法律。
|
||||
|
||||
12.2. 您因使用 TanCloud 服务所产生及与 TanCloud 服务有关的争议,由 TanCloud 与您协商解决。协商不成时,任何一方均可向北京市海淀区人民法院提起诉讼。
|
||||
|
||||
13. 附则
|
||||
13.1. 本协议的附件,以及 TanCloud 在 TanCloud 网站相关页面上的服务说明、价格说明和您确认同意的订购页面(包括产品的专用条款、服务说明、操作文档等)均为本协议不可分割的一部分。如遇不一致之处,以(1)服务说明、价格说明、其他订购页面,(2)专用条款和附件,(3)本协议通用条款的顺序予以适用。
|
||||
|
||||
13.2. 如本协议内容发生变动,TanCloud 应通过提前30天在 TanCloud 网站的适当版面公告向您提示修改内容;如您继续使用 TanCloud 服务,则视为您接受 TanCloud 所做的相关修改。
|
||||
|
||||
13.3. TanCloud 有权经提前通知将本协议的权利义务全部或者部分转移给 TanCloud 的关联公司。
|
||||
|
||||
13.4. TanCloud 于您过失或违约时放弃本协议规定的权利,不应视为其对您的其他或以后同类之过失或违约行为弃权。
|
||||
|
||||
13.5. 本协议任一条款被视为废止、无效或不可执行,该条应视为可分的且并不影响本协议其余条款的有效性及可执行性。
|
||||
|
||||
13.6. 本协议项下之保证条款、保密条款、知识产权条款、法律适用及争议解决条款等内容,不因本协议的终止而失效。
|
||||
|
||||
TanCloud Subscription Agreement
|
||||
1. Service and Professional Services.
|
||||
1.1. TanCloud’s Obligations.
|
||||
TanCloud shall make the Service available to Customer pursuant to this Agreement and the applicable Order Form during the Term, and grants to Customer a limited, non-sublicensable, non-exclusive, non-transferable (except as expressly permitted in Section 12.1) right during the Term to allow its Users to access and use the Service in accordance with the Documentation, solely for Customer’s business purposes. Customer agrees that its purchase of the Service or the Professional Services is neither contingent upon the delivery of any future functionality or features nor dependent upon any oral or written public comments made by TanCloud with respect to future functionality or features. TanCloud will comply with all applicable Laws in its provision of the Service. TanCloud shall use commercially reasonable efforts to make the Service available to Customer 24 hours a day, 7 days a week, every day of each year (except for any unavailability caused by a Force Majeure event).
|
||||
|
||||
1.2. Customer’s Obligations.
|
||||
a) Customer is responsible for all activities conducted under its and its Users’ logins to the Service. Customer shall use the Service in compliance with this Agreement, the applicable Order Forms, Documentation, and all applicable Laws and shall not: (i) copy, rent, sell, lease, distribute, pledge, assign, or otherwise transfer, or encumber rights to the Service, or any part thereof, or make it available to anyone other than its Users; (ii) send or store in the Service any personal health data, credit card data, personal financial data or other such sensitive data; (iii) send or store infringing or unlawful material in connection with the Service; (iv) send or store Malicious Code to the Service; (v) attempt to gain unauthorized access to, or disrupt the integrity or performance of, the Service or the data contained therein; (vi) modify, copy or create derivative works based on the Service, or any portion thereof; (vii) access the Service for the purpose of building a competitive product or service or copying its features or user interface; or (viii) delete, alter, add to or fail to reproduce in and on the Service the name of TanCloud and any copyright or other notices appearing in or on the Service or which may be required by TanCloud at any time.
|
||||
|
||||
b) Any use of the Service in breach of this Agreement, Documentation or Order Forms by Customer or Users that in TanCloud’s judgment threatens the security, integrity or availability of the Service may result in TanCloud’s immediate suspension of Customer’s access to the Service; however, TanCloud will use commercially reasonable efforts under the circumstances to provide Customer with notice and an opportunity to remedy such violation or threat prior to such suspension.
|
||||
|
||||
1.3. Professional Service (Custom Development Engineer).
|
||||
Customer and TanCloud may enter into Statements of Work that describe the specific Professional Services to be performed by TanCloud. If applicable, while on Customer premises for Professional Services, TanCloud personnel shall comply with reasonable Customer rules and regulations regarding safety, and conduct made known to TanCloud, and will, at Customer’s reasonable request, promptly remove from the project any TanCloud personnel not following such rules and regulations.
|
||||
|
||||
2. Security and Support.
|
||||
2.1. Security.
|
||||
TanCloud shall maintain appropriate administrative, physical, and technical safeguards to protect the security and integrity of the Service and the Customer Data.
|
||||
|
||||
2.2. Support Services.
|
||||
During the Term, TanCloud shall provide Support Services to Customer in accordance with TanCloud’s then-current support policy, and as identified in an Order Form. In the event that the level of support is not identified in the Order Form, Customer shall receive a “Developer” level of support that is included in the Service at no additional cost. Any updates or modifications to the Support Services will not materially diminish TanCloud’s responsibilities under the support policy during the Term.
|
||||
|
||||
2.3. Confidentiality.
|
||||
Each party agrees to protect the Confidential Information (as defined below) of the other party in the same manner that it protects the confidentiality of its own proprietary and confidential information of like kind, but in no event using less than a reasonable standard of care. A party shall not: (i) disclose or use any Confidential Information of the other party for any purpose outside the scope of this Agreement, except with the disclosing party’s prior written permission and (ii) disclose or make the other party’s Confidential Information available to any party, except those of its employees, contractors, and agents that have signed an agreement containing disclosure and use provisions substantially similar to those set forth herein and have a “need to know” in order to carry out the purpose of this Agreement. Confidential Information shall not include any information that (a) is or becomes generally known to the public, other than as a result of the act or omission of the receiving party; (b) were rightfully known to a party prior to its disclosure by the other party without breach of any obligation owed to the other party; (c) is lawfully received from a third party without breach of any obligation owed to the other party; or (d) was independently developed by a party without breach of any obligation owed to the other party. If a party is compelled by law to disclose Confidential Information of the other party, it shall provide prior notice of such compelled disclosure (to the extent legally permitted) and reasonable assistance, at the other party's cost, if the other party wishes to contest the disclosure. Due to the unique nature of the parties’ Confidential Information disclosed hereunder, there can be no adequate remedy at law for a party’s breach of its obligations hereunder, and any such breach may result in irreparable harm to the non-breaching party. Therefore, upon any such breach or threat thereof, the party alleging breach shall be entitled to seek injunctive and other appropriate equitable relief in addition to any other remedies available to it.
|
||||
|
||||
4. Ownership, Feedback, and Statistical Usage Data.
|
||||
4.1. Customer Data.
|
||||
As between TanCloud and Customer, Customer owns its Customer Data. Customer grants to TanCloud, its Affiliates and applicable contractors a worldwide, limited-term license to host, copy, transmit and display Customer Data, as reasonably necessary for TanCloud to provide the Service in accordance with this Agreement. Subject to the limited licenses granted herein, TanCloud acquires no right, title or interest in any Customer Data. Customer shall be responsible for the accuracy, quality and legality of Customer Data and the means by which Customer acquired Customer Data.
|
||||
|
||||
4.2. TanCloud Ownership of the Service.
|
||||
Except for the rights expressly granted under this Agreement, TanCloud and its licensors retain all right, title, and interest in and to the Service, Documentation and Professional Services, including all related intellectual property rights inherent therein. If Customer purchases Professional Services, TanCloud grants to Customer a worldwide, non-exclusive, non-transferable (except as expressly permitted in Section 12.1), non-sublicensable right to use the Professional Services solely for Customer’s use with the Service. No rights are granted to Customer hereunder other than as expressly set forth in this Agreement.
|
||||
|
||||
4.3. Feedback.
|
||||
TanCloud shall have a royalty-free, worldwide, transferable, sublicenseable, irrevocable, perpetual license to use or incorporate into its products and services any suggestions, ideas, enhancement requests, feedback, recommendations or other information provided by Customer or its Users relating to the features, functionality or operation of the Service, or the Professional Services (“Feedback”). TanCloud shall have no obligation to use Feedback, and Customer shall have no obligation to provide Feedback.
|
||||
|
||||
4.4. Statistical Usage Data.
|
||||
TanCloud owns the statistical usage data derived from the operation of the Service, including data regarding web applications utilized in connection with the Service, configurations, log data, and the performance results for the Service (“Usage Data”). Nothing herein shall be construed as prohibiting TanCloud from utilizing the Usage Data for purposes of operating TanCloud’s business; provided that the Usage Data shall be de-identified and presented in the aggregate so that it will not disclose the identity of Customer or any User(s) to any third party.
|
||||
|
||||
5. Fees, Expenses, and Taxes.
|
||||
5.1. Fees.
|
||||
Customer agrees to pay TanCloud all fees set forth in the oder form in accordance with this Agreement and the Order Form. If not otherwise specified on an Order Form, all such Fees (except Fees subject to a good faith dispute) will be due within thirty (30) days of date of invoice. Except as otherwise specifically provided in this Agreement, all Fees paid and payable to TanCloud hereunder are non- cancelable and non-refundable. All Fees are based on access rights acquired and not actual usage. If Customer fails to pay any amounts due under this Agreement by the due date, in addition to any other rights or remedies it may have under this Agreement or by matter of law, (i) TanCloud reserves the right to suspend the Service upon thirty (30) days written notice, until such amounts are paid in full, and (ii) TanCloud will have the right to charge interest at a rate equal to the lesser of one and one-half percent (1.5%) per month or the maximum rate permitted by applicable Law until Customer pays all amounts due; provided that TanCloud will not exercise its right to charge interest if the applicable charges are under reasonable and good faith dispute and Customer is cooperating diligently to resolve the issue.
|
||||
|
||||
5.2. Expenses.
|
||||
Unless otherwise specified in the applicable Statement of Work, upon invoice from TanCloud, Customer will reimburse TanCloud for all pre-approved, reasonable expenses incurred by TanCloud while performing the Professional Services, including without limitation, transportation services, lodging, and meal and out-of-pocket expenses related to the provision of the Professional Services. TanCloud will include reasonably detailed documentation of all such expenses with each related invoice.
|
||||
|
||||
5.3. Taxes.
|
||||
Fees do not include and may not be reduced to account for any taxes including any local, state, federal or foreign taxes, levies, duties or similar governmental assessments of any nature, including value-added, use or withholding taxes (collectively, “Taxes”). Customer is responsible for paying all Taxes associated with its purchases hereunder (excluding taxes based on TanCloud’s net income or property) unless Customer provides TanCloud with a valid tax exemption certificate authorized by the appropriate taxing authority.
|
||||
@@ -0,0 +1,20 @@
|
||||
---
|
||||
id: sponsor
|
||||
title: 赞助
|
||||
sidebar_label: 赞助
|
||||
---
|
||||
|
||||
|
||||
**HertzBeat对个人或企业完全免费,如果您喜欢这个项目并且愿意提供帮助,请我们喝杯咖啡吧**
|
||||
|
||||
### 微信支付宝
|
||||
|
||||

|
||||
|
||||
|
||||
Thanks [吉实信息(构建全新的微波+光交易网络)](https://www.flarespeed.com) sponsored server node.
|
||||
Thanks [天上云计算(全新智慧上云)](https://www.tsyvps.com/aff/BZBEGYLX) sponsored server node.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ sidebar_label: Docker方式部署
|
||||
2. 拉取HertzBeat Docker镜像
|
||||
镜像版本TAG可查看[官方镜像仓库](https://hub.docker.com/r/tancloud/hertzbeat/tags)
|
||||
```
|
||||
$ docker pull tancloud/hertzbeat:latest
|
||||
$ docker pull tancloud/hertzbeat:[版本tag]
|
||||
```
|
||||
3. 配置HertzBeat的配置文件
|
||||
在主机目录下创建application.yml,eg:/opt/application.yml
|
||||
@@ -39,19 +39,112 @@ sidebar_label: Docker方式部署
|
||||
|
||||
```
|
||||
|
||||
4. 启动HertzBeat Docker容器
|
||||
4. 配置用户配置文件(非必须,配置账户需要)
|
||||
HertzBeat默认内置三个用户账户,分别为 admin/admin tom/tom@123 lili/lili
|
||||
若需要新增删除修改账户或密码,可以通过配置 `sureness.yml` 实现,若无此需求可忽略此步骤
|
||||
在主机目录下创建sureness.yml,eg:/opt/sureness.yml
|
||||
配置文件内容参考 项目仓库[/script/sureness.yml](https://gitee.com/dromara/hertzbeat/blob/master/script/sureness.yml)
|
||||
|
||||
```yaml
|
||||
|
||||
resourceRole:
|
||||
- /account/auth/refresh===post===[role1,role2,role3,role4]
|
||||
|
||||
excludedResource:
|
||||
- /account/auth/**===*
|
||||
- /===get
|
||||
- /i18n/**===get
|
||||
- /apps/hierarchy===get
|
||||
- /console/**===get
|
||||
- /**/*.html===get
|
||||
- /**/*.js===get
|
||||
- /**/*.css===get
|
||||
- /**/*.ico===get
|
||||
- /**/*.ttf===get
|
||||
- /**/*.png===get
|
||||
- /**/*.gif===get
|
||||
- /**/*.png===*
|
||||
- /swagger-resources/**===get
|
||||
- /v2/api-docs===get
|
||||
- /v3/api-docs===get
|
||||
|
||||
# 用户账户信息
|
||||
# 下面有 admin tom lili 三个账户
|
||||
# eg: admin 拥有[role1,role2]角色,密码为admin
|
||||
# eg: tom 拥有[role1,role2,role3],密码为tom@123
|
||||
# eg: lili 拥有[role1,role2],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
|
||||
account:
|
||||
- appId: admin
|
||||
credential: admin
|
||||
role: [role1,role2]
|
||||
- appId: tom
|
||||
credential: tom@123
|
||||
role: [role1,role2,role3]
|
||||
- appId: lili
|
||||
# 注意 Digest认证不支持加盐加密的密码账户
|
||||
# 加盐加密的密码,通过 MD5(password+salt)计算
|
||||
# 此账户的原始密码为 lili
|
||||
credential: 1A676730B0C7F54654B0E09184448289
|
||||
salt: 123
|
||||
role: [role1,role2]
|
||||
```
|
||||
|
||||
修改sureness.yml的如下**部分参数**:**[注意⚠️sureness配置的其它默认参数需保留]**
|
||||
|
||||
```yaml
|
||||
|
||||
# 用户账户信息
|
||||
# 下面有 admin tom lili 三个账户
|
||||
# eg: admin 拥有[role1,role2]角色,密码为admin
|
||||
# eg: tom 拥有[role1,role2,role3],密码为tom@123
|
||||
# eg: lili 拥有[role1,role2],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
|
||||
account:
|
||||
- appId: admin
|
||||
credential: admin
|
||||
role: [role1,role2]
|
||||
- appId: tom
|
||||
credential: tom@123
|
||||
role: [role1,role2,role3]
|
||||
- appId: lili
|
||||
# 注意 Digest认证不支持加盐加密的密码账户
|
||||
# 加盐加密的密码,通过 MD5(password+salt)计算
|
||||
# 此账户的原始密码为 lili
|
||||
credential: 1A676730B0C7F54654B0E09184448289
|
||||
salt: 123
|
||||
role: [role1,role2]
|
||||
```
|
||||
|
||||
6. 启动HertzBeat Docker容器
|
||||
```
|
||||
$ docker run -d -p 1157:1157 -v /opt/application.yml:/opt/hertzbeat/config/application.yml --name hertzbeat tancloud/hertzbeat:latest
|
||||
$ docker run -d -p 1157:1157 -v /opt/application.yml:/opt/hertzbeat/config/application.yml -v /opt/sureness.yml:/opt/hertzbeat/config/sureness.yml --name hertzbeat tancloud/hertzbeat:[版本tag]
|
||||
526aa188da767ae94b244226a2b2eec2b5f17dd8eff592893d9ec0cd0f3a1ccd
|
||||
```
|
||||
这条命令启动一个运行HertzBeat的Docker容器,并且将容器的1157端口映射到宿主机的1157端口上。若宿主机已有进程占用该端口,则需要修改主机映射端口。
|
||||
- docker run -d : 通过Docker运行一个容器,使其在后台运行
|
||||
- -p 1157:1157 : 映射容器端口到主机端口
|
||||
- -v /opt/application.yml:/opt/hertzbeat/config/application.yml : 挂载上一步修改的本地配置文件到容器中,即使用本地配置文件覆盖容器配置文件。我们需要修改此配置文件的MYSQL,TDengine配置信息来连接外部服务。
|
||||
- -v /opt/application.yml:/opt/hertzbeat/config/application.yml : 挂载上上一步修改的本地配置文件到容器中,即使用本地配置文件覆盖容器配置文件。我们需要修改此配置文件的MYSQL,TDengine配置信息来连接外部服务。
|
||||
- -v /opt/sureness.yml:/opt/hertzbeat/config/sureness.yml : (非必须)挂载上一步修改的账户配置文件到容器中,若无修改账户需求可删除此命令参数。
|
||||
- --name hertzbeat : 命名容器名称 hertzbeat
|
||||
- tancloud/hertzbeat:latest : 使用拉取的HertzBeat官方发布的应用镜像来启动容器
|
||||
|
||||
5. 开始探索HertzBeat
|
||||
浏览器访问 http://ip:1157 开始使用HertzBeat进行监控告警。
|
||||
- tancloud/hertzbeat:[版本tag] : 使用拉取的HertzBeat官方发布的应用镜像来启动容器,TAG可查看[官方镜像仓库](https://hub.docker.com/r/tancloud/hertzbeat/tags)
|
||||
|
||||
**HAVE FUN**
|
||||
7. 开始探索HertzBeat
|
||||
浏览器访问 http://ip:1157/console 开始使用HertzBeat进行监控告警,默认账户密码 admin/admin。
|
||||
|
||||
**HAVE FUN**
|
||||
|
||||
### Docker部署常见问题
|
||||
|
||||
1. **MYSQL,TDENGINE和HertzBeat都Docker部署在同一主机上,HertzBeat使用localhost或127.0.0.1连接数据库失败**
|
||||
此问题本质为Docker容器访问宿主机端口连接失败,由于docker默认网络模式为Bridge模式,其通过localhost访问不到宿主机。
|
||||
> 解决办法一:配置application.yml将数据库的连接地址由localhost修改为宿主机的对外IP
|
||||
> 解决办法二:使用Host网络模式启动Docker,即使Docker容器和宿主机共享网络 `docker run -d --network host .....`
|
||||
|
||||
2. **按照流程部署,访问 http://ip:1157/console 无界面**
|
||||
请参考下面几点排查问题:
|
||||
> 一:依赖服务MYSQL数据库,TDENGINE数据库是否已按照启动成功,对应hertzbeat数据库是否已创建,SQL脚本是否执行
|
||||
> 二:HertzBeat的配置文件 `application.yml` 里面的依赖服务IP账户密码等配置是否正确
|
||||
> 三:若都无问题可以 `docker logs hertzbeat` 查看容器日志是否有明显错误,提issue或交流群或社区反馈
|
||||
|
||||
3. **日志报错TDengine连接或插入SQL失败**
|
||||
> 一:排查配置的数据库账户密码是否正确,数据库是否创建
|
||||
> 二:若是安装包安装的TDengine2.3+,除了启动server外,还需执行 `systemctl start taosadapter` 启动 adapter
|
||||
|
||||
@@ -17,14 +17,18 @@ MYSQL是一款值得信赖的关系型数据库,HertzBeat使用其存储监控
|
||||
```
|
||||
2. Docker安装MYSQl
|
||||
```
|
||||
$ docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
|
||||
$ docker run -d --name mysql -p 3306:3306 -v /opt/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
|
||||
526aa188da767ae94b244226a2b2eec2b5f17dd8eff594533d9ec0cd0f3a1ccd
|
||||
```
|
||||
`-v /opt/data:/var/lib/mysql` 为mysql数据目录本地持久化挂载,需将`/opt/data`替换为实际本地存在的目录
|
||||
使用```$ docker ps```查看数据库是否启动成功
|
||||
|
||||
### SQL脚本执行
|
||||
1. 进入MYSQL或使用客户端连接MYSQL服务
|
||||
2. 创建名称为hertzbeat的数据库
|
||||
1. 进入MYSQL或使用客户端连接MYSQL服务
|
||||
`mysql -uroot -p123456`
|
||||
2. 创建名称为hertzbeat的数据库
|
||||
`create database hertzbeat;`
|
||||
3. 执行位于项目仓库/script/sql/目录下的数据库建表初始化脚本 [schema.sql](https://gitee.com/dromara/hertzbeat/raw/master/script/sql/schema.sql)
|
||||
`mysql -uroot -p123456 < schema.sql`
|
||||
4. 查看hertzbeat数据库是否成功建表
|
||||
|
||||
|
||||
@@ -23,9 +23,9 @@ sidebar_label: 安装包方式部署
|
||||
3. 配置HertzBeat的配置文件
|
||||
解压安装包到主机 eg: /opt/hertzbeat
|
||||
```
|
||||
$ tar zxvf hertzbeat-1.0.tar.gz
|
||||
$ tar zxvf hertzbeat-[版本号].tar.gz
|
||||
```
|
||||
修改位于 hertzbeat/config/application.yml 的配置文件
|
||||
修改位于 `hertzbeat/config/application.yml` 的配置文件
|
||||
需要替换里面的MYSQL服务和TDengine服务参数,IP端口账户密码(若使用邮件告警,需替换里面的邮件服务器参数)
|
||||
具体替换参数如下:
|
||||
```
|
||||
@@ -43,13 +43,51 @@ sidebar_label: 安装包方式部署
|
||||
spring.mail.password
|
||||
|
||||
```
|
||||
4. 配置用户配置文件(非必须,配置账户需要)
|
||||
HertzBeat默认内置三个用户账户,分别为 admin/admin tom/tom@123 lili/lili
|
||||
若需要新增删除修改账户或密码,可以通过修改位于 `hertzbeat/config/sureness.yml` 的配置文件实现,若无此需求可忽略此步骤
|
||||
修改sureness.yml的如下**部分参数**:**[注意⚠️sureness配置的其它默认参数需保留]**
|
||||
|
||||
4. 部署启动
|
||||
```yaml
|
||||
# 用户账户信息
|
||||
# 下面有 admin tom lili 三个账户
|
||||
# eg: admin 拥有[role1,role2]角色,密码为admin
|
||||
# eg: tom 拥有[role1,role2,role3],密码为tom@123
|
||||
# eg: lili 拥有[role1,role2],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
|
||||
account:
|
||||
- appId: admin
|
||||
credential: admin
|
||||
role: [role1,role2]
|
||||
- appId: tom
|
||||
credential: tom@123
|
||||
role: [role1,role2,role3]
|
||||
- appId: lili
|
||||
# 注意 Digest认证不支持加盐加密的密码账户
|
||||
# 加盐加密的密码,通过 MD5(password+salt)计算
|
||||
# 此账户的原始密码为 lili
|
||||
credential: 1A676730B0C7F54654B0E09184448289
|
||||
salt: 123
|
||||
role: [role1,role2]
|
||||
```
|
||||
|
||||
5. 部署启动
|
||||
执行位于安装目录hertzbeat/bin/下的启动脚本 startup.sh
|
||||
```
|
||||
$ ./startup.sh
|
||||
```
|
||||
5. 开始探索HertzBeat
|
||||
浏览器访问 http://ip:1157 开始使用HertzBeat进行监控告警。
|
||||
6. 开始探索HertzBeat
|
||||
浏览器访问 http://ip:1157/console 开始使用HertzBeat进行监控告警,默认账户密码 admin/admin。
|
||||
|
||||
**HAVE FUN**
|
||||
|
||||
### 安装包部署常见问题
|
||||
|
||||
1. **按照流程部署,访问 http://ip:1157/console 无界面**
|
||||
请参考下面几点排查问题:
|
||||
> 一:依赖服务MYSQL数据库,TDENGINE数据库是否已按照启动成功,对应hertzbeat数据库是否已创建,SQL脚本是否执行
|
||||
> 二:HertzBeat的配置文件 `hertzbeat/config/application.yml` 里面的依赖服务IP账户密码等配置是否正确
|
||||
> 三:若都无问题可以查看 `hertzbeat/logs/` 目录下面的运行日志是否有明显错误,提issue或交流群或社区反馈
|
||||
|
||||
2. **日志报错TDengine连接或插入SQL失败**
|
||||
> 一:排查配置的数据库账户密码是否正确,数据库是否创建
|
||||
> 二:若是安装包安装的TDengine2.3+,除了启动server外,还需执行 `systemctl start taosadapter` 启动 adapter
|
||||
|
||||
@@ -1,46 +1,63 @@
|
||||
---
|
||||
id: quickstart
|
||||
title: 快速开始
|
||||
sidebar_label: 快速开始
|
||||
title: Quick Start
|
||||
sidebar_label: Quick Start
|
||||
---
|
||||
|
||||
### 🐕 开始使用
|
||||
### 🐕 Quick Start
|
||||
|
||||
- 如果您不想部署而是直接使用,我们提供SAAS监控云-[TanCloud探云](https://console.tancloud.cn),即刻[登录注册](https://console.tancloud.cn)免费使用。
|
||||
- 如果您是想将HertzBeat部署到内网环境搭建监控系统,请参考下面的部署文档进行操作。
|
||||
- If you don’t want to deploy but use it directly, we provide [SAAS Monitoring Cloud-TanCloud](https://console.tancloud.cn), **[Log In And Register For Free](https://console.tancloud.cn) **.
|
||||
- If you want to deploy HertzBeat local, please refer to the following [Deployment Documentation](https://hertzbeat.com/docs/start/quickstart) for operation.
|
||||
|
||||
### 🐵 依赖服务部署
|
||||
### 🐵 Dependency Service Deployment
|
||||
|
||||
> HertzBeat最少依赖于 关系型数据库[MYSQL8+](https://www.mysql.com/) 和 时序性数据库[TDengine2+](https://www.taosdata.com/getting-started)
|
||||
> HertzBeat depends at least on relational database [MYSQL5+](https://www.mysql.com/) and time series database [TDengine2+](https://www.taosdata.com/getting-started)
|
||||
|
||||
##### 安装MYSQL
|
||||
1. docker安装MYSQl
|
||||
`docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql`
|
||||
2. 创建名称为hertzbeat的数据库
|
||||
3. 执行位于项目仓库/script/sql/目录下的数据库脚本 [schema.sql](https://gitee.com/dromara/hertzbeat/raw/master/script/sql/schema.sql)
|
||||
|
||||
详细步骤参考 [依赖服务MYSQL安装初始化](mysql-init.md)
|
||||
##### Install MYSQL
|
||||
1. Install mysql with docker
|
||||
`docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7`
|
||||
2. Create database names `hertzbeat`
|
||||
3. Run the database sql script [schema.sql](https://gitee.com/dromara/hertzbeat/raw/master/script/sql/schema.sql) located in the project repository `/script/sql/` directory.
|
||||
|
||||
##### 安装TDengine
|
||||
1. docker安装TDengine
|
||||
`docker run -d -p 6030-6049:6030-6049 -p 6030-6049:6030-6049/udp --name tdengine tdengine/tdengine`
|
||||
2. 创建名称为hertzbeat的数据库
|
||||
For detailed steps, refer to [MYSQL Installation And Initialization](https://hertzbeat.com/docs/start/mysql-init)
|
||||
|
||||
详细步骤参考 [依赖服务TDengine安装初始化](tdengine-init.md)
|
||||
##### Install TDengine
|
||||
1. Install TDengine with docker
|
||||
`docker run -d -p 6030-6049:6030-6049 -p 6030-6049:6030-6049/udp --name tdengine tdengine/tdengine:2.4.0.12`
|
||||
2. Create database names `hertzbeat`
|
||||
|
||||
### 🍞 HertzBeat安装
|
||||
> HertzBeat支持通过源码安装启动,Docker容器运行和安装包方式安装部署。
|
||||
For detailed steps, refer to [TDengine Installation And Initialization](https://hertzbeat.com/docs/start/tdengine-init).
|
||||
|
||||
#### Docker方式快速安装
|
||||
`docker run -d -p 1157:1157 --name hertzbeat tancloud/hertzbeat:latest`
|
||||
### 🍞 Install HertzBeat
|
||||
|
||||
详细步骤参考 [通过Docker方式安装HertzBeat](docker-deploy.md)
|
||||
> HertzBeat supports installation through source code, docker or package.
|
||||
|
||||
#### 通过安装包安装
|
||||
1. 下载您系统环境对应的安装包 [GITEE Release](https://gitee.com/dromara/hertzbeat/releases) [GITHUB Release](https://github.com/dromara/hertzbeat/releases)
|
||||
2. 配置HertzBeat的配置文件 hertzbeat/config/application.yml
|
||||
3. 部署启动 `$ ./startup.sh `
|
||||
##### 1:Install quickly via docker
|
||||
`docker run -d -p 1157:1157 -v /opt/application.yml:/opt/hertzbeat/config/application.yml --name hertzbeat tancloud/hertzbeat:[版本tag]`
|
||||
|
||||
详细步骤参考 [通过安装包安装HertzBeat](package-deploy.md)
|
||||
Detailed steps refer to [Install HertzBeat via Docker](https://hertzbeat.com/docs/start/docker-deploy)
|
||||
|
||||
##### 2:Install via package
|
||||
1. Download the installation package [GITEE Release](https://gitee.com/dromara/hertzbeat/releases) [GITHUB Release](https://github.com/dromara/hertzbeat/releases)
|
||||
2. Configure the HertzBeat configuration yml file `hertzbeat/config/application.yml`
|
||||
3. Run shell `$ ./startup.sh `
|
||||
4. Access `localhost:1157` to start, default account: `admin/admin`
|
||||
|
||||
Detailed steps refer to [Install HertzBeat via package](https://hertzbeat.com/docs/start/package-deploy)
|
||||
|
||||
##### 3:Start via source code
|
||||
1. Local source code debugging needs to start the back-end project manager and the front-end project web-app.
|
||||
2. Backend:need `maven3+`, `java8+`, start the manager service.
|
||||
3. Web:need `nodejs npm angular-cli` environment, Run `ng serve --open` in `web-app` directory after backend startup.
|
||||
4. Access `localhost:4200` to start, default account: `admin/admin`
|
||||
|
||||
Detailed steps refer to [CONTRIBUTING](CONTRIBUTING.md)
|
||||
|
||||
##### 4:Install All(mysql+tdengine+hertzbeat) via Docker-compose
|
||||
|
||||
Install and deploy the mysql database, tdengine database and hertzbeat at one time through [docker-compose deployment script](script/docker-compose).
|
||||
|
||||
Detailed steps refer to [docker-compose install](script/docker-compose/README.md)
|
||||
|
||||
**HAVE FUN**
|
||||
|
||||
@@ -18,9 +18,11 @@ TDengine是一款国产的开源物联网时序型数据库,我们使用其替
|
||||
```
|
||||
2. Docker安装TDengine
|
||||
```
|
||||
$ docker run -d -p 6030-6049:6030-6049 -p 6030-6049:6030-6049/udp --name tdengine tdengine/tdengine
|
||||
$ docker run -d -p 6030-6049:6030-6049 -p 6030-6049:6030-6049/udp -v /opt/taosdata:/var/lib/taos --name tdengine -e TZ=Asia/Shanghai tdengine/tdengine:2.4.0.12
|
||||
526aa188da767ae94b244226a2b2eec2b5f17dd8eff594533d9ec0cd0f3a1ccd
|
||||
```
|
||||
`-v /opt/taosdata:/var/lib/taos` 为tdengine数据目录本地持久化挂载,需将`/opt/taosdata`替换为实际本地存在的目录
|
||||
`-e TZ="Asia/Shanghai"` 为tdengine设置时区,这里可选设置对应的时区
|
||||
使用```$ docker ps```查看数据库是否启动成功
|
||||
|
||||
### 创建数据库实例
|
||||
@@ -48,3 +50,6 @@ TDengine是一款国产的开源物联网时序型数据库,我们使用其替
|
||||
taos> show databases;
|
||||
taos> use hertzbeat;
|
||||
```
|
||||
|
||||
**注意⚠️若是安装包安装的TDengine2.3+版本**
|
||||
> 除了启动server外,还需执行 `systemctl start taosadapter` 启动 adapter
|
||||
|
||||
@@ -1,62 +1,62 @@
|
||||
{
|
||||
"link.title.About Sureness": {
|
||||
"message": "关于 Sureness",
|
||||
"description": "The title of the footer links column with title=About Sureness in the footer"
|
||||
"link.title.产品介绍": {
|
||||
"message": "Introduction",
|
||||
"description": "The title of the footer links column with title=产品介绍 in the footer"
|
||||
},
|
||||
"link.title.Community": {
|
||||
"message": "社区与交流",
|
||||
"description": "The title of the footer links column with title=Community in the footer"
|
||||
"link.title.社区交流": {
|
||||
"message": "Community",
|
||||
"description": "The title of the footer links column with title=社区交流 in the footer"
|
||||
},
|
||||
"link.title.More": {
|
||||
"message": "更多相关",
|
||||
"description": "The title of the footer links column with title=More in the footer"
|
||||
"link.title.相关资源": {
|
||||
"message": "More",
|
||||
"description": "The title of the footer links column with title=相关资源 in the footer"
|
||||
},
|
||||
"link.item.label.High Performance": {
|
||||
"message": "高性能",
|
||||
"description": "The label of footer link with label=High Performance linking to https://github.com/tomsun28/sureness-shiro-spring-security-benchmark"
|
||||
"link.item.label.使用介绍": {
|
||||
"message": "Introduction",
|
||||
"description": "The label of footer link with label=使用介绍 linking to docs/"
|
||||
},
|
||||
"link.item.label.Dashboard": {
|
||||
"message": "看板",
|
||||
"description": "The label of footer link with label=Dashboard linking to https://github.com/dromara/sureness/projects/1"
|
||||
"link.item.label.安装文档": {
|
||||
"message": "Quick Start",
|
||||
"description": "The label of footer link with label=安装文档 linking to docs/start/quickstart"
|
||||
},
|
||||
"link.item.label.Github": {
|
||||
"link.item.label.自定义监控": {
|
||||
"message": "Custom Monitor",
|
||||
"description": "The label of footer link with label=自定义监控 linking to docs/advanced/extend-point"
|
||||
},
|
||||
"link.item.label.帮助文档": {
|
||||
"message": "Help Doc",
|
||||
"description": "The label of footer link with label=帮助文档 linking to docs/help/guide"
|
||||
},
|
||||
"link.item.label.Dromara开源社区": {
|
||||
"message": "Dromara",
|
||||
"description": "The label of footer link with label=Dromara开源社区 linking to https://dromara.org/"
|
||||
},
|
||||
"link.item.label.交流联系": {
|
||||
"message": "Contact",
|
||||
"description": "The label of footer link with label=交流联系 linking to docs/others/contact"
|
||||
},
|
||||
"link.item.label.我们的故事": {
|
||||
"message": "About Us",
|
||||
"description": "The label of footer link with label=我们的故事 linking to https://support.qq.com/products/379369/team"
|
||||
},
|
||||
"link.item.label.TanCloud探云": {
|
||||
"message": "TanCloud",
|
||||
"description": "The label of footer link with label=TanCloud探云 linking to https://tancloud.cn"
|
||||
},
|
||||
"link.item.label.Github仓库": {
|
||||
"message": "Github",
|
||||
"description": "The label of footer link with label=Github linking to https://github.com/dromara/sureness"
|
||||
"description": "The label of footer link with label=Github仓库 linking to https://github.com/dromara/hertzbeat"
|
||||
},
|
||||
"link.item.label.Gitee": {
|
||||
"link.item.label.Gitee仓库": {
|
||||
"message": "Gitee",
|
||||
"description": "The label of footer link with label=Gitee linking to https://gitee.com/dromara/sureness"
|
||||
"description": "The label of footer link with label=Gitee仓库 linking to https://gitee.com/dromara/hertzbeat"
|
||||
},
|
||||
"link.item.label.Github Discussion": {
|
||||
"message": "Github Discussion",
|
||||
"description": "The label of footer link with label=Github Discussion linking to https://github.com/dromara/sureness/discussions"
|
||||
},
|
||||
"link.item.label.Gitter Channel": {
|
||||
"message": "Gitter Channel",
|
||||
"description": "The label of footer link with label=Gitter Channel linking to https://gitter.im/usthe/sureness"
|
||||
},
|
||||
"link.item.label.USTHE": {
|
||||
"message": "USTHE",
|
||||
"description": "The label of footer link with label=USTHE linking to https://github.com/usthe"
|
||||
"link.item.label.相关资源": {
|
||||
"message": "Resource",
|
||||
"description": "The label of footer link with label=相关资源 linking to docs/others/resource"
|
||||
},
|
||||
"copyright": {
|
||||
"message": "Apache License 2.0 | Copyright © 2021",
|
||||
"message": "<a target=\"_blank\" href=\"https://beian.miit.gov.cn/\">蜀ICP备2022002218号</a> | Copyright TANCLOUD© 2022",
|
||||
"description": "The footer copyright"
|
||||
},
|
||||
"link.item.label.Dromara": {
|
||||
"message": "Dromara 社区",
|
||||
"description": "The label of footer link with label=Dromara linking to https://dromara.org"
|
||||
},
|
||||
"link.item.label.QQ Group - 390083213": {
|
||||
"message": "QQ 群 - 390083213",
|
||||
"description": "The label of footer link with label=QQ Group - 390083213 linking to https://qm.qq.com/cgi-bin/qm/qr?k=3IpzQjFOztJe464_eMBmDHfT0YTWK5Qa&jump_from=webapi"
|
||||
},
|
||||
"link.item.label.Tom Blog": {
|
||||
"message": "Tom 博客",
|
||||
"description": "The label of footer link with label=Tom Blog linking to https://blog.usthe.com"
|
||||
},
|
||||
"link.item.label.Tom": {
|
||||
"message": "Tom",
|
||||
"description": "The label of footer link with label=Tom linking to https://github.com/tomsun28"
|
||||
}
|
||||
}
|
||||
@@ -1,54 +1,50 @@
|
||||
{
|
||||
"title": {
|
||||
"message": " ",
|
||||
"message": "HertzBeat",
|
||||
"description": "The title in the navbar"
|
||||
},
|
||||
"item.label.Document": {
|
||||
"message": "文档",
|
||||
"description": "Navbar item with label Document"
|
||||
"item.label.首页": {
|
||||
"message": "Home",
|
||||
"description": "Navbar item with label 首页"
|
||||
},
|
||||
"item.label.Dashboard": {
|
||||
"message": "看板",
|
||||
"description": "Navbar item with label Dashboard"
|
||||
"item.label.文档": {
|
||||
"message": "Document",
|
||||
"description": "Navbar item with label 文档"
|
||||
},
|
||||
"item.label.High Performance": {
|
||||
"message": "高性能",
|
||||
"description": "Navbar item with label High Performance"
|
||||
"item.label.博客": {
|
||||
"message": "Blog",
|
||||
"description": "Navbar item with label 博客"
|
||||
},
|
||||
"item.label.Discuss": {
|
||||
"message": "讨论",
|
||||
"description": "Navbar item with label Discuss"
|
||||
"item.label.讨论交流": {
|
||||
"message": "Discuss",
|
||||
"description": "Navbar item with label 讨论交流"
|
||||
},
|
||||
"item.label.Github Discussion": {
|
||||
"message": "Github Discussion",
|
||||
"description": "Navbar item with label Github Discussion"
|
||||
"item.label.私有化部署": {
|
||||
"message": "Enterprise",
|
||||
"description": "Navbar item with label 私有化部署"
|
||||
},
|
||||
"item.label.Gitter Channel": {
|
||||
"message": "Gitter Channel",
|
||||
"description": "Navbar item with label Gitter Channel"
|
||||
"item.label.项目看板": {
|
||||
"message": "Dashboard",
|
||||
"description": "Navbar item with label 项目看板"
|
||||
},
|
||||
"item.label.QQ Group - 390083213": {
|
||||
"message": "QQ 群 - 390083213",
|
||||
"description": "Navbar item with label QQ Group - 390083213"
|
||||
"item.label.其它": {
|
||||
"message": "Others",
|
||||
"description": "Navbar item with label 其它"
|
||||
},
|
||||
"item.label.Blog": {
|
||||
"message": "博客",
|
||||
"description": "Navbar item with label Blog"
|
||||
"item.label.登录/注册": {
|
||||
"message": "Login Now",
|
||||
"description": "Navbar item with label 登录/注册"
|
||||
},
|
||||
"item.label.Other": {
|
||||
"message": "其它",
|
||||
"description": "Navbar item with label Other"
|
||||
"item.label.设计文档": {
|
||||
"message": "Design",
|
||||
"description": "Navbar item with label 设计文档"
|
||||
},
|
||||
"item.label.Design": {
|
||||
"message": "设计文档",
|
||||
"description": "Navbar item with label Design"
|
||||
"item.label.赞助我们": {
|
||||
"message": "Sponsor",
|
||||
"description": "Navbar item with label 赞助我们"
|
||||
},
|
||||
"item.label.Contributing": {
|
||||
"message": "参与贡献",
|
||||
"description": "Navbar item with label Contributing"
|
||||
},
|
||||
"item.label.Sponsor": {
|
||||
"message": "赞助",
|
||||
"description": "Navbar item with label Sponsor"
|
||||
"item.label.相关资源": {
|
||||
"message": "Resource",
|
||||
"description": "Navbar item with label 相关资源"
|
||||
}
|
||||
}
|
||||
@@ -92,7 +92,8 @@
|
||||
"help/alert_webhook",
|
||||
"help/alert_wework",
|
||||
"help/alert_dingtalk",
|
||||
"help/alert_feishu"
|
||||
"help/alert_feishu",
|
||||
"help/alert_console"
|
||||
]
|
||||
},
|
||||
"help/issue"
|
||||
|
||||
@@ -12,8 +12,7 @@ export const features = [{
|
||||
<Translate values={{
|
||||
TANCLOUD: <strong>TANCLOUD</strong>,
|
||||
SAAS: <strong>SAAS</strong>,
|
||||
console: <a href={'https://www.console.tancloud.cn'}><strong>注册登录</strong></a>,
|
||||
doc: <strong>文档</strong>,
|
||||
console: <a href={'https://www.console.tancloud.cn'}><strong>Login Now</strong></a>,
|
||||
br: <br/>
|
||||
}}>
|
||||
{'中小团队和个人无需再为了监控自己的网站资源,而去部署一套繁琐的监控系统。往往有时候,那套监控系统比自身网站消耗的资源还大。' +
|
||||
@@ -30,10 +29,7 @@ export const features = [{
|
||||
description: (
|
||||
<>
|
||||
<Translate values={{
|
||||
WebSockets: <strong>WebSockets</strong>,
|
||||
Servlet: <strong>Servlet</strong>,
|
||||
JaxRs: <strong>JAX-RS</strong>,
|
||||
custom: <a href={'/docs/advanced/extend-point'}><strong>自定义监控</strong></a>,
|
||||
custom: <a href={'/docs/advanced/extend-point'}><strong>Custom-Monitoring 自定义监控</strong></a>,
|
||||
br: <br/>
|
||||
}}>
|
||||
{'HertzBeat目前支持对网站,API,PING连通性,端口可用性,SiteMap全站,数据库,操作系统等的监控,快速迭代提供更多的监控类型和性能指标。{br}' +
|
||||
@@ -51,8 +47,8 @@ export const features = [{
|
||||
description: (
|
||||
<>
|
||||
<Translate values={{
|
||||
github: <a href={'https://github.com/dromara/hertzbeat'}><strong>HertzBeat Github 代码仓库</strong></a>,
|
||||
gitee: <a href={'https://gitee.com/dromara/hertzbeat'}><strong>HertzBeat Gitee 代码仓库</strong></a>,
|
||||
github: <a href={'https://github.com/dromara/hertzbeat'}><strong>HertzBeat Code Github</strong></a>,
|
||||
gitee: <a href={'https://gitee.com/dromara/hertzbeat'}><strong>HertzBeat Code Gitee</strong></a>,
|
||||
br: <br/>
|
||||
}}>
|
||||
{'HertzBeat监控系统代码开源,非常欢迎任何对此有兴趣的同学参与中来,我们一起进步,丰富的资源文档正在完善中。{br}' +
|
||||
|
||||
@@ -107,64 +107,17 @@
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>hertzbeat</finalName>
|
||||
<resources>
|
||||
<resource>
|
||||
<directory>src/main/resources</directory>
|
||||
<filtering>true</filtering>
|
||||
<includes>
|
||||
<include>application.yml</include>
|
||||
<include>sureness.yml</include>
|
||||
<include>banner.txt</include>
|
||||
<include>define/**</include>
|
||||
<include>**/*.html</include>
|
||||
</includes>
|
||||
</resource>
|
||||
</resources>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.2.0</version>
|
||||
<configuration>
|
||||
<classesDirectory>target/classes/</classesDirectory>
|
||||
<archive>
|
||||
<!--生成的jar包不包含maven描述相关文件-->
|
||||
<addMavenDescriptor>false</addMavenDescriptor>
|
||||
<manifest>
|
||||
<!--项目启动类-->
|
||||
<mainClass>com.usthe.manager.Manager</mainClass>
|
||||
<useUniqueVersions>false</useUniqueVersions>
|
||||
<!--第三方JAR加入类构建的路径maven-dependency-plugin-->
|
||||
<addClasspath>true</addClasspath>
|
||||
<!--外部依赖jar包的位置-->
|
||||
<classpathPrefix>lib/</classpathPrefix>
|
||||
</manifest>
|
||||
<manifestEntries>
|
||||
<Class-Path>. config</Class-Path>
|
||||
</manifestEntries>
|
||||
</archive>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<!--关键插件,maven提供的assembly插件,需要放在最后-->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<version>3.3.0</version>
|
||||
<groupId>com.maplecloudy.osrt</groupId>
|
||||
<artifactId>maplecloudy-osrt-maven-plugin</artifactId>
|
||||
<version>1.0.0-RELEASE</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>make-zip</id>
|
||||
<!--绑定的maven操作-->
|
||||
<phase>package</phase>
|
||||
<!--运行一次-->
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
<goal>repackage</goal>
|
||||
<goal>install-osrt-app</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<descriptors>
|
||||
<descriptor>../script/assembly/server/assembly.xml</descriptor>
|
||||
</descriptors>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.usthe.manager.component.alerter;
|
||||
|
||||
import com.usthe.alert.AlerterDataQueue;
|
||||
import com.usthe.alert.AlerterProperties;
|
||||
import com.usthe.alert.AlerterWorkerPool;
|
||||
import com.usthe.common.util.CommonUtil;
|
||||
import com.usthe.common.entity.alerter.Alert;
|
||||
@@ -24,6 +25,7 @@ import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.client.ResourceAccessException;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.mail.internet.MimeMessage;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
@@ -48,6 +50,8 @@ public class DispatchAlarm {
|
||||
private JavaMailSender javaMailSender;
|
||||
private RestTemplate restTemplate;
|
||||
private MailService mailService;
|
||||
@Resource
|
||||
private AlerterProperties alerterProperties;
|
||||
|
||||
@Value("${spring.mail.username}")
|
||||
private String emailFromUser;
|
||||
@@ -177,13 +181,13 @@ public class DispatchAlarm {
|
||||
"\n所属监控ID :" + alert.getMonitorId() +
|
||||
"\n所属监控名称 :" + alert.getMonitorName() +
|
||||
"\n告警级别 :" + CommonUtil.transferAlertPriority(alert.getPriority()) +
|
||||
"\n内容详情 : " + alert.getContent();
|
||||
"\n内容详情 : " + alert.getContent() + "\n";
|
||||
flyBookContent.setText(text);
|
||||
contents1.add(flyBookContent);
|
||||
FlyBookWebHookDto.FlyBookContent bookContent = new FlyBookWebHookDto.FlyBookContent();
|
||||
bookContent.setTag("a");
|
||||
bookContent.setText("登入控制台");
|
||||
bookContent.setHref("https://www.tancloud.cn");
|
||||
bookContent.setHref(alerterProperties.getConsoleUrl());
|
||||
contents1.add(bookContent);
|
||||
contents.add(contents1);
|
||||
zhCn.setTitle("[TanCloud探云告警通知]");
|
||||
@@ -214,14 +218,16 @@ public class DispatchAlarm {
|
||||
private void sendDingTalkRobotAlert(NoticeReceiver receiver, Alert alert) {
|
||||
DingTalkWebHookDto dingTalkWebHookDto = new DingTalkWebHookDto();
|
||||
DingTalkWebHookDto.MarkdownDTO markdownDTO = new DingTalkWebHookDto.MarkdownDTO();
|
||||
String content = "#### [TanCloud探云告警通知]\n##### **告警目标对象** : " +
|
||||
StringBuilder content = new StringBuilder();
|
||||
content.append("#### [TanCloud探云告警通知]\n##### **告警目标对象** : " +
|
||||
alert.getTarget() + "\n " +
|
||||
"##### **所属监控ID** : " + alert.getMonitorId() + "\n " +
|
||||
"##### **所属监控名称** : " + alert.getMonitorName() + "\n " +
|
||||
"##### **告警级别** : " +
|
||||
CommonUtil.transferAlertPriority(alert.getPriority()) + "\n " +
|
||||
"##### **内容详情** : " + alert.getContent();
|
||||
markdownDTO.setText(content);
|
||||
"##### **内容详情** : " + alert.getContent());
|
||||
content.append("[点击跳转查看详情](" + alerterProperties.getConsoleUrl() + ")");
|
||||
markdownDTO.setText(content.toString());
|
||||
markdownDTO.setTitle("TanCloud探云告警通知");
|
||||
dingTalkWebHookDto.setMarkdown(markdownDTO);
|
||||
String webHookUrl = DingTalkWebHookDto.WEBHOOK_URL + receiver.getAccessToken();
|
||||
@@ -261,8 +267,10 @@ public class DispatchAlarm {
|
||||
content.append("告警级别 : <font color=\"comment\">")
|
||||
.append(CommonUtil.transferAlertPriority(alert.getPriority())).append("</font>\n");
|
||||
}
|
||||
content.append("内容详情 : ").append(alert.getContent());
|
||||
content.append("内容详情 : ").append(alert.getContent() + "\n");
|
||||
content.append("[点击跳转查看详情](" + alerterProperties.getConsoleUrl() + ")");
|
||||
markdownDTO.setContent(content.toString());
|
||||
//TODO 增加控制台地址登录可控制
|
||||
weWorkWebHookDTO.setMarkdown(markdownDTO);
|
||||
String webHookUrl = WeWorkWebHookDto.WEBHOOK_URL + receiver.getWechatId();
|
||||
try {
|
||||
|
||||
@@ -11,6 +11,9 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.CommandLineRunner;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
|
||||
import org.springframework.core.io.support.ResourcePatternResolver;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.yaml.snakeyaml.Yaml;
|
||||
@@ -18,12 +21,8 @@ import org.yaml.snakeyaml.Yaml;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.io.InputStream;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
/**
|
||||
@@ -122,6 +121,8 @@ public class AppServiceImpl implements AppService, CommandLineRunner {
|
||||
|
||||
@Override
|
||||
public void run(String... args) throws Exception {
|
||||
boolean loadFromFile = true;
|
||||
final List<InputStream> inputStreams = new LinkedList<>();
|
||||
// 读取app定义配置加载到内存中 define/app/*.yml
|
||||
Yaml yaml = new Yaml();
|
||||
String classpath = this.getClass().getClassLoader().getResource("").getPath();
|
||||
@@ -132,37 +133,82 @@ public class AppServiceImpl implements AppService, CommandLineRunner {
|
||||
defineAppPath = classpath + File.separator + "define" + File.separator + "app";
|
||||
directory = new File(defineAppPath);
|
||||
if (!directory.exists() || directory.listFiles() == null) {
|
||||
throw new IllegalArgumentException("define app directory not exist: " + defineAppPath);
|
||||
}
|
||||
}
|
||||
log.info("query define path {}", defineAppPath);
|
||||
for (File appFile : Objects.requireNonNull(directory.listFiles())) {
|
||||
if (appFile.exists()) {
|
||||
try (FileInputStream fileInputStream = new FileInputStream(appFile)) {
|
||||
Job app = yaml.loadAs(fileInputStream, Job.class);
|
||||
appDefines.put(app.getApp().toLowerCase(), app);
|
||||
} catch (IOException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new IOException(e);
|
||||
// load define app yml in jar
|
||||
log.info("load define app yml in internal jar");
|
||||
loadFromFile = false;
|
||||
try {
|
||||
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
|
||||
Resource[] resources = resolver.getResources("classpath:define/app/*.yml");
|
||||
for (Resource resource : resources) {
|
||||
inputStreams.add(resource.getInputStream());
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("define app yml not exist");
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (loadFromFile) {
|
||||
log.info("load define path {}", defineAppPath);
|
||||
for (File appFile : Objects.requireNonNull(directory.listFiles())) {
|
||||
if (appFile.exists()) {
|
||||
try (FileInputStream fileInputStream = new FileInputStream(appFile)) {
|
||||
Job app = yaml.loadAs(fileInputStream, Job.class);
|
||||
appDefines.put(app.getApp().toLowerCase(), app);
|
||||
} catch (IOException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new IOException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (inputStreams.isEmpty()) {
|
||||
throw new IllegalArgumentException("define app directory not exist");
|
||||
} else {
|
||||
inputStreams.forEach(stream -> {
|
||||
try {
|
||||
Job app = yaml.loadAs(stream, Job.class);
|
||||
appDefines.put(app.getApp().toLowerCase(), app);
|
||||
stream.close();
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 读取监控参数定义配置加载到数据库中 define/param/*.yml
|
||||
String defineParamPath = classpath + File.separator + "define" + File.separator + "param";
|
||||
directory = new File(defineParamPath);
|
||||
if (!directory.exists() || directory.listFiles() == null) {
|
||||
throw new IllegalArgumentException("define param directory not exist: " + defineParamPath);
|
||||
}
|
||||
for (File appFile : Objects.requireNonNull(directory.listFiles())) {
|
||||
if (appFile.exists()) {
|
||||
try (FileInputStream fileInputStream = new FileInputStream(appFile)) {
|
||||
ParamDefineDto paramDefine = yaml.loadAs(fileInputStream, ParamDefineDto.class);
|
||||
paramDefines.put(paramDefine.getApp().toLowerCase(), paramDefine.getParam());
|
||||
} catch (IOException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new IOException(e);
|
||||
if (loadFromFile) {
|
||||
String defineParamPath = classpath + File.separator + "define" + File.separator + "param";
|
||||
directory = new File(defineParamPath);
|
||||
if (!directory.exists() || directory.listFiles() == null) {
|
||||
throw new IllegalArgumentException("define param directory not exist: " + defineParamPath);
|
||||
}
|
||||
for (File appFile : Objects.requireNonNull(directory.listFiles())) {
|
||||
if (appFile.exists()) {
|
||||
try (FileInputStream fileInputStream = new FileInputStream(appFile)) {
|
||||
ParamDefineDto paramDefine = yaml.loadAs(fileInputStream, ParamDefineDto.class);
|
||||
paramDefines.put(paramDefine.getApp().toLowerCase(), paramDefine.getParam());
|
||||
} catch (IOException e) {
|
||||
log.error(e.getMessage(), e);
|
||||
throw new IOException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
|
||||
Resource[] resources = resolver.getResources("classpath:define/param/*.yml");
|
||||
for (Resource resource : resources) {
|
||||
InputStream stream = resource.getInputStream();
|
||||
ParamDefineDto paramDefine = yaml.loadAs(stream, ParamDefineDto.class);
|
||||
paramDefines.put(paramDefine.getApp().toLowerCase(), paramDefine.getParam());
|
||||
stream.close();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("define param yml not exist");
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.usthe.manager.service.impl;
|
||||
|
||||
import com.usthe.alert.AlerterProperties;
|
||||
import com.usthe.common.entity.alerter.Alert;
|
||||
import com.usthe.common.util.CommonUtil;
|
||||
import com.usthe.manager.service.MailService;
|
||||
@@ -11,6 +12,7 @@ import org.thymeleaf.context.Context;
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* Mailbox sending service interface implementation class
|
||||
* 邮箱发送服务接口实现类
|
||||
*
|
||||
* @author 花城
|
||||
@@ -23,16 +25,20 @@ public class MailServiceImpl implements MailService {
|
||||
|
||||
@Resource
|
||||
private TemplateEngine templateEngine;
|
||||
@Resource
|
||||
private AlerterProperties alerterProperties;
|
||||
|
||||
@Override
|
||||
public String buildAlertHtmlTemplate(final Alert alert) {
|
||||
// Introduce thymeleaf context parameters to render pages
|
||||
// 引入thymeleaf上下文参数渲染页面
|
||||
Context context = new Context();
|
||||
context.setVariable("target",alert.getTarget());
|
||||
context.setVariable("monitorId",alert.getMonitorId());
|
||||
context.setVariable("monitorName",alert.getMonitorName());
|
||||
context.setVariable("target", alert.getTarget());
|
||||
context.setVariable("monitorId", alert.getMonitorId());
|
||||
context.setVariable("monitorName", alert.getMonitorName());
|
||||
context.setVariable("priority", CommonUtil.transferAlertPriority(alert.getPriority()));
|
||||
context.setVariable("content",alert.getContent());
|
||||
context.setVariable("content", alert.getContent());
|
||||
context.setVariable("consoleUrl", alerterProperties.getConsoleUrl());
|
||||
return templateEngine.process("mailAlarm", context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ spring:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
username: root
|
||||
password: 123456
|
||||
url: jdbc:mysql://localhost:3306/hertzbeat?useUnicode=true&characterEncoding=utf-8&useSSL=false
|
||||
url: jdbc:mysql://103.20.220.86:3306/hertzbeat?useUnicode=true&characterEncoding=utf-8&useSSL=false
|
||||
platform: mysql
|
||||
hikari:
|
||||
max-lifetime: 120000
|
||||
@@ -66,6 +66,11 @@ warehouse:
|
||||
td-engine:
|
||||
enabled: true
|
||||
driver-class-name: com.taosdata.jdbc.rs.RestfulDriver
|
||||
url: jdbc:TAOS-RS://localhost:6041/hertzbeat
|
||||
url: jdbc:TAOS-RS://103.20.220.86:6041/hertzbeat
|
||||
username: root
|
||||
password: taosdata
|
||||
password: taosdata
|
||||
|
||||
#自定义告警控制台地址
|
||||
alerter:
|
||||
#这里就是我们的自定义控制台地址
|
||||
console-url: https://console.tancloud.cn
|
||||
|
||||
@@ -2,10 +2,35 @@
|
||||
|
||||
# 加载到匹配字典的资源,也就是需要被保护的,设置了所支持角色访问的资源
|
||||
# 没有配置的资源也默认被认证保护,但不鉴权
|
||||
# eg: /api/v1/source1===get===[role2] 表示 /api/v2/host===post 这条资源支持 role2 这一种角色访问
|
||||
# eg: /api/v1/source1===get===[admin] 表示 /api/v2/host===post 这条资源支持 admin 这一种角色访问
|
||||
# eg: /api/v1/source2===get===[] 表示 /api/v1/source2===get 这条资源不支持任何角色访问
|
||||
resourceRole:
|
||||
- /account/auth/refresh===post===[role1,role2,role3,role4]
|
||||
- /account/auth/refresh===post===[admin,user,guest]
|
||||
- /apps/**===get===[admin,user,guest]
|
||||
- /monitor/**===get===[admin,user,guest]
|
||||
- /monitor/**===post===[admin,user]
|
||||
- /monitor/**===put===[admin,user]
|
||||
- /monitor/**===delete==[admin]
|
||||
- /monitors/**===get===[admin,user,guest]
|
||||
- /monitors/**===post===[admin,user]
|
||||
- /monitors/**===put===[admin,user]
|
||||
- /monitors/**===delete===[admin]
|
||||
- /alert/**===get===[admin,user,guest]
|
||||
- /alert/**===post===[admin,user]
|
||||
- /alert/**===put===[admin,user]
|
||||
- /alert/**===delete===[admin]
|
||||
- /alerts/**===get===[admin,user,guest]
|
||||
- /alerts/**===post===[admin,user]
|
||||
- /alerts/**===put===[admin,user]
|
||||
- /alerts/**===delete===[admin]
|
||||
- /notice/**===get===[admin,user,guest]
|
||||
- /notice/**===post===[admin,user]
|
||||
- /notice/**===put===[admin,user]
|
||||
- /notice/**===delete===[admin]
|
||||
- /summary/**===get===[admin,user,guest]
|
||||
- /summary/**===post===[admin,user]
|
||||
- /summary/**===put===[admin,user]
|
||||
- /summary/**===delete===[admin]
|
||||
|
||||
# 需要被过滤保护的资源,不认证鉴权直接访问
|
||||
# /api/v1/source3===get 表示 /api/v1/source3===get 可以被任何人访问 无需登录认证鉴权
|
||||
@@ -31,20 +56,23 @@ excludedResource:
|
||||
|
||||
# 用户账户信息
|
||||
# 下面有 admin tom lili 三个账户
|
||||
# eg: admin 拥有[role1,role2]角色,密码为admin
|
||||
# eg: tom 拥有[role1,role2,role3],密码为tom@123
|
||||
# eg: lili 拥有[role1,role2],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
|
||||
# eg: admin 拥有[admin,user]角色,密码为admin
|
||||
# eg: tom 拥有[user],密码为tom@123
|
||||
# eg: lili 拥有[guest],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
|
||||
account:
|
||||
- appId: admin
|
||||
credential: admin
|
||||
role: [role1,role2]
|
||||
role: [admin,user]
|
||||
- appId: tom
|
||||
credential: tom@123
|
||||
role: [role1,role2,role3]
|
||||
role: [user]
|
||||
- appId: guest
|
||||
credential: guest
|
||||
role: [guest]
|
||||
- appId: lili
|
||||
# 注意 Digest认证不支持加盐加密的密码账户
|
||||
# 加盐加密的密码,通过 MD5(password+salt)计算
|
||||
# 此账户的原始密码为 lili
|
||||
credential: 1A676730B0C7F54654B0E09184448289
|
||||
salt: 123
|
||||
role: [role1,role2]
|
||||
role: [guest]
|
||||
|
||||
@@ -700,7 +700,7 @@
|
||||
<span style="font-family:Arial, Verdana; font-size:14px;color:#FFFFFF;"><a
|
||||
target="_blank"
|
||||
style="color:#FFFFFF;text-decoration:none;"
|
||||
href="https://console.tancloud.cn"
|
||||
th:href="${consoleUrl}"
|
||||
data-link-type="web">登入控制台</a></span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -2,10 +2,35 @@
|
||||
|
||||
# 加载到匹配字典的资源,也就是需要被保护的,设置了所支持角色访问的资源
|
||||
# 没有配置的资源也默认被认证保护,但不鉴权
|
||||
# eg: /api/v1/source1===get===[role2] 表示 /api/v2/host===post 这条资源支持 role2 这一种角色访问
|
||||
# eg: /api/v1/source1===get===[admin] 表示 /api/v2/host===post 这条资源支持 admin 这一种角色访问
|
||||
# eg: /api/v1/source2===get===[] 表示 /api/v1/source2===get 这条资源不支持任何角色访问
|
||||
resourceRole:
|
||||
- /account/auth/refresh===post===[role1,role2,role3,role4]
|
||||
- /account/auth/refresh===post===[admin,user,guest]
|
||||
- /apps/**===get===[admin,user,guest]
|
||||
- /monitor/**===get===[admin,user,guest]
|
||||
- /monitor/**===post===[admin,user]
|
||||
- /monitor/**===put===[admin,user]
|
||||
- /monitor/**===delete==[admin]
|
||||
- /monitors/**===get===[admin,user,guest]
|
||||
- /monitors/**===post===[admin,user]
|
||||
- /monitors/**===put===[admin,user]
|
||||
- /monitors/**===delete===[admin]
|
||||
- /alert/**===get===[admin,user,guest]
|
||||
- /alert/**===post===[admin,user]
|
||||
- /alert/**===put===[admin,user]
|
||||
- /alert/**===delete===[admin]
|
||||
- /alerts/**===get===[admin,user,guest]
|
||||
- /alerts/**===post===[admin,user]
|
||||
- /alerts/**===put===[admin,user]
|
||||
- /alerts/**===delete===[admin]
|
||||
- /notice/**===get===[admin,user,guest]
|
||||
- /notice/**===post===[admin,user]
|
||||
- /notice/**===put===[admin,user]
|
||||
- /notice/**===delete===[admin]
|
||||
- /summary/**===get===[admin,user,guest]
|
||||
- /summary/**===post===[admin,user]
|
||||
- /summary/**===put===[admin,user]
|
||||
- /summary/**===delete===[admin]
|
||||
|
||||
# 需要被过滤保护的资源,不认证鉴权直接访问
|
||||
# /api/v1/source3===get 表示 /api/v1/source3===get 可以被任何人访问 无需登录认证鉴权
|
||||
@@ -31,20 +56,23 @@ excludedResource:
|
||||
|
||||
# 用户账户信息
|
||||
# 下面有 admin tom lili 三个账户
|
||||
# eg: admin 拥有[role1,role2]角色,密码为admin
|
||||
# eg: tom 拥有[role1,role2,role3],密码为tom@123
|
||||
# eg: lili 拥有[role1,role2],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
|
||||
# eg: admin 拥有[admin,user]角色,密码为admin
|
||||
# eg: tom 拥有[user],密码为tom@123
|
||||
# eg: lili 拥有[guest],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
|
||||
account:
|
||||
- appId: admin
|
||||
credential: admin
|
||||
role: [role1,role2]
|
||||
role: [admin,user]
|
||||
- appId: tom
|
||||
credential: tom
|
||||
role: [role1,role2,role3]
|
||||
credential: tom@123
|
||||
role: [user]
|
||||
- appId: guest
|
||||
credential: guest
|
||||
role: [guest]
|
||||
- appId: lili
|
||||
# 注意 Digest认证不支持加盐加密的密码账户
|
||||
# 加盐加密的密码,通过 MD5(password+salt)计算
|
||||
# 此账户的原始密码为 lili
|
||||
credential: 1A676730B0C7F54654B0E09194448289
|
||||
credential: 1A676730B0C7F54654B0E09184448289
|
||||
salt: 123
|
||||
role: [role1,role2]
|
||||
role: [guest]
|
||||
|
||||
@@ -26,6 +26,8 @@ services:
|
||||
container_name: tdengine
|
||||
hostname: tdengine
|
||||
restart: always
|
||||
environment:
|
||||
TZ: Asia/Shanghai
|
||||
ports:
|
||||
- "6030-6049:6030-6049"
|
||||
- "6030-6049:6030-6049/udp"
|
||||
|
||||
@@ -2,10 +2,35 @@
|
||||
|
||||
# 加载到匹配字典的资源,也就是需要被保护的,设置了所支持角色访问的资源
|
||||
# 没有配置的资源也默认被认证保护,但不鉴权
|
||||
# eg: /api/v1/source1===get===[role2] 表示 /api/v2/host===post 这条资源支持 role2 这一种角色访问
|
||||
# eg: /api/v1/source1===get===[admin] 表示 /api/v2/host===post 这条资源支持 admin 这一种角色访问
|
||||
# eg: /api/v1/source2===get===[] 表示 /api/v1/source2===get 这条资源不支持任何角色访问
|
||||
resourceRole:
|
||||
- /account/auth/refresh===post===[role1,role2,role3,role4]
|
||||
- /account/auth/refresh===post===[admin,user,guest]
|
||||
- /apps/**===get===[admin,user,guest]
|
||||
- /monitor/**===get===[admin,user,guest]
|
||||
- /monitor/**===post===[admin,user]
|
||||
- /monitor/**===put===[admin,user]
|
||||
- /monitor/**===delete==[admin]
|
||||
- /monitors/**===get===[admin,user,guest]
|
||||
- /monitors/**===post===[admin,user]
|
||||
- /monitors/**===put===[admin,user]
|
||||
- /monitors/**===delete===[admin]
|
||||
- /alert/**===get===[admin,user,guest]
|
||||
- /alert/**===post===[admin,user]
|
||||
- /alert/**===put===[admin,user]
|
||||
- /alert/**===delete===[admin]
|
||||
- /alerts/**===get===[admin,user,guest]
|
||||
- /alerts/**===post===[admin,user]
|
||||
- /alerts/**===put===[admin,user]
|
||||
- /alerts/**===delete===[admin]
|
||||
- /notice/**===get===[admin,user,guest]
|
||||
- /notice/**===post===[admin,user]
|
||||
- /notice/**===put===[admin,user]
|
||||
- /notice/**===delete===[admin]
|
||||
- /summary/**===get===[admin,user,guest]
|
||||
- /summary/**===post===[admin,user]
|
||||
- /summary/**===put===[admin,user]
|
||||
- /summary/**===delete===[admin]
|
||||
|
||||
# 需要被过滤保护的资源,不认证鉴权直接访问
|
||||
# /api/v1/source3===get 表示 /api/v1/source3===get 可以被任何人访问 无需登录认证鉴权
|
||||
@@ -23,7 +48,7 @@ excludedResource:
|
||||
- /**/*.ttf===get
|
||||
- /**/*.png===get
|
||||
- /**/*.gif===get
|
||||
- /**/*.png===*
|
||||
- /**/*.png===*
|
||||
# swagger ui 资源
|
||||
- /swagger-resources/**===get
|
||||
- /v2/api-docs===get
|
||||
@@ -31,20 +56,23 @@ excludedResource:
|
||||
|
||||
# 用户账户信息
|
||||
# 下面有 admin tom lili 三个账户
|
||||
# eg: admin 拥有[role1,role2]角色,密码为admin
|
||||
# eg: tom 拥有[role1,role2,role3],密码为tom@123
|
||||
# eg: lili 拥有[role1,role2],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
|
||||
# eg: admin 拥有[admin,user]角色,密码为admin
|
||||
# eg: tom 拥有[user],密码为tom@123
|
||||
# eg: lili 拥有[guest],明文密码为lili, 加盐密码为1A676730B0C7F54654B0E09184448289
|
||||
account:
|
||||
- appId: admin
|
||||
credential: admin
|
||||
role: [role1,role2]
|
||||
role: [admin,user]
|
||||
- appId: tom
|
||||
credential: tom@123
|
||||
role: [role1,role2,role3]
|
||||
role: [user]
|
||||
- appId: guest
|
||||
credential: guest
|
||||
role: [guest]
|
||||
- appId: lili
|
||||
# 注意 Digest认证不支持加盐加密的密码账户
|
||||
# 加盐加密的密码,通过 MD5(password+salt)计算
|
||||
# 此账户的原始密码为 lili
|
||||
credential: 1A676730B0C7F54654B0E09184448289
|
||||
salt: 123
|
||||
role: [role1,role2]
|
||||
role: [guest]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "web-app",
|
||||
"name": "hertzbeat-web-app",
|
||||
"version": "0.0.0",
|
||||
"scripts": {
|
||||
"ng": "ng",
|
||||
|
||||
@@ -26,8 +26,8 @@ const CODE_MESSAGE: { [key: number]: string } = {
|
||||
202: '一个请求已经进入后台排队(异步任务)。',
|
||||
204: '删除数据成功。',
|
||||
400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。',
|
||||
401: '用户没有权限(令牌、用户名、密码错误)。',
|
||||
403: '用户无权限访问此资源。',
|
||||
401: '用户认证信息异常。',
|
||||
403: '用户无此操作权限。',
|
||||
404: '发出的请求针对的是不存在的记录,服务器没有进行操作。',
|
||||
406: '请求的格式不可得。',
|
||||
409: '请求与服务器端目标资源的当前状态相冲突',
|
||||
@@ -65,7 +65,11 @@ export class DefaultInterceptor implements HttpInterceptor {
|
||||
private checkStatus(ev: HttpResponseBase): void {
|
||||
const errorText = CODE_MESSAGE[ev.status] || ev.statusText;
|
||||
console.warn(` ${ev.status}: ${ev.url}`, errorText);
|
||||
this.notification.error(` ${ev.status}: ${ev.url}`, errorText);
|
||||
if (ev.status == 403) {
|
||||
this.notification.error(` ${ev.status}: ${errorText}`, '');
|
||||
} else {
|
||||
this.notification.error(` ${ev.status}: ${ev.url}`, errorText);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -54,7 +54,7 @@ export class HeaderNotifyComponent implements OnInit {
|
||||
return;
|
||||
}
|
||||
this.loading = true;
|
||||
let loadAlerts$ = this.alertSvc.searchAlerts(0, undefined, undefined, 0, 5).subscribe(
|
||||
let loadAlerts$ = this.alertSvc.loadAlerts(0, undefined, undefined, 0, 5).subscribe(
|
||||
message => {
|
||||
loadAlerts$.unsubscribe();
|
||||
if (message.code === 0) {
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
<i nz-icon nzType="sync" nzTheme="outline"></i>
|
||||
</button>
|
||||
|
||||
<button style="margin-right: 25px; float: right" nz-button nzType="primary" (click)="onFilterSearchAlerts()">
|
||||
<button style="margin-right: 25px; float: right" nz-button nzType="primary" (click)="loadAlertsTable()">
|
||||
{{ 'common.search' | i18n }}
|
||||
</button>
|
||||
<input
|
||||
@@ -39,7 +39,7 @@
|
||||
type="text"
|
||||
[placeholder]="'alert.center.search' | i18n"
|
||||
nzSize="default"
|
||||
(keyup.enter)="onFilterSearchAlerts()"
|
||||
(keyup.enter)="loadAlertsTable()"
|
||||
[(ngModel)]="filterContent"
|
||||
/>
|
||||
<nz-select
|
||||
|
||||
@@ -36,13 +36,16 @@ export class AlertCenterComponent implements OnInit {
|
||||
this.loadAlertsTable();
|
||||
}
|
||||
|
||||
onFilterSearchAlerts() {
|
||||
sync() {
|
||||
this.loadAlertsTable();
|
||||
}
|
||||
|
||||
loadAlertsTable() {
|
||||
this.tableLoading = true;
|
||||
let filterAlerts$ = this.alertSvc
|
||||
.searchAlerts(this.filterStatus, this.filterPriority, this.filterContent, this.pageIndex - 1, this.pageSize)
|
||||
let alertsInit$ = this.alertSvc
|
||||
.loadAlerts(this.filterStatus, this.filterPriority, this.filterContent, this.pageIndex - 1, this.pageSize)
|
||||
.subscribe(
|
||||
message => {
|
||||
filterAlerts$.unsubscribe();
|
||||
this.tableLoading = false;
|
||||
this.checkedAll = false;
|
||||
this.checkedAlertIds.clear();
|
||||
@@ -54,44 +57,16 @@ export class AlertCenterComponent implements OnInit {
|
||||
} else {
|
||||
console.warn(message.msg);
|
||||
}
|
||||
alertsInit$.unsubscribe();
|
||||
},
|
||||
error => {
|
||||
this.tableLoading = false;
|
||||
filterAlerts$.unsubscribe();
|
||||
alertsInit$.unsubscribe();
|
||||
console.error(error.msg);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
sync() {
|
||||
this.loadAlertsTable();
|
||||
}
|
||||
|
||||
loadAlertsTable() {
|
||||
this.tableLoading = true;
|
||||
let alertsInit$ = this.alertSvc.getAlerts(this.pageIndex - 1, this.pageSize).subscribe(
|
||||
message => {
|
||||
this.tableLoading = false;
|
||||
this.checkedAll = false;
|
||||
this.checkedAlertIds.clear();
|
||||
if (message.code === 0) {
|
||||
let page = message.data;
|
||||
this.alerts = page.content;
|
||||
this.pageIndex = page.number + 1;
|
||||
this.total = page.totalElements;
|
||||
} else {
|
||||
console.warn(message.msg);
|
||||
}
|
||||
alertsInit$.unsubscribe();
|
||||
},
|
||||
error => {
|
||||
this.tableLoading = false;
|
||||
alertsInit$.unsubscribe();
|
||||
console.error(error.msg);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
onDeleteAlerts() {
|
||||
if (this.checkedAlertIds == null || this.checkedAlertIds.size === 0) {
|
||||
this.notifySvc.warning(this.i18nSvc.fanyi('alert.center.notify.no-delete'), '');
|
||||
|
||||
@@ -347,7 +347,7 @@ export class DashboardComponent implements OnInit, OnDestroy {
|
||||
alertsDealLoading: boolean = true;
|
||||
|
||||
refreshAlertContentList(): void {
|
||||
let alertsInit$ = this.alertSvc.getAlerts(0, 4).subscribe(
|
||||
let alertsInit$ = this.alertSvc.loadAlerts(undefined, undefined, undefined, 0, 4).subscribe(
|
||||
message => {
|
||||
if (message.code === 0) {
|
||||
let page = message.data;
|
||||
|
||||
@@ -16,22 +16,7 @@ const alerts_status_uri = '/alerts/status';
|
||||
export class AlertService {
|
||||
constructor(private http: HttpClient) {}
|
||||
|
||||
public getAlerts(pageIndex: number, pageSize: number): Observable<Message<Page<Alert>>> {
|
||||
pageIndex = pageIndex ? pageIndex : 0;
|
||||
pageSize = pageSize ? pageSize : 8;
|
||||
// 注意HttpParams是不可变对象 需要保存set后返回的对象为最新对象
|
||||
let httpParams = new HttpParams();
|
||||
httpParams = httpParams.appendAll({
|
||||
sort: 'id',
|
||||
order: 'desc',
|
||||
pageIndex: pageIndex,
|
||||
pageSize: pageSize
|
||||
});
|
||||
const options = { params: httpParams };
|
||||
return this.http.get<Message<Page<Alert>>>(alerts_uri, options);
|
||||
}
|
||||
|
||||
public searchAlerts(
|
||||
public loadAlerts(
|
||||
status: number | undefined,
|
||||
priority: number | undefined,
|
||||
content: string | undefined,
|
||||
|
||||
@@ -1,140 +1,297 @@
|
||||
{
|
||||
"menu.search.placeholder": "搜索:員工、文件、照片等",
|
||||
"menu.fullscreen": "全屏",
|
||||
"menu.fullscreen.exit": "退出全屏",
|
||||
"menu.clear.local.storage": "清理在地緩存",
|
||||
"menu.lang": "語言",
|
||||
"menu.main": "主導航",
|
||||
"menu.dashboard": "儀錶盤",
|
||||
"menu.dashboard.v1": "默認頁",
|
||||
"menu.dashboard.analysis": "分析頁",
|
||||
"menu.dashboard.monitor": "監控頁",
|
||||
"menu.dashboard.workplace": "工作臺",
|
||||
"menu.shortcut": "快捷菜單",
|
||||
"menu.widgets": "小部件",
|
||||
"menu.alain": "Alain",
|
||||
"menu.style": "樣式",
|
||||
"menu.style.typography": "字體排印",
|
||||
"menu.style.gridmasonry": "瀑佈流",
|
||||
"menu.style.colors": "色彩",
|
||||
"menu.delon": "Delon 類庫",
|
||||
"menu.delon.form": "動態錶單",
|
||||
"menu.delon.table": "簡易錶格",
|
||||
"menu.delon.util": "工具集",
|
||||
"menu.delon.print": "列印",
|
||||
"menu.delon.guard": "路由守衛",
|
||||
"menu.delon.cache": "字典緩存",
|
||||
"menu.delon.qr": "二維碼",
|
||||
"menu.delon.acl": "基於角色訪問控製",
|
||||
"menu.delon.downfile": "下載文件",
|
||||
"menu.delon.xlsx": "Excel操作",
|
||||
"menu.delon.zip": "在地解壓縮",
|
||||
"menu.pro": "Antd Pro",
|
||||
"menu.form": "錶單頁",
|
||||
"menu.form.basicform": "基礎錶單",
|
||||
"menu.form.stepform": "分步錶單",
|
||||
"menu.form.stepform.info": "分步錶單(填寫轉賬信息)",
|
||||
"menu.form.stepform.confirm": "分步錶單(確認轉賬信息)",
|
||||
"menu.form.stepform.result": "分步錶單(完成)",
|
||||
"menu.form.advancedform": "高級錶單",
|
||||
"menu.list": "列錶頁",
|
||||
"menu.list.searchtable": "查詢錶格",
|
||||
"menu.list.basiclist": "標準列錶",
|
||||
"menu.list.cardlist": "卡片列錶",
|
||||
"menu.list.searchlist": "搜索列錶",
|
||||
"menu.list.searchlist.articles": "搜索列錶(文章)",
|
||||
"menu.list.searchlist.projects": "搜索列錶(項目)",
|
||||
"menu.list.searchlist.applications": "搜索列錶(應用)",
|
||||
"menu.profile": "詳情頁",
|
||||
"menu.profile.basic": "基礎詳情頁",
|
||||
"menu.profile.advanced": "高級詳情頁",
|
||||
"menu.result": "結果頁",
|
||||
"menu.result.success": "成功頁",
|
||||
"menu.result.fail": "失敗頁",
|
||||
"menu.exception": "異常頁",
|
||||
"menu.exception.not-permission": "403",
|
||||
"menu.exception.not-find": "404",
|
||||
"menu.exception.server-error": "500",
|
||||
"menu.account": "個人頁",
|
||||
"menu.account.center": "個人中心",
|
||||
"menu.account.settings": "個人設置",
|
||||
"menu.account.trigger": "觸發錯誤",
|
||||
"menu.account.logout": "退出登錄",
|
||||
"menu.more": "更多",
|
||||
"menu.report": "報錶",
|
||||
"menu.report.relation": "全屏關係圖",
|
||||
"menu.extras": "擴展",
|
||||
"menu.extras.helpcenter": "幫助中心",
|
||||
"menu.extras.settings": "設置",
|
||||
"menu.extras.poi": "門店",
|
||||
"app.analysis.test": "工專路 {{no}} 號店",
|
||||
"app.analysis.introduce": "指標說明",
|
||||
"app.analysis.total-sales": "總銷售額",
|
||||
"app.analysis.day-sales": "日銷售額",
|
||||
"app.analysis.visits": "訪問量",
|
||||
"app.analysis.visits-trend": "訪問量趨勢",
|
||||
"app.analysis.visits-ranking": "門店訪問量排名",
|
||||
"app.analysis.day-visits": "日訪問量",
|
||||
"app.analysis.week": "周同比",
|
||||
"app.analysis.day": "日同比",
|
||||
"app.analysis.payments": "支付筆數",
|
||||
"app.analysis.conversion-rate": "轉化率",
|
||||
"app.analysis.operational-effect": "運營活動效果",
|
||||
"app.analysis.sales-trend": "銷售趨勢",
|
||||
"app.analysis.sales-ranking": "門店銷售額排名",
|
||||
"app.analysis.all-year": "全年",
|
||||
"app.analysis.all-month": "本月",
|
||||
"app.analysis.all-week": "本周",
|
||||
"app.analysis.all-today": "今日",
|
||||
"app.analysis.search-users": "搜索用戶數",
|
||||
"app.analysis.per-capita-search": "人均搜索次數",
|
||||
"app.analysis.online-top-search": "線上熱門搜索",
|
||||
"app.analysis.the-proportion-of-sales": "銷售額類別佔比",
|
||||
"app.analysis.channel.all": "全部通路",
|
||||
"app.analysis.channel.online": "線上",
|
||||
"app.analysis.channel.stores": "門店",
|
||||
"app.analysis.sales": "銷售額",
|
||||
"app.analysis.traffic": "客流量",
|
||||
"app.analysis.table.rank": "排名",
|
||||
"app.analysis.table.search-keyword": "搜索關鍵詞",
|
||||
"app.analysis.table.users": "用戶數",
|
||||
"app.analysis.table.weekly-range": "周漲幅",
|
||||
"app.monitor.trading-activity": "活動實時交易情況",
|
||||
"app.monitor.total-transactions": "今日交易總額",
|
||||
"app.monitor.sales-target": "銷售目標完成率",
|
||||
"app.monitor.remaining-time": "活動剩餘時間",
|
||||
"app.monitor.total-transactions-per-second": "每秒交易總額",
|
||||
"app.monitor.activity-forecast": "活動情況預測",
|
||||
"app.monitor.efficiency": "券核效率",
|
||||
"app.monitor.ratio": "跳出率",
|
||||
"app.monitor.proportion-per-category": "各品類佔比",
|
||||
"app.monitor.fast-food": "中式快餐",
|
||||
"app.monitor.western-food": "西餐",
|
||||
"app.monitor.hot-pot": "火鍋",
|
||||
"app.monitor.waiting-for-implementation": "Waiting for implementation",
|
||||
"app.monitor.popular-searches": "熱門搜索",
|
||||
"app.monitor.resource-surplus": "資源剩餘",
|
||||
"app.monitor.fund-surplus": "補貼資金剩餘",
|
||||
"menu": {
|
||||
"main": "主導航",
|
||||
"lang": "語言",
|
||||
"dashboard": "儀表盤",
|
||||
"search.placeholder": "搜索監控:名稱、IP等",
|
||||
"fullscreen": "全屏",
|
||||
"fullscreen.exit": "退出全屏",
|
||||
"clear.local.storage": "清理本地緩存",
|
||||
"monitor": {
|
||||
"": "監控",
|
||||
"service": "應用服務監控",
|
||||
"db": "數據庫監控",
|
||||
"os": "操作系統監控",
|
||||
"mid": "中間件監控",
|
||||
"custom": "自定義監控"
|
||||
},
|
||||
"account": {
|
||||
"": "個人頁",
|
||||
"center": "個人中心",
|
||||
"settings": "賬戶設置",
|
||||
"security": "安全設置",
|
||||
"binding": "賬號綁定",
|
||||
"trigger": "觸發錯誤",
|
||||
"logout": "退出登錄"
|
||||
},
|
||||
"alert": {
|
||||
"": "告警",
|
||||
"center": "告警中心",
|
||||
"setting": "告警阈值",
|
||||
"dispatch": "告警通知"
|
||||
},
|
||||
"extras": {
|
||||
"": "更多",
|
||||
"help": "幫助中心",
|
||||
"setting": "設置"
|
||||
},
|
||||
"more": "更多"
|
||||
},
|
||||
"monitor": {
|
||||
"": "監控",
|
||||
"name": "監控名稱",
|
||||
"name.tip": "標識監控的名稱,名稱需要保證唯一性",
|
||||
"host": "監控Host",
|
||||
"host.tip": "被監控的對端IP或域名",
|
||||
"description": "描述備注",
|
||||
"description.tip": "更多標識和描述此監控的備注信息",
|
||||
"intervals": "采集間隔",
|
||||
"intervals.tip": "監控周期性采集數據間隔時間,單位秒",
|
||||
"category": {
|
||||
"": "監控類別",
|
||||
"service": "應用服務",
|
||||
"db": "數據庫",
|
||||
"os": "操作系統",
|
||||
"mid": "中間件",
|
||||
"custom": "自定義監控"
|
||||
},
|
||||
"app": {
|
||||
"": "監控類型",
|
||||
"website": "網站監測",
|
||||
"api": "HTTP API",
|
||||
"http": "HTTP API",
|
||||
"ping": "PING連通性",
|
||||
"port": "端口可用性",
|
||||
"mysql": "Mysql",
|
||||
"oracle": "Oracle",
|
||||
"redis": "Redis",
|
||||
"fullsite": "全站監控"
|
||||
},
|
||||
"status": {
|
||||
"": "監控狀態",
|
||||
"all": "全部狀態",
|
||||
"available": "正常監控",
|
||||
"unavailable": "不可用",
|
||||
"unreachable": "不可達",
|
||||
"un-manage": "未管理"
|
||||
}
|
||||
},
|
||||
"alert": {
|
||||
"": "告警",
|
||||
"status": {
|
||||
"": "告警狀態",
|
||||
"all": "全部狀態",
|
||||
"0": "未處理",
|
||||
"2": "已恢複",
|
||||
"3": "已處理"
|
||||
},
|
||||
"priority": {
|
||||
"": "告警級別",
|
||||
"all": "全部級別",
|
||||
"0": "緊急告警",
|
||||
"1": "嚴重告警",
|
||||
"2": "警告告警"
|
||||
}
|
||||
},
|
||||
"alert.setting.new": "新增阈值",
|
||||
"alert.setting.edit": "編輯阈值",
|
||||
"alert.setting.delete": "刪除阈值",
|
||||
"alert.setting.target": "指標對象",
|
||||
"alert.setting.expr": "阈值觸發表達式",
|
||||
"alert.setting.times": "觸發次數",
|
||||
"alert.setting.times.tip": "設置觸發阈值多少次之後才會發送告警",
|
||||
"alert.setting.template": "通知模版",
|
||||
"alert.setting.template.tip": "支持的通知模版環境變量",
|
||||
"alert.setting.template.label": "告警觸發後發送的通知信息模版,模版環境變量見上方",
|
||||
"alert.setting.template.example": "請輸入告警的通知模版.示例: ${app}.${metrics}.${metric}'s value is too high",
|
||||
"alert.setting.template.monitor-type": "監控類型名稱",
|
||||
"alert.setting.template.metrics-name": "監控指標集合名稱",
|
||||
"alert.setting.template.metric-name": "監控指標名稱",
|
||||
"alert.setting.template.metric-value": "監控指標對象值",
|
||||
"alert.setting.template.other-value": "所屬行其它指標值",
|
||||
"alert.setting.template.instance-value": "所屬行實例值",
|
||||
"alert.setting.default": "全局默認",
|
||||
"alert.setting.default.tip": "此告警阈值配置是否應用于全局所有此類型監控",
|
||||
"alert.setting.enable": "啓用告警",
|
||||
"alert.setting.enable.tip": "此告警阈值配置開啓生效或關閉",
|
||||
"alert.setting.connect": "告警定義關聯監控",
|
||||
"alert.setting.connect.left": "未關聯監控",
|
||||
"alert.setting.connect.right": "已關聯監控",
|
||||
"alert.setting.expr.tip": "支持的阈值觸發表達式環境變量與操作符",
|
||||
"alert.setting.expr.label": "根據此表達式來計算判斷是否觸發阈值,表達式環境變量和操作符見上方",
|
||||
"alert.setting.expr.example": "根據此表達式計算判斷是否觸發阈值.示例",
|
||||
"alert.setting.priority.tip": "觸發阈值的告警級別,從低到高依次爲:警告-warning,嚴重-critical,緊急-emergency",
|
||||
"alert.setting.target.tip": "選中的指標對象",
|
||||
"alert.setting.target.other": "所屬行其它指標對象",
|
||||
"alert.setting.target.instance": "所屬行實例",
|
||||
"alert.setting.operator": "支持操作符函數",
|
||||
"alert.center.delete": "刪除告警",
|
||||
"alert.center.deal": "標記已處理",
|
||||
"alert.center.no-deal": "標記未處理",
|
||||
"alert.center.search": "搜索告警內容",
|
||||
"alert.center.filter-status": "告警狀態過濾",
|
||||
"alert.center.filter-priority": "告警級別過濾",
|
||||
"alert.center.target": "告警指標",
|
||||
"alert.center.monitor": "所屬監控",
|
||||
"alert.center.priority": "級別",
|
||||
"alert.center.content": "告警內容",
|
||||
"alert.center.status": "狀態",
|
||||
"alert.center.time": "告警時間",
|
||||
"alert.center.notify.no-delete": "未選中任何待刪除項!",
|
||||
"alert.center.confirm.delete": "請確認是否刪除!",
|
||||
"alert.center.confirm.delete-batch": "請確認是否批量刪除!",
|
||||
"alert.center.notify.no-mark": "未選中任何待標記項!",
|
||||
"alert.center.confirm.mark-done-batch": "請確認是否批量標記已處理!",
|
||||
"alert.center.confirm.mark-done": "請確認是否標記已處理!",
|
||||
"alert.center.confirm.mark-no-batch": "請確認是否批量標記未處理!",
|
||||
"alert.center.confirm.mark-no": "請確認是否標記未處理!",
|
||||
"alert.notice.receiver": "告警接收人",
|
||||
"alert.notice.receiver.new": "新增接收人",
|
||||
"alert.notice.receiver.edit": "編輯接收人",
|
||||
"alert.notice.receiver.delete": "刪除接收人",
|
||||
"alert.notice.receiver.people": "接收人",
|
||||
"alert.notice.receiver.people.name": "接收人名稱",
|
||||
"alert.notice.receiver.type": "通知方式",
|
||||
"alert.notice.receiver.setting": "配置",
|
||||
"alert.notice.type.sms": "短信",
|
||||
"alert.notice.type.phone": "手機號",
|
||||
"alert.notice.type.email": "郵箱",
|
||||
"alert.notice.type.url": "URL地址",
|
||||
"alert.notice.type.wechat": "微信公衆號",
|
||||
"alert.notice.type.wechat-id": "微信OPENID",
|
||||
"alert.notice.type.wework": "企業微信機器人",
|
||||
"alert.notice.type.wework-key": "企業微信機器人KEY",
|
||||
"alert.notice.type.access-token": "機器人ACCESS_TOKEN",
|
||||
"alert.notice.type.ding": "釘釘機器人",
|
||||
"alert.notice.type.fei-shu": "飛書機器人",
|
||||
"alert.notice.type.fei-shu-key": "飛書機器人KEY",
|
||||
"alert.notice.rule": "告警通知策略",
|
||||
"alert.notice.rule.new": "新增通知策略",
|
||||
"alert.notice.rule.edit": "編輯通知策略",
|
||||
"alert.notice.rule.delete": "刪除通知策略",
|
||||
"alert.notice.rule.name": "策略名稱",
|
||||
"alert.notice.rule.all": "轉發所有",
|
||||
"alert.notice.rule.enable": "是否啓用",
|
||||
"dashboard.alerts.title": "最近告警列表",
|
||||
"dashboard.alerts.title-no": "最近未處理告警",
|
||||
"dashboard.alerts.no": "暫無未處理告警",
|
||||
"dashboard.alerts.enter": "進入告警中心",
|
||||
"dashboard.alerts.distribute": "告警分布",
|
||||
"dashboard.alerts.num": "告警數量",
|
||||
"dashboard.alerts.deal": "告警處理",
|
||||
"dashboard.alerts.deal-percent": "告警處理率",
|
||||
"dashboard.monitors.total": "監控總量",
|
||||
"dashboard.monitors.title": "監控總覽",
|
||||
"dashboard.monitors.sub-title": "監控類型納管數量分布",
|
||||
"dashboard.monitors.formatter": "個監控 占比",
|
||||
"dashboard.monitors.distribute": "納管數量分布",
|
||||
"monitors.list": "監控列表",
|
||||
"monitors.new": "新增",
|
||||
"monitors.new.success": "新增監控成功",
|
||||
"monitors.new.failed": "新增監控失敗",
|
||||
"monitors.edit": "編輯",
|
||||
"monitors.edit.success": "修改監控成功",
|
||||
"monitors.edit.failed": "修改監控失敗",
|
||||
"monitors.not-found": "查詢異常,此監控不存在",
|
||||
"monitors.delete": "刪除",
|
||||
"monitors.edit-monitor": "編輯監控",
|
||||
"monitors.delete-monitor": "刪除監控",
|
||||
"monitors.enable": "啓用監控",
|
||||
"monitors.cancel": "取消監控",
|
||||
"monitors.search.placeholder": "搜索監控",
|
||||
"monitors.search.filter": "監控狀態過濾",
|
||||
"monitors.total": "總量",
|
||||
"monitors.advanced": "高級設置",
|
||||
"monitors.advanced.tip": "設置高級可選參數",
|
||||
"monitors.detect": "測試連接",
|
||||
"monitors.detect.success": "測試連接成功",
|
||||
"monitors.detect.failed": "測試連接失敗",
|
||||
"monitors.detect.tip": "新增監控前是否先探測檢查監控可用性",
|
||||
"monitors.detail": "監控詳情",
|
||||
"monitors.detail.name": "名稱",
|
||||
"monitors.detail.port": "端口",
|
||||
"monitors.detail.description": "描述",
|
||||
"monitors.detail.status": "狀態",
|
||||
"monitors.detail.basic": "監控基本屬性",
|
||||
"monitors.detail.realtime": "監控實時數據詳情",
|
||||
"monitors.detail.history": "監控曆史圖表詳情",
|
||||
"monitors.collect.time": "采集時間",
|
||||
"monitors.collect.time.tip": "最近采集時間",
|
||||
"monitors.detail.chart.zoom": "區域縮放",
|
||||
"monitors.detail.chart.back": "縮放還原",
|
||||
"monitors.detail.chart.save": "保存圖片",
|
||||
"monitors.detail.chart.query-1h": "查詢近1小時",
|
||||
"monitors.detail.chart.query-6h": "查詢近6小時",
|
||||
"monitors.detail.chart.query-1d": "查詢近1天",
|
||||
"monitors.detail.chart.query-1w": "查詢近1周",
|
||||
"monitors.detail.chart.query-1m": "查詢近1月",
|
||||
"monitors.detail.chart.no-data": "暫無數據",
|
||||
"monitors.detail.chart.unit": "單位",
|
||||
"common.name": "名稱",
|
||||
"common.value": "值",
|
||||
"common.search": "搜索",
|
||||
"common.refresh": "刷新",
|
||||
"common.edit-time": "更新時間",
|
||||
"common.new-time": "創建時間",
|
||||
"common.edit": "操作",
|
||||
"common.total": "總量",
|
||||
"common.yes": "是",
|
||||
"common.no": "否",
|
||||
"common.enable": "開啓",
|
||||
"common.disable": "關閉",
|
||||
"common.notify.no-select-edit": "未選中任何待編輯項!",
|
||||
"common.notify.one-select-edit": "只能對一個選中項進行編輯!",
|
||||
"common.confirm.delete": "請確認是否刪除!",
|
||||
"common.notify.no-select-delete": "未選中任何待刪除項!",
|
||||
"common.confirm.delete-batch": "請確認是否批量刪除!",
|
||||
"common.notify.delete-success": "刪除成功!",
|
||||
"common.notify.delete-fail": "刪除失敗!",
|
||||
"common.notify.new-success": "新增成功!",
|
||||
"common.notify.new-fail": "新增失敗!",
|
||||
"common.notify.apply-success": "應用成功!",
|
||||
"common.notify.apply-fail": "應用失敗!",
|
||||
"common.notify.monitor-fail": "查詢此監控定義詳情失敗!",
|
||||
"common.notify.edit-success": "修改成功!",
|
||||
"common.notify.edit-fail": "修改失敗!",
|
||||
"common.notify.mark-success": "標記成功!",
|
||||
"common.notify.mark-fail": "標記失敗!",
|
||||
"common.notify.no-select-cancel": "未選中任何待取消項!",
|
||||
"common.confirm.cancel-batch": "請確認是否批量取消監控!",
|
||||
"common.confirm.cancel": "請確認是否取消監控!",
|
||||
"common.notify.cancel-success": "取消監控成功!",
|
||||
"common.notify.cancel-fail": "取消監控失敗!",
|
||||
"common.notify.no-select-enable": "未選中任何待啓用監控項!",
|
||||
"common.confirm.enable-batch": "請確認是否批量啓用監控!",
|
||||
"common.confirm.enable": "請確認是否啓用監控!",
|
||||
"common.notify.enable-success": "啓用監控成功!",
|
||||
"common.notify.enable-fail": "啓用監控失敗!",
|
||||
"common.confirm.clear-cache": "請確認是否清理緩存!",
|
||||
"common.notify.clear-success": "清理成功!",
|
||||
"common.button.ok": "確定",
|
||||
"common.button.detect": "測試",
|
||||
"common.button.cancel": "取消",
|
||||
"common.button.help": "幫助",
|
||||
"common.button.edit": "編輯",
|
||||
"common.button.delete": "刪除",
|
||||
"app.theme.default": "淺色主題",
|
||||
"app.theme.dark": "深色主題",
|
||||
"app.theme.compact": "緊湊主題",
|
||||
"app.role.admin": "管理員",
|
||||
"app.lock": "鎖屏",
|
||||
"app.login.message-invalid-credentials": "賬戶或密碼錯誤(admin/ant.design)",
|
||||
"app.login.message-invalid-verification-code": "驗證碼錯誤",
|
||||
"app.lock.placeholder": "輸入任意解鎖",
|
||||
"app.passport.desc": "TanCloud-易用友好的高性能監控雲服務",
|
||||
"app.passport.welcome": "歡迎使用TanCloud探雲-監控雲服務-tancloud.cn",
|
||||
"app.login.message-need-identifier": "請輸入用戶名",
|
||||
"app.login.message-need-credential": "請輸入密碼",
|
||||
"app.login.message-invalid-credentials": "賬戶或密碼錯誤",
|
||||
"app.login.tab-login-credentials": "賬戶密碼登錄",
|
||||
"app.login.tab-login-mobile": "手機號登錄",
|
||||
"app.login.remember-me": "自動登錄",
|
||||
"app.login.forgot-password": "忘記密碼",
|
||||
"app.login.sign-in-with": "其他登錄方式",
|
||||
"app.login.signup": "註冊賬戶",
|
||||
"app.login.login": "登錄",
|
||||
"app.register.register": "註冊",
|
||||
"app.register.get-verification-code": "獲取驗證碼",
|
||||
"app.register.sign-in": "使用已有賬戶登錄",
|
||||
"app.register-result.msg": "妳的賬戶:{{email}} 註冊成功",
|
||||
"app.register-result.activation-email":
|
||||
"激活郵件已發送到妳的郵箱中,郵件有效期為24小時。請及時登錄郵箱,點擊郵件中的鏈接激活帳戶。",
|
||||
"app.register-result.back-home": "返回首頁",
|
||||
"app.register-result.view-mailbox": "檢視郵箱",
|
||||
"validation.email.required": "請輸入郵箱地址!",
|
||||
"validation.email.wrong-format": "郵箱地址格式錯誤!",
|
||||
"validation.email.invalid": "無效的郵箱地址!",
|
||||
"validation.phone.invalid": "無效的手機號!",
|
||||
"validation.verification-code.invalid": "無效的驗證碼,應是6位數字!",
|
||||
"validation.password.required": "請輸入密碼!",
|
||||
"validation.password.twice": "兩次輸入的密碼不匹配!",
|
||||
"validation.password.strength.msg": "請至少輸入 6 個字符。請不要使用容易被猜到的密碼。",
|
||||
@@ -148,5 +305,6 @@
|
||||
"validation.title.required": "請輸入標題",
|
||||
"validation.date.required": "請選擇起止日期",
|
||||
"validation.goal.required": "請輸入目標描述",
|
||||
"validation.standard.required": "請輸入衡量標淮"
|
||||
"validation.standard.required": "請輸入衡量標准",
|
||||
"validation.required": "請填充必填項! "
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ export const environment = {
|
||||
production: true,
|
||||
useHash: false,
|
||||
api: {
|
||||
baseUrl: '/',
|
||||
baseUrl: '/api/',
|
||||
refreshTokenEnabled: true
|
||||
}
|
||||
} as Environment;
|
||||
|
||||
Reference in New Issue
Block a user