• 性能监控2


    一、mysql监控

    1、Orzdba

    2、Tcprstat

    3、pt-query-digest  

    是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。

     4、prometheus + grafana监控mysql

    GitHub网址:https://github.com/prometheus/prometheus

    软件下载地址:https://prometheus.io/download/

    Prometheus是一个开源的系统监控和报警的工具包,最初由SoundCloud发布。组件:

    Prometheus 主程序,主要是负责存储、抓取、聚合、查询方面。

    Alertmanager 程序,主要是负责实现报警功能。

    Pushgateway 程序,主要是实现接收由Client push过来的指标数据,在指定的时间间隔,由主程序来抓取。

    *_exporter 这类是不同系统已经实现了的集成。

    prometheus部署

    1、下载安装包prometheus-1.6.2.linux-amd64.tar.gz

    https://github.com/prometheus/prometheus/releases/tag/v1.6.2

    2、解压

    tar -xvf prometheus-1.6.2.linux-amd64.tar.gz

    cd prometheus-1.6.2.linux-amd64

    3、配置prometheus.yml 

    scrape_interval: 15s   # 默认15秒到目标处抓取数据

    4、启动

    nohup ./prometheus -config.file=prometheus.yml &

    nohup /opt/prometheus-1.6.2.linux-amd64/prometheus &

    5、WEB页面访问http://localhost:9090/ ,可以看到Prometheus的首页页面。

     

    grafana部署

    1、安装grafana

    wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.2.0-1.x86_64.rpm

    sudo yum install initscripts fontconfig -y

    sudo rpm -Uvh grafana-4.2.0-1.x86_64.rpm

    2、启动服务service grafana-server start

    3、访问页面http://localhost:3000 ,默认账号、密码admin/admin

    4、Prometheus 和 Grafana 的对接

    创建Prometheus数据源:

    1)点击Grafana徽标打开边栏菜单。

    2)点击边栏中的“数据源”。

    3)点击“添加新的”。

    4)选择“Prometheus”作为类型。

    5)设置适当的Prometheus服务器URL(例如http://localhost:9090/)

    6)根据需要调整其他数据源设置(例如,关闭代理访问)。

    7)点击“添加”保存新的数据源。

    5、zabbix监控mysql性能 

    监控思路

    先在zabbix主机上面配置好mysql服务器的信息,添加好zabbix自带的 MySQL模版,然后去mysql服务器上安装agent,再添加mysql监控脚本(chk_mysql.sh),zabbix通过调用chk_mysql.sh这个脚本来获取mysql的运行信息。可以监控如下内容:OPS(增删改查)、mysql请求流量带宽,mysql响应流量带宽

    编写check_mysql.sh脚本

    # vim /usr/local/zabbix-2.4.4/scripts/chk_mysql.sh

    脚本如下:

    #!/bin/bash
    
    # 用户名
    MYSQL_USER='zabbix'
    
    # 密码
    MYSQL_PWD='123456'
    
    # 主机地址/IP
    MYSQL_HOST='127.0.0.1'
    
    # 端口
    MYSQL_PORT='3306'
    
    # 数据连接
    MYSQL_CONN="/usr/bin/mysqladmin -u${MYSQL_USER} -p${MYSQL_PWD} -h${MYSQL_HOST} -P${MYSQL_PORT}"
    
    # 参数是否正确
    if [ $# -ne "1" ];then
        echo "arg error!"
    fi
    
    # 获取数据
    case $1 in
        Uptime)
            result=`${MYSQL_CONN} status|cut -f2 -d":"|cut -f1 -d"T"`
            echo $result
            ;;
        Com_update)
            result=`${MYSQL_CONN} extended-status |grep -w "Com_update"|cut -d"|" -f3`
            echo $result
            ;;
        Slow_queries)
            result=`${MYSQL_CONN} status |cut -f5 -d":"|cut -f1 -d"O"`
            echo $result
            ;;
        Com_select)
            result=`${MYSQL_CONN} extended-status |grep -w "Com_select"|cut -d"|" -f3`
            echo $result
                    ;;
        Com_rollback)
            result=`${MYSQL_CONN} extended-status |grep -w "Com_rollback"|cut -d"|" -f3`
                    echo $result
                    ;;
        Questions)
            result=`${MYSQL_CONN} status|cut -f4 -d":"|cut -f1 -d"S"`
                    echo $result
                    ;;
        Com_insert)
            result=`${MYSQL_CONN} extended-status |grep -w "Com_insert"|cut -d"|" -f3`
                    echo $result
                    ;;
        Com_delete)
            result=`${MYSQL_CONN} extended-status |grep -w "Com_delete"|cut -d"|" -f3`
                    echo $result
                    ;;
        Com_commit)
            result=`${MYSQL_CONN} extended-status |grep -w "Com_commit"|cut -d"|" -f3`
                    echo $result
                    ;;
        Bytes_sent)
            result=`${MYSQL_CONN} extended-status |grep -w "Bytes_sent" |cut -d"|" -f3`
                    echo $result
                    ;;
        Bytes_received)
            result=`${MYSQL_CONN} extended-status |grep -w "Bytes_received" |cut -d"|" -f3`
                    echo $result
                    ;;
        Com_begin)
            result=`${MYSQL_CONN} extended-status |grep -w "Com_begin"|cut -d"|" -f3`
                    echo $result
                    ;;           
            *)
            echo "Usage:$0(Uptime|Com_update|Slow_queries|Com_select|Com_rollback|Questions|Com_insert|Com_delete|Com_commit|Bytes_sent|Bytes_received|Com_begin)"
            ;;
    esac

    安装mysql

    [root@test3 /]# yum -y install mysql mysql-server

     

    初始化数据库

    [root@test3 /]# /etc/init.d/mysqld start

    [root@test3 /]# mysqladmin -uroot -h 127.0.0.1 password 123456

    [root@test3 /]# mysql -u root -p
    Enter password:

     

    创建一个登陆mysql的用户

    mysql> GRANT USAGE ON*.*TO'zabbix'@'localhost'IDENTIFIED BY'zabbix';

    Query OK, 0 rows affected (0.00 sec)

    mysql> FLUSH PRIVILEGES;

    Query OK, 0 rows affected (0.00 sec)

    mysql> quit

    Bye

    修改zabbix_agentd.conf

    增加自定义key,在最后一行增加如下:

    # 获取mysql版本

    UserParameter=mysql.version,mysql -V

    # 获取mysql性能指标,这个是上面定义好的脚本

    UserParameter=mysql.status[*],/usr/local/zabbix2.4.4/scripts/chk_mysql.sh $1

    # 获取mysql运行状态

    UserParameter=mysql.ping,mysqladmin -uzabbix -p123456 -P3306 -h127.0.0.1  ping | grep -c alive

    备注:请注意修改你的数据库信息,以及zabbix路径信息

    重启zabbix

    # killall zabbix-agentd

    # /usr/local/zabbix-2.4.4/bin/zabbix_agentd

    或者

    # service zabbix_agentd restart

    MySQL模板

    模板是zabbix系统提供的,进入zabbix web后台,configuration-->hosts-->点击你的主机name-->选择template选项卡,选择模板“Template App MySQL”,最后点击update即可

     

    数据查看

    如果配置没有异常,那么可以在graph中查看到2张监控图,分别为请求流量带宽、响应流量带宽、ops,点击monitoring-->graphs-->选择你的主机,分别选择Graph“MySQL bandwidth”、“MySQL operations”,监控图分别如下(图片可以点击放大查看):

    zabbix监控mysql

    二、oracle监控

    1、AWR报告  AWR是Oracle的一个组件,需要安装,可以结合toad一起使用

    2、tcprstat

    3、doDBA tools

    在Oracle数据库中提供了「AWR,ASH,SQL Monitor」等众多诊断工具,可以一眼望穿数据库正在做什么,甚至都可以知道在过去30天内任何一个时间区间的性能负载和当时数据库正在做什么。在MySQL中虽然有像「zabbix,PMM」等优秀的监控工具,但它们只能反映数据库历史的一些性能数据曲线,例如,TPS高了,临时表使用多了,有InnoDB Deadlocks,但对于MySQL当时的Doing,我只能说不够直接。

    doDBA tools是一个基于控制台的远程监控工具,它不需要在本地/远程系统上安装任何软件,它可以实时收集操作系统、MySQL、InnoDB的实时性能状态数据,并可以生成Doing日志文件,来帮助你快速了解/优化系统及MySQL数据库。

    特点

    ●基于golang语言开发

    ●可收集Linux、MySQL相关性能数据

    ●可本地或远程收集,可多台

    ●mytop --Like Linux TOP

    ●基于并发生成Doing日志,复现现场

    ●可记录到日志文件

    doDBA tools 工作原理

    远程收集系统信息是通过ssh(用户名密码或建立信任)的方式连接到远程服务器上收集,收集的方法都是通过读取Linux的proc下的等meminfo,diskstats,uptime,net,vmstat ,cpuinfo ,loadavg等文件,这和pmm,zabbix收集方式一致。

    远程收集MySQL信息是通过 MySQL tcp连接到MySQL数据库上收集,只需要授予连接用户PROCESS、SELECT权限即可。

    系统信息和MySQL信息的收集可以分离,如果只想收集系统信息,只需要提供系统用户名密码即可,如果只收集MySQL可以只提供MySQL连接信息,如果是rds用户,可以使用-rds参数,在使用mytop时会自动忽略系统信息的收集。

    如何使用

    Github主页:https://github.com/dblucyne/dodba_tools

    下载下来就可以直接使用,不依赖于任何环境。

    使用实例

    1. 收集Linux性能数据

    ./doDBA -h=10.1.x.xx -sys

     

    2. 收集MySQL性能数据

    ./doDBA -h=10.1.x.xx -mysql

     

    3. 收集InnoDB性能数据

    ./doDBA -h=10.1.x.xx -innodb

     

    4. 收集MySQL及Linux性能数据

    ./doDBA -h=10.1.x.xx -myall

    5. mytop --like linux top

    ./doDBA -h=10.1.x.xx -mytop

     

    6. 借助Shell收集多台

    cat ip.txt

    10.1.x.x1

    10.1.x.x2

    Shell

    cat ip.txt | while read ip;

    do

    echo $ip;

    ./doDBA -h=$ip -mysql -log

    done

    7. 收集到日志文件

    ./doDBA -h=10.1.x.xx -mysql -log

     

    8. 开启Doing功能

    使用【-t】参数可以基于Threads_running的数量设置阈值,设置后可记录「processlist,engine innodb status」信息到dodba.log日志中,--复现现场。

    ./doDBA -h=10.1.x.xx -myall -t=3

     

    9. 查看Doing日志

    tail -f dodba.log

     

  • 相关阅读:
    在日志中记录Java异常信息的正确姿势
    基于Spring Boot架构的前后端完全分离项目API路径问题
    Spring生态简介
    WebSocket协议入门介绍
    Spring Boot程序正确停止的姿势
    python 中 __init__方法
    python中的if __name__ == 'main'
    python 类和实例
    内建模块 datetime使用
    内建模块collections的使用
  • 原文地址:https://www.cnblogs.com/tester-l/p/9358369.html
Copyright © 2020-2023  润新知