一个简单的日志收集
来源:互联网 发布:caffe使用指南 编辑:程序博客网 时间:2024/05/16 01:45
随着系统节点越来越多, 看应用日志成为一个头疼的事情, 所以想做一个应用日志收集. 看了一下log4j的SocketAppender, 居然使用java 自带序列化, 还不提供server, 挺讨厌. 倒不如自己写一个.
系统需求如下:
- 聚合多台服务器日志
- 无过大性能损耗
- 近实时
- 提供log4j和erlang客户端
简单用erlang实现了一个
server
地址 : https://github.com/haitaoyao/elogserver
使用方法:
- rebar comile && cd rel && rebar generate
生成elogserver文件夹即server端. 启动时会读取/data/config/elogserver/elogserver.config, 示例配置文件如下:
- {data_path, ["/tmp/elogserver/"]}.
${elogserver_home}/bin/elogserver start 后,系统监听9512端口
log4j client
地址: https://github.com/haitaoyao/elogserver-log4j
配置:
- <appender name="elogserverAppender" class="elogserver.log4j.ELogServerAppender">
- <param name = "category" value = "test_log" />
- <param name = "logFileName" value = "test.log" />
- <param name = "logServerAddress" value = "dctest:9512" />
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %p %t %c - %m%n" />
- </layout>
- </appender>
其中, category为系统名称, 例如 hadoop. logFileName为最终日志文件名称, 例如datanode.log, logServerAddress为server端地址
需要注意的是, 这个appender是同步发送日志到server, 如果发现性能问题可以考虑配合AsyncAppender使用.
erlang client
地址: https://github.com/haitaoyao/elogclient
erlang客户端其实是lager的一个backend实现. 需使用lager
最终日志样例:
- 10.20.100.34:49588 2012-09-17 09:57:09 ClientCnxn [INFO] Opening socket connection to server DC-hadoop08/10.20.99.223:2181
- 10.20.100.34:49588 2012-09-17 09:57:09 ClientCnxn [INFO] Socket connection established to DC-hadoop08/10.20.99.223:2181, initiating session
- 10.20.100.34:49588 2012-09-17 09:57:13 ClientCnxn [INFO] Client session timed out, have not heard from server in 4000ms for sessionid 0x8391f7a7f900040, closing socket connection and attempting reconnect
- 10.20.100.34:49588 2012-09-17 09:57:14 ClientCnxn [INFO] Opening socket connection to server DC-hadoop02/10.20.99.217:2181
- 10.20.100.34:49588 2012-09-17 09:57:14 ClientCnxn [INFO] Socket connection established to DC-hadoop02/10.20.99.217:2181, initiating session
- 10.20.100.34:49588 2012-09-17 09:57:14 ClientCnxn [INFO] Session establishment complete on server DC-hadoop02/10.20.99.217:2181, sessionid = 0x8391f7a7f900040, negotiated timeout = 20000
- 10.20.100.34:49588 2012-09-17 09:57:14 ConnectionStateManager [INFO] State change: RECONNECTED
- 10.20.100.34:49588 2012-09-17 09:57:14 ConnectionStateManager [WARN] There are no ConnectionStateListeners registered.
每行开始为日志来源IP:PORT
将所有的应用日志收集到同一个文件后, 分析类似zookeeper的问题要方便的多.
0 0
- 一个简单的日志收集
- 一个简单的日志收集
- Linux下收集日志的简单脚本
- 简单的logback日志收集服务端
- ELK之nginx日志的简单收集
- 一个简单的日志类
- 一个简单的日志类
- 一个简单的日志module
- 从Apache的日志文件收集和提供统计数据(一个Python插件架构的简单实现)
- 一个简单的垃圾收集器
- 一个简单的垃圾收集器实现
- 一个简单的数据收集程序
- 一个简单的网页性能收集平台
- 简单ELK收集日志方案
- 用ELK搭建简单的日志收集分析系统
- 腾讯Bugly,简单实用的崩溃日志收集
- 日志收集系统Flume的简单安装Centos7
- 最简单的系统日志收集方式 elk + rsyslog客户端
- strcmp函数的实现与解析
- 移动开发必备的浏览器插件--user agent switcher
- zoj3635-Cinema in Akiba 树状数组+二分
- 文件操作
- S3C6410启动模式介绍
- 一个简单的日志收集
- 修改在线重做日志遇到的问题
- 第四周项目一 三角类1
- 怎么样将自己开发的Android应用程序编译到系统Image中
- JQuery框架技术
- SQL优化大全
- 第四周-项目二-三角形类2
- 苹果账号、证书、打包、续费
- VS2010 中error C2440: 如无法从“const char [N]”转换为“LPCWSTR”