風速計MySQL低速クエリログ監視プラットフォーム



Anemometer Mysql Slow Query Log Monitoring Platform



アネモメーターはオープンソース(スロークエリ)ログ監視プラットフォームであり、現在主にMySQLのスロークエリログ追跡に使用されています。

風速計のデモアドレス: http://lab.fordba.com/anemometer/
風速計プロジェクトの住所: https://github.com/box/Anemometer




必要なツール:



MySQL(各データベースの収集された低速クエリログを保存するために使用)

pt-query-digest(ログ収集ツール、Percona Toolkit)

Apache&PHP 5.5以降(Webサービス、ブラウザー側の視覚的操作)



風速計(必須)


現在の例はネットワーク運用に属しているため、1つずつダウンロードおよびインストールすることはなく、システムはCentOS7です。

(MySQLのインストールは省略)

Apacheのインストール:

#Install Apache yum -y install httpd httpd-devel #Start Apache service httpd start #Browser input address, you can open 'Apache 2 Test Page' http://10.10.10.9/ php5.7インストール構成:
#Install php5.7 rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm yum -y install php70w yum -y install php70w-mysql php70w-common php70w-gd php70w-odbc php70w-pear php70w-xml php70w-bcmath php70w-mbstring #Add file info.php vim /var/www/html/info.php #Browser enter the URL, then you can open 'PHP Version 7.0.30' http://10.10.10.9/info.php #Set php time zone vim /etc/php.ini [Date] date.timezone ='Asia/Shanghai' 風速計の展開:
cd /var/www/html/ git clone git://github.com/box/Anemometer.git anemometer mysql -u root -p #Local log monitoring: vim conf/datasource_localhost.inc.php '127.0.0.1', 'port' => 3306, 'db' => 'slow_query_log', 'user' => 'root', 'password' => 'mysql', 'tables' => array( 'global_query_review' => 'fact', 'global_query_review_history' => 'dimension' ), 'source_type' => 'slow_query_log' ) ?> #Remote server log monitoring: vim conf/config.inc.php $conf['datasources']['10.10.10.9'] = array( 'host' => '10.10.10.9', 'port' => 3306, 'db' => 'slow_query_log', 'user' => 'root', 'password' => 'mysql', 'tables' => array( 'global_query_review' => 'fact', 'global_query_review_history' => 'dimension' ), 'source_type' => 'slow_query_log' ) (Omit line N here...) $conn['user'] = 'root' $conn['password'] = 'mysql' #Start httpd service service httpd restart #Browser enter URL http://10.10.10.9/anemometer/index.php

仮想マシン(IP:10.10.10.9)に風速計をインストールしましたが、仮想マシンのファイアウォールがオフになっています。上の図は、ホスト(IP:10.10.10.100)ブラウザーのリモートアクセスを示しています。ただし、ジャンプするデータソースを選択すると、エラーが報告されます。 ! (phpログを確認してください:tail / var / log / httpd / error_log)

[2018年6月13日水曜日16:10:49.328888] [:error] [pid 30208] [client 10.10.10.100:61565] PHP警告:
mysqli :: __construct():( HY000 / 2003):「127.0.0.1」のMySQLサーバーに接続できません(13)
/var/www/html/anemometer/lib/AnemometerModel.phpの280行目、リファラー:http://10.10.10.9/anemometer/

[2018年6月13日水曜日16:10:49.328973] [:error] [pid 30208] [client 10.10.10.100:61565] PHPの致命的なエラー:
キャッチされない例外:「127.0.0.1」でMySQLサーバーに接続できません(13)
/var/www/html/anemometer/lib/AnemometerModel.php:282 スタックトレース: n#0
/var/www/html/anemometer/lib/Anemometer.php(65):AnemometerModel-> connect_to_datasource()
n#1 /var/www/html/anemometer/index.php(36):風速計-> __construct(Array) n#2 {main} n
/var/www/html/anemometer/lib/AnemometerModel.phpの282行目にスローされます。リファラー:http://10.10.10.9/anemometer/


戸惑い、Baidu Googleは長い間、ついに解決策を見つけました。

SQLSTATE [HY000] [2003]「xxx.xxx.xxx.xxx」のMySQLサーバーに接続できません(13)

setsebool -P httpd_can_network_connect=1

pt-query-digestダウンロード(このツールのみ):

# Download pt-query-digest cd /var/www/html/ yum -y install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL perl-Digest-MD5.x86_64 wget percona.com/get/pt-query-digest chmod u+x pt-query-digest

MySQLの遅いクエリログ収集:

#Enable slow query log, restart MySQL service after setting #vim /etc/my.cfg slow_query_log =1 log_output='File' long_query_time=5 log_slow_admin_statements=1 slow_query_log_file=/usr/local/mysql/data/slow-query.log #View MySQL variable settings mysql> show variables where Variable_name in ('slow_query_log','log_output','long_query_time','log_slow_admin_statements','slow_query_log_file') +---------------------------+--------------------------------------+ | Variable_name | Value | +---------------------------+--------------------------------------+ | log_output | FILE | | log_slow_admin_statements | ON | | long_query_time | 5.000000 | | slow_query_log | ON | | slow_query_log_file | /usr/local/mysql/data/slow-query.log | +---------------------------+--------------------------------------+ #Collect slow query logs to the database (requires tasks to perform regular collection) ./pt-query-digest --user=root --password=mysql --review h=10.10.10.9,D=slow_query_log,t=global_query_review --history h=10.10.10.9,D=slow_query_log,t=global_query_review_history --no-report --limit=0% --filter=' $event->{Bytes} = length($event->{arg}) and $event->{hostname}='$HOSTNAME'' /usr/local/mysql/data/slow-query.log

各コレクションレコードはデータベースslow_query_logに記録され、風速計はここに表示されたデータを読み取ります。



実行プランの追加:必要なツールpt-visual-explain

#Download pt-visual-explain cd /usr/bin/ wget percona.com/get/pt-visual-explain chmod 755 /usr/bin/pt-visual-explain #Configure the plugin. Edit the file to find the plugin where pt-visual-explain is located. #vim anemometer/conf/config.inc.php $conf['plugins'] = array( 'visual_explain' =>'/usr/bin/pt-visual-explain', # pt-visual-explain location 'show_create' => true, 'show_status' => true, 'explain' => function ($sample) { $conn = array() $conn['host'] = '10.10.10.9' #new $conn['port'] = '3306' #new $conn['db'] = 'slow_query_log' #new $conn['user'] = 'root' #new $conn['password'] = 'mysql' #new return $conn #new if (!array_key_exists('hostname_max',$sample) or strlen($sample['hostname_max']) <5) { return } $pos = strpos($sample['hostname_max'], ':') if ($pos === false) { $conn['port'] = 3306 $conn['host'] = $sample['hostname_max'] } else { $parts = preg_split('/:/', $sample['hostname_max']) $conn['host'] = $parts[0] $conn['port'] = $parts[1] } $conn['db'] = 'mysql' if ($sample['db_max'] != '') { $conn['db'] = $sample['db_max'] } $conn['user'] = 'root' $conn['password'] = 'mysql' return $conn }, )返される接続データを指定しない場合、エラーが発生します。Query Explainプラグインのエラー:フィールドホストがありません。ここに直接追加します。次に、pt-query-digestを介してデータベースへの低速クエリログを読み取ります。クエリは実行プランを確認できます。