class: center, middle # 日志集中管理
草根 --- ### 背景 ##
过去:如何收集、存放、使用日志?
--- ### 背景 ```bash cat tail sed awk perl grep... ``` - 有助于培养在常用工具方面的优秀技能,但它的适用范围仅限于少量的主机和日志文件类型。 - 随着日志的增多,规模的扩大,开始考虑其扩展性、安全性、稳定性、易用性、灵活性,比如使用商业的Splunk、开源的Logstash等; --- ###新平台 ##ELK= Elasticsearch + Logstash +Kibana
--- ###新平台 ###1. 设计及架构 LogStash由JRuby语言编写,基于消息(message-based)的简单架构,并运行在Java虚拟机(JVM)上。 不同于分离的代理端(agent)或主机端(server),LogStash可配置单一的代理端(agent)与其它开源软件结合,以实现不同的功能。 --- ###新平台 ###2. 四大组件: - Shipper:发送事件(events)至LogStash;agent只需要运行这个组件即可; - Broker and Indexer:接收并索引化事件; - Search and Storage:允许对事件进行搜索和存储; - Web Interface:基于Web的展示界面 --- ###实例 - ###
环境搭建
加载配置文件方式 ```bash ./bin/logstash -f config_dir/ or ./bin/logstash -f config_file ``` --- ###实例 - ###
Logstash Plugins
- ###
Logstash Input File
- ###
Logstash Filter Grok
- ###
Logstash Ruby code
--- ###实例 multiline 写法 ```ruby input { file { path => "/wls/applogs/rtlog/elis-uws3SF10279/elis-uws3SF10279.out" add_field => {app_name => "ELIS-UWS" type=> "APP" app_path=>"elis-uws3SF10279/elis-uws3SF10279.out" } tags => ["java_stk"] codec => multiline { charset => "utf-8" pattern => "(^\d+\serror)|(^.+Exception:?.*)|(^\s+at .+)|(^\s+... \d+ more)|(^\s*Caused by:.+)|(^ORA-.+)" what => "previous" } } } ``` --- ###实例 区分不同类型日志 ``` bash input { file { path => [ "/var/log/messages", "/var/log/cron", "/var/log/secure", "/chkusr/osw/archive/*/*.dat" ] add_field => {host_name => "CNSH231148" type => "HOST"} } file { path => "/wls/applogs/rtlog/elis-uws3SF10279/elis-uws3SF10279.out" add_field => {app_name => "ELIS-UWS" type=> "APP" } } } output { # stdout { codec => rubydebug } if [type] == "HOST" { ..... appname => "pingan_host_log" tag => "pingan_host" } else if [type] == "APP" { ....... appname => "ELIS-UWS" tag => "pingan_app" } } ``` --- ###实例
--- ###Elasticsearch
Elasticsearch 初探笔记
Task: - ES 集群 - 带宽测试 - Nas 性能测试 - 监控插件 - CRUD操作 - Source log 功能 问题:Solor、Lucense、Elasticsearch Redhat6 Nas不能写 --- ###Elasticsearch Source log 功能 ```ruby filter { ruby { init => '@incr={}' code => "key = event['host']+event['path'] if @incr.has_key?(key) @incr[key] += 1 else @incr[key] = 1 end event['lineno'] = @incr[key]" } } ``` --- ###日志查询平台
--- ###日志查询平台 基于web.py + grep 开发的,日志快速查询平台 日志存储:以文件形式存放本地/Nas
应用中的日志查询平台
Task: - 前端美化Bootstrap - 查询速度优化 - 查询层次调整 - 储存结果转换 - 时间戳转换 - 查询结果展示 --- ### Agent 更换 1. Logstash 占高CPU > - 更换最新版本logstash > - 进程优先级调整 > - 更换虚拟机版本 2. Logstash 处理速度小于 1万条/s 3. 考虑基于Go 开发Agent 更换Heka - 带宽限制 - 内存限制 - CPU限制 - 软链接支持 --- ###Heka Heka 内部框架
--- ###Heka
编译用到 https://code.google.com/ 几个go 相关项目 -
Heka 源代码编译网络问题
- Heka 配置文件解释 - Heka 启动脚本 - 增加应用实例 --- ###Other Agent - ##Windows 如何收集? - ##DMZ 区主机如何收集? - ##历史数据如何存放? --- ###Other Agent - ##Windows 如何收集? - ##DMZ 区主机如何收集? - ##历史数据如何存放? - Windows Server -> Nxlog(Linux) -> Nas -> Collector - DMZ Host -> Nas -> Collector --- ###日志新架构
--- ###More ``` bash \\10.11.77.143\case\日志集中管理项目资料和信息\CloudLogging\CloudLogging ``` --- class: center, middle #`谢谢大家!` --- class: center, middle #
Powered by Remark.js