当前位置: 首页 >  在线教学 >  监控系统自监控怎么做?

监控系统自监控怎么做?

导读:问题.监控系统用于监控其他的系统、基础设施,绝对是 P0.级的服务,那监控系统的自监控应该怎么做呢?如果自己监控自己,有些组件挂掉了难免循环依赖,如果单独搞一套新的监控系统来监控当前服役的监控系统,又搞得有些过于复杂。本文我们来探讨一下监控系统的自监控应该怎么做。.解决方案:自身

问题

监控系统用于监控其他的系统、基础设施,绝对是 P0 级的服务,那监控系统的自监控应该怎么做呢?如果自己监控自己,有些组件挂掉了难免循环依赖,如果单独搞一套新的监控系统来监控当前服役的监控系统,又搞得有些过于复杂。本文我们来探讨一下监控系统的自监控应该怎么做。

解决方案:自身指标

首先,监控系统自身是会暴露监控指标的,比如 Prometheus、VictoriaMetrics、Nightingale,都通过 /metrics 接口暴露了自身的监控指标,这些指标通过监控系统自身的采集机制去采集就好,相关数据的历史趋势图、告警规则,也在监控系统自身配置好,只要自身模块没有挂掉,或者没有全部挂掉,相关数据基本都可以正常使用。

比如 Nightingale 的自身监控指标,可以通过 categraf 的 input.prometheus 插件来采集,即 conf/input.prometheus/prometheus.toml 的内容如下:

[[instances]]
urls = [
    "http://localhost:17000/metrics"
]

localhost:17000 换成你的 Nightingale 的地址即可。然后导入内置仪表盘:https://github.com/ccfos/nightingale/tree/main/integrations/n9e/dashboards,即可看到 Nightingale 自身的监控指标了。

解决方案:存活监控

如果监控系统同时有多个模块故障,此时自身指标可能都采集不到了,告警引擎可能也有故障,此时就没法通过自身指标来监控了,此时就需要一个外挂的小监控系统来监控这类严重情况了。而且,告警通道尽量也不要复用之前的通道,因为通道可能也会故障。

我的建议是采用 catpaw + FlashDuty 来搞这个需求。FlashDuty 是外网的 SaaS 服务,只要公网出口是好的,就能提供监控服务,而且无需我们维护,使用免费套餐都够用,毕竟监控系统也不会经常挂。。。

catpaw 最新版本是 v0.7.0,已经提供了 exec(执行脚本的插件)、filechange(文件变化监控的插件)、http(HTTP探测的插件)、journaltail(系统日志异常检测插件)、mtime(递归判断文件变化的插件)、net(TCP、UDP探测的插件)、ping(PING插件)、procnum(进程数量监控插件)、sfilter(自定义脚本插件,相比exec插件更简单,匹配脚本输出)等多个监控插件,我们可以使用 net 插件来探测监控系统的各个组件的存活情况,比如下面是 net 插件的配置样例:

[[instances]]
targets = [
#     "127.0.0.1:22",
#     "localhost:6379",
#     ":9090"
]

## Set timeout (default 5 seconds)
# timeout = "5s"

## Set read timeout (only used if expecting a response)
# read_timeout = "5s"

# # Concurrent requests to make per instance
# concurrency = 10

# # gather interval
# interval = "30s"

# # Optional append labels
# labels = { env="production", team="devops" }

## Protocol, must be "tcp" or "udp"
## NOTE: because the "udp" protocol does not respond to requests, it requires
## a send/expect string pair (see below).
# protocol = "tcp"

## The following options are required for UDP checks. For TCP, they are
## optional. The plugin will send the given string to the server and then
## expect to receive the given 'expect' string back.
## string sent to the server
# send = "ssh"
## expected string in answer
# expect = "ssh"

[instances.alerting]
## Enable alerting or not
enabled = true
## Same functionality as Prometheus keyword 'for'
for_duration = 0
## Minimum interval duration between notifications
repeat_interval = "5m"
## Maximum number of notifications
repeat_number = 3
## Whether notify recovery event
recovery_notification = true
## Choice: Critical, Warning, Info
default_severity = "Warning"

如果目标 IP:Port 连不上了,就会报警,报警事件的具体推送策略在 [instances.alerting] 配置段配置。

