Tookit)でもおなじみのPercona社が開発・配布する監視プラグインです。MySQL(RDS用のものもある)以外にApache、JMX、Linxuの基本項目、MongoDB、Nginx、redis監視用のテンプレートも含まれています。Nagios」も存在します。ここで、Cactiについても簡単に紹介しておきましょう。Cacti(カクタイ)はRRDToolをバックエンドに利用したオープンソースのフロントエンドアプリケーションです。ホスト単位で複数のRRDファイルから作成したグラフを1画面に表示したり、RRDファイルへの入力スクリプトをWEB画面上で紐付けられたりと、リソースモニタリングを始めるにあたって便利な機能が揃っています。いう方がいらっしゃるかも)Cactiの魅力の1つは、サードパーティー製のテンプレートが充実しているです。CactiはCactiでMySQLをモニタリングするにあたってのデファクトスタンダードのような存在となっています。Cactiを導入することで収集できる情報が一挙に増えます。リソースモニタリングでは「取っていない情報はさかのぼることができない」が原則なので、特に手間をかけずに収集するメトリックスが増えるのは嬉しいことです(ただしRRDに対する書き込みも増えることに留意)。Cactiをインストールしてみましょう。今回はCactiそのもののインストール方法について詳しくは触れません。Cactiは既にセットアップ済みのものとして説明を進めます。Toolkitと同様にPerconaのyum、aptリポジトリーからインストールできます。Perconaのリポジトリー登録については第2回で説明しているので割愛し、ここではコマンドのみ例示します。CentOSではCactiのセットアップ前にPerconaのリポジトリーをセットアップしてしまうと、cactiパッケージの依存関係によりPercona-Server-client-57、Percona-server-shared-57、Percona-Server-shared-51がインストールされます。利用することになります。5.7ではsql_modeのデフォルトが変更されたため、そのままではCactiを動かすことができないので注意してください。Cactiのパッケージ名は、yum、aptリポジトリーともにpercona-cacti-templatesです。CentOSまたはUbuntuでは、以下のコマンドでインストールします。8では、以下のコマンドでインストールします。Cactiをrpmやdpkgから直接インストールしたり、ソースコードからインストールしたりすることもできます(説明は割愛)。rpm、dpkgのダウンロードページはこちらです。Cactiをインストールするだけでは監視テンプレートが有効になりません。コマンド(Cactiに同梱されているimport_template.php)を利用してテンプレートを登録する必要があります。登録に必要なXMLファイルは/usr/share/cacti/resource/percona/templatesディレクトリにインストールされています。CactiにはMySQL以外の監視テンプレートも含まれています。MySQL以外の監視テンプレートをインストールしたい場合は、以下のコマンド例のXMLファイルを指定している部分を変更してください。"[success]"で終了すれば登録完了です。Method"の状態が図2です。Templates"もMySQL用のものがインポートされたことを確認できます。Value)"にチェックを入れておく必要があります("Hostname"は登録時にIPアドレスが自動で引き渡されるためそのままでOK)。筆者はこれ(全データテンプレート分実施する必要があります)が面倒だったため、以下のようにCactiのテーブルを直接書き換えることにしました。Value)"をチェックした状態にUPDATEしています。CactiのMySQLテンプレートを一括で設定できましたが、その他の環境で正しく動作するかどうかは保証できません。設定を変更する場合には十分注意してください。Cactiの準備が整ったところで、監視される側のMySQLに必要な設定を行います。具体的にはCactiのサーバーからログインできるユーザーです。監視対象のMySQLは"172.17.1.144"です。監視対象のMySQLにログインし、以下のように"172.17.1.145"からアクセス可能な"pmp"ユーザーを作成しました("pmp"ユーザーと"pmp_pass"というパスワードは前段落で設定した値)。USERのみで権限を何も割り当てていませんが、まずはこの状態でホストを登録してみます。左メニューの"Devices"を選択し、右画面右上の"Add"からデバイスの追加メニューを表示させて図4に示すように入力してみます。CactiのMySQL用のグラフが一式紐付けられています。Host"のリンクを辿ると、ホストテンプレートに予め割り当てられたグラフテンプレートの一覧が表示されます。全てのグラフを選択して"Create"に進みます(図5)。遷移した画面(図6)では"Port"を入力するように表示されました。'on'がこれに相当)。"User"、"Password"にもチェックを入れていれば、この段階で設定することになります。ポートを可変にせずチェックを入れなかった場合、この画面は表示されません。図6:前段落の設定によりPortを入力するように促されるポート番号を入力して画面右下の"Create"を選択すると、今度こそグラフ描画用のデータ収集が始まります。データが揃うまでグラフは描画されないので、しばらく待っている間に監視ユーザー(今回の例では"pmp"ユーザー)に必要な権限について説明しておきましょう。Cactiで取得できるグラフは種類が多く、ある程度グラフごとに必要な権限が分かれています。Cactiに記載がありますが、ざっくり説明すると、グラフごとに以下のような権限が必要になります。CLIENTとPROCESSLISTは付けておいた方が良いでしょう。バイナリーログのサイズはSUPERを付与してまで見たい情報かどうかを問われると筆者としては否です(実際にグラフを確認し、バイナリーログのサイズがSUPERを付与してまでグラフ化するべきか判断する)。STATUSステートメントを利用してInnoDBの内部ステータスを取得しているためです(ステートメントが「処理中のトランザクション」を表示するためPROCESSLIST権限が必要と内部的に制御されている)。このあたりを鑑みた上で"pmp"ユーザーに権限を追加してください。STATUSで出力される項目に似通っているため、それ程迷うことはないでしょう。Cactiを上手く運用していくコツを紹介しておきます。絶対値に惑わされないグラフの縦軸には目盛りが振ってありますが、ほとんどの場合この数字を気にする必要はありません。Sec)が「ギリギリの値」か「まだ十分余裕のある値」かどうかは、ハードウェアの性能にもよりますし、SELECTステートメントの内容にもよります。QPSをさばいている状態で「レスポンスタイムは良好」か「スローダウンが始まっている」かなど、周囲の状況と照らし合わせてデータベースの状況を把握することです。Cactiのポーリング間隔は最小でも1分で、グラフ上は毎秒の値が出るので、ごく小さい値しか返さないステータス変数は1未満の値が表示されることがあります。問題が起きていなくてもたまには見るMySQLが平和に動いている時はあまり気にならないものですが、たまには何も考えずにグラフ画面を開くのも良いものです。誰だこのリリースしたのは。インデックス使えてないじゃん。平和なうちに足しておこう」なんてことがあるかも知れません(フィクション)。QPSくらいかなぁ...とか)を見ておくだけでも、有事の時の判断材料になることがあります。長い期間で見るデータは日々増え続け、クエリーも日々増えたり変わったりします。1日に0.5%ずつスキャンする行数が増えていても24時間スパンのグラフでは気が付かなかったりしますが、3か月スパンで見れば気付く確率は高くなるでしょう(90日同じペースで増え続けると1.5倍以上になる)。sentががくんと減って月末に向けてだんだん増えていくな。......これって、まさか結果セット全部転送か!?」(しつこいがフィクション)。Cactiは色々な情報を収集してくれますが、それでも情報の粒度が荒すぎることも多々あります。Cactiによって収集されているとは限りません(あるいは、グラフ化される際に丸められている可能性もある)。Cactiの一番のメリットは「あまり手間をかけずにそれなりの情報が見やすく得られること」だと考えています。手間をかけても良い(あるいは、手間をかけてでも調べなければならない)のであれば、PMPにこだわる必要はありません。Cactiは既にCactiを運用している人にとっては導入しやすく、「手軽にそれなりの情報が得られるツール」となりえます。万能ではありませんので、Cacti以外の何かを運用している場合には無理に導入するようなものではありません。自身に合ったツールを見つけてください。グラフを確認する時は、縦軸の絶対値よりも相対的な変化に目を配った方が良いでしょう。グラフ期間を長くすることで、短いスパンのグラフでは見えてこなかった大きな動きが見えることもあります。即効クエリチューニング』の内容をまとめて書籍化したものです。言語やフレームワークに依存せずMySQL側から解決へアプローチするための方法を紹介しています。特定のケースにマッチする改善の手法よりも、繰り返し使われる計測の手法にフォーカスを当てて説明していきます。この著者の記事一覧GMOメディア株式会社GMOメディア株式会社のDBAで日本MySQLユーザ会員。ぬいぐるみとイルカが好きなおじさん。ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。VeloCloudが選ばれる理由SD-WANとはなにか。Linuxエンジニア育成への思いF5とNGINXの組み合わせで、サービス公開をよりセキュアに。ITがお届けするポッドキャストです。