Przeglądaj źródła

[home]ssh自定义文档更新

tomsun28 3 lat temu
rodzic
commit
63fe51b597

+ 6 - 6
home/docs/advanced/extend-http.md

@@ -29,14 +29,14 @@ HTTP协议支持我们自定义HTTP请求路径,请求header,请求参数,
 
 > 监控配置定义文件用于定义 *监控类型的名称(国际化), 请求参数映射, 指标信息, 采集协议配置信息*等。  
 
-样例:自定义一个名称为example的自定义监控类型,其使用HTTP协议采集指标数据。    
-文件名称: example.yml 位于 /define/app/example.yml   
+样例:自定义一个名称为example_http的自定义监控类型,其使用HTTP协议采集指标数据。    
+文件名称: example_http.yml 位于 /define/app/example_http.yml   
 
 ```yaml
 # 此监控类型所属类别:service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控
 category: custom
 # 监控应用类型(与文件名保持一致) eg: linux windows tomcat mysql aws...
-app: example
+app: example_http
 name:
   zh-CN: 模拟应用类型
   en-US: EXAMPLE APP
@@ -157,12 +157,12 @@ metrics:
 
 > 监控参数定义文件用于定义 *需要的输入参数字段结构定义(前端页面根据结构渲染输入参数框)*。   
 
-样例:自定义一个名称为example的自定义监控类型,其使用HTTP协议采集指标数据。    
-文件名称: example.yml 位于 //define/param/example.yml   
+样例:自定义一个名称为example_http的自定义监控类型,其使用HTTP协议采集指标数据。    
+文件名称: example_http.yml 位于 //define/param/example_http.yml   
 
 ```yaml
 # 监控应用类型名称(与文件名保持一致) eg: linux windows tomcat mysql aws...
-app: example
+app: example_http
 # 强制固定必须参数 - host(ipv4,ipv6,域名)
 param:
     # field-字段名称标识符

+ 8 - 8
home/docs/advanced/extend-jdbc.md

@@ -50,8 +50,8 @@ SQL响应数据:
 ### 自定义步骤  
 
 配置自定义监控类型需新增配置两个YML文件
-1. 用监控类型命名的监控配置定义文件 - 例如:example.yml 需位于安装目录 /hertzbeat/define/app/ 下
-2. 用监控类型命名的监控参数定义文件 - 例如:example.yml 需位于安装目录 /hertzbeat/define/param/ 下
+1. 用监控类型命名的监控配置定义文件 - 例如:example_sql.yml 需位于安装目录 /hertzbeat/define/app/ 下
+2. 用监控类型命名的监控参数定义文件 - 例如:example_sql.yml 需位于安装目录 /hertzbeat/define/param/ 下
 3. 重启hertzbeat系统,我们就适配好了一个新的自定义监控类型。
 
 ------- 
@@ -61,14 +61,14 @@ SQL响应数据:
 
 > 监控配置定义文件用于定义 *监控类型的名称(国际化), 请求参数映射, 指标信息, 采集协议配置信息*等。  
 
-样例:自定义一个名称为example的自定义监控类型,其使用HTTP协议采集指标数据。    
-文件名称: example.yml 位于 /define/app/example.yml   
+样例:自定义一个名称为example_sql的自定义监控类型,其使用JDBC协议采集指标数据。    
+文件名称: example_sql.yml 位于 /define/app/example_sql.yml   
 
 ```yaml
 # 此监控类型所属类别:service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控
 category: db
 # 监控应用类型(与文件名保持一致) eg: linux windows tomcat mysql aws...
-app: example
+app: example_sql
 name:
   zh-CN: 模拟MYSQL应用类型
   en-US: MYSQL EXAMPLE APP
@@ -215,11 +215,11 @@ metrics:
 
 > 监控参数定义文件用于定义 *需要的输入参数字段结构定义(前端页面根据结构渲染输入参数框)*。
 
-样例:自定义一个名称为example的自定义监控类型,其使用HTTP协议采集指标数据。    
-文件名称: example.yml 位于 /define/param/example.yml   
+样例:自定义一个名称为example_sql的自定义监控类型,其使用JDBC协议采集指标数据。    
+文件名称: example_sql.yml 位于 /define/param/example_sql.yml   
 
 ```yaml
