Mrjiang
作者Mrjiang·2019-03-15 18:56
技术总监·高伟达

elk等日志平台在金融企业运维领域中的使用场景

字数 3470阅读 2365评论 2赞 5

ELK基于业务系统进行日志统一展现

背景介绍背景介绍

金融企业业务庞杂、生产系统涉及设备品牌众多,各类应用系统、中间件、数据库每天产生大量日志。运维人员在日常维护中每天分析海量日志,需要通过查看各类应用日志、主机日志、数据库日志等,去判断应用、主机等运行状态,去发现隐藏风险,去了解周期性能状态。传统方式,我们管理成百上千台服务器。需要一次登录每台服务器来查阅日志。但是这样操作非常繁琐,耗时、耗力,效率低下且无法做关联分析。
基于此ELK提供了一套完整的日志记录和分析的解决方案平台。

安装配置

核心组件

ELK 由三个产品组成:
Elasticsearch 负责海量数据的存储和搜索
Logstash 负责各种数据源的日志采集
Kibana 负责数据展示、让你快速进行分析
部署架构
fjc42j4ilth

fjc42j4ilth

在L-E之间添加一层redis辅助,这样能够减少日志在服务端的积压,把压力转移到ELK系统服务器上。这种方式添加redis之后,由于redis是内存系统所以响应速度很快,而且可以在redis后添加多个消费系统(Logstash),来扩展消费能力,增强处理速度
详细安装部署方案参考https://www.elastic.co

采集日志类型

utkpuqg9vk7

utkpuqg9vk7

配置示例

以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
           }                         
}
}

Kiban展示
168365vx8z2i

168365vx8z2i

Kibana- Dashboard
dgu6qy6gs0v

dgu6qy6gs0v

IBM小型机的相关配置

IBM小型机HMC事件收集

通过shell脚本crontab定时任务每天集中对hmc事件进行采集汇总,大致步骤分为:
1、建立与hmc的信任关系(可参考www.lpar2rrd.com)
2、shell脚本远程定时执行(hmc命令可参考hmc手册)

Aix errpt日志需要添加字段,并添加至odm库。进行格式化以实现实时日志转发。具体配置可参考https://github.com/raggix/aix-errpt-logstash

运维日志统一展示

展示图
cxxgfgbzmnb

cxxgfgbzmnb

logstash-forwarder/filebeat采集日志时,自定义“业务名称”等字段便于按业务系统分类、分析某个业务系统的运行情况,或在异常情况下整体搜索查看日志,分析业务关联性。如搜索业务名称“贷款”,展示如下
slkhwaup9ic

slkhwaup9ic

w29010sc3xn
w29010sc3xn

3wtio6rkxvp
3wtio6rkxvp

ymmnztvxmsd
ymmnztvxmsd

wxlisuqpy9
wxlisuqpy9

应用场景


  • 结合收集的HMC日志,每天进行小型机的硬件检查;
  • 设置不同权限,运维小组根据各自运维板块对日志进行查看分析,进行潜在故障排查;
  • 业务运行异常时,根据业务系统进行全局日志查看、分析;
  • 对历史日志进行保存,做数据分析;
  • 采集用户登录行为及操作记录,进行安全审计;
  • 整合应用系统日志,实现全平台的日志收集;
  • 结合zabbix对日志进行监控告警。

更多应用场景的思考?

当前elk基于互联网行业收集及分析开源软件日志的案列较多,然而金融企业大量的商业产品同样迫切需要日志集中管理平台发挥更大作用,希望借此文一起探讨金融行业在elk等日志分析工具上的探索及应用

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

5

添加新评论2 条评论

baimao3000baimao3000安全工程师江苏天宝
2019-03-18 15:23
好文!
michael1983michael1983联盟成员技术总监某证券
2019-03-16 11:53
正好在测ELK,很有帮助,谢谢
Ctrl+Enter 发表

相关文章

相关问题

相关资料

X社区推广