Nightingale 夜莺监控系统 - 自愈篇(4)

Nightingale

Author:rab

官方文档:https://flashcat.cloud/docs/content/flashcat-monitor/nightingale/install/ibex/


目录

    • 前言
    • 一、部署
      • 1.1 MySQL
      • 1.2 Ibex Server
      • 1.3 Ibex Agent
    • 二、验证
      • 2.1 n9e 上配置告警自愈
      • 2.2 创建自愈脚本
      • 2.3 告警规则配置回调地址
      • 2.4 模拟 Nginx 故障
    • 总结


前言

夜莺通过 ibex 模块做告警自愈脚本的下发执行,Ibex 是告警自愈功能依赖的模块,提供一个批量执行命令的通道,可以做到在告警的时候自动去目标机器执行脚本。与 n9e 一样,ibex 采用 C/S 架构,因此,ibex 包括 server 和 agentd 两个模块,agentd 周期性调用 server 的 rpc 接口,询问有哪些任务要执行,如果有分配给自己的任务,就从 server 拿到任务脚本信息,在本地 fork 一个进程运行,然后将结果上报给服务端。为了简化部署,server 和 agentd 融合成了一个二进制,就是 ibex,通过传入不同的参数来启动不同的角色。ibex 架构图如下:

install-ibex

官方说,这是物理机时代的产物,我认为并不一定,这得看你的实际业务场景,即便你是云场景,脚本自愈有时候也是必须的。

注意的是,ibex 并没有 Web UI,它只提供了 API 接口。服务端依赖于 MySQL,因此我们也需要部署其后端存储(MySQL)。

接下来,将演示通过自愈脚本实现 nginx 服务宕机后的重启功能。

一、部署

1.1 MySQL

1、MySQL 安装

注意:MySQL 我们就不需要再次安装了,沿用我们前面 n9e 的 MySQL 实例即可。

2、初始化 SQL

初始化 SQL 去其官方的 Github 去找:https://github.com/flashcatcloud/ibex

image-20240114172052985

上传 SQL 文件至服务器相关目录并执行 SQL 初始化:

mysql> source /opt/tools/ibex.sql

image-20240114172528110

3、验证

image-20240114172718636

4、创建一个 ibex 用户

CREATE USER 'ibex'@'%' IDENTIFIED BY '67by5DV7vK3fiygm';
GRANT ALL PRIVILEGES ON ibex.* TO 'ibex'@'%';
flush privileges;

1.2 Ibex Server

为了方便管理,我们 Ibex 服务端与 n9e 服务端推荐部署在同一节点(Host)上。

1、二进制包下载

地址:https://github.com/flashcatcloud/ibex/releases

image-20240114171341871

2、解压

tar xzf ibex-v1.2.0-linux-amd64.tar.gz -C /data/

3、配置

vim /data/ibex-v1.2.0-linux-amd64/etc/server.conf

# 20090是RPC远程过渡调用协议的端口,即agentd周期性调用server接口的端口

image-20240114173143292

数据库配置:

image-20240114173731756

4、启动

cat <<EOF >/etc/systemd/system/ibex-server.service
[Unit]
Description="ibex-server"
After=network.target

[Service]
Type=simple

ExecStart=/data/ibex-v1.2.0-linux-amd64/ibex server
WorkingDirectory=/data/ibex-v1.2.0-linux-amd64

Restart=on-failure
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=ibex-server

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl start ibex-server.service
systemctl enable ibex-server.service
systemctl status ibex-server.service

image-20240114175835009

1.3 Ibex Agent

官方文档说了:为了简化部署,server 和 agentd 融合成了一个二进制,就是 ibex,通过传入不同的参数来启动不同的角色。

也就是说我们下载的 ibex 二进制包中只有一个可执行文件,即 ibex:

  • 如果你要启动服务端,运行:./ibex server
  • 如果你要启动客户端,运行:./ibex agentd

但是这里你会想到:是不是我所有的目标主机都得安装 Ibex agent 端呢?答案是显然的,但是官方为了方便,已经将客户端集成到了 Categraf 采集插件中了,也就是说你无需再在目标主机再次下载 ibex 安装包并执行 ./ibex agentd 安装客户端了,但前提是你的目标主机要有 Categraf 采集客户端。

20230524191231

接下来就是在 Categraf 中配置 Ibex。

vim /data/categraf-v0.3.45-linux-amd64/conf/config.toml

image-20240114175126110

如果你是边缘式下沉混杂部署,且中心与边缘是不同的 VPC,那需要填写 Ibex Server 的公网 IP 地址。

二、验证

2.1 n9e 上配置告警自愈

因为 n9e 发出的告警要与 Ibex 自愈服务有“联系”,才能实现告警自愈,说白了就是设置 n9e 触发告警后的回调地址。

Address:ibex-server 端的监听地址

