页面无数据排查手册.md 5.0 KB
Newer Older
1 2 3 4
![Logo](https://user-images.githubusercontent.com/71620349/185368586-aed82d30-1534-453d-86ff-ecfa9d0f35bd.png)

# 页面无数据排查手册

5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
- [页面无数据排查手册](#页面无数据排查手册)
  - [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解决方案)

22 23 24

---

W
WangYaobo 已提交
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
## 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、正常情况

接入集群时,页面信息都自动正常出现,没有提示错误。





49 50 51 52 53 54 55 56


---

## 2、JMX连接失败

背景:Kafka 通过 JMX 服务进行运行指标的暴露,因此 `KnowStreaming` 会主动连接 Kafka 的 JMX 服务进行指标采集。如果我们发现页面缺少指标,那么可能原因之一是 Kafka 的 JMX 端口配置的有问题导致指标获取失败,进而页面没有数据。

W
WangYaobo 已提交
57

58
具体见同目录下的文档:[解决连接JMX失败](./%E8%A7%A3%E5%86%B3%E8%BF%9E%E6%8E%A5JMX%E5%A4%B1%E8%B4%A5.md)
W
WangYaobo 已提交
59 60


61
---
W
WangYaobo 已提交
62 63 64 65 66 67






68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83



## 3、ElasticSearch问题

**背景:**
`KnowStreaming` 将从 Kafka 中采集到的指标存储到 ES 中,如果 ES 存在问题,则也可能会导致页面出现无数据的情况。

**日志:**
`KnowStreaming`  读写 ES 相关日志,在 `logs/es/es.log` 中!


**注意:**
mac系统在执行curl指令时,可能报zsh错误。可参考以下操作。

```bash
W
WangYaobo 已提交
84 85 86 87 88
1 进入.zshrc 文件 vim ~/.zshrc 
2.在.zshrc中加入 setopt no_nomatch 
3.更新配置 source ~/.zshrc
```

89 90 91
---

### 3.1、异因一:缺少索引
W
WangYaobo 已提交
92 93 94 95 96

#### 3.1.1、异常现象

报错信息

97 98
```log
# 日志位置 logs/es/es.log
W
WangYaobo 已提交
99 100 101
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]
```

102 103

`curl http://{ES的IP地址}:{ES的端口号}/_cat/indices/ks_kafka*`  查看KS索引列表,发现没有索引。
W
WangYaobo 已提交
104 105 106

#### 3.1.2、解决方案

107
执行 [ES索引及模版初始化](https://github.com/didi/KnowStreaming/blob/master/bin/init_es_template.sh) 脚本,来创建索引及模版。
W
WangYaobo 已提交
108 109


110 111
---

W
WangYaobo 已提交
112

113
### 3.2、异因二:索引模板错误
W
WangYaobo 已提交
114 115 116 117 118

#### 3.2.1、异常现象

多集群列表有数据,集群详情页图标无数据。查询KS索引模板列表,发现不存在。

119
```bash
W
WangYaobo 已提交
120 121 122 123 124 125 126 127 128 129 130 131 132
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索引模板和索引

133
```bash
W
WangYaobo 已提交
134 135 136 137
curl -XDELETE {ES的IP地址}:{ES的端口号}/ks_kafka*
curl -XDELETE {ES的IP地址}:{ES的端口号}/_template/ks_kafka*
```

138
执行 [ES索引及模版初始化](https://github.com/didi/KnowStreaming/blob/master/bin/init_es_template.sh) 脚本,来创建索引及模版。
W
WangYaobo 已提交
139 140


141 142 143 144
---


### 3.3、异因三:集群Shard满
W
WangYaobo 已提交
145 146 147 148 149

#### 3.3.1、异常现象

报错信息

150 151 152 153
```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}
W
WangYaobo 已提交
154 155 156 157
```

尝试手动创建索引失败。

158
```bash
W
WangYaobo 已提交
159 160 161 162
#创建ks_kafka_cluster_metric_test索引的指令
curl -s  -XPUT http://{ES的IP地址}:{ES的端口号}/ks_kafka_cluster_metric_test
```

163

W
WangYaobo 已提交
164 165 166 167 168 169 170 171 172 173 174
#### 3.3.2、解决方案

ES索引的默认分片数量为1000,达到数量以后,索引创建失败。

+ 扩大ES索引数量上限,执行指令

```
curl -XPUT  -H"content-type:application/json" http://{ES的IP地址}:{ES的端口号}/_cluster/settings -d '
{
  "persistent": {
    "cluster": {
175
      "max_shards_per_node":{索引上限,默认为1000, 测试时可以将其调整为10000}
W
WangYaobo 已提交
176 177 178 179 180
    }
  }
}'
```

181
执行 [ES索引及模版初始化](https://github.com/didi/KnowStreaming/blob/master/bin/init_es_template.sh) 脚本,来补全索引。
182 183