-app: example
+app: example_sql
 param:
   - field: host
     name: 主机Host

+ 1 - 1
home/docs/advanced/extend-point.md

@@ -4,7 +4,7 @@ title: 自定义监控
 sidebar_label: 自定义监控    
 ---
 > HertzBeat拥有自定义监控能力,您只需配置两个YML文件就能适配一款自定义的监控类型。  
-> 目前自定义监控支持[HTTP协议](extend-http),[JDBC](extend-jdbc)(mysql,mariadb,postgresql..)协议,后续会支持更多通用协议(ssh telnet wmi snmp)。        
+> 目前自定义监控支持[HTTP协议](extend-http),[JDBC协议](extend-jdbc)(mysql,mariadb,postgresql..),[SSH协议](extend-ssh),后续会支持更多通用协议(ssh telnet wmi snmp)。        
 
 ### 自定义步骤  
 

+ 220 - 0
home/docs/advanced/extend-ssh.md

@@ -0,0 +1,220 @@
+---
+id: extend-ssh  
+title: SSH协议自定义监控  
+sidebar_label: SSH协议自定义监控    
+---
+> 从[自定义监控](extend-point)了解熟悉了怎么自定义类型,指标,协议等,这里我们来详细介绍下用SSH协议自定义指标监控。 
+> SSH协议自定义监控可以让我们很方便的通过写sh命令脚本就能监控采集到我们想监控的Linux指标     
+
+### SSH协议采集流程    
+【**系统直连Linux**】->【**运行SHELL命令脚本语句**】->【**响应数据解析:oneRow, multiRow**】->【**指标数据提取**】   
+
+由流程可见,我们自定义一个SSH协议的监控类型,需要配置SSH请求参数,配置获取哪些指标,配置查询脚本语句。
+
+### 数据解析方式   
+SHELL脚本查询回来的数据字段和我们需要的指标映射,就能获取对应的指标数据,目前映射解析方式有两种:oneRow, multiRow,能满足绝大部分指标需求。
+
+#### **oneRow**   
+> 查询出一列数据, 通过查询返回结果集的字段值(一行一个值)与字段映射    
+
+例如:     
+需要查询Linux的指标 hostname-主机名称,uptime-启动时间     
+主机名称原始查询命令:`hostname`     
+启动时间原始查询命令:`uptime | awk -F "," '{print $1}'`   
+则在hertzbeat对应的这两个指标的查询脚本为(用`;`将其连接到一起):       
+`hostname; uptime | awk -F "," '{print $1}'`     
+终端响应的数据为:    
+```
+tombook
+14:00:15 up 72 days  
+```  
+则最后采集到的指标数据一一映射为:   
+hostname值为 `tombook`   
+uptime值为 `14:00:15 up 72 days`      
+
+这里指标字段就能和响应数据一一映射为一行采集数据。     
+
+#### **multiRow**
+> 查询多行数据, 通过查询返回结果集的列名称,和查询的指标字段映射  
+
+例如:   
+查询的Linux内存相关指标字段:total-内存总量 used-已使用内存 free-空闲内存 buff-cache-缓存大小 available-可用内存    
+内存指标原始查询命令为:`free -m`, 控制台响应:  
+```shell
+              total        used        free      shared  buff/cache   available
+Mem:           7962        4065         333           1        3562        3593
+Swap:          8191          33        8158
+```
+在heartbeat中multiRow格式解析需要响应数据列名称和指标值一一映射,则对应的查询SHELL脚本为:  
+`free -m | grep Mem | awk 'BEGIN{print "total used free buff_cache available"} {print $2,$3,$4,$6,$7}'`     
+控制台响应为:  
+```shell
+total  used  free  buff_cache  available
+7962   4066  331   3564        3592
+```
+
+这里指标字段就能和响应数据一一映射为采集数据。
+
+### 自定义步骤  
+
+配置自定义监控类型需新增配置两个YML文件
+1. 用监控类型命名的监控配置定义文件 - 例如:example_linux.yml 需位于安装目录 /hertzbeat/define/app/ 下
+2. 用监控类型命名的监控参数定义文件 - 例如:example_linux.yml 需位于安装目录 /hertzbeat/define/param/ 下
+3. 重启hertzbeat系统,我们就适配好了一个新的自定义监控类型。
+
+------- 
+下面详细介绍下这俩文件的配置用法,请注意看使用注释。   
+
+### 监控配置定义文件   
+
+> 监控配置定义文件用于定义 *监控类型的名称(国际化), 请求参数映射, 指标信息, 采集协议配置信息*等。  
+
+样例:自定义一个名称为example_linux的自定义监控类型,其使用SSH协议采集指标数据。    
+文件名称: example_linux.yml 位于 /define/app/example_linux.yml   
+
+```yaml
+# 此监控类型所属类别:service-应用服务监控 db-数据库监控 custom-自定义监控 os-操作系统监控
+category: os
+# 监控应用类型(与文件名保持一致) eg: linux windows tomcat mysql aws...
+app: example_linux
+name:
+  zh-CN: 模拟LINUX应用类型
+  en-US: LINUX EXAMPLE APP
+# 参数映射map. 这些为输入参数变量,即可以用^_^host^_^的形式写到后面的配置中,系统自动变量值替换
+# type是参数类型: 0-number数字, 1-string明文字符串, 2-secret加密字符串
+# 强制固定必须参数 - host
+configmap:
+  - key: host
+    type: 1
+  - key: port
+    type: 0
+  - key: username
+    type: 1
+  - key: password
+    type: 2
+# 指标组列表
+metrics:
+  # 第一个监控指标组 basic
+  # 注意:内置监控指标有 (responseTime - 响应时间)
+  - name: basic
+    # 指标组调度优先级(0-127)越小优先级越高,优先级低的指标组会等优先级高的指标组采集完成后才会被调度,相同优先级的指标组会并行调度采集
+    # 优先级为0的指标组为可用性指标组,即它会被首先调度,采集成功才会继续调度其它指标组,采集失败则中断调度
+    priority: 0
+    # 指标组中的具体监控指标
+    fields:
+      # 指标信息 包括 field名称   type字段类型:0-number数字,1-string字符串   instance是否为实例主键   unit:指标单位
+      - field: hostname
+        type: 1
+        instance: true
+      - field: version
+        type: 1
+      - field: uptime
+        type: 1
+    # 监控采集使用协议 eg: sql, ssh, http, telnet, wmi, snmp, sdk
+    protocol: ssh
+    # 当protocol为http协议时具体的采集配置
+    ssh:
+      # 主机host: ipv4 ipv6 域名
+      host: ^_^host^_^
+      # 端口
+      port: ^_^port^_^
+      username: ^_^username^_^
+      password: ^_^password^_^
+      script: (uname -r ; hostname ; uptime | awk -F "," '{print $1}' | sed  "s/ //g") | sed ":a;N;s/\n/^/g;ta" | awk -F '^' 'BEGIN{print "version hostname uptime"} {print $1, $2, $3}'
+      # 响应数据解析方式:oneRow, multiRow
+      parseType: multiRow
+
+  - name: cpu
+    priority: 1
+    fields:
+      # 指标信息 包括 field名称   type字段类型:0-number数字,1-string字符串   instance是否为实例主键   unit:指标单位
+      - field: info
+        type: 1
+      - field: cores
+        type: 0
+        unit: 核数
+      - field: interrupt
+        type: 0
+        unit: 个数
+      - field: load
+        type: 1
+      - field: context_switch
+        type: 0
+        unit: 个数
+    # 监控采集使用协议 eg: sql, ssh, http, telnet, wmi, snmp, sdk
+    protocol: ssh
+    # 当protocol为http协议时具体的采集配置
+    ssh:
+      # 主机host: ipv4 ipv6 域名
+      host: ^_^host^_^
+      # 端口
+      port: ^_^port^_^
+      username: ^_^username^_^
+      password: ^_^password^_^
+      script: "LANG=C lscpu | awk -F: '/Model name/ {print $2}';awk '/processor/{core++} END{print core}' /proc/cpuinfo;uptime | sed 's/,/ /g' | awk '{for(i=NF-2;i<=NF;i++)print $i }' | xargs;vmstat 1 1 | awk 'NR==3{print $11}';vmstat 1 1 | awk 'NR==3{print $12}'"
+      parseType: oneRow
+
+  - name: memory
+    priority: 2
+    fields:
+      # 指标信息 包括 field名称   type字段类型:0-number数字,1-string字符串   instance是否为实例主键   unit:指标单位
+      - field: total
+        type: 0
+        unit: Mb
+      - field: used
+        type: 0
+        unit: Mb
+      - field: free
+        type: 0
+        unit: Mb
+      - field: buff_cache
+        type: 0
+        unit: Mb
+      - field: available
+        type: 0
+        unit: Mb
+    # 监控采集使用协议 eg: sql, ssh, http, telnet, wmi, snmp, sdk
+    protocol: ssh
+    # 当protocol为http协议时具体的采集配置
+    ssh:
+      # 主机host: ipv4 ipv6 域名
+      host: ^_^host^_^
+      # 端口
+      port: ^_^port^_^
+      username: ^_^username^_^
+      password: ^_^password^_^
+      script: free -m | grep Mem | awk 'BEGIN{print "total used free buff_cache available"} {print $2,$3,$4,$6,$7}'
+      parseType: multiRow
+```
+
+### 监控参数定义文件
+
+> 监控参数定义文件用于定义 *需要的输入参数字段结构定义(前端页面根据结构渲染输入参数框)*。
+
+样例:自定义一个名称为example_linux的自定义监控类型,其使用SSH协议采集指标数据。    
+文件名称: example_linux.yml 位于 /define/param/example_linux.yml   
+
+```yaml
+app: example_linux
+param:
+  - field: host
+    name: 主机Host
+    type: host
+    required: true
+  - field: port
+    name: 端口
+    type: number
+    range: '[0,65535]'
+    required: true
+    defaultValue: 22
+    placeholder: '请输入端口'
+  - field: username
+    name: 用户名
+    type: text
+    limit: 20
+    required: true
+  - field: password
+    name: 密码
+    type: password
+    required: true
+```

