
# 节点数据收集
#### 功能
获取当前节点所有与IEF相关的数据，后续IEF运维人员定位使用。
收集的数据清单如下所示。
表1数据收集清单 
| 分类                    | 收集项                                | 描述                                                                                                  |
|:---|:---|:---|
| 系统数据                  | 硬件架构                               | 收集arch命令输出，并判断IEF安装的类型                                                                              |
| 系统数据                  | CPU信息                              | 解析/proc/cpuinfo文件，输出cpu信息文件                                                                         |
| 系统数据                  | 内存信息                               | 收集free -h命令输出                                                                                       |
| 系统数据                  | 硬盘信息                               | 收集df -h命令输出，以及mount命令输出                                                                             |
| 系统数据                  | 网络信息                               | 收集netstat -anp命令输出，并拷贝/etc/resolv.conf和/etc/hosts文件                                                 |
| 系统数据                  | 进程信息                               | 收集ps -aux命令输出                                                                                       |
| 系统数据                  | 时间信息                               | 收集date和uptime命令输出                                                                                   |
| 系统数据                  | 历史命令输入                             | 收集当前用户所有输入的命令                                                                                       |
| IEF数据                 | IEF数据库数据                           | 拷贝/opt/IEF/Edge-core/bin/edge.db文件                                                                  |
| IEF数据                 | IEF日志文件                            | 拷贝/var/IEF/sys/log下所有文件                                                                             |
| IEF数据                 | IEF service文件                      | 拷贝/lib/systemd/system/下edgecore.service、edgelogger.service、edgemonitor.service、edgedaemon.service文件 |
| IEF数据                 | IEF软件版本                            | 拷贝/opt/IEF/version文件                                                                                |
| IEF数据                 | IEF证书                              | 拷贝/opt/IEF/Cert/下所有文件                                                                               |
| IEF数据                 | IEF加密物料                            | 拷贝/opt/material/下所有文件                                                                               |
| IEF数据                 | IEF软件中Edge-Core配置文件（包含Edge-daemon） | 拷贝/opt/IEF/Edge-core/conf/下所有文件                                                                     |
| IEF数据                 | IEF软件中Edge-Logger配置文件              | 拷贝/opt/IEF/Edge-logger/conf/下所有文件                                                                   |
| IEF数据                 | IEF软件中Edge-Monitor配置文件             | 拷贝/opt/IEF/Edge-monitor/conf/下所有文件                                                                  |
| Docker数据（若IEF中使能，则收集） | Docker版本信息                         | 收集docker version命令输出                                                                                |
| Docker数据（若IEF中使能，则收集） | Docker信息                           | 收集docker info命令输出                                                                                   |
| Docker数据（若IEF中使能，则收集） | Docker日志信息                         | 收集journalctl -u docker.service命令输出                                                                  |
| Docker数据（若IEF中使能，则收集） | Docker容器信息                         | 收集docker ps -a命令输出                                                                                  |
| Docker数据（若IEF中使能，则收集） | Docker容器配置及日志信息                    | 拷贝/var/lib/docker/containers下所有文件                                                                   |
| Docker数据（若IEF中使能，则收集） | Docker镜像信息                         | 收集docker images命令输出                                                                                 |
| Docker数据（若IEF中使能，则收集） | GPU设备信息                            | 收集ls /dev/nvidiactl /dev/nvidia-uvm /dev/nvidia? 2\>\&1命令输出                                         |
| Docker数据（若IEF中使能，则收集） | GPU内核模块信息                          | 收集lsmod \|grep -e nvidia -e nvidia-uvm 2\>\&1命令输出                                                   |
| Docker数据（若IEF中使能，则收集） | GPU自身信息                            | 收集/var/IEF/nvidia/bin/nvidia-smi 2\>\&1命令输出                                                         |
| Docker数据（若IEF中使能，则收集） | GPU驱动状态信息                          | 收集systemctl status nvidia-drivers-loader命令输出                                                        |
| Docker数据（若IEF中使能，则收集） | NPU设备信息                            | 收集ls /dev/davinci_manager /dev/hisi_hdc /dev/davinci?命令输出                                           |
   
#### 语法
**edgectl collect**\[params\]
#### 参数说明
表2参数说明 
| 参数名称     | 是否必选 | 简写 | 描述                              |
|:---|:---|:---|:---|
| --path   | 否    | -p | 缓存IEF数据，并存储IEF数据压缩包的目录。默认为当前目录。 |
| --detail | 否    | -x | 是否打印内部日志输出。                     |
   
#### 注意事项
- 因涉及系统数据的采集，必须按照root方式启动，否则命令会返回失败。
- 因涉及用户节点数据的采集，需要用户手动输入yes。
- 采集的数据会以data_{时间戳}.tar.gz的名字，以tar包的形式存在指定的目录下。
 
#### 使用示例
收集IEF数据：
```
edgectl collect
```
提示信息如下，此时请手动输入yes或者y：
```
Do you agree that edgectl collects data on this machine (yes/no)? y
```
示例执行结果：
```
Data packet name: data_2020-03-18-10-47-47.tar.gz.
+----------------------------------+
| Data collection process succeed. |
+----------------------------------+
```
回显中会打印缓存的压缩包名称。
