将Prometheus警报管理器通知重定向到Microsoft团队的项目

prom2teams的Python项目详细描述


<<<<<<<

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<=============="BuiBuild StatuStatuStatuStatuStatuStatuStatuStatuStatuStatuStatuStatuStatuStatuStatus" src "src" src "src src src src src src ===========327465616d732e706e67" /><<<<<<<<<<<<<<<

项目团队

<

prom2teams是一个用python构建的web服务器,它从以前配置的prometheus alertmanager实例接收警报通知,并将其转发到prometheus alertmanager实例ollow">Microsoft团队使用定义的连接器。

开始

先决条件

该应用程序已经用prometheus 2.2.1,python 3.5.0pip 9.0.1进行了测试。

较新版本的prometheus/python/pip应该可以工作,但也可能出现问题。

安装

prom2team位于pypi上,因此可以使用pip3安装它们:

啊!

注意:从v1.1.1开始工作

用法

重要信息:配置路径必须至少提供一个Microsoft Team连接器。检查选项以了解如何提供。

啊!

启动服务的其他选项有:

啊!

注意:分组警报自v2.2.1起生效

普罗米修斯指标

Prom2Teams使用烧瓶,为了监控服务,我们使用@rycus66的Prometheus烧瓶导出器。这将在/metrics中启用一个端点,在这里您可以找到有趣的度量来监视具有特定状态的响应的数量。要启用此终结点,请执行以下任一操作:

  • 当启动Prom2团队。
  • 设置环境变量prom2teams\u prometheus\u metrics=true

Docker图像

每发布一个新的Prom2Teams,都会在我们的DockerHub中构建一个新的Docker映像。我们强烈建议您使用带有版本标签的图像,但不带版本标签也可以使用这些图像。

创建Prom2Teams容器时需要记住两件事:

  • 连接器URL必须作为环境变量传递
  • 如果要对警报进行分组,则需要将该字段作为环境变量传递
  • 您需要将容器的Prom2Teams端口映射到主机上的一个端口。

因此,docker run命令示例如下:

$ docker run -it -d -e PROM2TEAMS_GROUP_ALERTS_BY=FIELD_YOU_WANT_TO_GROUP_BY -e PROM2TEAMS_CONNECTOR="CONNECTOR_URL" -p 8089:8089 idealista/prom2teams:VERSION

提供自定义配置文件

如果您喜欢使用自己的配置文件,只需将其作为docker卷提供给容器,并将其映射到/opt/prom2teams/config.ini。样品:

$ docker run -it -d -v pathToTheLocalConfigFile:/opt/prom2teams/config.ini -p 8089:8089 idealista/prom2teams:VERSION

生产

对于生产环境,您应该更喜欢使用wsgi服务器。uwsgi 安装依赖项是为了方便使用。使用它必须考虑一些因素:

二进制代码prom2teams_uwsgi使用uwsgi服务器启动应用程序。由于与车轮不兼容 您必须使用sudo pip install安装prom2team(无二进制文件:all:prom2team)(https://github.com/pypa/wheel/issues/92" rel="nofollow">https://github.com/pypa/wheel/issues/92)

$ prom2teams_uwsgi <path to uwsgi ini config>

而uwsgi看起来像是:

[uwsgi]
master = true
processes = 5
#socket = 0.0.0.0:8001
#protocol = http
socket = /tmp/prom2teams.sock
chmod-socket = 777
vacuum = true
env = APP_ENVIRONMENT=pro
env = APP_CONFIG_FILE=/etc/default/prom2teams.ini

考虑不提供chdir属性或模块属性。

也可以通过执行符号链接来设置模块文件:sudo mkdir-p/usr/local/etc/prom2teams/&;sudo ln-sf/usr/local/lib/python3.5/dist-packages/usr/local/etc/prom2teams/wsgi.py/usr/local/etc/prom2teams/wsgi.py(检查dist packages文件夹)

另一种方法是为自己提供模块文件模块示例binuwsgi调用uwsgi示例

注意:默认日志级别为debug。消息被重定向到stdout。要启用文件日志,请设置env app_environment=(pro pre)

配置文件

配置文件是一个ini文件,其结构如下所述:

[Microsoft Teams]
# At least one connector is required here
Connector: <webhook url>
AnotherConnector: <webhook url>   
...

[HTTP Server]
Host: <host ip> # default: localhost
Port: <host port> # default: 8089

[Log]
Level: <loglevel (DEBUG|INFO|WARNING|ERROR|CRITICAL)> # default: DEBUG
Path: <log file path>  # default: /var/log/prom2teams/prom2teams.log

[Template]
Path: <Jinja2 template path> # default: app resources template

[Group Alerts]
Field: <Field to group alerts by> # alerts won't be grouped by default

[Labels]
Excluded: <Coma separated list of labels to ignore>

注意:分组警报从v2.2.0开始工作

配置普罗米修斯

prometheus中的webhook接收器允许配置prom2teams服务器。

URL由上一步中定义的主机和端口组成。

注意:为了保持与以前版本的兼容性,v2.0继续使用端点0.0.0.0:8089中的默认连接器("连接器")。这将在以后的版本中删除。

// The prom2teams endpoint to send HTTP POST requests to.
url: 0.0.0.0:8089/v2/<Connector1>

模板化

prom2teams提供了一个默认模板,用于在微软团队中呈现消息。在应用程序启动期间,可以使用"templatePath"参数('--templatePath<;jinja2 template file path>;')覆盖此模板。

从警报管理器接收到某些字段时,这些字段被认为是必需的。 如果未包含此字段,则会指定默认值"未知"。

所有非强制字段s和not in excluded list被注入附加标签键。

大摇大摆的用户界面

在Web浏览器中访问<;host>;:<;port>;(例如localhost:8089)将显示API v1文档。

swagger ui

在Web浏览器中访问<;host>;:<;port>;/v2(例如localhost:8089/v2)将显示API v2文档。

swagger ui

测试

要运行测试套件,您应该键入以下内容:

$ pip3 install prom2teams
0

使用

构建

python 3.6.2pip 9.0.1/p>

版本控制

有关可用的版本,请参见此存储库上的标记

另外,您可以在changelog.md文件中查看每个版本的更改。

作者

  • 理想主义者-与理想主义者一起工作

另请参见参与此项目的贡献者列表。

许可证

apache 2.0许可证

此项目的许可证位于apache 2.0许可证下-有关详细信息,请参阅许可证文件。

贡献

有关我们的行为准则和向我们提交请求的过程的详细信息,请阅读contribution.md

欢迎加入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