继上一篇dubbox2.8.4的配置和使用后,我们要进一步考虑dubbox服务的部署和监控。
dubbox日志的采集方案
dubbox服务部署
采用的是ELK的日志采集方案(http://blog.csdn.net/u011282930/article/details/52771237),我们选择将dubbox的服务单独拆分为独立的部署jar包,在系统上部署。结构如下:
logstash日志采集
其中,logstash就是用来收集运行的服务的日志,采用的是2.3.1版本,通过配置对应的解析文件来监控,我的解析文件如下
input {
file {
path => "F:\log.txt" ## 填写文件的绝对路径
start_position => "beginning" ## 从头开始进行收集
codec => multiline { ## 通过配置识别日志开头,来保证多行可以被合并
pattern => "^[\d{2}:\d{2}:\d{2}.\d+]" ## 正则匹配以什么作为日志开头标志
negate => true
what => "previous"
}
}
}
filter {
grok {## 常用的filter之一,用于对文本日志记录进行json格式化
match => {
"message" => [ ## 多个正则格式数据
"(?<time>\d{2}:\d{2}:\d{2}.\d+)\s(?<thread>\[[^]]*\]{1})\s(?<level>\w+)\s\s(?<class>[\w|.]*)\s-{1}\s+(?<dubbo>\[[\w|\d|\-]*\]{1})\s(?<date>\[\d+-\d+-\d+\s\d+:\d+:\d+\])\s(?<customer>\d+.\d+.\d+.\d+):\d+\s-\>\s(?<producer>\d+.\d+.\d+.\d+:\d+)\s-\s(?<content>[\s|\S]*)",
"(?<time>\d{2}:\d{2}:\d{2}.\d+)\s(?<thread>\[[^]]*\]{1})\s(?<level>\w+)\s(?<content>[\s|\S]*)"
]
}
remove_field => ["message"]
}
date { ## 日期配置
match => [ "timestamp" , "HH:mm:ss Z" ]
}
}
output {
if[level]=="ERROR"{ ## 输出配置,如果当前日志标志为ERROR,则进行下方输出
stdout { ## 输出到控制端
codec => rubydebug
}
file { ## 输出到文件
path => "/diskb/bi_error_log/bi_error.log"
}
}
if[level]=="ERROR" or [level]=="INFO" and "monitor" not in [content]{
elasticsearch { ## 输出到es
hosts => ["localhost:9200"] ## es地址和端口
flush_size => 5000
index => "ebs-%{+YYYY.MM.dd}" ## kibana的检索index
idle_flush_time => 10
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
Kibana日志查看
通过Kibana上来查看和统计服务的日志状态
日志详细内容
对日志进行统计实时查看
dubbox服务监控方案
利用HeartBeat心跳检测rest接口
利用dubbo-monitor来查看服务健康度
服务调度统计
服务响应统计