第一部分 Logstash 3
第1章 入门示例 3
1.1 下载安装 3
1.2 HelloWorld 5
1.3 配置语法 7
1.3.1 语法 8
1.3.2 命令行参数 10
1.4 插件安装 11
1.5 长期运行方式 12
第2章 插件配置 15
2.1 输入插件 15
2.1.1 标准输入 16
2.1.2 文件输入 17
2.1.3 TCP输入 18
2.1.4 syslog输入 19
2.1.5 collectd输入 21
2.2 编解码配置 23
2.2.1 JSON编解码 24
2.2.2 多行事件编码 25
2.2.3 网络流编码 26
2.3 过滤器配置 28
2.3.1 date时间处理 28
2.3.2 grok正则捕获 30
2.3.3 GeoIP地址查询 33
2.3.4 JSON编解码 34
2.3.5 key-value切分 35
2.3.6 metrics数值统计 36
2.3.7 mutate数据修改 37
2.3.8 随心所欲的Ruby处理 42
2.3.9 split拆分事件 43
2.3.10 elapsed 43
2.4 输出插件 44
2.4.1 输出到Elasticsearch 44
2.4.2 发送email 49
2.4.3 调用系统命令执行 50
2.4.4 保存成文件 50
2.4.5 报警发送到Nagios 51
2.4.6 statsd 52
2.4.7 标准输出stdout 54
2.4.8 TCP发送数据 55
2.4.9 输出到HDFS 55
第3章 场景示例 57
3.1 Nginx访问日志 57
3.1.1 grok处理方式 57
3.1.2 split处理方式 58
3.1.3 json格式 61
3.1.4 syslog方式发送 62
3.2 Nginx错误日志 62
3.3 Postfix日志 63
3.4 Ossec日志 64
3.4.1 配置所有Ossec agent采用syslog输出 64
3.4.2 配置Logstash 65
3.4.3 推荐Kibana仪表盘 65
3.5 Windows系统日志 67
3.5.1 采集端配置 67
3.5.2 接收解析端配置 68
3.6 Java日志 69
3.6.1 Log4J配置 70
3.6.2 Logstash配置 70
3.6.3 异常堆栈测试验证 70
3.6.4 JSON Event layout 71
3.7 MySQL慢查询日志 73
3.8 Docker日志 74
3.8.1 记录到主机磁盘 75
3.8.2 通过logspout 收集 75
第4章 性能与监控 77
4.1 性能测试 77
4.1.1 配置示例 77
4.1.2 使用方式 78
4.1.3 额外的话 79
4.2 监控方案 79
4.2.1 logstash-input-heartbeat心跳检测方式 80
4.2.2 JMX启动参数方式 81
第5章 扩展方案 83
5.1 通过Redis队列扩展 84
5.1.1 读取Redis数据 84
5.1.2 采用list类型扩展Logstash 85
5.1.3 输出到Redis 86
5.2 通过Kafka队列扩展 87
5.2.1 Logstash1.4版本插件的安装 88
5.2.2 Input配置 88
5.2.3 Output配置 90
5.3 logstash-forwarder 91
5.3.1 Indexer端配置 91
5.3.2 Shipper端配置 92
5.3.3 AIX上的logstash-forwarder-java 93
5.4 Rsyslog 95
5.4.1 常用模块介绍 95
5.4.2 与Logstash合作 96
5.4.3 Mmexternal模块 97
5.5 Nxlog 99
5.6 Heka 101
5.7 Fluentd 102
5.7.1 配置示例 103
5.7.2 Fluentd插件 104
5.8 Message::Passing 104
第6章 Logstash源码解析 107
6.1 Pipeline 108
6.2 Plugins 109
6.2.1 Input中的Codec 110
6.2.2 Output中的Worker 111
第7章 插件开发 113
7.1 插件格式 113
7.2 插件的关键方法 114
7.3 插件打包 115
7.4 Filter插件开发示例 116
7.4.1 mmdb数据库的生成方法 116
7.4.2 LogStash::Filters::Mmdb实现 117
7.4.3 logstash-filter-mmdb打包 119
7.5 Input插件开发示例 119
7.5.1 FileWatch模块原理 120
7.5.2 LogStash::Inputs::Utmp实现 121
7.6 Output插件开发示例 124
第二部分 Elasticsearch 129
第8章 架构原理 129
8.1 准实时索引的实现 129
8.1.1 动态更新的Lucene索引 129
8.1.2 利用磁盘缓存实现的准实时检索 130
8.1.3 translog提供的磁盘同步控制 131
8.2 segment merge的影响 132
8.2.1 归并线程配置 133
8.2.2 归并策略 134
8.2.3 optimize接口 134
8.3 routing和replica的读写过程 134
8.3.1 路由计算 134
8.3.2 副本一致性 135
8.4 shard的allocate控制 136
8.4.1 reroute接口 138
8.4.2 冷热数据的读写分离 138
8.5 自动发现的配置 139
8.5.1 multicast方式 140
8.5.2 unicast方式 140
第9章 数据接口用例 141
9.1 增删改查操作 141
9.2 搜索请求 143
9.2.1 全文搜索 143
9.2.2 聚合请求 145
9.3 脚本 147
9.3.1 动态提交 147
9.3.2 固定文件 147
9.3.3 其他语言 148
9.4 重建索引 148
9.4.1 Perl客户端 149
9.4.2 用Logstash重建索引 149
9.5 Spark Streaming交互 150
第10章 性能优化 153
10.1 bulk提交 153
10.1.1 bulk大小 154
10.1.2 UDP方式 154
10.2 gateway配置 155
10.3 集群状态维护 156
10.4 缓存 160
10.4.1 filter缓存 160
10.4.2 shard query缓存 161
10.5 字段数据 162
10.5.1 CircuitBreaker 162
10.5.2 doc-values 163
10.6 curator工具 163
10.6.1 参数介绍 163
10.6.2 常用示例 165
第11章 测试和扩展方案 167
11.1 测试方案 167
11.2 多集群互联 168
11.3 puppet-elasticsearch模块的使用 171
11.3.1 安装和配置示例 171
11.3.2 配置解释 171
11.4 计划内停机升级的操作流程 172
11.5 Shield权限管理 174
11.5.1 Shield架构 174
11.5.2 安装部署 175
11.6 别名的应用 176
11.6.1 索引更名时的无缝切换 177
11.6.2 限制索引数据部分可读 178
第12章 映射与模板的定制 181
12.1 映射的增删改查 181
12.2 Elasticsearch的核心类型 183
12.3 自定义字段映射 184
12.3.1 精确索引 184
12.3.2 时间格式 185
12.3.3 多重索引 185
12.4 特殊字段 186
12.5 动态模板映射 186
12.6 索引模板 187
第13章 监控方案 189
13.1 监控相关接口 189
13.1.1 集群健康状态 189
13.1.2 节点状态 191
13.1.3 索引状态 199
13.1.4 等待执行的任务 200
13.1.5 cat接口的命令行使用 201
13.2 日志记录 204
13.3 实时bigdesk方案 205
13.4 官方marvel方案 207
13.4.1 安装和卸载 208
13.4.2 配置 208
13.4.3 访问 209
13.4.4 面板定制示例 209
13.5 Zabbix trapper方案 212
13.5.1 安装配置 212
13.5.2 模板应用 213
第14章 Elasticsearch在运维监控领域的其他应用 215
14.1 Percolator接口 215
14.2 Watcher报警 217
14.3 packetbeat抓包分析 220
14.3.1 安装部署 220
14.3.2 配置示例 220
14.3.3 dashboard效果 221
14.3.4 Kibana 3拓扑图 223
14.4 时序数据库 224
14.5 Etsy的Kale异常检测 226
第三部分 Kibana 231
第15章 Kibana的产品对比 231
15.1 Kibana 3的设计思路和功能 231
15.2 Kibana 4的设计思路和功能 232
15.3 与Hadoop体系的区别 232
15.4 Splunk场景参考 233
第16章 Kibana 3 235
16.1 Kibana 3入门 235
16.1.1 准备工作 236
16.1.2 界面介绍 236
16.1.3 跨域访问注意事项 239
16.2 config.js配置 240
16.3 页面布局 240
16.3.1 请求和过滤 241
16.3.2 行和面板 244
16.4 各面板功能 251
16.4.1 histogram 252
16.4.2 table 262
16.4.3 map 266
16.4.4 bettermap 267
16 4 5 terms 269
16.4.6 column 274
16.4.7 stats 274
16.4.8 query 275
16.4.9 trend 276
16.4.10 text 277
16.4.11 sparklines 278
16.4.12 hits 279
16.4.13 goal 279
16.5 仪表盘的保存和载入 279
16.5.1 保存仪表盘 280
16.5.2 加载仪表盘 280
16.5.3 分享仪表盘 280
16.5.4 保存成静态仪表盘 281
16.6 自定义仪表盘功能 281
16.6.1 schema简介 281
16.6.2 模板化template仪表盘 288
16.6.3 脚本化scripted仪表盘 289
16.7 认证授权 290
16.7.1 用Nginx实现基础的认证 290
16.7.2 用Node.js实现基于CAS的认证 292
16.7.3 用Perl实现认证和用户授权 293
第17章 Kibana3源码解析 297
17.1 源码目录结构 297
17.2 入口和模块依赖 300
17.3 控制器和服务 302
17.3.1 dashboard 303
17.3.2 querySrv 303
17.3.3 filterSrv 304
17.3.4 fields 304
17.3.5 esVersion 304
17.4 面板指令 304
17.4.1 添加面板 304
17.4.2 展示面板 305
17.5 面板实现 306
17.5.1 module.js 306
17.5.2 module.html 308
17.5.3 editor.html 309
17.6 用facet接口开发一个 range panel 309
17.6.1 代码实现 310
17.6.2 面板效果 313
17.7 用agg接口开发一个 percentile panel 313
17.7.1 代码实现要点 316
17.7.2 面板效果 318
第18章 Kibana 4 319
18.1 安装、配置和运行 320
18.2 生产环境部署 323
18.2.1 Nginx代理配置 323
18.2.2 配置Kibana和shield一起工作 324
18.2.3 开启SSL 325
18.2.4 控制访问权限 325
18.3 Discover功能 326
18.3.1 设置时间过滤器 326
18.3.2 搜索数据 327
18.3.3 按字段过滤 328
18.3.4 过滤器的协同工作方式 329
18.3.5 查看文档数据 330
18.4 各种可视化功能 332
18.4.1 area 333
18.4.2 table 336
18.4.3 line 337
18.4.4 Markdown 338
18.4.5 metric 338
18.4.6 pie 339
18.4.7 tilemap 339
18.4.8 vertical bar 340
18.5 仪表盘功能 341
18.5.1 开始 342
18.5.2 容器功能 343
18.5.3 修改可视化 346
18.6 Setting功能 346
18.6.1 创建一个连接到Elasticsearch的索引模式 346
18.6.2 创建一个脚本化字段 349
18.6.3 设置高级参数 350
18.6.4 管理已保存的搜索、可视化和仪表盘 350
18.7 设置Kibana服务器属性 351
18.8 常用sub agg示例 352
18.8.1 函数堆栈链分析 352
18.8.2 分图统计 355
18.8.3 TopN的时序趋势图 356
18.8.4 响应时间的百分占比趋势图 358
18.8.5 响应时间的概率分布在不同时段的相似度对比 359
18.9 Kibana报表的快速实现 360
第19章 Kibana 4源码解析 363
19.1 Kibana索引的数据结构 364
19.2 主页入口 365
19.2.1 index.js解析 365
19.2.2 Courier类 367
19.2.3 路径记忆功能的实现 370
19.2.4 标签页应用的加载 371
19.3 Discover解析 374
19.4 Visualize解析 377
19.4.1 vis_types实现 378
19.4.2 savedVisualizations实现 384
19.4.3 Visualize实现 384
19.4.4 VisEditorSidebar实现 385
19.5 Dashboard解析 387
19.6 Setting解析 389