diff --git a/README.md b/README.md index 2a37b1534f4e1ad3e4394081d3f0d42f623522fa..3dc7dfe68382120a2f3a0a4a49b85bfbe8b93523 100644 --- a/README.md +++ b/README.md @@ -25,15 +25,11 @@ # 为什么选择gala-ops -## 如何让用户摆脱运维工具的“七国八制” - -## 如何让用户打破IT部门之间“运维部门墙” - -## 如何让用户实现监控无盲区 - -## 如何为用户提供基础设施故障定位能力 - -## 如何为用户提供生产环境性能热点分析能力 +1. 如何让用户摆脱运维工具的“七国八制” +2. 如何让用户打破IT部门之间“运维部门墙” +3. 如何让用户实现监控无盲区 +4. 如何为用户具备基础设施故障定位能力 +5. 如何为用户具备生产环境性能热点分析能力 @@ -72,13 +68,15 @@ gala-gopher软件架构参考[这里](https://gitee.com/openeuler/gala-gopher/tr **术语** - **探针**:gala-gopher内执行具体数据采集任务的程序,包括native、extend 2类探针,前者以线程方式单独启动数据采集任务,后者以子进程方式启动数据采集任务。gala-gopher可以通过配置修改的方式启动部分或全部探针。 -- **观测实体(entity_name)**:用来定义系统内的观测对象,所有探针采集的数据均会归属到具体的某个观测实体。每种观测实体均有key、label、metrics组成,比如tcp_link观测实体的key包括进程号、IP五元组、协议族等信息,metrics则包括tx、rx、rtt等运行状态指标。 +- **观测实体(entity_name)**:用来定义系统内的观测对象,所有探针采集的数据均会归属到具体的某个观测实体。每种观测实体均有key、label(可选)、metrics组成,比如tcp_link观测实体的key包括进程号、IP五元组、协议族等信息,metrics则包括tx、rx、rtt等运行状态指标。除原生支持的[观测实体](https://gitee.com/openeuler/gala-docs#%E8%A7%82%E6%B5%8B%E5%AE%9E%E4%BD%93),gala-gopher也可以扩展观测实体。 - **数据表(table_name)**:观测实体由1张或更多数据表组合而成,通常1张数据表由1个采集任务完成,由此可知单个观测实体可以由多个采集任务共同完成。 - **meta文件**:通过文件定义观测实体(包括内部的数据表),系统内meta文件必须保证唯一,定义不可冲突。规范参考[这里](https://gitee.com/openeuler/gala-gopher/blob/master/doc/how_to_add_probe.md#122-%E5%AE%9A%E4%B9%89%E6%8E%A2%E9%92%88%E7%9A%84meta%E6%96%87%E4%BB%B6)。 ### 支持的技术 -参考[这里](https://gitee.com/openeuler/gala-docs/blob/master/gopher_tech.md) +采集范围:参考[这里](https://gitee.com/openeuler/gala-docs/blob/master/gopher_tech.md)。 + +系统异常范围:参考[这里](https://gitee.com/openeuler/gala-docs/blob/master/gopher_tech_abnormal.md)。 ### 安装及使用 @@ -104,11 +102,19 @@ gala-gopher软件架构参考[这里](https://gitee.com/openeuler/gala-gopher/tr **kafka client方式**:用户根据gala-gopher配置文件[手册](https://gitee.com/openeuler/gala-gopher/blob/master/doc/conf_introduction.md#meta),设置event成kafka上报方式,以及上报[通道](https://gitee.com/openeuler/gala-gopher/blob/master/doc/conf_introduction.md#kafka%E9%85%8D%E7%BD%AE)设置,gala-gopher就会以kafka client方式工作,周期性上报meta信息。 -### 扩展探针 +### 扩展数据采集范围 + +用户如果希望扩展数据采集范围,只需执行2步:定义观测实体,集成数据探针。 + +- **定义观测实体** +通过定义观测实体(或者更新原观测实体)用于承载新增采集metrics数据。用户通过meta文件(规范参考[这里](https://gitee.com/openeuler/gala-gopher/blob/master/doc/how_to_add_probe.md#122-%E5%AE%9A%E4%B9%89%E6%8E%A2%E9%92%88%E7%9A%84meta%E6%96%87%E4%BB%B6))定义观测实体的key、label(可选)、metrics,定义完成后,将meta文件归档在[探针目录](https://gitee.com/openeuler/gala-gopher/blob/master/doc/how_to_add_probe.md#23-%E5%AE%9A%E4%B9%89%E6%8E%A2%E9%92%88%E7%9B%AE%E5%BD%95)。 +- **集成数据探针** +用户可以通过各种编程语言(shell、python、java等)包装数据采集软件,并在脚本中按照meta文件定义[格式](https://gitee.com/openeuler/gala-gopher/blob/master/doc/how_to_add_probe.md#123-%E8%BE%93%E5%87%BA%E6%8E%A2%E9%92%88%E6%8C%87%E6%A0%87)将采集到的数据通过linux管道符形式输出。 +参考:[cAdvisor](https://gitee.com/openeuler/gala-gopher/tree/master/src/probes/extends/python.probe/cadvisor.probe)第三方探针集成案例。 ## gala-spider @@ -494,19 +500,13 @@ gala-ops针对应用异常,具备2种根因定位能力:**单节点、跨节 # 常见问题 - - -## 生产环境采集的数据无法送至管理面? - -## 如何新增数据采集范围? - -## 如何新增应用场景? - -## 支持哪些OS? - -## 支持哪些内核版本? - -## 全栈热点分析调用栈为什么不能准确显示函数名? +1. 生产环境采集的数据无法送至管理面? +2. 如何新增数据采集范围? +3. 如何新增应用场景? +4. 支持哪些OS +5. 支持哪些内核版本 +6. 支持的软件版本范围 +7. 全栈热点分析调用栈为什么不能准确显示函数名? # 常用API介绍 diff --git a/gopher_tech_abnormal.md b/gopher_tech_abnormal.md new file mode 100644 index 0000000000000000000000000000000000000000..1e8abe75f4cff272b1a21319e2f05a42089a3ffd --- /dev/null +++ b/gopher_tech_abnormal.md @@ -0,0 +1,66 @@ +# TCP(entity_name:tcp_link) + +| metrics_name | description | param | level | +| ------------- | ------------------------------------------ | ----------------- | ----- | +| tcp_oom | TCP out of memory(%u). | P1: error count | WARN | +| backlog_drops | TCP backlog queue drops(%u). | P1: drops count | WARN | +| filter_drops | TCP filter drops(%u). | P1: drops count | WARN | +| syn_srtt | TCP connection establish timed out(%u us). | P1: syn rtt times | WARN | + +# ENDPOINT + +| metrics_name | description | param | level | +| ------------------- | ------------------------------- | ------------------ | ----- | +| listendrop | TCP listen drops(%lu). | P1: drops count | WARN | +| accept_overflow | TCP accept queue overflow(%lu). | P1: overflow count | WARN | +| syn_overflow | TCP syn queue overflow(%lu). | P1: overflow count | WARN | +| passive_open_failed | TCP passive open failed(%lu). | P1: failed count | WARN | +| active_open_failed | TCP active open failed(%lu). | P1: failed count | WARN | +| bind_rcv_drops | UDP(S) queue drops(%lu). | P1: drops count | WARN | +| udp_rcv_drops | UDP(C) queue drops(%lu). | P1: drops count | WARN | + + + +# THREAD(entity_name:task) + +| metrics_name | description | param | level | +| ------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ----- | +| off_cpu_ns | Process(COMM:%s TID:%d) is preempted(COMM:%s PID:%d) and off-CPU %llu ns. | P1: process name P2: process id P3: process name P4: process id P5: off-cpu times | WARN | +| iowait_us | Process(COMM:%s TID:%d) iowait %llu us. | P1: process name P2: process id P3: io-wait times | WARN | +| hang_count | Process(COMM:%s TID:%d) io hang %u. | P1: process name P2: process id P3: error count | WARN | +| bio_err_count | Process(COMM:%s TID:%d) bio error %u. | P1: process name P2: process id P3: error count | WARN | + +# Process + +| metrics_name | description | param | level | +| ------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | ----- | +| syscall_failed | Process(COMM:%s PID:%u) syscall failed(SysCall-ID:%d RET:%d COUNT:%u). | P1: process name P2: process id P3: syscall no P4: syscall ret-code P5 failed count | WARN | +| gethostname_failed | Process(COMM:%s PID:%u) gethostname failed(COUNT:%u). | P1: process name P2: process id P3 failed count | WARN | + +# BLOCK + +| metrics_name | description | param | level | +| -------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | ----- | +| count_iscsi_err | Iscsi errors(%llu) occured on Block(%s, disk %s). | P1: block name P2: disk name | WARN | +| count_iscsi_tmout | Iscsi timeout(%llu) occured on Block(%s, disk %s). | P1: block name P2: disk name | WARN | +| latency_flush_jitter | Jitter latency of flush operation(%llu) exceeded threshold, occured on Block(%s, disk %s). | P1:flush jitter latency, unit is us P2: block name P3: disk name | WARN | +| latency_flush_max | Latency of flush operation(%llu) exceeded threshold, occured on Block(%s, disk %s). | P1:flush latency, unit is us P2: block name P3: disk name | WARN | +| latency_req_jitter | Jitter latency of request operation(%llu) exceeded threshold, occured on Block(%s, disk %s). | P1:request jitter latency, unit is us P2: block name P3: disk name | WARN | +| latency_req_max | Latency of request operation(%llu) exceeded threshold, occured on Block(%s, disk %s). | P1:request latency, unit is us P2: block name P3: disk name | WARN | + +# DISK + +| metrics_name | description | param | level | +| --------------- | ------------------------------- | -------------- | ----- | +| inode_userd_per | Too many Inodes consumed(%d%%). | P1: Percentage | WARN | +| block_userd_per | Too many Blocks used(%d%%). | P1: Percentage | WARN | +| iostat_util | Disk device saturated(%.2f%%). | P1: Percentage | WARN | + + + +# NET + +| metrics_name | description | param | level | +| ------------------- | -------------------------------- | --------------- | ----- | +| net_device_tx_drops | net device tx queue drops(%llu). | P1: drops count | WARN | +| net_device_rx_drops | net device rx queue drops(%llu). | P1: drops count | WARN | \ No newline at end of file