如果监控系统的某个模块,不监听端口,没法监控端口存活,可以使用进程数量监控,即 procnum 插件,相关配置样例如下:

[[instances]]
# # executable name (ie, pgrep <search_exec_substring>)
# search_exec_substring = ""

# # pattern as argument for pgrep (ie, pgrep -f <search_cmdline_substring>)
search_cmdline_substring = ""

# # windows service name
# search_win_service = ""

alert_if_num_lt = 1
check = "进程存活检测(进程数量检测)"
interval = "30s"

[instances.alerting]
## Enable alerting or not
enabled = true
## Same functionality as Prometheus keyword 'for'
for_duration = 0
## Minimum interval duration between notifications
repeat_interval = "5m"
## Maximum number of notifications
repeat_number = 3
## Whether notify recovery event
recovery_notification = true
## Choice: Critical, Warning, Info
default_severity = "Warning"

net 和 procnum 这两个插件配合,理论上一定可以发现进程挂掉的情况,如此一来,严重的情况 catpaw 就可以发现了,不严重的情况,监控系统自身的指标就可以发现了,齐活。

enjoy :-)

内容
  • 前途无量的MEMS传感器技术
    前途无量的MEMS传感器技术
    2023-12-03
    MEMS传感器即微机电系统(Micro-electro Mechanical.Systems),是指将精密机械系统与微电
  • 用SGDK开发世嘉MD游戏:入门篇
    用SGDK开发世嘉MD游戏:入门
    2023-12-03
    用SGDK开发世嘉MD游戏:入门篇.0. github上的wiki教程(推荐英语好的看,英语不好的就看我写的教程吧).h
  • 为什么使用消息队列?我这样回答,面试官直说讲得很清楚
    为什么使用消息队列?我这样回答,
    2023-12-01
    为什么要使用消息队列,六个字总结:解耦、异步、消峰.1)解耦.传统模式下系统间的耦合性太强。怎么说呢,举个例子:系统 A
  • 领带
    领带
    2023-12-31
    产品介绍:领带.产品功能.提升形象:领带是一种重要的时尚配件,可以为穿着者增加自信并提升整体形象。.衬托服装:领带可以与
  • 牛仔裤
    牛仔裤
    2024-01-05
    牛仔裤.牛仔裤,是一种起源于美国的经典服装单品,以其耐穿耐磨的特性,成为了时尚界不可或缺的一部分。无论是男女老少,都能在
  • 休闲衬衫
    休闲衬衫
    2023-12-21
    休闲衬衫.产品描述.我们的休闲衬衫是男士和女士款式的时尚休闲服装,适合各种休闲场合穿着。我们的衬衫采用优质的面料制成,有
  • 儿童T恤
    儿童T恤
    2023-12-26
    儿童T恤.儿童T恤是一种专门为儿童设计的上衣,具有舒适、时尚、环保等特点,是孩子们*常穿着的必备单品。.产品功能.儿童T
  • 裙子
    裙子
    2023-12-16
    裙子.产品描述.我们的裙子采用高品质的面料制成,款式多样,适合各种场合穿着。无论是休闲的街头漫步,还是正式的商务会议,我
  • 儿童衬衫
    儿童衬衫
    2024-01-20
    儿童衬衫.产品功能.舒适的面料,透气性好,适合孩子穿着.简约时尚的设计,适合各种场合穿着.多种颜色和图案选择,满足不同孩
  • 儿童外套
    儿童外套
    2023-12-06
    儿童外套.产品功能.我们的儿童外套具有多种功能,包括保暖、防风、防水和舒适。它们采用高质量的面料制成,能够有效地抵御寒冷
  • 连衣裙
    连衣裙
    2024-01-20
    连衣裙.产品功能.舒适的穿着体验.时尚的设计风格.多种款式选择.适用于多种场合.产品描述.我们的连衣裙采用高品质的面料,
  • 外套
    外套
    2024-01-10
    外套.产品功能.外套是一种常见的服装,通常可作为保暖服装或装饰性服装穿着。它们有多种形式,包括短款和长款、有无连帽、单宽
  • 儿童运动服
    儿童运动服
    2023-12-16
    儿童运动服.产品功能.我们的儿童运动服采用高品质的面料和工艺制作而成,具有出色的透气性和舒适性,可以让孩子在运动中保持干