利用saltstack的api接口和modules实现实时监控

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

前言:


     其实一说起实时监控,我就有很多的感想 ~  以前也做过几个类似的全网流量监控的项目,用过websocket的模式的,还有就是redis pubsub模式,还有就是从同事的nagios获取流量数据(这个结果很郁闷,nagios加了Ndoutils插件后可以把数据存入到mysql里面,当时水平不到位,获取的数据有断链,原因不明)。 这些方法也都是大同小异,一般从nagios和zabbix获取的数据不太实时,当然你也可以配置间隔时间,但那样的话,会造成你的一些个配置的改变,以及可能会出现利用率高的情况。  每个人都有自己的一套做法,我这边给大家再扩展出一个方案   salstack api的方式 !


       请多关注下我的个人博客, 更多运维研发及python, blog.xiaorui.cc


      saltstack 我也做过类似的方案,有些朋友可能看到我写的grains returners的方法 ~  其实也是可以的,需要说明的是 grains 的数据,一般是启动minion的时候获取的,不太好做实时。 returners的话,是采用回调的方法,也就是说 我把想要的数据交给minion处理,这家伙搞到数据后,往另一个接口扔数据。我这个时候想看数据的话,就从库里面看,比如他扔给redis,我就从redis里面看 ~


有需求的朋友可以先瞅瞅我以前写的例子,大家要是觉得那里不对,咱们讨论下哈


websocket的模式:

http://rfyiamcool.blog.51cto.com/1030776/1269232


redis pub sub的模式:

(咱们的saltstack api的模式也是属于pubsub的模式~)

http://rfyiamcool.blog.51cto.com/1030776/1272629


第三方监控的扩展模式:

比如nagios的ndoutils插件~   可以简单的mysql sql语句就可以获取数据 ~

获取监控项目

1
2
3
4
5
6
7
8
9
10
11
12
-------------------------------+-------------------
192.168 . 15.178  | CPU
192.168 . 15.178  | Current Load
192.168 . 15.178  | Current Users
192.168 . 15.178  | HTTP
192.168 . 15.178  | PING
192.168 . 15.178  | Qcache_free
192.168 . 15.178  | Root Partition
192.168 . 15.178  | SSH
192.168 . 15.178  | system swap
192.168 . 15.178  | Total Processes
localhost | CPU


为啥用saltstack api

    原因就是好用,返回的结果也是可控的,是json的数据,好拆分!    一开始刚用saltstack做测试的时候,数据的前端页面数据渲染都是用的subprocess的模块,搓的要命。


   有了接口,咱们可以做多线程的操作,当然saltstack本身确实是多进程的模式,用的multiprocess的模块。 在终端下肯定是好的,但是在这里不太适用,毕竟咱们是有啥数据,先返回,而不是等所有数据都搞到手了,才渲染页面。


原文http://rfyiamcool.blog.51cto.com/1030776/1345518

071222482.jpg



简单描述下他的实现思路:


利用saltstack api 获取数据,然后插入到数据库里面,然后前端从后端来获取数据。


做这个东西,需要点其他的支撑,比如 基础的集群saltstack的使用,数据库的使用,前端样式的使用。 这些还算好学的,搜搜网上的文档也都可以搞定。



图表的数据暂时是模拟的,环境有点问题,我就简单模拟了一个server ! 原理都是那么回事 !


图表的实现方式: 用sparkline实现的


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!DOCTYPE HTML PUBLIC  "-//W3C//DTD HTML 4.01//EN"
     "http://www.w3.org/TR/html4/strict.dtd" >
<head>
     <script type= "text/javascript"  src= "jquery-1.7.2.js" ></script>
     <script type= "text/javascript"  src= "jquery.sparkline.js" ></script>
     <script type= "text/javascript" >
     $( function () {
         /** This code runs when everything has been loaded on the page */
         /* Inline sparklines take their values from the contents of the tag */
         $( '.inlinesparkline' ).sparkline();
         /* Sparklines can also take their values from the first argument
         passed to the sparkline() function */
         var  myvalues = [ 10 , 8 , 5 , 7 , 4 , 4 , 1 ];
         $( '.dynamicsparkline' ).sparkline(myvalues);
         /* The second argument gives options such as chart type */
         $( '.dynamicbar' ).sparkline(myvalues, {type:  'bar' , barColor:  'green' } );
         /* Use 'html' instead of an array of values to pass options
         to a sparkline with data in the tag */
         $( '.inlinebar' ).sparkline( 'html' , {type:  'bar' , barColor:  'red' } );
     });
     </script>
</head>
<body>
<p>
Inline Sparkline: <span  class = "inlinesparkline" > 1 , 4 , 4 , 7 , 5 , 9 , 10 </span>.
</p>
<p>
Sparkline  with  dynamic  data: <span  class = "dynamicsparkline" >Loading..</span>
</p>
<p>
Bar chart  with  dynamic  data: <span  class = "dynamicbar" >Loading..</span>
</p>
<p>
Bar chart  with  inline data: <span  class = "inlinebar" > 1 , 3 , 4 , 5 , 3 , 5 </span>
</p>
</body>
</html>


先放一个demo,这两天把项目的细节写出来 !!!




 本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1345518,如需转载请自行联系原作者



相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
缓存 前端开发 API
API接口封装系列
API(Application Programming Interface)接口封装是将系统内部的功能封装成可复用的程序接口并向外部提供,以便其他系统调用和使用这些功能,通过这种方式实现系统之间的通信和协作。下面将介绍API接口封装的一些关键步骤和注意事项。
|
1月前
|
DataWorks 安全 API
在DataWorks中创建的接口如果要使用API网关进行鉴权
【4月更文挑战第3天】在DataWorks中创建的接口如果要使用API网关进行鉴权
23 2
|
28天前
|
SQL API Python
Python DB API下规范下cursor对象常用接口
Python DB API下规范下cursor对象常用接口。
21 4
|
3天前
|
JSON 搜索推荐 数据挖掘
电商数据分析的利器:电商关键词搜索API接口(标题丨图片丨价格丨链接)
淘宝关键词搜索接口为电商领域的数据分析提供了丰富的数据源。通过有效利用这一接口,企业和研究人员可以更深入地洞察市场动态,优化营销策略,并提升用户体验。随着电商平台技术的不断进步,未来的API将更加智能和个性化,为电商行业带来更多的可能性。
|
10天前
|
存储 缓存 运维
DataWorks操作报错合集之DataWorks根据api,调用查询文件列表接口报错如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
22 1
|
11天前
|
SQL 数据管理 API
数据管理DMS产品使用合集之阿里云DMS提供API接口来进行数据导出功能吗
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
11天前
|
运维 Serverless API
Serverless 应用引擎产品使用之在阿里函数计算中开启函数计算 API 接口如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
110 6
|
14天前
|
前端开发 Java 测试技术
IDEA 版 API 接口神器来了,一键生成文档,贼香!
IDEA 版 API 接口神器来了,一键生成文档,贼香!
37 0
|
15天前
|
API 开发者
邮件API接口使用的方法和步骤
AOKSEND指南:了解和使用邮件API接口,包括选择适合的接口(如AOKSEND、Mailgun、SMTP),获取访问权限,配置发件人、收件人及邮件内容,调用接口发送邮件,并处理返回结果,以高效集成邮件功能。
|
17天前
|
Java API Android开发
[NDK/JNI系列04] JNI接口方法表、基础API与异常API
[NDK/JNI系列04] JNI接口方法表、基础API与异常API
13 0