BasicAuthUser:ibex-server 鉴权用户

BasicAuthPass:ibex-server 鉴权密码

Timeout:超时时间(s)

image-20240114180636607

2.2 创建自愈脚本

在对应的业务组中创建自愈脚本。

image-20240114180935146

image-20240114181447493

注意,上图中的 Host 机器列表,要对应下面的机器列表(也就是说你的机器要存在):

image-20240114181557154

OK,如下就是我们配置好的自愈脚本,注意其 ID,在回调地址中有用

image-20240114184057795

2.3 告警规则配置回调地址

1、找到对应的告警规则

image-20240114183752278

2、点击进去后配置回调地址

image-20240114183849345

回调地址说明:

${ibex}/1,其中 ${ibex} 表示获取 ibex 变量,其实就是要执行与 ibex 自愈的相关调用,1 表示要调用并执行 ID 为 1 的自愈脚本。

2.4 模拟 Nginx 故障

停掉 Nginx:

systemctl stop nginx.service

因为这个告警规则接入了钉钉,此时我的钉钉已经收到告警消息:

如下图,共有两条告警,说明触发告警后,执行了自愈脚本。

image-20240115102859978

我们来看看是否在告警后执行自愈脚本:

image-20240115103411515

点击进去:

可看到状态是 SUCCESS

image-20240115103442744

继续点击 stdout:

因为我的脚本中是一个启动命令,并没有标准输出,所以这里只显示了主机名

image-20240115103604445

总结

  • ibex 与 n9e 类似,是一个 C/S 架构,但是只提供 API 调用,没有 Web UI。
  • 告警自愈涉及三个模块:n9e(创建任务),ibex(ibex-sever,收集任务)和 categraf(ibex-agent,执行任务)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/334375.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高效批量剪辑技巧:一键按指定时长精准分割视频的方法,轻松制作视频

随着社交媒体和数字内容的快速发展&#xff0c;视频制作的需求也日益增长。在制作视频时&#xff0c;我们经常需要将长视频分割成多个片段&#xff0c;或者将多个片段连接在一起。为了提高效率&#xff0c;我们可以使用一些高效的批量剪辑技巧&#xff0c;一键按指定时长精准分…

旅游项目day07

目的地攻略展示 根据目的地和主题查询攻略 攻略条件查询 攻略排行分析 推荐排行榜&#xff1a;点赞数收藏数 取前十名 热门排行榜&#xff1a;评论数浏览数 取前十名 浏览数跟评论数差距过大&#xff0c;可设置不同权重&#xff0c;例如&#xff1a;将浏览数权重设置为0.3…

市场监管总局发布区块链和分布式记账技术6项标准,中创积极推动区块链产业发展!

近日&#xff0c;市场监管总局&#xff08;国家标准委&#xff09;批准发布一批重要国家标准&#xff0c;涉及生产生活、绿色可持续等多个领域&#xff0c;这些标准将在引领产业发展、促进绿色转型、助力对外贸易、推动城乡建设、提升生活品质等方面发挥重要作用。 其中一项标…

【小笔记】算法训练基础超参数调优思路

【学而不思则罔&#xff0c;思维不学则怠】 本文总结一下常见的一些算法训练超参数调优思路&#xff08;陆续总结更新&#xff09;&#xff0c;包括&#xff1a; batchsize学习率epochsdropout&#xff08;待添加&#xff09; Batch_size 2023.9.29 简单来说&#xff0c;较…

Qt/C++自定义界面大全/20套精美皮肤/26套精美UI界面/一键换肤/自定义颜色/各种导航界面

一、前言 这个系列对应自定义控件大全&#xff0c;一个专注于控件的编写&#xff0c;一个专注于UI界面的编写&#xff0c;程序员有两大软肋&#xff0c;一个是忌讳别人说自己的程序很烂很多bug&#xff0c;一个就是不擅长UI&#xff0c;基本上配色就直接rgb&#xff0c;对于第…

J4 - ResNet与DenseNet结合

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 目录 环境模型设计模型效果展示总结与心得体会 环境 系统: Linux语言: Python3.8.10深度学习框架: Pytorch2.0.0cu118显卡&#xff1a;GT…

基于springboot+vue的高校心理教育辅导系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

SpringCloud源码系列之(Ribbon、Hystrix超时正确配置)

这块的代码debug了一个礼拜&#xff0c;一开始看Fegin创建源码的时候没注意到&#xff0c;是基于RxJava的响应式编程。分析栈桢的时候&#xff0c;有很多异步栈桢。由于只是想搞清楚如下配置的生效时机、以及失效情况&#xff0c;期间还看了一堆与此无关的源码&#xff0c;真的…

新能源智慧充电桩方案:AI视频分析技术如何助力充电桩智能监管?

