9

分布式 | zabbix 监控 dble

 2 years ago
source link: https://segmentfault.com/a/1190000041168889
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

作者:邓润钦

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

本文来源:原创投稿

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


一、简介DBLE

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

二、环境配置

1、主机信息

2、软件信息

操作系统centos7.5dbleactiontech-dble-2.19.11.0mysqlmsyql5.7.26zabbix-agent3.0

三、环境搭建

1、搭建 mysql 主从

参考:https://www.cnblogs.com/zyxnh...

2、搭建 dble

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

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 配置

[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 的脚本配置

[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
[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
[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 '\n\t\t{'
         printf "\"{#HOSTIP}\":\"${array_ip[$i]}\"}"
         if [ $i -lt $[$length-1] ];then
                    printf ','
         fi
      done
    printf  "\n\t]\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、添加监控项原型

六、主机添加模板,测试

查看后端数据库类型


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK