ZabbixモニタSQL Serverデータベース

7850 ワード

Zabbixインストール編一:サーバーインストール教程
Zabbixインストール編二:Linux一括インストールクライアントZabbix-agent
Zabbixインストール編3:windows一括インストールクライアントZabbix-agent
Zabbixインストール編四:釘付けロボットアラーム
モニタ編
Zabbix監視編一:監視SQL Serverデータベース
Zabbix監視編二:監視カメラMaridbデータベース
Zabbix監視編3:監視Exchange Server
Zabbix監視編四:監視ルータ
 
   Zabbixテンプレートを通して、Microsoft SQL Serverの統計情報を監視し、収集する。ほとんどの要求はWindows性能カウンタ(`perfucounter`)によって行われ、いくつかはパワーシェルによって完成され、もう一つはODBCによって完成された。
 
一、システム要求
Microsoft SQL Server 2008-2012データベース
zabbix 3.2-34
 
二、テンプレートモニタデータの特徴
  • MS SQLサービスの状態
  • サーバ統計(合計70項目):
  • メモリ
  • キャッシュ
  • バッファマネージャ
  • アクセス方法
  • ロック
  • エラーと失敗の仕事
  • ログサイズ
  • は、Powershell(Zabbixエージェント)またはODBCによって直接データベース発見
  • を行う。
    三、設置配置
    本論文の構成ファイルのパスはC:\zabbix\zabbrix_agentd.win.com nf
    本稿のスクリプトファイルのパスはC:\zabbix\scripts\
     
    1、以下の構成情報をzabbix_に追加する。agentd.win.com nfの一番後ろ:
    UserParameeter=mssql.db.discovery,powershell-NoProfile-Execution Policy Bypeass-File"C:\zabbix\scripts\mssql.psp 1"
    UserParameeter=mssql.version、パワーシェル-NoProfile-Execution Policy Bypass-File"C:\zabripts\mssql_version.ps 1" 
     
    2、パワーシェルスクリプト(`mssql*.ps 1`)をスクリプトフォルダCにコピーします。\zabbix\scripts\
    mssqlbasename.ps 1設定情報
    #функция для приведения к формату который понимает zabbix / the function is to bring to the format understands zabbix
    function convertto-encoding ([string]$from, [string]$to){
        begin{
            $encfrom = [system.text.encoding]::getencoding($from)
            $encto = [system.text.encoding]::getencoding($to)
        }
        process{
            $bytes = $encto.getbytes($_)
            $bytes = [system.text.encoding]::convert($encfrom, $encto, $bytes)
            $encto.getstring($bytes)
        }
    }
    
    #Задаем переменные для подключение к MSSQL. $uid и $pwd нужны для проверки подлинности windows / We define the variables for connecting to MS SQL. $uid и $pwd need to authenticate windows
    $SQLServer = $(hostname.exe)
    #$uid = "Login" 
    #$pwd = "Password"
    
    #Создаем подключение к MSSQL / Create a connection to MSSQL
    
    #Если проверка подлинности windows / If windows authentication
    #$connectionString = "Server = $SQLServer; User ID = $uid; Password = $pwd;"
    
    #Если Интегрированная проверка подлинности / If integrated authentication
    $connectionString = "Server = $SQLServer; Integrated Security = True;"
    
    $connection = New-Object System.Data.SqlClient.SqlConnection
    $connection.ConnectionString = $connectionString
    $connection.Open()
    
    #Создаем запрос непосредственно к MSSQL / Create a request directly to MSSQL
    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand  
    $SqlCmd.CommandText = "SELECT name FROM  sysdatabases"
    $SqlCmd.Connection = $Connection
    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $SqlAdapter.SelectCommand = $SqlCmd
    $DataSet = New-Object System.Data.DataSet
    $SqlAdapter.Fill($DataSet) > $null
    $Connection.Close()
    
    #Получили список баз. Записываем в переменную. / We get a list of databases. Write to the variable.
    $basename = $DataSet.Tables[0]
    
    #Парсим и передаем список баз в zabbix. В последней строке нужно вывести имя бызы без запятой в конце. / Parse and pass a list of databases in zabbix. In the last line need to display the database name without a comma at the end.
    $idx = 1
    write-host "{"
    write-host " `"data`":[`n"
    foreach ($name in $basename)
    {
        if ($idx -lt $basename.Rows.Count)
            {
                $line= "{ `"{#DBNAME}`" : `"" + $name.name + "`" }," | convertto-encoding "cp866" "utf-8"
                write-host $line
            }
        elseif ($idx -ge $basename.Rows.Count)
            {
                $line= "{ `"{#DBNAME}`" : `"" + $name.name + "`" }" | convertto-encoding "cp866" "utf-8"
                write-host $line
            }
        $idx++;
    }
    
     write-host
    write-host " ]"
    write-host "}"
     
    mssqlversion.ps 1シナリオの内容
    $ver = Invoke-Sqlcmd -Query "SELECT @@VERSION;" -QueryTimeout 3
    
    write-host $ver.Column1
     
    3、Web(プロファイル->テンプレート->導入)によりXMLテンプレートファイル(`zbxmutemplatemumssql.xml`)をZabbixに導入する。
    zbx_template_mssql.xmlテンプレートの内容:
    zbx_template_mssql.xmlテンプレートの内容が多すぎて、テンプレートのダウンロード住所:http://down.51cto.com/data/2452214
     
     
    4、正規表現を管理->>正規表現(右プルダウンリスト)に設定します。
    Name: Databases for discovery
    Expression: ^(master|model|msdb|ReportServer|ReportServerTempDB|tempdb)$
    Type: Result is FALSE[object Object]
    5、「管理-」レギュラー値マップ(右プルダウンリスト)に「MS SQL Serverデータベース状態」の値マップを導入します。通常は自動的に導入されます。ない場合は手動で追加してください。
    四、SQLServer性能カウンタ:
    1、Access Methods(アクセス方法)は、データベースにアクセスする論理ページを監視するための方法です。
    Forwarded Records/sec
    秒速順記録ポインタで抽出された記録数。
    Page splity/sec(ページ分割/秒)
    データ更新操作による毎秒ページ分割の数。
    Workfiles Created/sec:
    作成された作業ファイルの数。例えば、ワークファイルは、ハッシュ接続およびハッシュアグリゲーションの一時的結果を格納するために使用されてもよい。
    Worktables Created/sec
    作成した時刻表の数。 例えば、スプレッドチェック、LOB変数、XML変数、およびラベルに関する一時的な結果を格納するためにシートが使用されてもよい。
    フルスクリーン/sec(全表スキャン/秒)
    毎秒無制限の完全走査数。基本テーブルスキャンまたは全インデックススキャンとすることができます。このカウンタが1または2より高い値を示している場合は、全テーブルスキャンが必要かどうかを確認するために、クエリーを分析し、S Q Lクエリを最適化することができますか?
    2、Buffer Manager(バッファマネージャ):
     
  • はデータページのメモリを記憶する。
  • 監視用 SQL Server データベースページの読み込みと書き込み時の物理I/Oのカウンタです。
  • は、固体ハードディスク(SSD)などの高速不揮発性メモリを介してバッファ領域のキャッシュを拡張するためのバッファを拡張するために使用される。監視する SQL Server 使用するメモリとカウンタは確定に役立ちます。
  • は物理メモリ不足のボトルネックがあるかどうか。 もし SQL Server 頻繁にアクセスしたデータをキャッシュに保存できない場合は、ディスクからデータを検索する必要があります。
  • は、より多くのメモリを追加することによって、またはデータキャッシュを追加することができるかどうか SQL Server 内部構造の利用可能メモリは、クエリ性能を向上させる。
  • SQL Server ディスクからデータを読み出す周波数が必要です。 物理I/Oは他の動作(例えばメモリアクセス)に比べてかなりの時間がかかります。 物理I/Oをできるだけ減らすことで照会性能を向上させることができます。
  •  
    Buffer Cache Hit Ratio
    「バッファ」(バッファer Cache/Buffer Pool)で読んだことのないページはバッファ全体のページの比率を占めています。ディスクから読み込むページのパーセンテージを必要とせずにキャッシュで見つけられます。この比率はキャッシュの命中総数をSQL Serverインスタンスから起動した後のキャッシュの検索総数で割ったものです。長い時間を経て、この比率の変化は小さい。キャッシュからデータを読むのはディスクからデータを読むよりもはるかに小さいので、一般的にはこの値が高いことが望ましいです。通常は、SQL Serverの利用可能メモリ数を増やすことによりキャッシュ命中率を向上させることができる。カウンタ値はアプリケーションによって異なりますが、90%以上がいいです。メモリを増やすと、この値は90%を超え続け、90%以上のデータ要求がデータバッファから必要なデータを得ることができることを示しています。
     
     
    Lazy Writes/sec(不活性書き込み/秒)
    不活性書き込みプロセスは、1秒間に書いたバッファの数です。値は0が一番いいです
    Page Reads/sec:
    毎秒発行される物理データベースページの読み込み数。この統計情報は、すべてのデータベース間の物理ページの合計を示しています。物理I/Oのオーバーヘッドが大きいので、より大きなデータキャッシュ、スマートインデックス、より効率的なクエリ、またはデータベース設計を変更することにより、オーバーヘッドを最小にすることができる。
    Page Writes/sec(.書くページ/秒)
    毎秒実行される物理データベースのページ数。
    3、ロック(ロック)は個別資源タイプのSQL Serverロックに関する情報を提供する。
     
      SQL Serverリソースにロックをかけて、複数のトランザクションの同時使用を防ぐ。例えば、一つの列(X)が一つのテーブルのある行にロックされている場合、このロックが解除される前に、他のものはこの行を修正してはいけません。ロックをできるだけ少なく使うことで、合併性を高め、性能を向上させます。Locksオブジェクトの複数のインスタンスは同時に監視されてもよく、各インスタンスは、1つのリソースタイプ上の1つのロックを表す。
    Number of Deadlocks/sec
    (デッドロックの数/秒) デッドロックによるロック要求の数
    Average Wait Time(ms)
    (平均待ち時間(ミリ秒)スレッド待ちタイプのロックの平均待ち時間
    ロックレクサス/sec
    (ロック要求/秒)一秒当たりのロック要求の数。
    ロックTimeouts/sec
    毎秒タイムアウトのロック要求数は、NOWAITロックに対する要求を含む。
     
    https://blog.51cto.com/allmrys/2177442
    ================================================================================
    APMアプリケーション性能モニタと管理ソフト
    Gartnerは「応用性能監視魔力象限」の分析報告で、ITの運営・維持管理はアプリケーションを中心とする傾向があると指摘していますが、大多数のIT運営チームはインフラの管理業務(リアルと仮想サーバ、ネットワークとストレージ)を主な業務としています。したがって、インフラストラクチャのコンポーネントを管理する際に、アプリケーションの性能に対する影響を考慮しないと、従来のIT運営管理に投入された資金と仕事の意味が分かりにくくなります。
    卓豪Application s Managerは、企業の各種業務監視管理ニーズに対応したアプリケーション性能監視管理ソリューションです。非監視エージェント(Agentless)の最新技術を採用し、容易に展開されるWebアーキテクチャは、異なるサービスシステム、アプリケーション、ネットワークサービス(サーバ、オペレーティングシステム、データベース、Webサービス、ミドルウェア、メールシステム、その他のキーアプリケーションなど)に対して、多角的、深層的、より鮮明な遠隔監視と管理を行い、金融、電力、電力、政府、タバコ、大企業などのユーザーは各種の重要業務とデータセンターの監視管理需要に対して。無料版は監視カメラ5つのオブジェクトをサポートします。
     
    https://www.manageengine.cn/products/applications_manager/