mirror of
https://github.com/didi/KnowStreaming.git
synced 2025-12-24 03:42:07 +08:00
184 lines
5.0 KiB
Markdown
184 lines
5.0 KiB
Markdown

|
||
|
||
# 页面无数据排查手册
|
||
|
||
- [页面无数据排查手册](#页面无数据排查手册)
|
||
- [1、集群接入错误](#1集群接入错误)
|
||
- [1.1、异常现象](#11异常现象)
|
||
- [1.2、解决方案](#12解决方案)
|
||
- [1.3、正常情况](#13正常情况)
|
||
- [2、JMX连接失败](#2jmx连接失败)
|
||
- [3、ElasticSearch问题](#3elasticsearch问题)
|
||
- [3.1、异因一:缺少索引](#31异因一缺少索引)
|
||
- [3.1.1、异常现象](#311异常现象)
|
||
- [3.1.2、解决方案](#312解决方案)
|
||
- [3.2、异因二:索引模板错误](#32异因二索引模板错误)
|
||
- [3.2.1、异常现象](#321异常现象)
|
||
- [3.2.2、解决方案](#322解决方案)
|
||
- [3.3、异因三:集群Shard满](#33异因三集群shard满)
|
||
- [3.3.1、异常现象](#331异常现象)
|
||
- [3.3.2、解决方案](#332解决方案)
|
||
|
||
|
||
---
|
||
|
||
## 1、集群接入错误
|
||
|
||
### 1.1、异常现象
|
||
|
||
如下图所示,集群非空时,大概率为地址配置错误导致。
|
||
|
||
<img src=http://img-ys011.didistatic.com/static/dc2img/do1_BRiXBvqYFK2dxSF1aqgZ width="80%">
|
||
|
||
|
||
|
||
### 1.2、解决方案
|
||
|
||
接入集群时,依据提示的错误,进行相应的解决。例如:
|
||
|
||
<img src=http://img-ys011.didistatic.com/static/dc2img/do1_Yn4LhV8aeSEKX1zrrkUi width="50%">
|
||
|
||
### 1.3、正常情况
|
||
|
||
接入集群时,页面信息都自动正常出现,没有提示错误。
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
---
|
||
|
||
## 2、JMX连接失败
|
||
|
||
背景:Kafka 通过 JMX 服务进行运行指标的暴露,因此 `KnowStreaming` 会主动连接 Kafka 的 JMX 服务进行指标采集。如果我们发现页面缺少指标,那么可能原因之一是 Kafka 的 JMX 端口配置的有问题导致指标获取失败,进而页面没有数据。
|
||
|
||
|
||
具体见同目录下的文档:[解决连接JMX失败](./%E8%A7%A3%E5%86%B3%E8%BF%9E%E6%8E%A5JMX%E5%A4%B1%E8%B4%A5.md)
|
||
|
||
|
||
---
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
## 3、ElasticSearch问题
|
||
|
||
**背景:**
|
||
`KnowStreaming` 将从 Kafka 中采集到的指标存储到 ES 中,如果 ES 存在问题,则也可能会导致页面出现无数据的情况。
|
||
|
||
**日志:**
|
||
`KnowStreaming` 读写 ES 相关日志,在 `logs/es/es.log` 中!
|
||
|
||
|
||
**注意:**
|
||
mac系统在执行curl指令时,可能报zsh错误。可参考以下操作。
|
||
|
||
```bash
|
||
1 进入.zshrc 文件 vim ~/.zshrc
|
||
2.在.zshrc中加入 setopt no_nomatch
|
||
3.更新配置 source ~/.zshrc
|
||
```
|
||
|
||
---
|
||
|
||
### 3.1、异因一:缺少索引
|
||
|
||
#### 3.1.1、异常现象
|
||
|
||
报错信息
|
||
|
||
```log
|
||
# 日志位置 logs/es/es.log
|
||
com.didiglobal.logi.elasticsearch.client.model.exception.ESIndexNotFoundException: method [GET], host[http://127.0.0.1:9200], URI [/ks_kafka_broker_metric_2022-10-21,ks_kafka_broker_metric_2022-10-22/_search], status line [HTTP/1.1 404 Not Found]
|
||
```
|
||
|
||
|
||
`curl http://{ES的IP地址}:{ES的端口号}/_cat/indices/ks_kafka*` 查看KS索引列表,发现没有索引。
|
||
|
||
#### 3.1.2、解决方案
|
||
|
||
执行 [ES索引及模版初始化](https://github.com/didi/KnowStreaming/blob/master/bin/init_es_template.sh) 脚本,来创建索引及模版。
|
||
|
||
|
||
---
|
||
|
||
|
||
### 3.2、异因二:索引模板错误
|
||
|
||
#### 3.2.1、异常现象
|
||
|
||
多集群列表有数据,集群详情页图标无数据。查询KS索引模板列表,发现不存在。
|
||
|
||
```bash
|
||
curl {ES的IP地址}:{ES的端口号}/_cat/templates/ks_kafka*?v&h=name
|
||
```
|
||
|
||
正常KS模板如下图所示。
|
||
|
||
<img src=http://img-ys011.didistatic.com/static/dc2img/do1_l79bPYSci9wr6KFwZDA6 width="90%">
|
||
|
||
|
||
|
||
#### 3.2.2、解决方案
|
||
|
||
删除KS索引模板和索引
|
||
|
||
```bash
|
||
curl -XDELETE {ES的IP地址}:{ES的端口号}/ks_kafka*
|
||
curl -XDELETE {ES的IP地址}:{ES的端口号}/_template/ks_kafka*
|
||
```
|
||
|
||
执行 [ES索引及模版初始化](https://github.com/didi/KnowStreaming/blob/master/bin/init_es_template.sh) 脚本,来创建索引及模版。
|
||
|
||
|
||
---
|
||
|
||
|
||
### 3.3、异因三:集群Shard满
|
||
|
||
#### 3.3.1、异常现象
|
||
|
||
报错信息
|
||
|
||
```log
|
||
# 日志位置 logs/es/es.log
|
||
|
||
{"error":{"root_cause":[{"type":"validation_exception","reason":"Validation Failed: 1: this action would add [4] total shards, but this cluster currently has [1000]/[1000] maximum shards open;"}],"type":"validation_exception","reason":"Validation Failed: 1: this action would add [4] total shards, but this cluster currently has [1000]/[1000] maximum shards open;"},"status":400}
|
||
```
|
||
|
||
尝试手动创建索引失败。
|
||
|
||
```bash
|
||
#创建ks_kafka_cluster_metric_test索引的指令
|
||
curl -s -XPUT http://{ES的IP地址}:{ES的端口号}/ks_kafka_cluster_metric_test
|
||
```
|
||
|
||
|
||
#### 3.3.2、解决方案
|
||
|
||
ES索引的默认分片数量为1000,达到数量以后,索引创建失败。
|
||
|
||
+ 扩大ES索引数量上限,执行指令
|
||
|
||
```
|
||
curl -XPUT -H"content-type:application/json" http://{ES的IP地址}:{ES的端口号}/_cluster/settings -d '
|
||
{
|
||
"persistent": {
|
||
"cluster": {
|
||
"max_shards_per_node":{索引上限,默认为1000, 测试时可以将其调整为10000}
|
||
}
|
||
}
|
||
}'
|
||
```
|
||
|
||
执行 [ES索引及模版初始化](https://github.com/didi/KnowStreaming/blob/master/bin/init_es_template.sh) 脚本,来补全索引。
|
||
|
||
|