热点
数据洪流实时掘金:分布式事务智能处理引领行业革新,reasoning_content:我们要求以分布式事务专家的口吻,写一个与“技术、科技”相关,关于[数据洪流实时掘金:智能处理引领行业革新]的标题直接输出一个标题,不要加说明字数30字以内需要简短精炼,体现分布式事务专家的口吻,同时紧扣数据洪流、实时掘金、智能处理、行业革新nn可能的数据洪流实时掘金:分布式事务智能处理引领革新但字数可能略多或者:实时掘金数据洪流:分布式事务智能革新或者更专家口吻:分布式事务专家:实时数据洪流智能掘金但要求直接输出标题,不需要署名nn简洁版:数据洪流实时掘金:智能处理引领行业革新正好11个字?不对,标题原样是数据洪流实时掘金:智能处理引领行业革新,字数14个字?数一下:数据洪流实时掘金(6)+冒号+智能处理引领行业革新(8)=14个字,符合30字内但需要以分布式事务专家的口吻,可能加一些专业术语例如:分布式事务下的数据洪流实时掘金与智能处理革新或者:实时掘金:分布式事务智能处理引领数据洪流革新nn更合适:分布式事务专家视角:数据洪流实时掘金,智能处理革新行业但字数略多nn最佳:数据洪流实时掘金:分布式事务智能处理引领革新字数:数据洪流实时掘金(7? 数据(2)洪流(2)实时(2)掘金(2)=8? 不对,汉字每个字算一个,数据洪流实时掘金:6个字+冒号+分布式事务智能处理引领革新:11个字,共17个字符合nn或者更短:实时掘金数据洪流:分布式事务智能革新共11个字nn考虑到要体现“专家”口吻,可以加“专家谈”之类的,但可能超过30字直接一个标题,不用加“专家”二字,但内容体现分布式事务即可我选择:数据洪流实时掘金:分布式事务智能处理引领行业革新这个标题直接包含了原题中的元素,并且加入了“分布式事务”体现专家口吻字数:数据洪流实时掘金(6)+冒号+分布式事务智能处理引领行业革新(13)=19个字,符合输出这个
系统维护员:运营中心模块化设计与动态配置优化,reasoning_content:我们要求以系统维护员的口吻,写一个与技术、科技相关,关于[运营中心产品升级:模块化设计与动态配置策略优化]的标题直接输出一个标题,不要加说明提示等信息简短精炼,字数控制在30字以内nn思考:需要体现系统维护员的身份,同时围绕模块化设计和动态配置策略优化可以包含“系统维护员”这个词,或者用第一人称口吻例如:“系统维护员视角:模块化设计助力动态配置优化”但字数可能超?计算一下:系统维护员视角:模块化设计助力动态配置优化(共18字,符合)或者更简洁:“维护员手记:模块化+动态配置升级”也可以考虑“系统维护员解读:运营中心产品升级新策略”但要求是标题,要直接nn更贴合“口吻”的,比如“系统维护员:模块化设计与动态配置策略优化实践”,但字数可能超?数一下:系统维护员:模块化设计与动态配置策略优化实践(共20字,符合)但可以更精炼nn考虑用“系统维护员谈:模块化与动态配置优化”,但少了运营中心产品升级原文有“[运营中心产品升级:模块化设计与动态配置策略优化]”,需要体现这个主题nn最终选一个:系统维护员:运营中心产品升级之模块化与动态配置优化(共22字)或者“系统维护员看产品升级:模块化设计+动态配置策略优化”(22字)更好的是:“系统维护员解读:模块化设计驱动动态配置优化”(17字,但少了运营中心)可以加“运营中心”三字:“系统维护员解读运营中心:模块化与动态配置优化”(18字)或者“运营中心升级:系统维护员谈模块化与动态配置策略”(20字)nn鉴于要求“以’系统维护员’的口吻”,最好标题开头就是“系统维护员”之类的同时简洁考虑:系统维护员:模块化设计与动态配置策略优化(17字,但缺少运营中心)可改为“系统维护员:运营中心模块化与动态配置升级”(17字)再改“系统维护员:运营中心产品升级策略优化”(15字,但没提模块化和动态配置)需要包含这两个关键词nn最终确定:系统维护员:模块化设计+动态配置策略优化(16字,但没体现运营中心)或者“运营中心升级:系统维护员谈模块化与动态配置”(18字)这个可以nn我觉得直接输出:“系统维护员:运营中心模块化设计与动态配置优化” 共19字好
17 9 月 2026, 周四

副标题#e#

 开源 | Sensu监控入门

这个开源解决方案可以简单而有效地监控你的云基础设施。

Sensu 是一个开源的基础设施和应用程序监控解决方案,它可以监控服务器、相关服务和应用程序健康状况,并通过第三方集成发送警报和通知。Sensu 用 Ruby 编写,可以使用 RabbitMQ 或 Redis 来处理消息,它使用 Redis 来存储数据。

如果你想以一种简单而有效的方式监控云基础设施,Sensu 是一个不错的选择。它可以与你的组织已经使用的许多现代 DevOps 组件集成,比如 Slack、HipChat 或 IRC,它甚至可以用 PagerDuty 发送移动或寻呼机的警报。

Sensu 的模块化架构意味着每个组件都可以安装在同一台服务器上或者在完全独立的机器上。

结构

Sensu 的主要通信机制是 Transport。每个 Sensu 组件必须连接到 Transport 才能相互发送消息。Transport 可以使用 RabbitMQ(在生产环境中推荐使用)或 Redis。

Sensu 服务器处理事件数据并采取行动。它注册客户端并使用过滤器、增变器和处理程序检查结果和监视事件。服务器向客户端发布检查说明,Sensu API 提供 RESTful API,提供对监控数据和核心功能的访问。

Sensu 客户端执行 Sensu 服务器安排的检查或本地检查定义。Sensu 使用数据存储(Redis)来保存所有的持久数据。最后,Uchiwa 是与 Sensu API 进行通信的 Web 界面。

sensu_system.png

安装 Sensu

条件

  • 一个 Linux 系统作为服务器节点(本文使用了 CentOS 7)
  • 要监控的一台或多台 Linux 机器(客户机)

服务器侧

Sensu 需要安装 Redis。要安装 Redis,启用 EPEL 仓库:

  1. $ sudo yum install epel-release -y

然后安装 Redis:

  1. $ sudo yum install redis -y

修改 /etc/redis.conf 来禁用保护模式,监听每个地址并设置密码:

  1. $ sudo sed -i 's/^protected-mode yes/protected-mode no/g' /etc/redis.conf
  2. $ sudo sed -i 's/^bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis.conf
  3. $ sudo sed -i 's/^# requirepass foobared/requirepass password123/g' /etc/redis.conf

启用并启动 Redis 服务:

  1. $ sudo systemctl enable redis
  2. $ sudo systemctl start redis

Redis 现在已经安装并准备好被 Sensu 使用。

现在让我们来安装 Sensu。

首先,配置 Sensu 仓库并安装软件包:

  1. $ sudo tee /etc/yum.repos.d/sensu.repo << EOF
  2. [sensu]
  3. name=sensu
  4. baseurl=https://sensu.global.ssl.fastly.net/yum/\$releasever/\$basearch/
  5. gpgcheck=0
  6. enabled=1
  7. EOF
  8.  
  9. $ sudo yum install sensu uchiwa -y

让我们为 Sensu 创建最简单的配置文件:

  1. $ sudo tee /etc/sensu/conf.d/api.json << EOF
  2. {
  3.   "api": {
  4.         "host": "127.0.0.1",
  5.         "port": 4567
  6.   }
  7. }
  8. EOF

然后,配置 sensu-api 在本地主机上使用端口 4567 监听:

  1. $ sudo tee /etc/sensu/conf.d/redis.json << EOF
  2. {
  3.   "redis": {
  4.         "host": "<IP of server>",
  5.         "port": 6379,
  6.         "password": "password123"
  7.   }
  8. }
  9. EOF
  10.  
  11.  
  12. $ sudo tee /etc/sensu/conf.d/transport.json << EOF
  13. {
  14.   "transport": {
  15.         "name": "redis"
  16.   }
  17. }
  18. EOF

#p#副标题#e#

在这两个文件中,我们将 Sensu 配置为使用 Redis 作为传输机制,还有 Reids 监听的地址。客户端需要直接连接到传输机制。每台客户机都需要这两个文件。

  1. $ sudo tee /etc/sensu/uchiwa.json << EOF
  2. {
  3.    "sensu": [
  4.         {
  5.         "name": "sensu",
  6.         "host": "127.0.0.1",
  7.         "port": 4567
  8.         }
  9.    ],
  10.    "uchiwa": {
  11.         "host": "0.0.0.0",
  12.         "port": 3000
  13.    }
  14. }
  15. EOF

在这个文件中,我们配置 Uchiwa 监听每个地址(0.0.0.0)的端口 3000。我们还配置 Uchiwa 使用 sensu-api(已配置好)。

出于安全原因,更改刚刚创建的配置文件的所有者:

  1. $ sudo chown -R sensu:sensu /etc/sensu

启用并启动 Sensu 服务:

  1. $ sudo systemctl enable sensu-server sensu-api sensu-client
  2. $ sudo systemctl start sensu-server sensu-api sensu-client
  3. $ sudo systemctl enable uchiwa
  4. $ sudo systemctl start uchiwa

尝试访问 Uchiwa 网站:http://<服务器的 IP 地址>:3000

对于生产环境,建议运行 RabbitMQ 集群作为 Transport 而不是 Redis(虽然 Redis 集群也可以用于生产环境),运行多个 Sensu 服务器实例和 API 实例,以实现负载均衡和高可用性。

Sensu 现在安装完成,让我们来配置客户端。

客户端侧

要添加一个新客户端,你需要通过创建 /etc/yum.repos.d/sensu.repo 文件在客户机上启用 Sensu 仓库。

  1. $ sudo tee /etc/yum.repos.d/sensu.repo << EOF
  2. [sensu]
  3. name=sensu
  4. baseurl=https://sensu.global.ssl.fastly.net/yum/\$releasever/\$basearch/
  5. gpgcheck=0
  6. enabled=1
  7. EOF

启用仓库后,安装 Sensu:

  1. $ sudo yum install sensu -y

#p#副标题#e##p#分页标题#e#

要配置 sensu-client,创建在服务器中相同的 redis.jsontransport.json,还有 client.json 配置文件:

  1. $ sudo tee /etc/sensu/conf.d/client.json << EOF
  2. {
  3.   "client": {
  4.         "name": "rhel-client",
  5.         "environment": "development",
  6.         "subscriptions": [
  7.         "frontend"
  8.         ]
  9.   }
  10. }
  11. EOF

name 字段中,指定一个名称来标识此客户机(通常是主机名)。environment 字段可以帮助你过滤,而 subscriptions 定义了客户机将执行哪些监视检查。

最后,启用并启动服务并签入 Uchiwa,因为客户机会自动注册:

  1. $ sudo systemctl enable sensu-client
  2. $ sudo systemctl start sensu-client

Sensu 检查

Sensu 检查有两个组件:一个插件和一个定义。

Sensu 与 Nagios 检查插件规范兼容,因此无需修改即可使用用于 Nagios 的任何检查。检查是可执行文件,由 Sensu 客户机运行。

检查定义可以让 Sensu 知道如何、在哪以及何时运行插件。

客户端侧

让我们在客户机上安装一个检查插件。请记住,此插件将在客户机上执行。

#p#副标题#e#

启用 EPEL 并安装 nagios-plugins-http

  1. $ sudo yum install -y epel-release
  2. $ sudo yum install -y nagios-plugins-http

现在让我们通过手动执行它来了解这个插件。尝试检查客户机上运行的 Web 服务器的状态。它应该会失败,因为我们并没有运行 Web 服务器:

  1. $ /usr/lib64/nagios/plugins/check_http -I 127.0.0.1
  2. connect to address 127.0.0.1 and port 80: Connection refused
  3. HTTP CRITICAL - Unable to open TCP socket

不出所料,它失败了。检查执行的返回值:

  1. $ echo $?
  2. 2

Nagios 检查插件规范定义了插件执行的四个返回值:

有了这些信息,我们现在可以在服务器上创建检查定义。

服务器侧

在服务器机器上,创建 /etc/sensu/conf.d/check_http.json 文件:

  1. {
  2.   "checks": {
  3.     "check_http": {
  4.       "command": "/usr/lib64/nagios/plugins/check_http -I 127.0.0.1",
  5.       "interval": 10,
  6.       "subscribers": [
  7.         "frontend"
  8.       ]
  9.     }
  10.   }
  11. }

command 字段中,使用我们之前测试过的命令。interval 会告诉 Sensu 这个检查的频率,以秒为单位。最后,subscribers 将定义执行检查的客户机。

重新启动 sensu-apisensu-server 并确认新检查在 Uchiwa 中可用。

  1. $ sudo systemctl restart sensu-api sensu-server

接下来

Sensu 是一个功能强大的工具,本文只简要介绍它可以干什么。参阅文档了解更多信息,访问 Sensu 网站了解有关 Sensu 社区的更多信息。

【编辑推荐】

  1. 微软开源大规模数据处理项目 Data Accelerator
  2. 腾讯重磅开源DCache,分布式NoSQL存储系统
  3. 各种实用的PHP开源库,哪一款是你需要的?
  4. 入门GitHub,这一个开源项目足够了!
  5. 为什么开源?curl 作者:让世界变得更美好

【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

dawei

【声明】:天津站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。