+ 6 - 1
home/docs/help/issue.md

@@ -10,7 +10,12 @@ sidebar_label: 常见问题
 > 如信息所示,输入的监控Host须是ipv4,ipv6或域名,不能携带协议头,例如协议头http   
 
 2. ** 网站API等监控反馈statusCode:403或401,但对端服务本身无需认证,浏览器直接访问是OK **       
-> 请排查是否是被防火墙拦截,如宝塔等默认设置了对请求header中`User-Agent=Apache-HttpClient`的拦截,若被拦截请删除此拦截规则。(v1.0.beat5版本已将user-agent模拟成浏览器此问题不存在)         
+> 请排查是否是被防火墙拦截,如宝塔等默认设置了对请求header中`User-Agent=Apache-HttpClient`的拦截,若被拦截请删除此拦截规则。(v1.0.beat5版本已将user-agent模拟成浏览器此问题不存在)        
+
+3. 安装包部署的hertzbeat下ping连通性监控异常  
+安装包安装部署的hertzbeat,对ping连通性监控不可用,但本地直接ping是可用的。     
+> 安装包部署需要配置java虚拟机root权限启动hertzbeat从而使用ICMP,若未启用root权限则是判断telnet对端7号端口是否开通     
+> docker安装默认启用无此问题   
 
 ### Docker部署常见问题   
 

+ 7 - 0
home/sidebars.json

@@ -32,6 +32,13 @@
           "items": [
             "advanced/extend-jdbc"
           ]
+        },
+        {
+          "type": "category",
+          "label": "SSH协议",
+          "items": [
+            "advanced/extend-ssh"
+          ]
         }
       ]
     },