#通知服务设置
通知服务设置是用于整个YCM的服务(所有用户使用同一份配置),用于告警邮件的推送,巡检通知的推送等等。
# 邮箱设置
邮箱设置是用于整个YCM的邮箱服务,用于告警邮件的推送,巡检通知的推送等等。
点击系统设置的通知服务设置方框,进入到邮箱设置界面。

输入想要配置的邮箱发信服务信息,目前支持SSL和TLS加密认证邮箱服务。
确认后点击验证并保存。

点击之后会弹出相应的接收邮箱验证框,输入接收验证的邮箱。之后点击发送测试邮箱。

- 邮箱验证若没有点击验证并保存是无法启用的
- 仅保存是无法启用邮箱的,仅记住当前邮箱输入的配置
- 重置邮箱会清空当前邮箱的配置
邮箱配置的启停通过点击邮箱设置的启停按钮实现邮箱设置的开关,开启成功后所有配置好的推送服务将立刻开启。

# 短信设置
短信设置是用于整个YCM的短信服务,用于告警信息的推送,巡检通知的推送等等。
点击系统设置的通知服务设置方框,下拉页面进入到短信设置界面。

# 新增短信服务
在短信设置页面点击新增短信服务按钮,进入创建短信服务页面。

输入想要配置的短信发信服务信息,目前支持深圳市政数局短信平台,联通短信平台和自定义程序。
- 深圳市政数局短信平台

- 联通短信平台

- 自定义程序

填写信息后可以开启是否验证短信服务,输入接收短信测试短信的手机号码,点击确定。
# 启用短信服务
选择验证通过的短信服务,点击开启。短信服务同时只会生效一个,当开启某个短信服务时,其他短信服务自动关闭。

# 编辑短信服务
进入短信设置页面,选择某个已添加的短信服务,点击编辑。

编辑短信服务点击确认,需要重新验证该短信服务。
.
# 删除短信服务
进入短信设置页面,选择某个已添加的短信服务,点击删除。

# 自定义程序规格
短信服务支持自定义程序类型,YCM可以通过自定义的程序发送短信。
命令行参数如下:
| 参数名称 | 数据类型 | 约束 | 描述 |
|---|---|---|---|
| phone | string | 必传 | 电话号码 |
| msg | string | 必传 | 告警信息,base64编码(使用标准base64 RFC 4648) |
示例:
# binary
send_sms --phone "12345678910" --msg "WUNNIGFsYXJtIG1lc3NhZ2U="
# python
python send_sms.py --phone "12345678910" --msg "WUNNIGFsYXJtIG1lc3NhZ2U="
程序获取msg告警信息后,需要将信息用base64进行解码得到原本的信息,然后再发送短信到对应的电话号码。
- 自定义python程序示例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import argparse
import base64
import hashlib
import requests
import json
import time
unicom_endpoint = "http://127.0.0.1:9090/sms/v2/api/ssend"
unicom_id = "<id>"
unicom_user = "<user>"
unicom_pwd = "<password>"
unicom_sub_port = "<sub_port>"
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("-p", "--phone", type=str, help="phone number")
parser.add_argument("-m", "--msg", type=str, help="send message, using base64 codec")
args = parser.parse_args()
if args.phone is None:
print("argument 'phone' is none")
exit(1)
if args.msg is None:
print("argument 'msg' is none")
exit(1)
return args
def sha256_encrypt(text):
"""
对字符串进行SHA256 加密
"""
sha256 = hashlib.sha256()
sha256.update(text.encode('utf-8'))
return sha256.hexdigest()
def gen_headers():
"""
生成请求头
"""
now_milli_time = str(int(round(time.time() * 1000)))
sign = sha256_encrypt(unicom_user + unicom_pwd + now_milli_time)
headers = {
'content-type': 'application/json;charset=utf-8',
'accept': 'application/json',
'timestamp': now_milli_time,
'sign': sign,
}
return headers
def gen_req(args):
"""
生成请求体
"""
message = base64.b64decode(args.msg)
req = {
'spNum': unicom_id,
'content': str(message),
'mobiles': args.phone,
'userMsgId': "",
"atTime": "",
'subPort': unicom_sub_port,
}
json_req = json.dumps(req)
return json_req
def send_sms(args):
"""
发起短信请求
"""
hds = gen_headers()
req = gen_req(args)
resp = requests.post(unicom_endpoint, data=req, headers=hds)
print(resp.status_code)
print(resp.content)
resp.close()
if __name__ == "__main__":
args = parse_args()
send_sms(args)
- 返回结果示例:
python3 send_sms.py --phone 13838004800 --msg c2VuZCBzbXMgdGVzdAo=
200
b'{"description":"send message success","result":"0000","taskid":"819396"}\n'