ganglia的restful前端,通过http公开度量。

gangliarest的Python项目详细描述


gangliarest是一个位于ganglia web主机之上的100%开源包,我们使用它来公开收集到的度量。从节点到我们的nagios监视站
,或者从各种脚本,无论出于什么目的。我知道这个项目要向nagios公开
ganglia度量,但这不符合我们的需求,特别是考虑到我们有这么大的ganglia实现。我选择编写这个前端,这样我们就可以选择我们的度量标准,并围绕这些标准开发nagios监控。

nagios服务器只需向gangliarest发出格式正确的api请求,并根据结果执行
。我最初返回格式化的json响应,并让nagios使用
自定义api客户端,但随着时间的推移,我们决定最好保持简单明了。


我使用redis来缓存rrdtree中节点的位置,这样metric查找就更加高效。(我们有数百个趋势节点)一个可配置的线程索引器将启动并保持redis缓存的健康。


为各种目的使用神经节指标的软件。



核心要求
----
-python 2.6或python 2.7(测试版)
-python webpy
-python redis client
-gns3网络接口-0.10.4.1
-redis server>;2.8(可从Atomic CentOS获得)
-ganglia gmetad web托管您的rrdtree


installation
----
此软件包当前在CentOS 6.8和Python 2.6上运行。您可能需要对"开发工具"和python-devel包进行分组安装。一旦您准备好安装
gangliarest,就可以以根用户身份运行pip install gangliarest。

模块将安装到/usr/lib/python2.x/site-packages/gangliarest中。
配置文件将安装为/etc/gangliarest.cfg
init脚本将安装为/etc/init.d/gangliarest

如果在其他端口上运行redis,则需要调整/etc/init.d/gangliarest.
您需要相应地调整iptables。
您需要访问/etc/gangliarest.cfg并调整配置文件。

您需要安装本地redis服务器。您可以通过运行:wget-o-http://www.atomicorp.com/installers/atomic sh
然后运行:yum install redis,它将为您提供比2.8更好的版本。


编辑/etc/redis.conf文件并将所需密码设置为您喜欢的密码来添加原子repo。

启动并相应地检查配置。

准备好后运行服务gangliarest start。pid文件将作为
/var/run/gangliarest.pid放入。如果在/var/run/redis/redis.pid中未检测到有效的redis pidfile
,则会收到警告。如果运行多个redis实例,请相应地调整


gangliarest现在应该监听端口8653或您在
/etc/gangliarest.cfg中选择的任何端口。

升级
——
gangliarest将在启动时检查,并每天检查一次是否有任何可用的升级。
这些可能包括重要的错误修复或增强,因此当您在日志文件中看到通知您升级的消息时,请考虑升级


若要升级,请运行以下命令:
system service gangliarest stop
system pip install gangliarest--upgrade

升级程序将把/etc/gangliarest.cfg文件复制为gangliarest.cfg.save,这样您的更改不会丢失。然后可以将这些更改合并到新创建的
gangliarest.cfg文件中。



usage
----
运行后可以使用以下格式的URL向gangliarest发送http请求:http://<;your_gmeta_web_host>;:8653/node/<;one of your node>;/get_metric/<;metric>;

例如,如果我的gmeta web主机名为gweb.example.com,并且我想查看我的节点web1.example.com的
load_one metric
http://gweb.example.com:8653/node/web1.example.com/get懔metric/load懔one

gangliarest将搜索节点web1的rrdtree,找到load懔one的度量rrd,
并返回当前度量值。对于每个请求,
该节点在文件系统上的位置都将缓存在redis中,以便将来更快地查找以保存文件系统扫描。

索引器
----
索引器将运行扫描rrdtree,以便在可配置的基础上缓存文件系统位置
。如果尚未运行,它将通过在启动时运行来启动缓存
,您将看到以下记录的条目:


2016-12-22 10:36:32999-root-调试线程-1400680386867672-info:索引器:首次运行索引器
2016-12-22 10:36:33000-root-调试线程-140068038686867672-info:索引器正在启动计划的操作。.
2016-12-22 10:36:33017-根-调试线程-14006803868672-信息:索引器已完成运行…向redis添加了14个条目

以上指示索引器已运行并向缓存添加了14个节点。


redis
----
一旦安装了redis并在/etc/gangliarest和
/etc/redis.conf中设置了密码,就可以连接到redis来检查已索引的缓存节点。
>要做到这一点:



root@gweb\redis-redis-cli-a<;your'u password>;
127.0.0.0.1:6379>;选择1;选择db instance 1
OK
OK
127.0.0.0.1:6379>;键*\按键列出所有节点按键列出
1)"web1"web1"
>2)"app1.app1.example.com"










