天天看點

跟蹤OpenLDAP伺服器性能

原文:

ldap已經成為網際網路标準的目錄通路協定,并且用于通路一切從dns區域檔案到使用者帳戶資訊。随着企業和軟體供應商更多地依賴于ldap目錄伺服器,需要測量伺服器的吞吐量和性能變得勢在必行。本文将介紹可用于監視ldap目錄伺服器的運作狀況和性能優化的工具,并且将解釋随着時間的推移orca如何越來越多地應用到目錄伺服器的性能監測中。

在診斷一個ldap伺服器性能的時候,一開始通常是檢視日志檔案。 openldap伺服器提供了一個靈活的日志子系統,并定義了幾種日志級别來控制日志檔案的詳細程度:

 級别  描述

-1    啟動所有調試

0     不輸出調試

1     跟蹤功能調用

2     調試資料包處理

4     深度跟蹤調試

8     連接配接管理

16    列印資料包發送和接收

32    查詢過濾器處理

64    配置檔案處理

128   通路控制清單處理

256   統計日志連接配接/操作/結果

512   發送統計日志條目

1024  列印與shell後端的通信

2048  列印條目解析調試

 每個日志級别都可以附加,并且可以通過slapd.conf的“loglevel”指令進行配置,或者作為參數“-d”選項傳遞給slapd。下面的示例示範如何記錄通路控制清單和搜尋過濾器處理的詳細資訊:

 $ slapd -4 -f /etc/slapd.conf -u openldap -g openldap \

 openldap将預設記錄所有資訊到syslog的local4裝置。如果你想使用一個不同的裝置,你可以通過slapd的“-l”選項配置裝置名。

當ldap客戶機和伺服器通過路由器和防火牆分隔時,偶爾發生的網絡問題(例如,丢失的tcp段或損壞的crc)可能會導緻應用程式意外的行為。為了幫助衡量一個ldap客戶機和伺服器之間的延遲,我們開發了。ldap-ping.pl是用perl編寫的,并且依賴于time::hires, getopt::std, net::ldap

和net::ldaps子產品。

ldap-ping.pl的工作原理是打開一個tcp連接配接到目錄伺服器,發出匿名綁定,搜尋rootdse,并從伺服器取消綁定。這些操作使用perl的高分辨率計時器進行測量,并以“ping”的格式進行顯示:

 $ ldap-ping.pl -s ldap.prefetch.net -p 389 -d 10

 ldap-ping.pl腳本接受三個參數; “-s”選項表示連接配接到的伺服器,“-p”選項指定目錄伺服器監聽的tcp端口,而“-d”選項允許管理者指定探測之間的延遲。如果存在二進制pfiles檔案,腳本也将列印本地端口号。

openldap伺服器可以被配置為通過monitor branch的指令提供實時的性能統計資料。目前可用的統計資訊包括:發送的位元組數,傳回到客戶機的條目,連接配接到伺服器的總數,目前活動的連接配接,讀寫等待者,和個别的操作(例如,讀取、搜尋、修改)故障。下面的例子展示了slapd.conf中設定monitor branch的指令,并限制讀取通路的ip位址為192.168.1.8:

 database                   monitor

 一旦配置了monitor branch,我們可以使用“ldapsearch”工具檢視所有可用的統計資料:

 $ ldapsearch -x -b "cn=monitor"-h ldaps://ldap.prefetch.net objectclass=*

 我們可以也通過調整search base 擷取個别統計資訊:

 $ ldapsearch -lll -x -b "cn=current,cn=connections,cn=monitor" -h ldaps://ldap.prefetch.net objectclass=*

使用ldapsearch實用程式可以讓我們收集到某個時間點的性能名額快照,但是我們怎樣才能利用曆史資料呢?為了解決這個問題,我開發了。ldap-gather.pl腳本從monitor branch收集統計資訊,并将其寫入到傳遞的目錄參數中:

 $ ldap-gather.pl -s ldap.prefetch.net -p 389 -d /usr/local/orca/var/orca/ldapallator/ldap.prefetch.net:389

 初始調用ldap-gather.pl将産生一個文本檔案,包含一行描述資料頭,及一行實際資料:

 timestamp total_connections bytes_sent completed_operations referrals_sent entries_sent bind_operations unbind_operations add_operations delete_operations modify_operations compare_operations search_operations

 如果資料檔案不存在,ldap-gather.pl腳本将建立一個新的資料檔案,如果該檔案存在,将追加新的資料。該檔案名包含單詞“ldapallator”和一個日期戳(例如,filename -yyyy-mo-dd-index):

 $ ls -la | tail -1

 若要自動在相同的時間間隔采集資料,我們可以設定一個cron作業運作ldap -gather.pl:

 5,15,25,35,45,55 * * * * sh -c "/usr/local/etc/ldap-gather.pl

 這将使ldap-gather.pl每十分鐘收集一次性能資料。一旦資料被捕獲,我們可以使用orca來生成圖表性能報告。

