美文网首页
端口监控的最佳实践

端口监控的最佳实践

作者: 龙渊秦五 | 来源:发表于2015-12-31 22:51 被阅读1941次

    这个最佳实践只是个噱头,标题党,呵呵,下面所述只是个人看法~

    Open-Falcon的端口监控是在web端配置的,agent通过hbs的心跳机制拉取本机应该监听的端口,通过ss -tln指令判断端口是否在监听,在监听,汇报value=1到server端,没在监听,汇报value=0到server端,上报的数据长这样:

    {
        "endpoint": "qd-sa-falcon-graph01.hd",
        "metric": "net.port.listen",
        "tags": "port=8080",
        "value": 1,
        "timestamp": 1451569142,
        "counterType": "GAUGE",
        "step": 60
    }
    

    tags中只是表明了这是哪个端口,没有其他维度的信息,于是我们要想对这个端口做监控需要做这种配置:

    metric=net.port.listen port=8080 all(#2) != 1
    

    报警的时候如果只是报8080端口宕了,不太容易知道这是哪个服务,所以通常需要为这个策略写一个备注信息,比如“a服务宕”,这样在报警的时候就可以把这个备注信息塞到报警短信里。

    那作为一个开发人员,他应该做些什么呢?

    1. 创建一个HostGroup,放置要部署服务的一批机器
    2. 服务部署完成之后创建一个策略模板,添加端口监控策略
    3. 把HostGroup与这个策略模板绑定

    看起来也没有多少工作,也还好啦。但是,我可能会写多个服务,每个服务都有要监控的端口,那就要重复上面的工作,而在服务升级维护的时候可能需要修改屏蔽相关策略,服务下线的时候删除相关策略。

    但是,上面都是手工操作。虽说系统做到这步,已经差不多了,但是刚才灵光乍现,把想法分享给大家。

    针对服务的监控就要跟着服务走,比如某个监控脚本是为了采集某个服务的相关指标,那该监控脚本就要随着服务的上线而上线,随着服务的升级而升级,随着服务的下线而下线

    而端口监控,就是针对某个服务的,于是,端口监控也应是跟着服务走的。

    终极方案

    我们可以编写一个脚本用来做端口监控,或者改造agent,让agent读取本机的某个端口命名的文件,读到哪个端口文件就去探测监控哪个端口。文件名是具体端口,文件内容是tags,比如:team=sa-dev,project=falcon,module=transfer,agent在push端口监控数据的时候,不同的端口要带上相关的这个tags。

    服务端的端口监控配置可以大大减少,比如我们团队开发的falcon这个项目的所有组件的所有端口出了问题,都要给我发报警,我可以这么配置:

    each(metric=net.port.listen team=sa-dev project=falcon) all(#2) != 1
    

    对于端口文件的修改,可以在服务的启停脚本中操作,这样一来,就自动化起来了~

    相关文章

      网友评论

          本文标题:端口监控的最佳实践

          本文链接:https://www.haomeiwen.com/subject/zjxwhttx.html