zoukankan      html  css  js  c++  java
  • DB监控-Riak集群监控

      本文写的Riak版本是2.0.4,监控采集分为两个大的维度,第一个维度是单机,也就是 「IP:端口」;第二个维度是集群,也就是所有节点指标的统计结果。本文主要介绍采集的指标和采集方法。

      一、采集的指标

      1、吞吐量指标

      1.1 单机

    采集方法:

    /usr/sbin/riak-admin status
    指标功能
    node_gets 某节点前一分钟处理的 GET 请求数量,包括该节点上非本地虚拟节点处理的 GET 请求
    node_puts 某节点前一分钟处理的 PUT 请求数量,包括该节点上非本地虚拟节点处理的 PUT 请求

     

     

     

     

      1.2 集群

    指标功能统计方法
    node_gets_total 集群前一分钟处理的 GET 请求数量 SUM(node_gets)
    node_puts_total 集群前一分钟处理的 PUT 请求数量 SUM(node_puts)

      2、延迟指标

      2.1 单机

    采集方法:

    /usr/sbin/riak-admin status
    指标功能
    node_get_fsm_time_mean 客户端发起 GET 请求到收到响应时间间隔的均值
    node_get_fsm_time_median 客户端发起 GET 请求到收到响应时间间隔的中值
    node_get_fsm_time_95 客户端发起 GET 请求到收到响应时间间隔的 95 百分位值
    node_get_fsm_time_100 客户端发起 GET 请求到收到响应时间间隔的 100 百分位值
    node_put_fsm_time_mean 客户端发起 PUT 请求到收到响应时间间隔的均值
    node_put_fsm_time_median 客户端发起 PUT 请求到收到响应时间间隔的中值
    node_put_fsm_time_95 客户端发起 PUT 请求到收到响应时间间隔的 95 百分位值
    node_put_fsm_time_100 客户端发起 PUT 请求到收到响应时间间隔的 100 百分位值

     

     

     

     

     

     

     

      

     

     

     2.2 集群

    指标功能统计方法
    node_get_fsm_time_mean_avg 客户端发起 GET 请求到收到响应时间间隔的均值 AVG(node_get_fsm_time_mean)
    node_put_fsm_time_mean_avg 客户端发起 PUT 请求到收到响应时间间隔的均值 AVG(node_put_fsm_time_mean)

     

     

     

     

     3、Erlang 资源使用情况指标(单机)

    采集方法:

    /usr/sbin/riak-admin status
    指标功能
    sys_process_count Erlang 进程的数量
    memory_processes 分配给 Erlang 进程的内存总量(单位 bytes)
    memory_processes_used Erlang 进程使用的内存总量(单位 bytes)

     

     

     

      

     

     4、Riak 负荷/健康指标 

      4.1 单机

    采集方法:

    /usr/sbin/riak-admin status
    指标功能
    read_repairs 某节点前一分钟处理的读取修复操作数量
    node_get_fsm_siblings_mean 某节点前一分钟所有 GET 操作处理的兄弟数据数量均值
    node_get_fsm_siblings_median 某节点前一分钟所有 GET 操作处理的兄弟数据数量中值
    node_get_fsm_siblings_95 某节点前一分钟所有 GET 操作处理的兄弟数据数量 95 百分位值
    node_get_fsm_siblings_100 某节点前一分钟所有 GET 操作处理的兄弟数据数量 100 百分位值
    node_get_fsm_objsize_mean 某节点前一分钟流经 GET_FSM 的对象大小均值
    node_get_fsm_objsize_median 某节点前一分钟流经 GET_FSM 的对象大小中值
    node_get_fsm_objsize_95 某节点前一分钟流经 GET_FSM 的对象大小 95 百分位值
    node_get_fsm_objsize_100 某节点前一分钟流经 GET_FSM 的对象大小 100 百分位值

     

     

     

     

     

     

     

     

      

      

     

    4.2 集群

    指标功能统计方法
    read_repairs_total 集群前一分钟处理的读取修复操作数量 SUM(read_repairs)
    node_get_fsm_siblings_mean_avg 集群前一分钟所有 GET 操作处理的兄弟数据数量均值 AVG(node_get_fsm_siblings_mean)
    node_get_fsm_objsize_mean_avg 集群前一分钟流经 GET_FSM 的对象大小均值 AVG(node_get_fsm_objsize_mean)

     

     

     

      

     

      5、其他

      5.1 LevelDB合并错误(单机)

    采集方法:

    find /data1/riak/data/leveldb -name "LOG" -exec grep -l 'Compaction error' {} ; | wc -l

      5.2 LevelDB读取块操作错误(单机)

    采集方法:

    /usr/sbin/riak-admin status
    指标功能
    leveldb_read_block_error LevelDB 读取块操作错误数量

     

     

      

    5.3 节点存活状态(单机)

    采集方法:

    /usr/sbin/riak-admin member-status | grep `ifconfig | grep "inet addr:10" | awk -F':' '{print $2}' | awk '{print $1}'`

    输出如下,valid表示节点正常

    valid       9.0%      --      'riak@10.1.80.114'

      5.4 Riak Error Log(单机)

    Riak 日志路径:/data1/riak/logs 
    采集文件:/data1/riak/logs/* 
    采集时间段:最近一分钟 
    采集内容:最近一分钟发生的错误数 
    采集示例:grep error -rn /data1/riak/logs | wc -l 
    说明:这个采集需要程序处理下逻辑,在此不给出完整的采集方法

       二、采集程序

      1、Riak监控系统设计

     DBA通过前台页面根据CMDB业务系统添加/卸载Riak集群监控,根据CMDB的ip添加Riak单机监控(单机属于集群,不能单独存在,可增量添加单机监控),填写ip和端口,配置阈值、负责人等信息

    1)数据库设计

    mysql> use riakMonitor
    show tabReading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> show tables;
    +---------------------------+
    | Tables_in_riakMonitor     |
    +---------------------------+
    | riakClusterConf           | 
    | riakClusterDisplay        | 
    | riakClusterStatus         | 
    | riakClusterStatusTemplate | 
    | riakSingleConf            | 
    | riakSingleDisplay         | 
    | riakSingleStatus          | 
    | riakSingleStatusTemplate  | 
    +---------------------------+
    8 rows in set (0.00 sec)

    Template表作为历史库表模板,历史库按月分库,按ip分表

    2) 单机Agent设计

    • Agent会通过自动调度平台下发到目标机器,Crond周期是1分钟,直接上报到mysql数据库。运行时间超过45s 会被调度平台kill
    • 如果检测不到riak或者命令出错则会发送rtx告警给admins + dba, 系统错误会发送给admins

    3) 集群汇聚设计

    • 集群数据根据节点agent上报数据在50s的时候select出当前一分钟的数据计算汇聚入库
    • 程序每分钟都会清除clusterStatus的数据,如果agent在本分钟上报心跳异常或者上报时间不在集群程序运行前(50s),cluster则不会统计该ip数据,但平均值计算时的除数会算上该ip(+1)
    • 集群计算同时会写进历史库,并创建历史表

    4) CGI接口设计(NodeJs)

    • 异步接收agent上报的数据,根据redis的ip列表转换成ip1
    • 如果redis获取的ip1不存在singleConf表中则会拒绝上报,返回3003错误
    • 上报成功会入singleStatus和历史库,并创建历史表

    5) 模块清单

    CGI :  /data/riakMonitor   # daemon
    agent: /home/opd/script/riakMonitor  #  crond
    analyzer: /opdData/opdOnline/script/kmc/riakMonitor/analyzer  # crond
    1、从CMDB更新single/cluster conf数据  
    2、同步conf和display
    3、解析status数据到display
    4、异常数据写入
    5、告警
    riakTool: /opdData/opdOnline/script/kmc/riakMonitor/riakTool  # daemon
    每分钟第50s运行一次
    1、获取监控集群和集群的ip,计算结果并汇聚
    2、操作redis,将集群数据入历史库

        3、添加/卸载监控

    1) 添加监控

    添加监控需要先添加集群(不支持先添加IP),添加集群会默认把所有IP都添加监控(前台将在clusterConf新增记录,并在singleConf增加对应的ip记录,然后调用调度平台,检测ip是否已经安装)如果该集群在CMDB里面新增Ip,则需要手动添加监控(前台提供新增监控节点,插入singleConf)

    2) 卸载监控

    (1) 卸载监控可以卸载整个集群的监控(将clusterConf needMonitor置0,同步将singleConf的needMonitor都置0,然后调用
    调度平台
    卸载集群下的所有机器,如果该ip存在其他集群并且需要监控,则不用调用
    调度平台
    卸载)也可以卸载单个节点的监控(前台将singleConf的needMonitor置0,调用
    调度平台
    ,同样判断ip是否存在其他集群) (2) 添加卸载监控部由前台调用
    调度平台
    接口,并修改数据库(插入数据或者更新need_monitor) (3) Single/cluster dislplay表会同步conf表的数据,只保留need_monitor=1的数据

      4、CMDB数据同步

      5、前台展示

    原创文章,转载请备注原文地址 http://www.cnblogs.com/lxmhhy/p/6036330.html

  • 相关阅读:
    jvm参数陷阱
    concurrent mode failure
    17.Quick QML-SpinBox
    16.Quick QML-ButtonGroup、RadioButton、CheckBox
    15.Quick QML-TextEdit和TextArea
    14.Quick QML-TextInput和TextField详解
    13.Quick QML-RowLayout、ColumnLayout、GridLayout布局管理器介绍、并通过GridLayout设计的简易网站导航界面
    9.qml-property自定义属性
    macOS 系统安装Maven教程
    macOS系统上 为Github 托管项目的访问添加SSH keys
  • 原文地址:https://www.cnblogs.com/lxmhhy/p/6036330.html
Copyright © 2011-2022 走看看