金融企业业务庞杂、生产系统涉及设备品牌众多,各类应用系统、中间件、数据库每天产生大量日志。运维人员在日常维护中每天分析海量日志,需要通过查看各类应用日志、主机日志、数据库日志等,去判断应用、主机等运行状态,去发现隐藏风险,去了解周期性能状态。传统方式,我们管理成百上千台服务器。需要一次登录每台服务器来查阅日志。但是这样操作非常繁琐,耗时、耗力,效率低下且无法做关联分析。
基于此ELK提供了一套完整的日志记录和分析的解决方案平台。
ELK 由三个产品组成:
Elasticsearch 负责海量数据的存储和搜索
Logstash 负责各种数据源的日志采集
Kibana 负责数据展示、让你快速进行分析
部署架构
在L-E之间添加一层redis辅助,这样能够减少日志在服务端的积压,把压力转移到ELK系统服务器上。这种方式添加redis之后,由于redis是内存系统所以响应速度很快,而且可以在redis后添加多个消费系统(Logstash),来扩展消费能力,增强处理速度
详细安装部署方案参考https://www.elastic.co
以db2diag日志采集为例,其它日志类型参考db2diag
源端配置logstash-forwarder
{
"network": {
"servers": [ "ip:5063"],
"ssl ca": "/home/sysadmin/certs/keystore.jks"
},
"files": [
{
"paths": [ " /home/db2inst1/sqllib/db2dump/db2diag.log" ],
#添加标签:业务系统,OS平台,ip地址,“type”用于logstash分类
"fields": {"type": "db2log","env":"贷款业务","platform":"AIX610704","ip":"ipxx"}
}
]
}
Server端配置
input {
lumberjack {
port => 5063
type => "db2log"
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
codec => multiline {
charset =>"UTF-8"
pattern => "^\\d{4}-\\d{2}-\\d{2}-\\d{2}\\.\\d{2}\\.\\d{2}\\.\\d{6}[\\+-]\\d{3}"
negate => true
what => previous
}
}
}
filter {
if [type] == "db2log" {
mutate {
gsub => ['message', "\\n", " "]
}
grok {
match => { "message" =>"(?<timestamp>%{YEAR}-%{MONTHNUM}-%{MONTHDAY}-%{HOUR}\\.%{MINUTE}\\.%{SECOND})%{INT:timezone}(?:%{SPACE}%{WORD:r
ecordid}%{SPACE})(?:LEVEL%{SPACE}:%{SPACE}%{DATA:level}%{SPACE})(?:PID%{SPACE}:%{SPACE}%{INT:processid}%{SPACE})(?:TID%{SPACE}:%{SPACE
}%{INT:threadid}%{SPACE})(?:PROC%{SPACE}:%{SPACE}%{DATA:process}%{SPACE})?(?:INSTANCE%{SPACE}:%{SPACE}%{WORD:instance}%{SPACE})?(?:NOD
E%{SPACE}:%{SPACE}%{WORD:node}%{SPACE})?(?:DB%{SPACE}:%{SPACE}%{WORD:dbname}%{SPACE})?(?:APPHDL%{SPACE}:%{SPACE}%{NOTSPACE:apphdl}%{SP
ACE})?(?:APPID%{SPACE}:%{SPACE}%{NOTSPACE:appid}%{SPACE})?(?:AUTHID%{SPACE}:%{SPACE}%{WORD:authid}%{SPACE})?(?:HOSTNAME%{SPACE}:%{SPAC
E}%{HOSTNAME:hostname}%{SPACE})?(?:EDUID%{SPACE}:%{SPACE}%{INT:eduid}%{SPACE})?(?:EDUNAME%{SPACE}:%{SPACE}%{DATA:eduname}%{SPACE})?(?:
FUNCTION%{SPACE}:%{SPACE}%{DATA:function}%{SPACE})(?:probe:%{SPACE}%{INT:probe}%{SPACE})%{GREEDYDATA:functionlog}"
}
}
date {
match => [ "timestamp", "YYYY-MM-dd-HH.mm.ss.SSSSSS" ]
}
if "_grokparsefailure" in [tags] {
drop {}
}
}
}
output {
if [type] == "db2log" {
elasticsearch {
hosts => ["ip:9200"]
index => "db2log-%{+YYYY.MM.dd}"
user => "xxxx"
password => "xxxx"
}
stdout {
codec => rubydebug
}
}
}
通过shell脚本crontab定时任务每天集中对hmc事件进行采集汇总,大致步骤分为:
1、建立与hmc的信任关系(可参考www.lpar2rrd.com)
2、shell脚本远程定时执行(hmc命令可参考hmc手册)
logstash-forwarder/filebeat采集日志时,自定义“业务名称”等字段便于按业务系统分类、分析某个业务系统的运行情况,或在异常情况下整体搜索查看日志,分析业务关联性。如搜索业务名称“贷款”,展示如下
当前elk基于互联网行业收集及分析开源软件日志的案列较多,然而金融企业大量的商业产品同样迫切需要日志集中管理平台发挥更大作用,希望借此文一起探讨金融行业在elk等日志分析工具上的探索及应用
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞5
添加新评论2 条评论
2019-03-18 15:23
2019-03-16 11:53