性能监控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

 

原文地址:https://www.cnblogs.com/tester-l/p/9358369.html