第一部分Logstash 3
第1章 入门示例 3
1.1下载安装 3
1.2 Hello World 4
1.3配置语法 8
1.3.1语法 8
1.3.2命令行参数 10
1.3.3设置文件示例 11
1.4插件安装 12
1.5长期运行方式 13
第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 http-poller抓取 21
2.2编解码配置 22
2.2.1 JSON编解码 23
2.2.2多行事件编码 24
2.2.3网络流编码 26
2.2.4 collectd输入 27
2.3过滤器配置 30
2.3.1 date时间处理 30
2.3.2 grok正则捕获 33
2.3.3 dissect解析 35
2.3.4 GeoIP地址查询 36
2.3.5 JSON编解码 38
2.3.6 key-value切分 38
2.3.7 metrics数值统计 40
2.3.8 mutate数据修改 41
2.3.9随心所欲的Ruby处理 45
2.3.10 split拆分事件 47
2.3.11交叉日志合并 48
2.4输出插件 49
2.4.1输出到Elasticsearch 49
2.4.2发送email 54
2.4.3调用系统命令执行 54
2.4.4保存成文件 55
2.4.5报警发送到Nagios 56
2.4.6 statsd 58
2.4.7标准输出stdout 61
2.4.8 TCP发送数据 62
2.4.9输出到HDFS 62
第3章 场景示例 64
3.1 Nginx访问日志 64
3.1.1 grok处理方式 64
3.1.2 split处理方式 65
3.1.3 JSON格式 68
3.1.4 syslog方式发送 69
3.2 Nginx错误日志 69
3.3 Postfix日志 71
3.4 Ossec日志 72
3.4.1配置所有Ossee agent采用syslog输出 72
3.4.2配置Logstash 72
3.4.3推荐Kibana仪表盘 73
3.5 Windows系统日志 73
3.5.1采集端配置 73
3.5.2接收解析端配置 75
3.6 Java日志 77
3.6.1 Log4J配置 77
3.6.2 Logstash配置 78
3.6.3异常堆栈测试验证 78
3.6.4 JSON Event layout 79
3.7 MySQL慢查询日志 80
3.8 Docker日志 82
3.8.1记录到主机磁盘 82
3.8.2通过logspout收集 83
第4章 性能与监控 85
4.1性能测试 85
4.1.1配置示例 85
4.1.2使用方式 86
4.1.3额外的话 87
4.2监控方案 87
4.2.1 logstash-input-heartbeat心跳检测方式 88
4.2.2 JMX启动参数方式 89
4.2.3 API方式 90
第5章 扩展方案 94
5.1通过Redis队列扩展 95
5.1.1读取Redis数据 95
5.1.2采用list类型扩展Logstash 96
5.1.3输出到Redis 97
5.2通过Kafka队列扩展 98
5.2.1 Kafka基础概念 99
5.2.2 Input配置 100
5.2.3 Output配置 101
5.2.4性能 103
5.3 logstash-forwarder 103
5.3.1 Indexer端配置 104
5.3.2 Shipper端配置 104
5.3.3 AIX上的logstash-forwarder-java 106
5.4 Rsyslog 107
5.4.1常用模块介绍 107
5.4.2与Logstash合作 109
5.4.3 Mmexternal模块 109
5.5 Nxlog 112
5.6 Heka 114
5.7 Fluentd 115
5.7.1配置示例 115
5.7.2 Fluentd插件 117
5.8 Message::Passing 117
第6章Logstash源码解析 119
6.1 Pipeline 120
6.2 Plugins 122
第7章 插件开发 125
7.1插件格式 125
7.2插件的关键方法 126
7.3插件打包 127
7.4 Filter插件开发示例 128
7.4.1 mmdb数据库的生成方法 129
7.4.2 LogStash::Filters::Mmdb实现 130
7.4.3 logstash-filter-mmdb打包 131
7.5 Input插件开发示例 132
7.5.1 FileWatch模块原理 132
7.5.2 LogStash::Inputs::Utmp实现 133
7.6 Output插件开发示例 136
第8章Beats 138
8.1 libbeat的通用配置 138
8.1.1过滤器配置 138
8.1.2输出配置 139
8.1.3 shipper网络配置 142
8.1.4日志配置 142
8.1.5运行配置 142
8.2 Filebeat 142
8.2.1安装部署 143
8.2.2配置 144
8.2.3生成的可用字段 145
8.3 packetbeat抓包分析 145
8.3.1安装部署 146
8.3.2配置示例 146
8.3.3 dashboard效果 147
8.3.4 Kibana 3拓扑图 148
8.4 metricbeat 150
8.4.1配置示例 152
8.4.2各模块输出指标示例 152
8.4.3采集Docker中的指标 164
8.5 winlogbeat 164
第二部分Elasticsearch 169
第9章 架构原理 169
9.1准实时索引的实现 169
9.1.1动态更新的Lucene索引 169
9.1.2利用磁盘缓存实现的准实时检索 170
9.1.3 translog提供的磁盘同步控制 171
9.2 segment merge的影响 172
9.2.1归并线程配置 173
9.2.2归并策略 174
9.2.3 forcemerge接口 174
9.3 routing和replica的读写过程 174
9.3.1路由计算 175
9.3.2副本一致性 175
9.4 shard的allocate控制 176
9.4.1 reroute接口 178
9.4.2分配失败原因 179
9.4.3节点下线 180
9.4.4冷热数据的读写分离 180
9.5自动发现的配置 181
第10章 数据接口用例 183
10.1增删改查操作 183
10.2搜索请求 185
10.2.1全文搜索 185
10.2.2聚合请求 187
10.2.3 pipeline聚合 189
10.2.4搜索请求参数 191
10.3脚本 192
10.3.1动态提交 192
10.3.2固定文件 193
10.3.3其他语言 194
10.4重建索引 194
10.4.1 Perl客户端 194
10.4.2用Logstash重建索引 195
10.4.3新reindex接口的应用 195
10.5 Spark Streaming交互 197
第11章 性能优化 199
11.1 bulk提交 199
11.1.1 bulk大小 200
11.1.2 UDP方式 200
11.2 gateway配置 201
11.3集群状态维护 202
11.4缓存 206
11.4.1 filter缓存 206
11.4.2 shard reguest缓存 207
11.4.3 field stats接口 208
11.5字段数据 209
11.5.1 Circuit Breaker 209
11.5.2 doc values 210
11.6 curator工具 212
11.6.1参数介绍 213
11.6.2常用示例 214
11.7 profiiler调试接口 214
第12章 测试和扩展方案 217
12.1测试方案 217
12.2多集群互联 220
12.3 puppet-elasticsearch模块的使用 223
12.3.1安装和配置示例 223
12.3.2配置解释 224
12.4计划内停机升级的操作流程 224
12.5 Shield权限管理 227
12.5.1 Shield架构 227
12.5.2安装部署 227
12.6 searchguard权限管理 229
12.6.1安装 229
12.6.2权限角色配置 231
12.6.3其他组件配置方式 233
12.7别名的应用 234
12.7.1索引更名时的无缝切换 234
12.7.2限制索引数据部分可读 236
12.8快照与恢复 237
12.8.1 HDFS插件安装配置 237
12.8.2 Hadoop配置 238
12.8.3备份操作 240
12.9 rollover和shrink管理 240
12.9.1 rollover管理 240
12.9.2 shrink缩容 241
12.10 ingest节点 243
12.10.1创建管道流 243
12.10.2测试管道流 243
12.10.3处理器 244
第13章 映射与模板的定制 246
13.1映射的增删改查 246
13.2 Elasticsearch的核心类型 248
13.3自定义字段映射 249
13.3.1精确索引 249
13.3.2时间格式 249
13.3.3多重索引 250
13.4特殊字段 250
13.5动态模板映射 251
13.6索引模板 252
第14章 监控方案 254
14.1监控相关接口 254
14.1.1集群健康状态 254
14.1.2节点状态 257
14.1.3热线程状态 264
14.1.4索引状态 265
14.1.5任务管理 266
14.1.6 cat接口的命令行使用 268
14.2日志记录 271
14.3实时bigdesk方案 272
14.4 cerebro 274
14.5 Zabbix trapper方案 275
14.5.1安装配置 275
14.5.2模板应用 276
第15章Elasticsearch在运维监控领域的其他应用 278
15.1 Percolator接口 278
15.2 Watcher报警 281
15.3 ElastAlert 284
15.3.1安装 284
15.3.2配置结构 284
15.3.3扩展 286
15.4时序数据库 288
15.5 Etsy的Kale异常检测 290
15.6 Grafana可视化 291
15.6.1安装 291
15.6.2配置数据源 292
15.6.3生成第一个图表 293
15.6.4模板功能 295
15.6.5在线资源 300
15.7 Juttle可视化 301
15.7.1安装部署 302
15.7.2命令行运行示例 302
15.7.3可视化界面 304
15.7.4可视化相关指令介绍 304
第三部分Kibana 309
第16章Kibana的产品对比 309
16.1 Kibana 3的设计思路和功能 309
16.2 Kibana 5的设计思路和功能 310
16.3与Hadoop体系的区别 310
16.4 Splunk场景参考 311
第17章Kibana 5 312
17.1安装、配置和运行 313
17.2生产环境部署 314
17.2.1 Nginx代理配置 316
17.2.2开启SSL 317
17.3 Discover功能 318
17.3.1设置时间过滤器 318
17.3.2搜索数据 319
17.3.3按字段过滤 321
17.3.4过滤器的协同工作方式 321
17.3.5查看文档数据 323
17.4各种可视化功能 324
17.4.1 area 326
17.4.2 table 329
17.4.3 line 330
17.4.4 Markdown 331
17.4.5 metric 331
17.4.6 pie 332
17.4.7 tile map 332
17.4.8 vertical bar 334
17.4.9 tagcloud 335
17.5仪表盘功能 335
17.5.1开始 336
17.5.2容器功能 336
17.5.3修改可视化 337
17.5.4修改主题风格 339
17.6 management功能 339
17.6.1创建一个连接到Elasticsearch的索引模式 339
17.6.2字段格式 342
17.6.3创建一个脚本化字段 344
17.6.4设置高级参数 345
17.6.5管理已保存的搜索、可视化和仪表盘 345
17.7设置Kibana服务器属性 346
17.8常用sub agg示例 347
17.8.1函数堆栈链分析 347
17.8.2分图统计 349
17.8.3 TopN的时序趋势图 350
17.8.4响应时间的百分占比趋势图 352
17.8.5响应时间的概率分布在不同时段的相似度对比 353
17.9 Kibana报表的快速实现 354
17.10 timelion应用 355
17.11 console应用 357
第18章Kibana 5源码解析 359
18.1 Kibana索引的数据结构 360
18.2主页入口 361
18.2.1 Kibana App 362
18.2.2 Courier类 367
18.2.3路径记忆功能的实现 370
18.3 Discover解析 370
18.4 Visualize解析 374
18.4.1 vis_tyPes实现 375
18.4.2 savedVisualizations实现 382
18.4.3 Visualize实现 382
18.4.4 VisEditorSidebar实现 383
18.5 Dashboard解析 384
第19章Kibana插件开发示例 388
19.1 Kibana插件 388
19.1.1部署命令 388
19.1.2默认插件 389
19.2可视化插件示例 390
19.2.1插件目录生成 390
19.2.2主文件及解释 391
19.3服务器端插件示例 394
19.4完整应用开发示例 398
19.4.1 App模块的index.js结构 398
19.4.2服务器端部分 399
19.4.3前台界面的app.js 399
19.4.4页面模板 401