DomeOS sender组件
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
cron
docker
g
http
model
proc
redis
.gitignore
LICENSE
NOTICE
README.md
cfg.example.json
control
main.go

README.md

domeos/sender

Notice

domeos/sender模块是以open-falcon原生sender模块为基础,为适应DomeOS监控报警需求而设计修改的,包名已修改为github.com/domeos/sender

原生open-falcon系统中,alarm处理报警event可能会产生报警短信或者报警邮件,alarm不负责发送,只是把报警邮件、短信写入redis队列,sender负责读取并发 送。sender的配置文件cfg.json中配置了api:sms和api:mail,即两个http接口,以适应不同公司发送短信和邮件的需求。

当要发送短信的时候,sender就会调用api:sms中配置的http接口,post方式,参数是:

  • tos:用逗号分隔的多个手机号
  • content:短信内容

当要发送邮件的时候,sender就会调用api:mail中配置的http接口,post方式,参数是:

  • tos:用逗号分隔的多个邮箱地址
  • content:邮件正文
  • subject:邮件标题

在DomeOS中,api:sms和api:mail改为由DomeOS的数据库全局配置中读取得到。当DomeOS全局配置改变时DomeOS服务器将主动调用sender接口/config/api/reload 从DomeOS数据库中更新新的短信和邮件API接口;同时sender也会每隔60s自动向DomeOS数据库拉取短信和邮件API接口。

Installation

# set $GOPATH and $GOROOT
mkdir -p $GOPATH/src/github.com/domeos
cd $GOPATH/src/github.com/domeos
git clone https://github.com/domeos/sender.git
cd sender
go get ./...
./control build
# vi cfg.json modify configuration
./control start

Configuration

  • database: DomeOS数据库地址,需提供用户名、密码、地址与对应端口
  • maxIdle: MySQL连接池最大空闲连接数
  • http: 监听的http端口
  • redis: redis地址需要和alarm、judge使用同一个
  • queue: 维持默认即可,需要和alarm的配置一致
  • worker: 最多同时有多少个线程调用短信、邮件发送接口
  • api: 发送短信和邮件的接口

Run In Docker Container

首先构建domeos/sender镜像:

sudo docker build -t="domeos/sender:latest" ./docker/

启动docker容器:

sudo docker run -d --restart=always \
    -p <_sender_http_port>:6066 \
    -e DATABASE="\"<_domeos_db_user>:<_domeos_db_passwd>@tcp(<_domeos_db_addr>)/domeos?loc=Local&parseTime=true\"" \
    -e REDIS_ADDR="\"<_redis>\"" \
    --name sender \
    pub.domeos.org/domeos/sender:1.0

参数说明:

  • _sender_http_port: sender服务http端口,主要用于状态检测、调试等。
  • _domeos_db_user: DomeOS中MySQL数据库的用户名。
  • _domeos_db_passwd: DomeOS中MySQL数据库的密码。
  • _domeos_db_addr: DomeOS中MySQL数据库的地址,格式为IP:Port。
  • _redis: 用于报警的redis服务地址,格式为IP:Port。

样例:

sudo docker run -d --restart=always \
    -p 6066:6066 \
    -e DATABASE="\"root:root@tcp(10.16.42.199:3306)/domeos?loc=Local&parseTime=true\"" \
    -e REDIS_ADDR="\"10.16.42.199:6379\"" \
    --name sender \
    pub.domeos.org/domeos/sender:1.0

验证:

通过curl -s localhost:<_sender_http_port>/health命令查看运行状态,若运行正常将返回ok。

DomeOS仓库中domeos/sender对应版本:pub.domeos.org/domeos/sender:1.0