[TOC]
## 一、说明
如果你已经搭建好ELK了(确保每个组件都成功启动了),并且没有发现报错,但是发现首页图标/系统日志之类的没有数据,可以按照以下思路一步步排查。
## 二、数据链路流程
先理解整个数据流向之后,就可以开始逐个排查问题了

源头数据(xxx.log) -> 数据抽取(Filebeat) -> 数据解析(Logstash) -> 数据存储(Elasticsearch) -> 数据展示(search-server、log-server)
## 三、问题排查
### 3.1 版本问题
目前SpringBoot的**sdk**只支持`Elasticsearch6.x`的版本,如果使用最新的`Elasticsearch7.x`**搜索服务**会启动报错
### 3.2 源头数据
进去程序部署的服务器里面看看源头的日志有没有生成并且有没有数据
**以首页的埋点日志为例**
3.2.1 **检查有没有生成日志文件**

3.2.2 **检查里面有没有数据**

### 3.3 数据抽取
3.3.1 **检查抽取配置**
查看filebeat的配置文件`filebeat.yml`
**enabled**:是否为true
**paths**:路径是否正确
3.3.2 **检查输出配置**
检查输出端`output.logstash`的地址是否配置正确

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的配置查找,下图以首页埋点日志为例


#### 3.5.3 检查是否结构化
看看索引字段是否自动结构化
>[danger] 如果日志没有结构化,则检查logstash的grok配置

### 3.6 数据展示
#### 3.6.1 检查服务日志
检查`search-server`和`log-server`服务是否启动,并检查后台日志是否有报错
#### 3.6.2 检查服务配置
检查对应的配置`application-xxx.properties`文件
**cluster-name**:分片名字是否与elasticsearch里的匹配上
**cluster-nodes**:elasticsearch的地址对不对

- 微服务介绍
- 软件架构设计
- 系统简介
- 运行环境
- 模块介绍
- 启动部署命令参数
- 打包说明
- 开发说明
- Java8
- 认证理论
- 有网络隔离
- 无网络隔离
- token自动续签设计
- url级权限控制
- 单点登录
- 登录
- 用户名密码(+验证码)登录
- 通过openId获取token
- 通过手机号获取token
- 第三方系统接口对接
- 第三方系统单点登录
- 通用刷新token
- 账号登出接口
- 统一异常处理
- 日志埋点工具
- 审计日志
- yml自定义配置自动提示
- Redis使用
- CacheManager集成
- 搜索中心
- 网关zuul动态路由
- swagger
- 解决开发环境的服务冲突和实例乱窜
- 多租户理论
- 多租户实现
- 分布式锁
- 分布式id生成器
- 分布式事务
- 分库分表sharding-sphere
- 消息队列
- 系统幂等性
- X 实时搜索系统设计
- Spring Cloud性能调优
- 链路跟踪
- JWT的RSA非对称密钥生成
- jdk
- Oracle
- OpenJDK
- Dragonwell
- JVM介绍
- 常见JVM内存错误及解决方案
- JVM分析工具详解
- nexus
- docker
- 安装
- docker-compose安装
- 私有仓库搭建
- 指定数据储存目录
- 添加私有仓库
- 提交拉取镜像
- X 免Dockerfile文件构建项目镜像
- 持续集成部署CI/CD
- Confluence知识管理
- JIRA事务与项目跟踪软件
- Gitlab代码仓库
- Jenkins自动化部署
- SonarQube代码检测
- Rancher容器管理平台
- nacos
- 部署
- Rancher部署nacos
- 注册中心
- 配置中心
- 多环境
- 生产部署方案
- X 通过Nginx来实现环境隔离
- Sentinel详解
- 动态规则扩展
- 在生产环境中使用 Sentinel
- 启动配置项
- X 网关流控
- ELK日志系统和慢查询SQL
- docker安装
- 普通安装
- Filebeat安装部署
- ES数据定期删除
- 没数据问题排查思路
- X Logstash的grok语法调试
- 慢查询sql
- 审计日志
- Elasticsearch性能优化
- APM监控
- SkyWalking介绍
- Zipkin,Pinpoint,SkyWalking三种服务链路监控组件分析
- 服务端部署
- 客户端部署
- 日志清理
- Metrics监控
- 二进制包部署
- docker部署
- docker安装各组件监控
- Grafana仪表盘和告警配置
- JMeter压力测试工具
- 使用说明
- 分布式事务
- TX-LCN(同步)
- X SEATA(同步)
- X RocketMQ(异步)
- 消息队列
- RocketMQ
- RocketMQ安装部署
- RocketMQ常见异常处理
- SpringCloud-Stream
- RabbitMQ
- Redis
- 单机安装
- 主从复制
- 主从复制+哨兵
- cluster集群
- 持久化方案
- MySQL
- 单机安装
- 主从复制
- 主从切换
- 主主复制
- 高可用
- 分表分库
- Canal数据库日志解析消费
- Canal安装
- 实时同步数据到ElasticSearch
- FastDFS
- docker安装
- centos安装
- 项目管理系统
- 禅道
- 111