**概述**
应用通过log4j输出日志到mongodb数据库中,闪电狗定时运行脚本分析日志,生成监控曲线和告警。主要优点是不影响业务代码,只需加入几个jar包和修改log4j配置文件就能接入。配置一些javascript小脚本,几乎就能监控所有你想监控的信息,如cpu内存,错误日志百分比,每日访问人数,收入等等
该项目由[杭州斯凯网络](http://www.sky-mobi.com/)开源,目前已经在公司内部支付等关键业务中使用,对创业团队和中小型公司有较大吸引力。目前只支持java的log4j和logback日志输出,通过简单扩展可以支持其他语言。
##
1. 安装
* 安装[mongodb](http://www.mongodb.org/downloads),解压出来,配置数据保存路径,即可运行
* 下载[flash-dog-server](https://github.com/flash-dog/flash-dog/downloads)
* 修改flash-dog-server文件夹下的log4j.properties文件,修改log4j.appender.MongoDB的hostname和port指向你部署的mongodb地址和端口:
log4j.appender.MongoDB.hostname=172.16.3.47
log4j.appender.MongoDB.port=27017
* 修改conf/develop/app.properties,也指向刚才部署的mongodb
mongo.uri=mongodb://172.16.3.47:27017/monitor_test
* 进入bin下,运行start.sh develop或者start-dev.bat
在浏览器里打开http://localhost:8080/flash-dog/projects 输入用户名:admin 密码 123456 ,你将看到一个叫闪电狗的项目,这是因为闪电狗也会监控自己,wow
![screenshot](https://github.com/flash-dog/flash-dog/blob/master/screenshot/monitor1.jpg?raw=true)
2. 把你自己的项目加入闪电狗
* 从[flash-dog-api-log4j](https://github.com/flash-dog/flash-dog/downloads)下载客户端的lib库,或者从flash-dog-server文件夹lib目录下拷贝log4mongo-java ,flash-dog-api-log4j 和 mongo-java-driver 到项目的lib库下,注意还需要log4j 1.2.15以上的版本
* 修改您自己的log4j.properties配置文件
* 重启您的项目
* 进入http://localhost:8080/flash-dog/projects ,新建项目,如果配置正确,你将在【日志分析】栏目中查询到您的日志,enjoy your self!
3. log4j配置说明
* log4j.properties
<pre><code>
log4j.appender.MongoDB=org.log4mongo.AsynMongoDbLayoutAppender
log4j.appender.MongoDB.layout=org.log4mongo.contrib.HostInfoPatternLayout
#pid表示进程号,ip为当前服务器ip
log4j.appender.MongoDB.layout.ConversionPattern={"timestamp":"%d","level":"%p","className":"%c","message":"%m","pid":"%V","ip":"%I"}
#后台插入日志使用的线程数
log4j.appender.MongoDB.threadCount=2
#是否自动打印jvm信息,如cpu,memory,threadcount,
log4j.appender.MongoDB.jvmMonitor=true
log4j.appender.MongoDB.databaseName=test
log4j.appender.MongoDB.collectionName=flash_dog_log
log4j.appender.MongoDB.hostname=172.16.3.47
log4j.appender.MongoDB.port=27017
log4j.rootLogger=info,stdout,logfile,MongoDB
</code></pre>
4. 监控示例
* 在闪电狗里面新建监控项目后,点击[定时任务]->[新建任务]。假设业务会打印出:
<pre><code class="java">
username=jordon pay money=100
</code></pre>
点击[指标监控]按钮,自动生成脚本如下:
<pre><code class="java">
m=function () {
result = this.message.match(".*money=(\\d+)");
if (result) {
pricePaied = new NumberLong(result[1]);
emit("pricePaied", pricePaied);
}
}
r= function (key, values) {
var total = 0;
for (var i = 0; i < values.length; i++) {
total += values[i];
}
return total;
}
res=db.flash_dog_log.mapReduce(m, r, {out:"flash_dog_log_output", query:{timestamp:{$gt:new Date(new Date - 300000)}}});
pricePaied=db.flash_dog_log_output.findOne({_id:"pricePaied"});
if(pricePaied)
v=pricePaied.value;
else
v=0;
db.flash_dog_metrics.save({name:"5分钟收入",value:v,timeStamp:new Date().getTime()});
return res;
</code></pre>
目的为通过脚本扫描最近5分钟日志,通过正则表示提取 this.message.match(".*money=(\\d+)") 金额,加起来即为最近5分钟收入。生成曲线图如下:
![screenshot](https://github.com/flash-dog/flash-dog/blob/master/screenshot/shouru1.jpg?raw=true)
* 设置告警 当最近5分钟收入少于100的时候发送邮件,凌晨0点到4点的时候除外。
![screenshot](https://github.com/flash-dog/flash-dog/blob/master/screenshot/warning1.jpg?raw=true)
* 闪电狗目前有4个脚本模板,可以边修改,边调试,非常有趣
5. 常见问题
* 是否可以监控业务
可以,默认是监控jvm性能和错误日志,里面提供了脚步模板,稍作修改便能通过分析业务日志进行业务统计和监控
* 是否需要连接业务数据库
不需要,只需要连接mongodb
**扩展**
如果您的项目没有使用log4j,也可以使用logback.
* 下载安装 [logback-mongodb](https://github.com/flash-dog/logback-mongodb)
<pre><code>
mvn clean install
</code></pre>
* 增加slf4j 和 logback 的依赖
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.5</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>logback.mongodb</groupId>
<artifactId>logback.mongodb</artifactId>
<version>1.0.2</version>
</dependency>
* logback的配置
<appender name="MONGO" class="logback.mongodb.MongoDBAppender">
<connectionSource class="logback.mongodb.MongoDBConnectionSource">
<uri>mongodb://172.16.3.47:27017</uri>
<db>ugglog</db>
<collection>paylog</collection>
</connectionSource>
</appender>
<appender name="ASYNCMONGO" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="MONGO" />
</appender>
<logger name="currency" additivity="false" level="warn">
<appender-ref ref="MONGO"/>
</logger>
* 在logback中可以使用MDC功能输出附加的字段
<pre><code class="java">
MDC.clear();
MDC.put("mob", mob.name());
MDC.put("value", value + "");
MDC.put("currency", type.name());
MDC.put("reason", reason);
MDC.put("saveAtOnce", saveAtOnce + "");
mongoLogger.info("{}:{} {} {} {} {}", new Object[]{logPre, mob.name(), value, type, reason, saveAtOnce});
</code></pre>
* 这样在mongodb的collection中保存的scheme会增加这些字段:
<pre><code>
{
mob: '',
value: '',
currency: '',
reason: '',
saveAtOnce: ''
}
</code></pre>
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于java的开发源码-Facebook个人资料导出工具 fbpwn.zip 基于java的开发源码-Facebook个人资料导出工具 fbpwn.zip 基于java的开发源码-Facebook个人资料导出工具 fbpwn.zip 基于java的开发源码-Facebook个人资料导出工具 fbpwn.zip 基于java的开发源码-Facebook个人资料导出工具 fbpwn.zip 基于java的开发源码-Facebook个人资料导出工具 fbpwn.zip 基于java的开发源码-Facebook个人资料导出工具 fbpwn.zip 基于java的开发源码-Facebook个人资料导出工具 fbpwn.zip 基于java的开发源码-Facebook个人资料导出工具 fbpwn.zip 基于java的开发源码-Facebook个人资料导出工具 fbpwn.zip
资源推荐
资源详情
资源评论
收起资源包目录
基于java的开发源码-Facebook个人资料导出工具 fbpwn.zip (216个子文件)
start-dev.bat 92B
.classpath 595B
.classpath 454B
jquery-ui-1.8.16.css 33KB
datepicker.css 5KB
datepicker.css 5KB
style.css 4KB
datepicker.css 4KB
datepicker.css 3KB
codemirror.css 3KB
jquery.multiSelect.css 1KB
javascript.css 1KB
dialog.css 401B
simple-hint.css 368B
WdatePicker.css 149B
WdatePicker.css 149B
img.gif 2KB
img.gif 2KB
img.gif 2KB
img.gif 2KB
clipboard.gif 1KB
notepad.gif 1KB
setting.gif 1KB
new-package.gif 1KB
up.gif 1KB
datePicker.gif 1KB
datePicker.gif 1KB
del.gif 643B
edit-delete.gif 511B
.gitignore 62B
log4mongo-java-0.7.0.jar 16KB
Project.java 10KB
MetricDog.java 8KB
ProjectAction.java 7KB
User.java 6KB
AlertService.java 6KB
MongoUserManager.java 5KB
HttpAlertNotifier.java 5KB
ChartUtil.java 5KB
SimpleAuthz.java 5KB
ChartAction.java 4KB
ProjectService.java 4KB
LogsAction.java 4KB
TaskAction.java 4KB
TaskService.java 4KB
HttpAlertNotifierTest.java 4KB
UserAction.java 4KB
MetricAction.java 3KB
WarningAction.java 3KB
ProjectServiceTest.java 3KB
ProjectCreatorTest.java 3KB
EmailService.java 3KB
ProjectCreator.java 3KB
AsynMongoDbLayoutAppender.java 3KB
Log.java 3KB
Task.java 3KB
MongoAction.java 3KB
JvmMonitor.java 3KB
LogQuery.java 2KB
Alert.java 2KB
LogsService.java 2KB
MetricValue.java 2KB
Chart.java 2KB
TimeRange.java 2KB
ProjectTest.java 2KB
MetricDogTest.java 2KB
LogQueryTest.java 2KB
TimeRangeAction.java 2KB
AdminAction.java 2KB
ThirdAuthenticationSuccessHandler.java 2KB
ChartUtilTest.java 2KB
ProjectStatusServiceTest.java 2KB
TimeRangeTest.java 1KB
UserInterceptor.java 1KB
MongoUserManagerTest.java 1KB
SpringJettyMain.java 1KB
ProjectStatusService.java 1KB
FormatUtil.java 1KB
HttpAlertAction.java 1KB
AsynMongoDbAppender.java 1KB
UserManager.java 1KB
AlertServiceTest.java 1KB
LoggerName.java 984B
SimpleAuthzTest.java 971B
SelfAuthenticationFailureHandler.java 964B
LogsServiceTest.java 931B
AbstractAlertNotifierTest.java 921B
EmailServiceTest.java 901B
LogTest.java 893B
AbstractAlertNotifier.java 841B
VelocityFactoryBean.java 814B
Constants.java 763B
IdentifyObject.java 734B
ComplexView.java 576B
RegisterException.java 341B
AlertListener.java 179B
SystemConstants.java 147B
Status.java 142B
monitor1.jpg 134KB
shouru1.jpg 102KB
共 216 条
- 1
- 2
- 3
资源评论
毕业课程设计
- 粉丝: 2307
- 资源: 1728
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功