随着AI人工智能、大数据、云计算等技术快速发展与落地&#xff0c;视频智能分析技术在智慧充电桩场景中的应用也越来越广泛。这种技术能够为充电桩站点提供全方位的监控和管理&#xff0c;提高运营效率&#xff0c;保障充电桩设备的安全和稳定运行。 通过TSINGSEE青犀&触角…

Spring重要知识点

一、Spring中相关概念 1.IOC 控制反转 IoC&#xff08;Inverse of Control:控制反转&#xff09;是⼀种设计思想&#xff0c;就是将原本在程序中⼿动创建对象的控制权&#xff0c;交由Spring框架来管理。IoC 在其他语⾔中也有应⽤&#xff0c;并⾮ Spring 所独有。 IoC 容器…

uniapp 微信小程序 内嵌H5网页办法

uniapp 微信小程序 内嵌H5网页办法 如图所示 1.新建webView页面 <template><web-view v-ifhttpUrl :srchttpUrl></web-view> </template><script>export default {data() {return {httpUrl: "",};},onLoad(options) {options.http…

C#,入门教程(07)——软件项目的源文件与目录结构

上一篇&#xff1a; C#&#xff0c;入门教程(06)——解决方案资源管理器&#xff0c;代码文件与文件夹的管理工具https://blog.csdn.net/beijinghorn/article/details/124895033 创建新的 C# 项目后&#xff0c; Visual Studio 会自动创建一系列的目录与文件。 程序员后面的工…

Unity—配置lua环境变量+VSCode 搭建 Lua 开发环境

每日一句&#xff1a;保持须臾的浪漫&#xff0c;理想的喧嚣&#xff0c;平等的热情 Windows 11下配置lua环境变量 一、lua-5.4.4版本安装到本地电脑 链接&#xff1a;https://pan.baidu.com/s/14pAlOjhzz2_jmvpRZf9u6Q?pwdhd4s 提取码&#xff1a;hd4s 二、高级系统设置 此电…

1月下半笔记(个人向)

最近才开始看d2l&#xff08;这种东西早该在两年前看的&#xff0c;拖到现在了&#xff09; 为了做项目还得学一手OpenGL&#xff08;被windows安装GLFW逼疯了&#xff09; 1.15 打完ICPC EC final回来&#xff0c;也许可以出一篇博客写下简单的题解。 对蛋白质相似空间子结…

你还在找PDF转Word的工具?一个好软件推荐,赶紧查收!

前言 前段时间朋友跟小白吐槽&#xff1a;为啥PDF文件转Word文档的工具都要收费&#xff1f; 因为他们都收费啊。 小白之前找了很多类似有这种功能的工具&#xff0c;都发现&#xff1a;不但收费&#xff0c;可能还附带全家桶&#xff0c;而且还有……广告&#xff01; 在一次…

Java学习(二十一)--JDBC/数据库连接池

为什么需要 传统JDBC数据库连接&#xff0c;使用DriverManager来获取&#xff1b; 每次向数据库建立连接时都要将Connection加载到内存中&#xff0c;再验证IP地址、用户名和密码&#xff08;0.05s~1s)时间。 需要数据库连接时候&#xff0c;就向数据库要求一个&#xf…

DNS寻址过程

用一张图详细的描述DNS寻址的过程&#xff0c;是高级前端进阶的网络篇&#xff1a; 主要是第三步要记仔细就行啦&#xff0c;每一步都要详细的记录下来&#xff0c;总结的脉络如下&#xff1a; 本地DNS缓存本地DNS服务器根域名服务器 顶级域名服务器再次顶级域名服务器权威域名…

【PIE-Engine 数据资源】全球 10 米土地覆盖产品 (ESA-2020)

文章目录 一、 简介二、描述三、波段四、示例代码参考资料 一、 简介 数据名称全球 10 米土地覆盖产品 (ESA-2020)时间范围2020年空间范围全球数据来源ESA WorldCover project 2020代码片段var imagespie. ImageCollection (“ESA/WORLD_COVER_2020”) 二、描述 全球 10 米土…

CVer从0入门NLP(二)———LSTM、ELMO、Transformer模型

&#x1f34a;作者简介&#xff1a;秃头小苏&#xff0c;致力于用最通俗的语言描述问题 &#x1f34a;专栏推荐&#xff1a;深度学习网络原理与实战 &#x1f34a;近期目标&#xff1a;写好专栏的每一篇文章 &#x1f34a;支持小苏&#xff1a;点赞&#x1f44d;&#x1f3fc;、…

(二十)Flask之上下文管理第一篇(粗糙缕一遍源码)

每篇前言&#xff1a; &#x1f3c6;&#x1f3c6;作者介绍&#xff1a;【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者 &#x1f525;&#x1f525;本文已收录于Flask框架从入门到实战专栏&#xff1a;《Flask框架从入…