gangliarest.cfg.cfg-gangliarest.——
位于/etc,恒河cfg文件提供了一些选项来控制gangliarest的行为,以满足您的需要。包括以下选项:

-resthost:此选项定义gangliarest将侦听的位置。您可以保留0.0.0.0的默认值
以侦听所有接口,或者指定您的内部IP。

-restport:此选项定义gangliarest将侦听的端口。默认值为8653。
请记住相应地调整iptables。

-logfile:这定义了要将gangliarest活动记录到的位置。有许多
有用的日志消息,因此建议您查看。

-loglevel:这是todo列表中的未来选项,用于控制日志记录级别。

-statsfile:此选项控制要将统计信息打印到的位置。我将我的发送到
/tmp/gangliarest.state,并有一个ganglia python dso,它读取这些度量,绘制每分钟的请求/响应和错误数。

-域:必须将其调整为您的域。gangliarest使用定义的域来处理它需要的信息。很多时候,ganglia gmetad可以使用
单独的主机名或fqdn创建节点,具体取决于您的设置。在使用两者的情况下,gangliarest需要在文件系统中搜索与服务api请求匹配的节点。

-rrddir:将此设置为您的rrd文件所在的位置。默认值是/var/lib/ganglia/rrds。

-redishost:这定义了redis服务器的位置。本地主机是默认的。

-redis port:这定义了redis服务器监听的端口。6379是默认值。

-redisdb:这定义了一个数据库实例。有些人在每个redis实例上运行多个dbs,而
其他人运行多个redis服务器,每个服务器有一个db。

-redisttl:此选项控制节点位置的redis的过期时间。建议
设置为一天或86400。这意味着节点将被索引器索引并保存在缓存中
一天。这是可能适合大多数组织,并允许过期节点在一天后不再使用


-redisauth:这将定义/etc/redis.conf中定义的redis requireauth选项。

-indexfreq:此选项控制gangliarest索引器运行的频率(以秒为单位)。索引器会扫描rrdtree并将节点位置编目到redis中,以便快速查找。默认值为3600
秒或每小时。如果不经常向ganglia添加新节点,可以将此值设置得更高,但建议设置一小时。如果经常添加动态节点,您甚至可以将其设置为300秒,以使
更具攻击性。

日志记录
----
gangliarest将某些操作的输出记录到/var/log/gangliarest.log。您应该相应地将此
添加到logrotate作业中。日志将显示api请求、响应和错误。它们由计数器递增,并以简单格式发送到gangliarest.cfg中定义的文件。从那里,
您可以创建一个ganglia dso或脚本作业来获取这些统计信息并将其绘制成图形。这将显示
您最危险的服务器有多忙。如果能更好地满足您的需要,您还可以分析日志文件以获取信息。

日志文件将显示错误和失败。当接收到一个不存在的节点的请求或api请求配置错误时,将显示一个简单的未找到错误(对于脚本
或nagios检查来说很容易解析),并记录一个事件。

索引器还将记录其操作。索引器每60秒检查一次,以查看是否需要运行indexfreq设置配置的索引操作。索引器将记录是否需要运行或返回睡眠状态。

启动gangliarest后,将执行软件更新检查,如果有可用的最新更新,则不会记录操作。可以使用:pip install gangliarest--upgrade进行升级。检查期间记录的消息显示为:


2016-12-22 10:36:32996-根-调试线程-14006830097280-注意:gangliarest的安装版本为0.1.6


当在pypi检测到更新时,记录的消息将显示为:

2016-12-22 10:33:00582-roOT-调试线程-140338108651264-注意:gangliarest-0.18可用。运行"pip install gangliarest--upgrade"获取最新信息。

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

推荐PyPI第三方库


热门话题
使用HTTP保存POST参数的java重定向   访问初始化对象的内部对象属性时发生java NullPointerException   java绑定属性<Predicate<MyObject>>到ListView(使用SelectionMode.MULTIPLE)   Java,提醒父对象更改   java JLabel更改标题的位置   如何在java中以ddmmmyyyy格式打印日期?   Selenium(Java)无法通过可见链接文本找到元素   java重组通过交换染色体创建新的基因型   java如何在JMockit中对不可修改的类型使用验证?   java如何在不创建变量的情况下将值传递给数组?   java端口连接上的hbase。网   Java通过使用来自的返回值进行强制转换。getClass()   JavaSpring如何从控制器返回视图而不出错页面   java在TableCellRenderer中使用自定义Swing JComponent