該orca包中包含了一組perl腳本和配置檔案來繪制任意資料。 orca使用rrd存儲資料,并配置了一個配置檔案。 orca采用了典型的“configure”,“make”和“make install”步驟建構軟體包。 orca的perl腳本使用data::dumper、digest::md5、math::intervalsearch、 rrd和storable子產品,使用“makemodules_install”選項與現有的perl安裝整合。一旦安裝完成,可以執行“orca”,以確定成功地完成了建構過程:

 $ /usr/local/orca/bin/orca

 如果perl解釋器無法找到所需的子產品之一,你會看到各種各樣的控制台上的錯誤,并且程序将退出。一旦perl解釋器執行正常,我們可以建立一個orca配置檔案,并開始收集ldap-gather.pl的資料以便進一步分析。

orca配置檔案包含需要找到和生成圖形資料的指令。該配置檔案包含三個主要部分,第一部分定義了幾個變量(例如,base_dir,rrd_dir,html_dir),用于控制rrd和圖像檔案的存儲位置。本節還包含幾個變量來定義orca生成的網頁格式。

第二部分包含了一系列的“group”條目,它定義了生成圖表的資料。比對由ldap-gather.pl收集到的檔案的樣本組條目如下圖所示:

 group ldapallator {

 在這個例子中,“find_files”關鍵字告訴orca什麼檔案作為輸入使用(該檔案與一個正規表達式比對)。“interval”關鍵字定義的秒數表示在這組資料檔案更新之間的間隔時間,而“column_description”描述的是列描述的位置。“column_description”值“first_line”表示該欄位說明将位于每個檔案的第一行。

第三部分包含了一組plot表示圖表的各條目。下面的例子顯示了需要??繪制目錄伺服器的連接配接數的指令:

 plot {

  “plot”關鍵字定義一個新的圖,其中包含指定的标題“title”,“source”關鍵字表示此圖來源的“group”條目。每個圖形使用“data”關鍵字按名稱來引用資料的特定列(例如,total_connections是ldap-gather.pl收集的每個資料檔案的列);“data_type”關鍵字指定資料是否會被繪制為絕對值,以前的值的衍生物,或一個計數器。曲線圖的x軸的值可以用“data_min”和 “data_max”控制;最後在orca建立的png檔案中可讀的圖例描述。

可以調用orca來一次性處理資料并退出,或設定以一個守護程序運作,不斷檢查是否有新的資料。下面的示例運作orca一次性處理自上次調用以來所有的資料:

 $ /bin/sh -c "cd /usr/local/orca &&/usr/local/orca/bin/orca -once /usr/local/orca/lib/ldapallator.cfg"

 如果orca成功運作,會在“html_dir”目錄中生成html和png檔案。如果您不想以守護程序運作orca,你需要添加一個cron作業以便在相同的時間間隔内循環來處理的檔案:

 0 0 * * * /bin/sh -c "cd /usr/local/orca &&/usr/local/orca/bin/orca -once

         /usr/local/orca/lib/ldapallator.cfg" > /dev/null 2>&1

 該指令執行将在半夜運作orca的日常作業,并處理前一天的資料。包含了一個完整的orca配置檔案,圖4,圖5和6包含orca的連接配接總數、總運作數和傳回的條目數的圖表。

跟蹤OpenLDAP伺服器性能

圖4連接配接總數

跟蹤OpenLDAP伺服器性能

圖5 運作總數

跟蹤OpenLDAP伺服器性能

圖6 傳回的條目數

本文提供的幾種監視ldap伺服器技術的概述。在我們的例子中我們用的是openldap伺服器,但這些技術也适用于商業目錄伺服器。有關orca的其他資訊,它可以被用來繪制任意資料,以及其它的方面,請參見參考資料。如果您對本文章存在疑問或意見,請随時給作者發。

這篇文章參考了下面的内容:

感謝克萊麥克盧爾的ldap-ping.pl原創作品,還要感謝orca和openldap團隊成員的卓越貢獻!

繼續閱讀