open-falcon / task 自监控等 Cron 任务

发布于 2021-12-03 17:40:00 字数 3285 浏览 1339 评论 0

task 是监控系统一个必要的辅助模块。有些功能,不适合与监控的核心业务耦合、无高可用要求、但又必不可少,我们把这部分功能拿出来 放到定时任务task模块中。 定时任务,要求单机部署,整套 falcon 系统中应该只有一个定时任务的服务实例。部署定时任务的服务器上,应该安装了 falcon-agent、开放了 1988 的数据推送接口。

定时任务,实现了如下几个功能:

  • index 更新。包括图表索引的全量更新和垃圾索引清理(是否自动清理,由配置决定)。
  • falcon 组件自监控数据采集。当前,定时任务了采集了 transfer、graph、task 等组建的状态数据。

Build

我们提供了最新的 release 包,你可以直接从这里下载。或者,你也可以按照如下方式进行源码编译,

# set $GOPATH and $GOROOT

# update dependencies
# cd $GOPATH/src/github.com/open-falcon/common && git pull

mkdir -p $GOPATH/src/github.com/open-falcon
cd $GOPATH/src/github.com/open-falcon
git clone https://github.com/open-falcon/task.git

cd task
go get ./...
./control build
./control pack

最后一步会 pack 出一个 tar.gz 的安装包,拿着这个包去部署服务即可。

Deploy

服务部署,包括配置修改、启动服务、检验服务、停止服务等。这之前,需要将安装包解压到服务的部署目录下。

# 修改配置, 配置项含义见下文
mv cfg.example.json cfg.json
vim cfg.json

# 启动服务
./control start

# 校验服务,这里假定服务开启了8002的http监听端口。检验结果为ok表明服务正常启动。
curl -s "127.0.0.1:8002/health"

...
# 停止服务
./control stop

服务启动后,可以通过日志查看服务的运行状态,日志文件地址为 ./var/app.log。可以通过调试脚本./test/debug查看服务器的内部状态数据,如 运行 bash ./test/debug 可以得到服务器内部状态的统计信息。

Configuration

debug

true/false, 如果为true,日志中会打印debug信息

http

- enable: true/false,表示是否开启该http端口,该端口为控制端口,主要用来对task发送控制命令、统计命令、debug命令等
- listen: 表示 http-server 监听的端口

index

- enable: true/false,表示是否开启索引更新任务
- dsn: 索引服务的MySQL的连接信息,默认用户名是 root,密码为空,host 为 127.0.0.1,database为graph(如有必要,请修改)
- maxIdle: MySQL连接池配置,连接池允许的最大空闲连接数,保持默认即可
- cluster: 后端 graph 索引更新的定时任务描述。一条记录的形如: graph 地址:执行周期描述,通过设置不同的执行周期,来实现负载在时间上的均衡。例如:后端部署了两个 graph 实例,cluster 可以配置为

"cluster":{
  "test.hostname01:6071" : "0 0 0 ? * 0-5", //周0-5,每天的00:00:00,开始执行索引全量更新;"0 0 0 ? * 0-5"为quartz表达式
  "test.hostname02:6071" : "0 30 0 ? * 0-5", //周0-5,每天的00:30:00,开始执行索引全量更新
}

- autoDelete: true|false,是否自动删除垃圾索引。默认为false

collector

- enable: true/false,表示是否开启 falcon 的自身状态采集任务
- destUrl: 监控数据的push地址,默认为本机的1988接口
- srcUrlFmt: 监控数据采集的url格式,%s 将由机器名或域名替换
- cluster: falcon后端服务列表,用具体的 module,hostname:port 表示,module 取值可以为 graph、transfer、task 等

补充说明

关于自监控报警

因为多点监控的需求,自版本 v0.0.10 开始,我们将自监控报警功能 从Task模块移除。关于 Open-Falcon 自监控的详情,请参见这里

关于过期索引清除

监控数据停止上报后,该数据对应的索引也会停止更新、变为过期索引。过期索引,影响视听,部分用户希望删除之。

我们原来的方案,是: 通过task模块,有数据上报的索引、每天被更新一次,7天未被更新的索引、清除之。但是,很多用户不能正确配置graph实例的http接口,导致正常上报的监控数据的索引 无法被更新;7天后,合法索引被task模块误删除。

为了解决上述问题,我们在默认配置里面,停掉了task模块自动删除过期索引的功能(autoDelete=false);如果你确定配置的index.cluster正确无误,可以自行打开该功能。

当然,我们提供了更安全的、手动删除过期索引的方法。用户按需触发索引删除操作,具体步骤为:

1.进行一次索引数据的全量更新。方法为: 针对每个graph实例,运行 curl -s "127.0.0.1:6071/index/updateAll",异步地触发graph实例的索引全量更新(这里假设graph的http监听端口为6071),等待所有的graph实例完成索引全量更新后 进行第2步操作。单个graph实例,索引全量更新的耗时,因counter数量、mysql数据库性能而不同,一般耗时不大于30min。

2.待索引全量更新完成后,发起过期索引删除 curl -s "$Hostname.Of.Task:$Http.Port/index/delete"。运行索引删除前,请务必确保索引全量更新已完成

项目地址:https://github.com/open-falcon/task

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

lorenzathorton8

文章 0 评论 0

Zero

文章 0 评论 0

萧瑟寒风

文章 0 评论 0

mylayout

文章 0 评论 0

tkewei

文章 0 评论 0

17818769742

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文