opsbro是一种服务发现工具

opsbro的Python项目详细描述


< BR>< BR>
这是opsbro项目的第一个版本,介绍了一个服务发现/监视/light cfg管理/命令执行工具。 < BR>< BR>[构建状态](https://travis ci.org/naparuba/opsbro.svg)(https://travis-ci.org/naparuba/opsbro) < BR>< BR>
**opsbro**:监控和服务发现 < BR>< BR>![代理](images/agent.png) < BR>< BR>< BR>
安装 < BR>
前提条件
您需要: < BR>
*python 2.6或2.7(python 3当前不受管理) < BR>
它将自动安装:
*python级别数据库
*python请求
*python-jinja2
*python-cherrypy3 < BR>< BR>
要监视Linux:
*系统状态 < BR>
要监视MongoDB服务器:
*python pymongo公司 < BR>< BR>< BR>< BR>
安装 < BR>
只需启动: < BR>
python setup.py安装 < BR>< BR>
运行守护进程,并加入opsbro集群 < BR>
启动Opsbro < BR>
可以使用以下命令将opsbro作为守护进程启动: < BR>
/etc/init.d/opsbro启动 < BR>
您也可以在前台启动它: < BR>
Opsbro药剂启动 < BR>< BR>
停止opsbro后台程序
只需启动: < BR>
停止opsbro药剂 < BR>
或使用init.d脚本: < BR>
/etc/init.d/opsbro停止 < BR>< BR>< BR>
显示Opsbro信息
只需启动: < BR>
Opsbro试剂信息 < BR>
您将获得有关当前Opsbro代理状态的多个信息: < BR>< BR>< BR>![代理](images/info.png) < BR>< BR>
代理群集成员资格 < BR>
将本地节点添加到节点群集 < BR>
首先需要在另一台服务器中安装并启动节点。 < BR>
然后在另一台服务器上可以启动: < BR>
Opsbro八卦加入其他IP < BR>
自动发现LAN节点(UDP广播检测) < BR>
如果您的节点位于同一局域网上,则可以使用udp自动检测列出网络上的其他节点。我将发送一个udp广播包,其他节点将应答。 < BR>
注意:如果使用的是加密密钥(建议使用),则必须已经设置了该密钥。否则,另一个节点将不会回答您的查询。 < BR>< BR>
Opsbro八卦检测 < BR>
如果存在其他节点,则它们将由命令列出。 < BR>< BR>
如果要自动加入其他节点群集,则可以使用--auto join参数: < BR>
opsbro八卦检测——自动加入 < BR>
它将尝试根据以下条件连接节点:
*如果存在代理节点,请首先尝试该节点
*如果不存在代理节点,则使用第一个其他节点 < BR>< BR>
列出opsbro集群成员
您可以使用以下命令列出所有节点上的群集成员: < BR>
Opsbro八卦会员 < BR>< BR>![代理](images/members.png) < BR>
如果启用新节点,您将在ui上看到它 < BR>< BR>< BR>< BR>< BR>
发现您的服务器(操作系统、应用程序、位置……) < BR>
检测器是由代理执行的规则,用于检测服务器属性,如 < BR>
*操作系统(Linux、Redhat、CentOS、Debian、Windows等)
*应用程序(mongodb、redis、mysql、apache等)
*位置(城市,GPS纬度/经度) < BR>
您应该声明一个json对象,如: < BR>
探测器:
间隔:10s
应用"grep('centos','/etc/redhat release')"
组:["linux","centos"] < BR>< BR>
*每10秒执行一次
*如果文件/etc/redhat release中有强centos
*然后将组"linux"和"centos"添加到本地代理 < BR>< BR>
收集服务器指标(CPU、内核、数据库指标等) < BR>
收集器是由代理执行的代码,用于搜索和存储本地操作系统或应用程序度量。 < BR>
您可以使用以下命令列出可用的收集器: < BR>
Opsbro收集器列表 < BR>< BR>< BR>![代理](images/collectors list.png) < BR>
*启用:运行良好
*已禁用:它缺少用于运行的库 < BR>
执行检查 < BR>
您可以通过两种方式对代理执行检查:
*使用收集器数据并对其评估检查规则
*执行类似nagios的插件 < BR>
< BR>
某些参数在您可以定义的两种检查类型上是通用的。 < BR>
*间隔:安排检查的时间
*如果组:如果存在,则仅当代理组存在时才声明并执行检查 < BR>< BR>
评估收集器数据的检查规则 < BR>
评估检查将使用收集器数据,并应使用以下内容定义:
*ok_输出:python表达式,它创建一个字符串,如果状态为ok,该字符串将显示给用户
*critical_if:尝试检测临界状态的python表达式
*critical_输出:创建一个字符串的python表达式,如果状态是critical,该字符串将显示给用户
*warning_if:尝试检测警告状态的python表达式
*警告输出:python表达式,它创建一个字符串,如果状态为警告,该字符串将显示给用户
*阈值:[optionnal]您可以在这里通过"configuration.thresholds.xxx"设置您将从检查规则访问的阈值。 < BR>
评估是这样进行的:
*如果critical表达式为true=>;则转到critical
*如果警告表达式为真,则返回"警告"
*否则一切正常 < BR>
例如,这里是Linux服务器上的CPU检查: < BR>
检查:
间隔:10s
如果组:Linux < BR>
确定输出:"'确定:CPU很好:%s%'%(100-{collector.cpustats.cpuall%.idle}" < BR>
关键if:{collector.cpustats.cpuall%.idle}<;{configuration.thresholds.cpuidle.critical}
关键输出:"'critical:CPU太高:%s%'%(100-{collector.cpustats.cpuall%.idle}" < BR>
如果:{collector.cpustats.cpuall%.idle}<;{configuration.thresholds.cpuidle.warning}
警告输出:"'警告:CPU很高:%s%'%(100-{collector.cpustats.cpuall%.idle}" < BR>
阈值:
指南:
警告:5
关键:1 < BR>< BR>< BR>
使用nagios插件 < BR>
基于nagios的检查将使用nagios插件并运行它们。如果无法访问收集器中所需的信息,请使用它们。 < BR>
参数为:
*脚本:执行插件的命令行 < BR>
下面是一个例子 < BR>
检查:
如果组:Linux
脚本:"$nagiosplugins$/check\u mailq-w$mailq.warning$-c$mailq.critical$"
间隔:60s < BR>
邮箱:
警告:1
关键:2 < BR>< BR>
注意:$$evaluation与以前的检查不匹配,我们将在将来的版本中修复它,但它将中断当前的版本配置。 < BR>< BR>
通过电子邮件通知检查/节点状态更改 < BR>
可以通过处理程序通知您检查状态已更改。当前管理2个:email&slack < BR>
必须在本地配置中定义它: < BR>
处理程序:
类型:邮件
严重性:
-好的
-警告
-关键
-未知
联系人:
-"admin@mydomain.com"
地址:opsbro@mydomain.com
smtp_服务器:本地主机
主题模板:"email.subject.tpl"
文本模板:"email.text.tpl" < BR>
*类型:电子邮件
*严重性:仅针对这个新的州
*联系人:通知
*addr_from:设置电子邮件的发件人地址
*smtp_服务器:要结束通知的smtp服务器
*主题模板:目录/模板中电子邮件主题的jinja2模板
*文本模板:目录/模板中电子邮件内容的jinja2模板 < BR>
然后您的处理程序必须注册到支票的"处理程序"列表中。 < BR>
通知检查/节点状态更改为松弛 < BR>
可以通过处理程序通知您检查状态已更改。目前只管理一个:电子邮件。 < BR>
必须在本地配置中定义它: < BR>
处理程序:
id:松弛
类型:松弛
严重性:
-好的
-警告
-关键
-未知 < BR>
标记:''
频道:"警报" < BR>
*类型:松弛
*严重性:仅针对此新状态提升此处理程序
*代币:您的松弛代币。在https://api.slack.com/custom-integrations/legacy-tokens上获取一个
*频道:警报应在哪个频道发出。如果通道不存在,它将尝试创建一个 < BR>< BR>
然后您的处理程序必须注册到支票的"处理程序"列表中。 < BR>
< BR>
您可以将所有节点信息(新建、删除或更改节点)导出到Shinken安装中。它将自动:
*启动新节点时创建新主机
*在代理上添加/删除新组时更改主机配置(主机模板)
*删除代理时删除主机(例如终止云实例) < BR>
必须在Shinken仲裁程序守护进程上安装的代理中添加以下本地配置: < BR>
新肯:
cfg路径:"/etc/shinken/agent" < BR>
*cfg_path:一个目录,其中所有节点都将作为shinken主机配置同步(cfg文件) < BR>
目前它还使用硬路径来管理您的Shinken通信:
*unix套接字*/var/lib/shinken/nagios.cmd*应由shinken仲裁器/接收器[命名管道](http://shinken.io/package/named-pipe)模块创建。
*当节点配置更改(新建、删除或组/模板更改)时,它调用"/etc/init.d/shinken reload"命令 < BR>< BR>
通过DNS访问节点信息 < BR>
如果为代理启用DNS接口,它将启动一个内部DNS服务器,该服务器将回答查询。因此,您的应用程序将能够轻松地与仍处于活动状态或已启动状态的有效节点进行交换。 < BR>
必须在本地配置中定义dns对象才能启用此接口: < BR>
域名:
启用:真
端口:6766
域:".opsbro" < BR>< BR>
*启用:是否启动侦听器
*端口:用于侦听udp请求的udp端口
*域:允许域请求,应与要重定向到此的特定域名匹配 < BR>
您可以使用dig for test查询它: < BR>
$dig-p 6766@localhost redis.group.dc1.opsbro+短
192.168.56.103
192.168.56.105 < BR>
它列出了带有"组"redis的所有可用节点。 < BR>< BR>
todo:记录本地dns重定向到resolv.conf的链接 < BR>< BR>
< BR>
实时应用程序性能指标 < BR>
statsd协议是从应用程序中将性能统计信息提取到监视系统中的好方法。应用程序将提取小的计时度量(如函数执行时间)并以非阻塞方式(在udp中)发送它。 < BR>
statsd守护进程部分将在计数器上显示10s,然后导出最小/最大/平均值/99%到Graphite服务器,以便存储和绘制它们。 < BR>
要启用statsd侦听器,必须在本地配置中定义statsd: < BR>
状态:
启用:真
端口:8125
间隔:10 < BR>
*启用:是否启动statsd侦听器
*端口:要侦听的udp端口
*间隔:将度量值存储到内存中x秒,然后将其导出到Graphite中进行存储 < BR>
**todo**:将启用此功能的ts组更改为real*role*/addons < BR>< BR>
< BR>
您可以将您的指标存储到一个类似石墨的系统中,该系统将自动覆盖您的数据。 < BR>
要启用Graphite系统,必须在本地配置中声明Graphite对象: < BR>
石墨:
启用:真
端口:2003
udp:true
TCP:正确 < BR>
*启用:是否启动Graphite侦听器
*端口:用于侦听度量的TCP和/或UDP端口
*udp:以udp模式监听
*tcp:监听tcp模式 < BR>
**todo**:完成石墨部分,显示存储和转发模式。 < BR>
使用Grafana等外部用户界面访问Graphite数据 < BR>
**todo**:测试并向grafana显示代理的石墨/呈现接口 < BR>< BR>
< BR>
您可以通过本地代理上的websocket接口获得有关节点更改(新节点、已删除节点或新组或检查状态更改)的通知。 < BR>
您只需在本地节点配置上启用它: < BR>
网站:
启用:真
端口:6769 < BR>
*启用:是否启动WebSocket侦听器
*端口:为WebSocket连接监听哪个TCP端口 < BR>
**注意**:http ui需要启动websocket侦听器来访问节点状态。 < BR>
将数据/配置存储到集群(KV存储) < BR>
探员暴露了一个KV存储系统。它会自动将您的数据分派到3个允许存储原始数据的节点。 < BR>
可以在所需的节点上执行写和读查询,而不必是一个KV存储节点。代理将把您的读/写查询转发到管理您的密钥的节点,而这个节点将在响应请求者之后与另外两个节点同步数据。 < BR>
节点之间的密钥分配基于sha1一致散列。 < BR>
API是: < BR>
**/kv/**(get)*:列出本地节点上存储的所有密钥
**/kv/key-name***(get)*:获取base64编码的键值
**/kv/键名**(put)*:存储键值
**/kv/key-name***(删除)*:删除密钥 < BR>< BR>
**todo**:在配置中将KV存储从组更改为角色 < BR>
使用节点状态和数据/配置(KV)保持应用程序配置最新 < BR>
/生成器 < BR>< BR> 如何查看收集的数据?(计量学) < BR>
默认情况下,opsbro代理从操作系统和应用程序获取大量计量数据。这是由"collectors"objets完成的。您可以很容易地列出它们,并通过启动以下命令查看colelcted数据: < BR>
Opsbro收集器展示 < BR>< BR>
**todo**允许导出为json格式 < BR>< BR>
由于opsbro,如何在系统上安装应用程序 < BR>
**todo**文档安装程序,并实际重命名它们(asserters?) < BR>
如何查看Docker性能信息? < BR>
如果在服务器上启动Docker,Opsbro将从中获取数据,如收集器、图像和性能。 < BR>
要列出这一切,请执行以下操作: < BR>
Opsbro Docker展会 < BR>< BR>
通过RAFT获得强大的主/从选举法定人数 < BR>
由于代理内部的raft实现,您可以要求节点集群系统为特定任务或应用程序选择一个节点 < BR>
**todo**:代码中当前处于alpha状态 < BR>< BR>
访问代理API文档 < BR>
**todo**:为了访问文本或http格式的节点api,必须开发这个 < BR>< BR>
是否有可用的用户界面? < BR> 是的。opsbro.io wbesite(saas)中提供了一个ui。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在安卓 studio中使用调用jaxws web服务的jar文件   java双时间模拟时钟不打印两个不同的时间   java Jackson反序列化处理不带字段的生成值   多线程在java同步中读锁的目的是什么   为什么java中有这么多获取日期时间的方法?   java从listview中的TextView获取数据   java是否可以定义如何对枚举进行(反)序列化以在枚举内持久化?   Java:异常处理我的catch()有问题   VMWare java SDK:可用的PerfMetricID何时不报告数据?   exec在Java中执行命令而不重定向输出   java使用SpringXML配置实现观察者模式?   java在竹笔平板电脑中使用JPen