首页 > 其他分享 >监控系统自监控怎么做?

监控系统自监控怎么做?

时间:2023-07-10 16:23:20浏览次数:32  
标签:怎么 插件 ## interval 系统 instances 监控

问题

监控系统用于监控其他的系统、基础设施,绝对是 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 :-)

标签:怎么,插件,##,interval,系统,instances,监控
From: https://www.cnblogs.com/ulricqin/p/17541480.html

相关文章

  • Linux系统编程笔记
    系统调用open函数文件打开函数函数原型:intopen(constchar*pathname,intflags);intopen(constchar*pathname,intflags,mode_tmode)返回值为一个文件描述符参数列表:pathname:文件的完整路径flags:打开文件的模式,常用的模式包括:O_WRONLY:只写模式O_RD......
  • 如何安装 Arch Linux 操作系统?
    ArchLinuxInstall安装到使用Arch说明前面或多或少已经接触过Debian系列和RedHat系列相关Linux发行版,对于虚拟化软件VirtualBox如何创建虚拟机和加载ISO启动盘就不过多赘述。除非你从未使用过VirtualBox或者其他虚拟化软件。Live环境推荐资料:官方指南......
  • GGTalk 开源即时通讯系统源码剖析之:虚拟数据库
    继上篇《GGTalk开源即时通讯系统源码剖析之:服务端全局缓存》详细介绍了GGTalk对需要频繁查询数据库的数据做了服务端全局缓存处理,以降低数据库的读取压力以及加快客户端请求的响应,接下来我们将进入GGTalk服务端的虚拟数据库。GGTalkV8.0除了支持真实的数据库外,还内置了虚......
  • 台湾新代数控系统数据采集CNC系列通讯网络配置
    新代数控为Wince系统,近几年的新代都焊接了网口以及集成了api接口 控制器版本   架构新代的Dipole功能将人机与核心分离,让使用者于前台的应用程序(例如标准人机),透过因特网,进行操控后台的控制器。使用者可以藉由这个架构进行远程监控、远程诊断。前台应用程序的开发环境......
  • Fanuc发那科法兰克数控系统采集系列教程完整版(数据采集、网络配置、教程)
    Fanuc数控系统初探 FANUC是日本一家专门研究数控系统的公司,成立于1956年。是世界上最大的专业数控系统生产厂家,占据了全球70%的市场份额。FANUC于1959年首先推出了电液步进电机,在后来的若干年中逐步发展并完善了以硬件为主的开环数控系统。进入70年代,微电子技术、功率电子技......
  • 西门子免授权CNC数控系统数据采集c#、C、python都支持,可支持再各种操作系统上运行,无须
    西门子数控系统数据采集方案(无需OPC授权方案)西门子数控系统4.5版本及以上集成了工业协议OPCUA,用户可通过OPCUA协议进行设备的数据采集,但是需要西门子授权,而且仅支持828d,828dsl,840dsl本协议可通过原生TCP数据包和数控系统进行通讯,支持各种类型开发语言和操作平台。  西门......
  • 视频直播系统源码,uniapp滚动加载 下拉刷新
    视频直播系统源码,uniapp滚动加载下拉刷新滚动加载滚动加载指的是当用户滑动页面到底部时,自动加载更多数据。在uniapp中,我们可以通过监onReachBottom来实现滚动加载。 onReachBottom页面滚动到底部的事件(不是scroll-view滚到底),常用于下拉下一页数据。onReachBottom使用注意......
  • 哈斯HASS数控系统CNC数据采集
     碎碎念碎碎念  HASS机床有串口和网口两种接口,都支持数据采集 上必备工具:putty网口测试工具 第一步 网络配置: 打开设置--->点击网络--->点击有线连接-->设置ip地址-->网络选项右侧-->其他栏-->设置143参数-(端口号)->设置成功后一定要重启呀。第二步通讯  ......
  • 关键词:合作博弈 纳什谈判 微网 能源系统 编程语言:matlab 主题:
    关键词:合作博弈纳什谈判微网能源系统编程语言:matlab主题:基于纳什谈判理论的风–光–氢多主体能源系统合作运行方法主要内容:以可再生能源制氢为特征的能源系统将是今后能源互联网建设的重要方向之一。该文针对风–光–氢多主体能源系统的合作运行展开研究。首先,考虑主体间的......
  • carsim与simulink联合仿真的线控转向系统
    carsim与simulink联合仿真的线控转向系统ID:45300643950135267......