流管理器事件到logstash实例

supervisor-logstash-notifier的Python项目详细描述


Build StatusCoveralls Status

这是一个港口 Supervisor-logging 项目。除了捕获日志行之外,正如主管日志记录所做的那样, 还打算捕获 PROCESS_STATE 主管发出的事件。

主管日志存储通知程序

一个supervisor插件,用于将事件和日志流式传输到 logstash实例。

安装

Python2.7或Python3.4+是必需的。

pip install supervisor-logstash-notifier

注意,supervisor本身还不能在python 3上工作,尽管它可以 安装在单独的环境中(因为 主管logstash通知程序是一个单独的过程)。

使用量

要将事件发送到的logstash实例配置为 环境变量:

  • LOGSTASH_SERVER
  • LOGSTASH_PORT
  • LOGSTASH_PROTO

将插件添加为事件侦听器:

# Capture state changes
[eventlistener:logging]
command = logstash_notifier
events = PROCESS_STATE

# Capture stdout/stderr
[eventlistener:logging]
command = logstash_notifier --capture-output
events = PROCESS_LOG

# Capture state changes and stdout/stderr
[eventlistener:logging]
command = logstash_notifier --capture-output
events = PROCESS_STATE,PROCESS_LOG

如果您不想为整个 shell,您可以通过主管的配置将它们传入:

[eventlistener:logging]
environment=LOGSTASH_SERVER="127.0.0.1",LOGSTASH_PORT="12201",LOGSTASH_PROTO="tcp"
command=logstash_notifier
events=PROCESS_STATE

在程序中启用日志事件:

[program:yourprogram]
stdout_events_enabled = true
stderr_events_enabled = true

高级使用

也可以在事件消息中包含环境变量, 通过指定要包含的环境变量的名称:

[eventlistener:logging]
command=export IPV4=`ec2metadata --local-ipv4`; logstash_notifier --include IPV4
events=PROCESS_STATE

或者,通过指定要记录的任意数据键值:

[eventlistener:logging]
command=logstash_notifier --include bears="polar,brown,black" notbears="unicorn,griffin,sphinx,otter"
events=PROCESS_STATE

这两种形式的任意用户数据包含可以组合使用 如有必要。

使用logstash运行

logstash可以简单地配置为接收事件:

input {
    tcp {
        port => 12201
        codec => json
    }
}

output {
    stdout {
        codec => rubydebug
    }
}

事件和日志输出生成的json如下:

# State changes
{
  "@timestamp": "2016-03-28T23:58:03.469Z",
  "@version": "1",
  "eventname": "PROCESS_STATE_STOPPED",
  "from_state": "STOPPING",
  "groupname": "myprocess",
  "host": "ip-10-93-130-24",
  "level": "INFO",
  "logger_name": "supervisor",
  "message": "PROCESS_STATE_STOPPED collectd",
  "path": "/path/to/supervisor-logstash-notifier/logstash_notifier/__init__.py",
  "pid": "1234",
  "processname": "myprocess",
  "tags": [],
  "type": "logstash"
}

# Log output
{
  "@timestamp": "2016-03-28T23:58:03.741Z",
  "@version": "1",
  "channel": "stdout"
  "eventname": "PROCESS_LOG_STDOUT",
  "groupname": "myprocess",
  "host": "localhost",
  "level": "INFO",
  "logger_name": "supervisor",
  "message": "myprocess output #1\n",
  "path": "/path/to/supervisor-logstash-notifier/logstash_notifier/__init__.py",
  "pid": "1234",
  "processname": "myprocess",
  "tags": [],
  "type": "logstash",
}

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

推荐PyPI第三方库


热门话题
java Detect可以使用HTTP请求访问url   Java可访问翻译web服务?   来自Eclipse应用程序的java工作区   java Android映像未存储在存储器中   在R中读取xlsx文件后出现java获取错误   在Apache Tomcat中进行部署时,java Eureka客户端连接超时   Java中的置换问题/错误旅行商问题的最近邻算法的实现   java编程一个计算器,它按DMAS顺序执行操作   java无法访问findByDescriptionContaining(字符串描述)的lob流   java如何在春季用@ComponentScan惰性地加载所有bean?   连接到删除主机时java apache FTP客户端连接超时   用java将非整数日转换为实际日期?   C++ MMAP()与java MaPDyByTeffFor性能?   java后缀Trie匹配,匹配操作出现问题