工具API(如:邮箱、阿里大鱼、钉钉、微信),可通过POST请求调用,只有后端逻辑,没有Web界面
- 使用人员请先修改
settings.py
和const
常量基本配置信息 - 此环境配置信息统一调用接口
http://172.16.0.101:9000/app_settings
$ git clone https://github.com/yanghongfei/AppTools.git
#记得修改`settings.py` 和`const`常量基本配置信息
$ 安装依赖 pip3 install -r requirements.txt
$ python3 app.py
Docker方式
- 请修改对应settings里面的内容
- 首先要具有docker环境,docker推荐使用
docker-ce
- 进入到项目目录,制作镜像启动
docker build -t apptools .
docker-compose up -d
- 目前测试支持QQ邮箱、腾讯企业邮箱、网易163邮箱、Gmail邮箱
- 常用邮件设置见
FAQ
介绍
- URL:http://172.16.0.101:9001/sendmail
- 请求方式:POST
- 使用
requests.post
请求
示例脚本 请参考:test.py
#### 返回结果
```json
{
'status': 0,
'data': {
'to_list': '[email protected],[email protected]',
'subject': '这里是标题',
'content': '这里是内容',
'subtype': 'plain',
'att': 'requirements.txt'
},
'msg': '发送成功'
}
注意事项:
const.py
修改对应的配置信息,如:ACCESS_KEY_ID, ACCESS_KEY_SECRET 修改const.py
阿里大鱼的:签名、模板、电话等信息。
- 支持阿里云短信服务(阿里大鱼)
- http://172.16.0.101:9001/sendsms
- 请求方式:POST
- 工具: POSTMAN
#Body信息
{
"msg": "这是postman短信测试", #这里msg的值是要传入到阿里大鱼模板配置有个${msg}变量
"phone": "10000000000,10000000001,10000000002" #电话号码多个用半角逗号隔离,不要有空格
}
{
"status": 0,
"data": {
"Message": "OK",
"RequestId": "888739E3-B956-487E-A436-269396C5DDA7",
"BizId": "790108141664813566^0",
"Code": "OK"
},
"msg": "短信发送成功"
}
企业DingTalk机器人消息通知, 请先获取WebHook, 然后修改对应
const.py
WebHook地址
- http://172.16.0.101:9001/send_dingtalk
- 请求方式:POST
- 工具: POSTMAN
- Body信息
{
"msgtype": "text",
"content": "这是内容",
"title": "这是标题",
"phone": "10000000000,10000000001,10000000002", #电话号码多个用半角逗号隔离,不要有空格
"is_at_all": "False"
}
-
参数介绍
-
msgtype: text, 普通文本格式
-
content: 文本内容
-
tilte: 标题
-
phone: 被@人的电话号码,比如机器人是在一个群里,这个号码必须是群里某一个人员的电话,没有则None
-
is_at_all: True则@全员,False不进行@全员
-
返回结果
{
"status": 0,
"data": {
"msgtype": "text",
"content": "这是内容",
"title": "这是标题",
"phone": "10000000000,10000000001,10000000002",
"is_at_all": "True"
},
"datetime": "2018-11-12 17:42:59",
"msg": "OK"
}
- Body信息
{
"msgtype": "link",
"content": "这是内容",
"title": "这是标题",
"phone": "None",
"url": "https://www.google.com",
"is_at_all": "True"
}
-
参数介绍
-
msgtype: link, 超链接格式
-
content: 文本内容
-
tilte: 标题
-
url : 超链接URL地址
-
phone: 被@人的电话号码,比如机器人是在一个群里,这个号码必须是群里某一个人员的电话,没有则None
-
is_at_all: True则@全员,False不进行@全员
-
返回结果
{
"status": 0,
"data": {
"msgtype": "link",
"content": "这是内容",
"title": "这是标题",
"phone": "None",
"url": "https://www.google.com",
"is_at_all": "True"
},
"datetime": "2018-11-12 17:56:00",
"msg": "OK"
}
微信消息通知
-
pushbear地址:
http://pushbear.ftqq.com/admin/#/api
附有使用说明和API说明 -
为什么使用pushbear
-
- 使用微信通知方式有:微信服务号、订阅号、企业号
-
- 服务号、企业号、需要企业证明,营业执照等,很不方便
-
- 订阅号每天自能发送一条订阅消息,发送数量太小
-
- 使用个人微信进行发送信息,wxpy模块,但是网页端口不稳定/被禁用了,无非使用
-
以上,搞起来很麻烦,不如使用pushbear(外面共有的API接口),一天1000条消息,简单方便免费,已使用半年。
- http://172.16.0.101:9001/send_wechat
- 请求方式:POST
- 工具: POSTMAN
- Body信息
{
"text": "OpenDevOps平台提醒",
"desp": "这是来自OpenDevOps平台的提醒内容"
}
- 参数介绍
- text: 标题,必填。不超过80个字
- desp: 长文本内容,选填。用户通过点击短信里的链接,打开浏览器阅读。支持Markdown语法,不超过64K
{
"status": 0,
"data": {
"text": "OpenDevOps平台提醒",
"desp": "这是来自OpenDevOps平台的提醒内容"
},
"datetime": "2018-11-13 14:56:45",
"msg": "OK"
}
故障管理后端代码,接入DevOps记录故障信息
+-------------------+--------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------------+--------------+------+-----+-------------------+-----------------------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| fault_name | varchar(100) | NO | | NULL | |
| fault_level | int(11) | NO | | NULL | |
| fault_state | int(11) | NO | | NULL | |
| fault_penson | varchar(100) | NO | | NULL | |
| processing_penson | varchar(100) | YES | | NULL | |
| fault_report | longtext | YES | | NULL | |
| fault_start_time | datetime | NO | | NULL | |
| fault_end_time | datetime | NO | | NULL | |
| fault_duration | varchar(100) | YES | | NULL | |
| fault_issue | varchar(100) | YES | | NULL | |
| fault_summary | varchar(100) | YES | | NULL | |
| create_at | datetime | NO | | NULL | |
| update_at | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------------------+--------------+------+-----+-------------------+-----------------------------+
- 字段说明
id = Column(Integer, primary_key=True, autoincrement=True) # ID 自增长
fault_name = Column(String(100), nullable=False) # 故障名称
fault_level = Column(Integer, nullable=False) # 故障级别,1,2,3,4为故障等级
fault_state = Column(Integer, nullable=False) # 故障状态,0:关闭 1:进行中
fault_penson = Column(String(100), nullable=False) # 故障责任人
processing_penson = Column(String(100), nullable=True) # 故障处理人员
fault_report = Column(LONGTEXT, nullable=True) # 故障报告 HTTPS链接,附件
fault_start_time = Column(DateTime, nullable=False) # 故障开始时间
fault_end_time = Column(DateTime, nullable=False) # 故障结束时间
fault_duration = Column(String(100), nullable=True) # 故障影响时间,分钟
fault_issue = Column(String(100), nullable=True) # 故障原因
fault_summary = Column(String(100), nullable=True) # 故障总结
create_at = Column(DateTime, nullable=False, default=datetime.now()) # 记录创建时间
update_at = Column(TIMESTAMP, nullable=False, default=datetime.now()) # 记录更新时间
- http://172.16.0.101:9001/fault
- 支持:GET/POST/PUT/DELETE
- 测试工具: POSTMAN RAW数据
- http://172.16.0.101:9001/fault #获取所有故障信息
#Body信息
{
"fault_name": "test011",
"fault_level": "1",
"fault_state": "1",
"fault_penson": "杨红飞",
"processing_penson": "杨红飞、OPS组",
"fault_report": "https://opendevops.cn/fault_report/test0011.html",
"fault_start_time": "2018-11-22",
"fault_end_time": "2018-11-23",
"fault_issue": "AWS底层重test启",
"fault_summary": "故障总结"
}
{
"fault_name": "test011", #除了name,其余都可以修改更新
"fault_level": "1",
"fault_state": "1",
"fault_penson": "杨红飞",
"processing_penson": "杨红飞test、OPS组",
"fault_report": "https://opendevops.cn/fault_report/test0011.html",
"fault_start_time": "2018-11-22",
"fault_end_time": "2018-11-23",
"fault_issue": "AWS底层重test启",
"fault_summary": "故障总结test"
}
{
"fault_name": "test011", #删除name
}
{
"status": 0,
"data": {
"fault_name": "test0112",
"fault_level": "1",
"fault_state": "1",
"fault_penson": "杨红飞",
"processing_penson": "杨红飞、OPS",
"fault_report": "https://opendevops.cn/fault_report/test0011.html",
"fault_start_time": "2018-11-22",
"fault_end_time": "2018-11-23",
"fault_issue": "AWS底层重test启",
"fault_summary": "故障总结"
},
"datetime": "2018-11-22 18:22:25",
"msg": "Name: test0112 添加成功"
}
事件提醒Tornado后端代码逻辑,配合前端可以,手动添加需要提醒的事件,可以帮助你进行Email提前提醒 其余人员使用注意:
settings.py
和utils/const.py
信息
+------------+--------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+-------------------+-----------------------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(100) | YES | | NULL | |
| content | varchar(100) | YES | | NULL | |
| email | varchar(100) | YES | | NULL | |
| advance_at | int(11) | YES | | NULL | |
| expire_at | datetime | YES | | NULL | |
| create_at | datetime | NO | | NULL | |
| update_at | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+------------+--------------+------+-----+-------------------+-----------------------------+
字段介绍
- ID: 自增长
- name: 事件名称
- content: 事件内容描述
- Email: 需要通知人员的Email地址
- advance: 提前多少天进行提醒
- expire_at: 事件过期/到期时间
- create_at: 记录事件创建时间
- update_at: 记录事件更新时间
- http://172.16.0.101:9001/event_reminder
- 工具:POSTMAN
- 支持:GET/POST/PUT/DELETE
curl -X GET http://172.16.0.101:9001/event_reminder
{
"name": "Ec2",
"content": "服务器到期提醒",
"email": "[email protected], [email protected]",
"advance_at": "100",
"expire_at": "2018-11-30"
}
{
"name": "Ec2", #name可读,其余信息都可以修改
"content": "这是修改后的服务器信息提醒",
"email": "[email protected], [email protected]",
"advance_at": "50",
"expire_at": "2018-12-30"
}
删除只需要填写name
{
"name": "域名"
}
{
"status": 0,
"data": {
"name": "域名",
"content": "这是域名将要到期提醒",
"email": "[email protected], [email protected]",
"advance_at": "10",
"expire_at": "2018-11-30"
},
"datetime": "2018-11-23 13:48:10",
"msg": "添加成功"
}
由于常见的Email有很多,这里列举下最常见的Email设置
-
Q: QQ邮箱怎么设置?
-
A: QQ邮箱主要注意使用网页生成授权码进行作为密码登陆
- SMTP地址:smtp.qq.com
- SMTP端口:465
- SSL加密:True, 开启
- 用 户: <your_qq>@qq.com
- 密 码: 授权码(一般为16位)
-
Q: 腾讯企业邮箱如何设置?
-
A: 腾讯企业邮箱同QQ邮箱,唯一一点SMTP服务器不同
- SMTP地址:smtp.exmail.qq.com
- SMTP端口:465
- SSL加密:True, 开启
- 用 户: <your_name>@domain.com
- 密 码: 授权码(一般为16位)
-
Q: 网易163邮箱如何设置?
-
A: 同上,唯一一点SMTP服务器不同
- SMTP地址:smtp.163.com
- SMTP端口:465
- SSL加密:True, 开启
- 用 户: <your_name>@163.com
- 密 码: 授权码(一般为16位)
-
Q: Gmail邮箱如何设置?
-
A: Gmail邮箱考虑到安全,需要注意以下2步
-
- 首先开启Google 二步认证
-
- SMTP地址:smtp.gmail.com
- SMTP端口:465
- SSL加密:True, 开启
- 用 户: <your_name>@gmail.com
- 密 码: 授权码(一般为16位)
-
2018-11-07
- 创建Apptool工具库
- 添加Email提醒
2018-11-10
- 添加SMS 阿里大鱼提醒
- 添加钉钉提醒
- 添加微信提醒
2018-11-22
- 添加故障管理
- 添加单文件上传(很Low,最简单的)
2018-11-23
- 添加事件提醒
- Docker部署方式