[TOC] ## 一、说明 如果你已经搭建好ELK了(确保每个组件都成功启动了),并且没有发现报错,但是发现首页图标/系统日志之类的没有数据,可以按照以下思路一步步排查。 ## 二、数据链路流程 先理解整个数据流向之后,就可以开始逐个排查问题了 ![](https://img.kancloud.cn/2e/dc/2edc58d3a24df68ceeecc8820eda4b6d_554x398.png) 源头数据(xxx.log) -> 数据抽取(Filebeat) -> 数据解析(Logstash) -> 数据存储(Elasticsearch) -> 数据展示(search-server、log-server) ## 三、问题排查 ### 3.1 版本问题 目前SpringBoot的**sdk**只支持`Elasticsearch6.x`的版本,如果使用最新的`Elasticsearch7.x`**搜索服务**会启动报错 ### 3.2 源头数据 进去程序部署的服务器里面看看源头的日志有没有生成并且有没有数据 **以首页的埋点日志为例** 3.2.1 **检查有没有生成日志文件** ![](https://img.kancloud.cn/b8/78/b8783c1e1bf0c622c27bfe1a77234851_715x113.png) 3.2.2 **检查里面有没有数据** ![](https://img.kancloud.cn/45/fe/45fed8f7306e22892b4b615619b7a05c_1614x134.png) ### 3.3 数据抽取 3.3.1 **检查抽取配置** 查看filebeat的配置文件`filebeat.yml` **enabled**:是否为true **paths**:路径是否正确 3.3.2 **检查输出配置** 检查输出端`output.logstash`的地址是否配置正确 ![](https://img.kancloud.cn/dd/73/dd73b6d86aa137ffe2829a7342c2795b_522x148.png) 3.3.3 **检查日志** filebeat的logs目录下的日志,看看是否有报错,是否有抽数 ### 3.4 数据解析 检查logstash的log目录下的日志,看看有没有报错信息 **有报错信息** * 检查配置文件是否有语法错误,参考官网手册 * 在不影响语法正确性的前提下,用排除法删减或增加配置,逐步找出有问题的配置项 > **例如**: 1. 把所有配置都删掉看看有没有报错,没有则继续下一步 2. 只添加10行配置看看有没有报错,没有则继续下一步 3. 再添加10行配置看看有没有报错,报错了则详细检查新增加这10行的配置语法 ### 3.5 数据存储 #### 3.5.1 检查日志 检查elasticsearch的log目录下的日志,看看有没有报错信息 #### 3.5.2 检查索引 检查索引是否已创建,是否有数据 通过[http://es地址:9200/\_cat/indices?v](http://xn--es-im8ckc:9200/_cat/indices?v)查看 >索引名称可去logstash的配置查找,下图以首页埋点日志为例 ![](https://img.kancloud.cn/f9/58/f9581657a4d7ac680c6eb6fb84aec98c_634x250.png) ![](https://img.kancloud.cn/00/d1/00d105efc21e890fa9b792d8b84ad084_1325x160.png) #### 3.5.3 检查是否结构化 看看索引字段是否自动结构化 >[danger] 如果日志没有结构化,则检查logstash的grok配置 ![](https://img.kancloud.cn/a4/c9/a4c9738f40786b075c4b214fc66c76f5_816x717.png) ### 3.6 数据展示 #### 3.6.1 检查服务日志 检查`search-server`和`log-server`服务是否启动,并检查后台日志是否有报错 #### 3.6.2 检查服务配置 检查对应的配置`application-xxx.properties`文件 **cluster-name**:分片名字是否与elasticsearch里的匹配上 **cluster-nodes**:elasticsearch的地址对不对 ![](https://img.kancloud.cn/ad/69/ad69653fe9e2e6f6e00fae1251ce096c_625x220.png)