从salt事件总线收集事件并将其写入任何后端、mysql、redis等的守护进程。

salt-eventsd的Python项目详细描述


#盐事件d

基于saltstack但与saltstack无关的项目

##当前稳定版本标记为:0.9.3

如果您已经在使用salt eventsd,请查看更改日志以了解最新的更改和修复。

由于公众的要求,我将开发分支推到github供大家试用。从今天开始 在上,最新的出血边缘盐事件将始终在新版本的开发分支中 正在被标记。

请注意,我保留开发刹车的权利。即使我总是测试所有的变化 在将它们推送到github之前,可能会发生这种情况。

###从0.9更新到0.9.3

有关0.9.3中的改进,请参见更改日志。有关详细信息,请参阅installation.txt。

重要: 如果您来自0.9,请确保对配置进行以下更改:

重命名:"stat-upd"为"stat-timer" 添加:"stat_worker:false"(有关详细信息,请参阅installation.txt)

###可用性说明

####PYPI

截至1月22日,我们在PYPI上:https://pypi.python.org/pypi/salt eventsd/

####debian/ubuntu

debian包可以通过运行'dpkg buildpackage-b'直接从repo构建。所有依赖项 当然必须安装。

####Redhat/centos

目前还没有红帽的包裹。如果你有足够的知识和资源来支持它,感觉 免费提交必要的更改。

###它的功能

saltstack的事件侦听器守护进程,它将数据写入mysql、postgres、统计数据写入graphite、mongo, 等等。发生在saltstacks eventbus上的所有事件都可以被处理并推送到其他守护进程、数据库等。 你自己决定吧!

守护进程连接到salt主事件总线并侦听所有事件。根据配置, 某些事件可以通过其标签和/或函数名收集,并传递给不同的工作人员。这个 然后,工作人员从返回中提取所需的数据字段,并以用户可定义的方式进一步处理它们。

###依赖关系

必需的python运行时依赖项:

< Buff行情>
  • 盐=0.16.2
  • mysql python
  • argparse
  • PYZMQ

可选/可用依赖项

< Buff行情>
  • simplejson(使用:pip install simplejson安装)

###用法示例

  • 使用标记"new_job"收集所有事件,以获得比saltstacks作业缓存持续时间更长的作业历史记录
  • 通过匹配从仆从返回的带作业返回标记的事件来收集所有作业返回,以便有一个包含您可以索引、搜索等所有返回的数据库。
  • 将事件过滤到不同的后端,如Graphite、MongoDB、MySQL、Postgres等等…
  • 通过收集由您自己的负载监控模块创建的带有"load"标记的事件来收集历史数据,如负载平均值等
  • 创建并收集处理事件数据的自定义后端

###为什么这个有用/谁需要这个?

目前saltstack没有一个没有返回器的外部作业缓存。使用返回者和丢失的盐加密 不总是令人满意的,甚至可能不是一个选择。有了这个守护进程,您可以在salt master上收集其创建和返回的所有数据。

虽然saltstacks作业缓存在较小的环境中运行良好,但在较大的环境中,作业缓存可能成为salt主机的负担。特别是 如果作业缓存应该保留更长的时间,并且我在这里谈论周和月。这就是盐事件发生的地方。与 默认的mysql后端,它可以轻松地收集数周或数周的数据,而不必让salt master在 作业缓存。

可以完全禁用saltstacks作业缓存,因为所有数据都在独立的NT数据库,完全索引,可搜索 只需几次查询即可轻松清理和/或存档。

在更大的环境中,将不同的服务彼此分离也是一个好主意。在salt事件中,您可以使用saltstack 通信和salt事件d以收集实际数据。这样做的好处是,salt master不需要仅仅因为更改而重新启动 例如,对反应器或转轮进行了操作。

###功能

  • 从salt事件总线将事件收集到不同的后端
  • 在将事件推入不同的后端之前收集可配置的事件量
  • 定义一个prio1事件,该事件在不首先排队的情况下立即被推送
  • 轻松编写自己的后端(需要一些python知识)
  • 使用正则表达式在事件上进行匹配,非常灵活和强大
  • 将事件发送到两个后端,以便具有命令+返回历史记录以及将数据推送到其他位置
  • 创建自己的SQL查询模板以将数据插入数据库
  • 完全saltstack作业缓存独立数据库,用于保存所需的所有数据
  • 示例工作程序位于doc目录中

###测试

py.test用于运行所有可用的测试。

要安装所有测试依赖项,必须首先通过运行来安装所有测试依赖项

TT> $pip安装dev requirements.txt

建议在virtualenv中安装所有依赖项,以便于隔离。

要运行所有测试,只需在根文件夹中执行以下操作

TT> P.试验

好的选项是用于pdb调试的-x,以及用于显示打印和日志输出的-s

###基准

有一个简单的基准脚本可用于手动测试代码的性能。

脚本设置几乎都需要在脚本中模拟和配置。

所需的依赖项是:

< Buff行情>
  • 模拟(pip install mock)

将worker文件doc/share/doc/eventsd_workers/bench_worker.py复制到/etc/salt/eventsd_workers/bench_worker.py

使用python benchmark.py运行脚本

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

推荐PyPI第三方库


热门话题
java如何将jaxb插件扩展与gradlejaxbplugin一起使用   java Hibernate列表<Object[]>到特定对象   java使用多态性显示arraylist的输出   java水平堆叠卡,带有一定偏移量   java错误:找不到符号方法liesInt()   java客户机/服务器文件收发中的多线程流管理   在java中可以基于访问重载方法吗?   包含空元素的java排序数组   swing Java按钮/网格布局   java BottomNavigationView getmaxitemcount   java空指针异常字符串生成器   java Xamarin升级导致“类文件版本错误52.0,应为50.0”错误   java我正在尝试打印它,而不只是对每一行进行println   Tomcat7中的java是否需要复制上下文。将xml转换为conf/Catalina/locahost以使其生效   带有注入服务的java REST端点在何处引发自定义WebServiceException?   在Java中使用GPS数据   java如何将JFreeChart ChartPanel导出到包含添加的CrosshairOverlay的图像对象?   内置Eclipse期间的Java 8堆栈溢出   java在GWT编译的JavaScript中如何表示BigDecimal