分布式 | zabbix 监控 dble

2021-12-07 14:55:04 浏览数 (1)

作者:邓润钦

系统运维工程师,目前就职于互联网教育行业,负责维护并确保整个服务的高可用性,同时不断优化系统架构提升部署效率、优化资源利用率。

本文来源:原创投稿

* 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

一、简介 DBLE

是企业级开源分布式中间件,本文通过 zabbix 监控 dble 的运行状态等参数。官方网站:https://opensource.actionsky.com/

二、环境配置

1、主机信息

主机名称

roles

IP地址

dble

dble zabbix-agentd

172.22.0.58

mysql-001

mysql-master

172.22.0.7

mysql-002

msyql-slave

172.22.0.52

2、软件信息

操作系统

centos7.5

dble

actiontech-dble-2.19.11.0

mysql

msyql5.7.26

zabbix-agent

3.0

三、环境搭建

1、搭建 mysql 主从

参考:https://www.cnblogs.com/zyxnhr/p/11141234.html

2、搭建 dble

参考:https://www.jianshu.com/p/cd5911058c66 或者官网配置读写读写分离

3、搭建 zabbix 监控

参考:https://www.zabbix.com/

四、zabbix 脚本

1、zabbix dble 配置参数
  1. dble.status
    • dble_version 版本
    • dble_up 状态
    • front_conn 前端连接数
  2. dble.mysql_type 后端数据库的类型:RW
  3. dble.mysql_active 后端数据库的存活
  4. mysql_read_load 后端数据的reload数
  5. mysql_write_load 后端数据的write数
  6. mysql_execute 后端数据库的execute数
2、zabbix 的 conf 配置
代码语言:javascript复制
[root@vm-11c-02gt4 xm_external]# cat zbx_xm_external_dble.conf
UserParameter=hfy.xm_external.dble.status[*],sh /data/sh/zabbix_scripts/xm_external/dble/xm_external_dble.sh $1
UserParameter=hfy.xm_external.dble.datasource,sh /data/sh/zabbix_scripts/xm_external/dble/xm_external_dble_datasource.sh data_source
UserParameter=hfy.xm_external.dble.mysql_type[*],sh /data/sh/zabbix_scripts/xm_external/dble/xm_external_dble_datasource.sh mysql_type $1
UserParameter=hfy.xm_external.dble.mysql_active[*],sh /data/sh/zabbix_scripts/xm_external/dble/xm_external_dble_datasource.sh mysql_active $1
UserParameter=hfy.xm_external.dble.mysql_read_load[*],sh /data/sh/zabbix_scripts/xm_external/dble/xm_external_dble_datasource.sh mysql_read_load $1
UserParameter=hfy.xm_external.dble.mysql_write_load[*],sh /data/sh/zabbix_scripts/xm_external/dble/xm_external_dble_datasource.sh mysql_write_load $1
UserParameter=hfy.xm_external.dble.mysql_execute[*],sh /data/sh/zabbix_scripts/xm_external/dble/xm_external_dble_datasource.sh mysql_execute $1

3、zabbix 的脚本配置
代码语言:javascript复制
[root@vm-11c-02gt4 dble]# pwd
/data/sh/zabbix_scripts/xm_external/dble
[root@vm-11c-02gt4 dble]# ll
total 8
-rwxr-xr-x 1 zabbix zabbix 2027 Nov  1 18:47 xm_external_dble_datasource.sh
-rwxr-xr-x 1 zabbix zabbix  765 Nov  1 18:48 xm_external_dble.sh

代码语言:javascript复制
[root@vm-11c-02gt4 dble]# cat xm_external_dble.sh $1
#!/bin/bash
#说明:通过dble的管理地址,将dble的基础数据采集到
#需要本地有mysql命令 或者运行  xm_external_dble_datasource.sh 的program_exists()里面的命令

DBLE_USER='man1'
DBLE_PASS='654321'
DBLE_HOST='127.0.0.1'
DBLE_PORT='9066'

#连接命令
dble_conn="mysql -P${DBLE_PORT} -h${DBLE_HOST} -u${DBLE_USER} -p${DBLE_PASS}"

case $1 in
    dble_version) #dble版本
    result=`${dble_conn} 2>/dev/null -BNe "show @@version" |grep dble|awk -F - '{print $3}'`
    echo $result
    ;;
    dble_up) #dble状态
    ${dble_conn} 2>/dev/null -BNe "show @@version"|echo $?
    ;;
    front_conn) #dble前端的连接数
    result=`${dble_conn} 2>/dev/null -BNe "show @@connection" |grep 8066 | wc -l`
    echo $result
    ;;
esac

代码语言:javascript复制
[root@vm-11c-02gt4 dble]# cat xm_external_dble_datasource.sh
#!/bin/bash
#说明:通过dble的管理地址,将dble的基础数据采集到
#需要本地有mysql命令 或者运行  xm_external_dble_datasource.sh 的program_exists()里面的命令

DBLE_USER='man1'
DBLE_PASS='654321'
DBLE_HOST='127.0.0.1'
DBLE_PORT='9066'

program_exists() {

    mysql_command=`command -v mysql`

    # fail on non-zero return value
    if [ -z ${mysql_command}  ]; then
        rpm -ivh https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm
        yum -y install mysql-community-client.x86_64
    fi
}


#连接命令
dble_conn="mysql -P${DBLE_PORT} -h${DBLE_HOST} -u${DBLE_USER} -p${DBLE_PASS}"

dble_datasouce(){
    ${dble_conn} 2>/dev/null -NBe 'show @@datasource' >/tmp/dble_datasouce.txt
    array_ip=($(cat /tmp/dble_datasouce.txt |awk '{print $3}'))
    length=${#array_ip[@]}
    printf "{n"
    printf  't'""data":["
    for ((i=0;i<$length;i  ))
      do
         printf 'ntt{'
         printf ""{#HOSTIP}":"${array_ip[$i]}"}"
         if [ $i -lt $[$length-1] ];then
                    printf ','
         fi
      done
    printf  "nt]n"
    printf "}n"
}

dble_mysql_type(){
    cat /tmp/dble_datasouce.txt |grep $1|awk '{print $5}'
}

dble_mysql_active(){
    result=`cat /tmp/dble_datasouce.txt |grep $1|awk '{print $6}'`
    if [[ $result != 0 ]];then
        echo "up"
    else
        echo "down"
    fi
}

dble_mysql_execute(){
    result=`cat /tmp/dble_datasouce.txt |grep $1|awk '{print $9}'`
    echo $result
}

dble_mysql_read(){
    result=`cat /tmp/dble_datasouce.txt |grep $1|awk '{print $10}'`
    echo $result
}

dble_mysql_write(){
    result=`cat /tmp/dble_datasouce.txt |grep $1|awk '{print $11}'`
    echo $result
}


case $1 in
    data_source)
    dble_datasouce
    ;;
    mysql_type)
    dble_mysql_type $2
    ;;
    mysql_active)
    dble_mysql_active $2
    ;;
    mysql_read_load)
    dble_mysql_read $2
    ;;
    mysql_write_load)
    dble_mysql_write $2
    ;;
    mysql_execute)
    dble_mysql_execute $2
    ;;
esac

五、配置 zabbix 模板

1、添加应用集和监控项
2、添加自动发现
3、添加监控项原型

六、主机添加模板,测试

查看后端数据库类型

0 人点赞