httpプロキシ経由でgitリポジトリをhttpsプロトコルから取得する時の注意(Ubuntu)
proxy経由で https://git-wip-us.apache.org/repos/asf/deltacloud.git
をcloneしようとして失敗した。
以下の記事によると、Ubuntuに標準でインストールされているlibcurl3-gnutlsの不具合らしい?
libcurl3-gnutls-7.21からlibcurl3-gnutls-7.22にバージョンアップすることでgit cloneに成功しました。
http://stackoverflow.com/questions/8403792/git-behind-proxy-remote-head-refers-to-nonexistent-ref-unable-to-checkout
失敗した時に表示されるエラーはこのような感じ
$ git clone https://git-wip-us.apache.org/repos/asf/deltacloud.git Cloning into deltacloud... warning: remote HEAD refers to nonexistent ref, unable to checkout.
http://packages.ubuntu.com/en/precise/amd64/libp11-kit0/download
http://packages.ubuntu.com/en/precise/amd64/libgnutls26/download
http://packages.ubuntu.com/en/precise/amd64/libcurl3-gnutls/download
ここから必要なlibp11-kit0,libgnutls26,libcurl3-gnutlsをダウンロード。
# dpkg -i libp11-kit0_0.10-1_amd64.deb libgnutls26_2.12.14-5ubuntu2_amd64.deb libcurl3-gnutls_7.22.0-3ubuntu2_amd64.deb
でインストールします。
git cloneする前に、gitでプロキシの設定を行なって下さい。
$ git config --global http.proxy "http://[proxy ip]:[port]"
あとは、通常のgit cloneを実行します。
$ git clone https://git-wip-us.apache.org/repos/asf/deltacloud.git
ちなみに、corkscrewなどの設定を行なって、gitプロトコル経由でcloneしてくる場合には必要ない対応です。
今回試した環境はUbuntu 11.10の64bit版です。
記事中に示したサイトでは11.04でも同様に発生するようです。
vmwareのsnmpの拡張MIBを設定する
VMware ESXiの情報をsnmpwalkなどで取得すると、このような感じでどの値が何を示しているのかわからない。
SNMPv2-SMI::enterprises.6876.2.1.1.2.32 = STRING: "test-server" SNMPv2-SMI::enterprises.6876.2.1.1.3.32 = STRING: "/vmfs/volumes/4zzz7faxxx6-xxxxxx2-cxxxx-4xxxxf6e3a/test-server/test-server.vmx" SNMPv2-SMI::enterprises.6876.2.1.1.4.32 = STRING: "centos64Guest" SNMPv2-SMI::enterprises.6876.2.1.1.5.32 = INTEGER: 2048 SNMPv2-SMI::enterprises.6876.2.1.1.6.32 = STRING: "poweredOn" SNMPv2-SMI::enterprises.6876.2.1.1.7.32 = INTEGER: 32 SNMPv2-SMI::enterprises.6876.2.1.1.8.32 = STRING: "running" SNMPv2-SMI::enterprises.6876.2.1.1.9.32 = INTEGER: 1 SNMPv2-SMI::enterprises.6876.2.2.1.3.32.1000 = STRING: "SCSI Controller 0" SNMPv2-SMI::enterprises.6876.2.2.1.4.32.1000 = STRING: "lsilogic" SNMPv2-SMI::enterprises.6876.2.3.1.3.32.2000 = STRING: "Hard Disk 1" SNMPv2-SMI::enterprises.6876.2.4.1.3.32.4000 = STRING: "Ethernet 1" SNMPv2-SMI::enterprises.6876.2.4.1.3.32.4001 = STRING: "Ethernet 2" SNMPv2-SMI::enterprises.6876.2.4.1.4.32.4000 = STRING: "internal" SNMPv2-SMI::enterprises.6876.2.4.1.4.32.4001 = STRING: "service" SNMPv2-SMI::enterprises.6876.2.4.1.5.32.4000 = STRING: "monitor_dev" SNMPv2-SMI::enterprises.6876.2.4.1.5.32.4001 = STRING: "monitor_dev" SNMPv2-SMI::enterprises.6876.2.4.1.6.32.4000 = STRING: "true" SNMPv2-SMI::enterprises.6876.2.4.1.6.32.4001 = STRING: "true" SNMPv2-SMI::enterprises.6876.2.4.1.7.32.4000 = Hex-STRING: 00 0C 29 Ex Cx 8x SNMPv2-SMI::enterprises.6876.2.4.1.7.32.4001 = Hex-STRING: 00 0C 29 Ex Cx 9x SNMPv2-SMI::enterprises.6876.2.6.1.3.32.3002 = STRING: "[] /vmfs/volumes/3c3xxxxe8-fvvvv42a-1xxx0-vvvvdcb26d3a/packages/4.1.0/vmtools/linux.iso" SNMPv2-SMI::enterprises.6876.2.6.1.4.32.3002 = STRING: "false"
そこで、VMwareの公式サイトで公開されているMIBファイルを取得し、
もう少しわかりやすく表示できるようにしてみます。
http://downloads.vmware.com/d/details/esx40_snmp_mib_dt/ZHcqYmQqaCViZCpwcA==
ここからMIBファイル群をダウンロードします。
MIBファイルをsnmpwalkを実行する際に読み込まれるように設定します。
MIBファイル取得&配置
$ cd /tmp $ wget http://download3.vmware.com/software/esx/VMware-esx-mibs-1.0.1-237711.zip $ unzip VMware-esx-mibs-1.0.1-237711.zip $ mkdir -P ~/.snmp/mibs $ mv /tmp/esx ~/.snmp/mibs/esx4
MIBファイル読み込み設定
$ vim ~/.snmp/snmp.conf mibdirs /usr/share/snmp/mibs:$HOME/.snmp/mibs/mibs/esx4 mibs all
この設定をしてsnmpwalkを実行してみると以下のようにMIBの情報が反映されて表示されます。
VMWARE-VMINFO-MIB::vmwVmDisplayName.32 = STRING: test-server VMWARE-VMINFO-MIB::vmwVmConfigFile.32 = STRING: /vmfs/volumes/4zzz7faxxx6-xxxxxx2-cxxxx-4xxxxf6e3a/test-server/test-server.vmx VMWARE-VMINFO-MIB::vmwVmGuestOS.32 = STRING: centos64Guest VMWARE-VMINFO-MIB::vmwVmMemSize.32 = INTEGER: 2048 megabytes VMWARE-VMINFO-MIB::vmwVmState.32 = STRING: poweredOn VMWARE-VMINFO-MIB::vmwVmVMID.32 = INTEGER: 32 VMWARE-VMINFO-MIB::vmwVmGuestState.32 = STRING: running VMWARE-VMINFO-MIB::vmwVmCpus.32 = INTEGER: 1 VMWARE-VMINFO-MIB::vmwHbaNum.32.1000 = STRING: SCSI Controller 0 VMWARE-VMINFO-MIB::vmwHbaVirtDev.32.1000 = STRING: lsilogic VMWARE-VMINFO-MIB::vmwHbaTgtNum.32.2000 = STRING: Hard Disk 1 VMWARE-VMINFO-MIB::vmwVmNetNum.32.4000 = STRING: Ethernet 1 VMWARE-VMINFO-MIB::vmwVmNetNum.32.4001 = STRING: Ethernet 2 VMWARE-VMINFO-MIB::vmwVmNetName.32.4000 = STRING: internal VMWARE-VMINFO-MIB::vmwVmNetName.32.4001 = STRING: service VMWARE-VMINFO-MIB::vmwVmNetConnType.32.4000 = STRING: monitor_dev VMWARE-VMINFO-MIB::vmwVmNetConnType.32.4001 = STRING: monitor_dev VMWARE-VMINFO-MIB::vmwVmNetConnected.32.4000 = STRING: true VMWARE-VMINFO-MIB::vmwVmNetConnected.32.4001 = STRING: true VMWARE-VMINFO-MIB::vmwVmMAC.32.4000 = STRING: 0:c:29:ex:cx:8x VMWARE-VMINFO-MIB::vmwVmMAC.32.4001 = STRING: 0:c:29:ex:cx:9x VMWARE-VMINFO-MIB::vmwCdromName.32.3002 = STRING: [] /vmfs/volumes/3c3xxxxe8-fvvvv42a-1xxx0-vvvvdcb26d3a/packages/4.1.0/vmtools/linux.iso VMWARE-VMINFO-MIB::vmwCdromConnected.32.3002 = STRING: false
ちなみに上記のMIBファイルはVMwareESXi4.0,4.1に対応したものです。
このMIBファイルでVMwareESXi5.0のSNMP情報を取得すると、ある程度表示はされるようですが、
一部詳細に表示できない項目がありました。
4系のMIBファイルで5系のSNMPの項目を取得した場合
VMWARE-ENV-MIB::vmwEnv.100.0 = INTEGER: 3 VMWARE-ENV-MIB::vmwEnv.101.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnv.102.0 = Timeticks: (0) 0:00:00.00 VMWARE-ENV-MIB::vmwEnv.103.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnv.104.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnv.105.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnv.106.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnv.107.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnv.108.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnv.109.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnv.110.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnv.111.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnv.111.0 = No more variables left in this MIB View (It is past the end of the MIB tree)
5系のMIBファイルを適用した場合
VMWARE-ENV-MIB::vmwEnvSource.0 = INTEGER: indications(3) VMWARE-ENV-MIB::vmwEnvInIndications.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnvLastIn.0 = Timeticks: (0) 0:00:00.00 VMWARE-ENV-MIB::vmwEnvOutNotifications.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnvInErrs.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnvIndOidErrs.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnvCvtValueErrs.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnvCvtSyntaxErrs.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnvCvtOidErrs.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnvGetClassErrs.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnvPropertySkips.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnvIndicationSkips.0 = Counter32: 0 VMWARE-ENV-MIB::vmwEnvIndicationSkips.0 = No more variables left in this MIB View (It is past the end of the MIB tree)
これらの項目は5系から追加で取得できるようになった項目のようです。
この項目に対しては5系のMIBファイルの適用が必要なので、可能であれば最新のMIBファイルを適用させておくのがいいかと思います。
VMwareESXi5.0に対応したMIBファイルは以下のページからダウンロード可能です。
5.0のMIBをダウンロードするにはログインが必要でした。
http://downloads.vmware.com/d/details/snmp_mibs/dHRAYnQlKmhiZHAlJQ==
これはVMware ESXiに限ったことではないので、
ネットワーク機器など拡張MIBが含まれる製品であればベンダーのサイトからMIBファイルを取得してきて同様にMIBファイルを配置すれば見れるようになります。
Hatena Blog登録
とりあえず登録してみた。
IPMItoolで接続できない時に状況を確認する方法
ipmitoolで接続できない時「-vv」オプションをつけて実行すると詳細な情報が見れていいです。
$ ipmitool -I lan -H xxx.xxx.xxx.xxx -U username -P password chassis power status -vv ipmi_lan_send_cmd:opened=[0], open=[4519072] IPMI LAN host xxx.xxx.xxx.xxx port 623 Sending IPMI/RMCP presence ping packet Received IPMI/RMCP response packet: IPMI Supported ASF Version 1.0 RMCP Version 1.0 RMCP Sequence 255 IANA Enterprise 206158434750 ipmi_lan_send_cmd:opened=[1], open=[4519072] Channel 02 Authentication Capabilities: Privilege Level : ADMINISTRATOR Auth Types : Per-msg auth : disabled User level auth : enabled Non-null users : enabled Null users : disabled Anonymous login : disabled Authentication type NONE not supported ipmi_lan_send_cmd:opened=[1], open=[4519072] Channel 02 Authentication Capabilities: Privilege Level : ADMINISTRATOR Auth Types : Per-msg auth : disabled User level auth : enabled Non-null users : enabled Null users : disabled Anonymous login : disabled Authentication type NONE not supported Error: Unable to establish LAN session Failed to open LAN interface Unable to get Chassis Power Status
こういった結果になった場合、
サーバ側で許可するAuth Typeの設定がされておらず、
どんなAuth Typeでリクエストを投げても許可されていないのではじかれる。
正常に取得できる場合は以下のような結果が返ってくる
$ ipmitool -I lan -H xxx.xxx.xxx.xxx -U username -P password chassis power status -vv ipmi_lan_send_cmd:opened=[0], open=[4508064] IPMI LAN host xxx.xxx.xxx.xxx port 623 Sending IPMI/RMCP presence ping packet Received IPMI/RMCP response packet: IPMI Supported ASF Version 1.0 RMCP Version 1.0 RMCP Sequence 255 IANA Enterprise 4542 ipmi_lan_send_cmd:opened=[1], open=[4508064] Channel 01 Authentication Capabilities: Privilege Level : ADMINISTRATOR Auth Types : MD2 MD5 Per-msg auth : disabled User level auth : enabled Non-null users : enabled Null users : disabled Anonymous login : disabled Proceeding with AuthType MD5 ipmi_lan_send_cmd:opened=[1], open=[4508064] Opening Session Session ID : 0200af00 Challenge : f5cd2e7c1ff758b43b1374d8663e9f88 Privilege Level : ADMINISTRATOR Auth Type : MD5 ipmi_lan_send_cmd:opened=[1], open=[4508064] Session Activated Auth Type : NONE Max Priv Level : ADMINISTRATOR Session ID : 0200b000 Inbound Seq : 00000001 ipmi_lan_send_cmd:opened=[1], open=[4508064] Set Session Privilege Level to ADMINISTRATOR opened=[1], open=[4508064] Chassis Power is on ipmi_lan_send_cmd:opened=[1], open=[4508064] Closed Session 0200b000
サーバ側ではMD2とMD5のAuth Typeが有効になっていて、
MD5でリクエストを投げると正しく応答が返ってきているのがわかる。
そもそもIPMIのIPアドレスが無効であればipmipingチェックで応答が返ってこない。
$ ipmitool -I lan -H xxx.xxx.xxx.xxx -U username -P password chassis power status -vv ipmi_lan_send_cmd:opened=[0], open=[4519072] IPMI LAN host xxx.xxx.xxx.xxx port 623 Sending IPMI/RMCP presence ping packet ipmi_lan_send_cmd:opened=[1], open=[4519072]
トラブルシューティングで使えそうです。
PHP Bug Lostを試してみた
PHP Bug Lostとは、PHPの開発に有用なログ情報やSQL実行状況、変数の情報などをブラウザから簡単に確認できるようにする開発ツールです。
導入
以下のサイトからPHP Bug Lostのソースコードをダウンロードしてきます。
http://pbl.elgatonaranja.com/home
取得したzipファイルを開発環境内の適当な場所に展開します。
開発コードへの埋め込み
導入が済めば、開発中のphpソースコード内に以下の2行を追記するだけで利用することが可能です。
include 'PHPBugLost.0.3/phpBugLost.0.3.php'; ←パスは環境に応じて変更して下さい ・・・コード本文 echo bl_debug();
Hello World!
ブラウザから見るとこんな感じです。
ZabbixでSNMP監視をする際の主要MIB(Linux,Windows,Ciscoスイッチ)
SNMP監視でよく使うOID、MIBの一覧をシステム毎にまとめてみました。
実際に監視するには、CPUやメモリ、ディスクそれぞれMIBの最後につけるindexを付与して下さい。
LinuxはCentOS、WindowsはWindowsServer2008,CiscoスイッチはCatalyst3560を対象としています。
OSや機器によっては異なることもあるかと思います。
なので、以下の情報は参考程度にご覧下さい。
システム種別 | 監視項目 | OID | MIB |
---|---|---|---|
Linux | CPU関連 | .1.3.6.1.4.1.2021.11.50 | UCD-SNMP-MIB::ssCpuRawUser |
.1.3.6.1.4.1.2021.11.52 | UCD-SNMP-MIB::ssCpuRawSystem | ||
.1.3.6.1.4.1.2021.10.1.3.1 | UCD-SNMP-MIB::laLoad | ||
Available Memory | .1.3.6.1.4.1.2021.4.6 | UCD-SNMP-MIB::memAvailReal | |
.1.3.6.1.4.1.2021.4.14 | UCD-SNMP-MIB::memBuffer | ||
.1.3.6.1.4.1.2021.4.15 | UCD-SNMP-MIB::memCache | ||
Disk Usage | .1.3.6.1.4.1.2021.9.1.6 | UCD-SNMP-MIB::dskTotal | |
※UCD-SNMP-MIB::dskPathの値から監視パーティション確認 | .1.3.6.1.4.1.2021.9.1.8 | UCD-SNMP-MIB::dskUsed | |
.1.3.6.1.4.1.2021.9.1.9 | UCD-SNMP-MIB::dskPercent | ||
Disk I/O | .1.3.6.1.4.1.2021.13.15.1.1.3 | UCD-DISKIO-MIB::diskIONRead | |
※UCD-DISKIO-MIB::diskIODeviceから監視デバイスを確認 | .1.3.6.1.4.1.2021.13.15.1.1.4 | UCD-DISKIO-MIB::diskIONWritten | |
Network IO | .1.3.6.1.2.1.2.2.1.10 | IF-MIB::ifInOctets | |
※IF-MIB::ifDescrの値から監視NICを確認 | .1.3.6.1.2.1.2.2.1.16 | IF-MIB::ifOutOctets | |
Windows | CPU (user usage) | .1.3.6.1.4.1.9600.1.1.5.1.6.6.95.84.111.116.97.108 | SNMPv2-SMI::enterprises.9600.1.1.5.1.6.6.95.84.111.116.97.108 |
CPU (system usage) | .1.3.6.1.4.1.9600.1.1.5.1.5.6.95.84.111.116.97.108 | SNMPv2-SMI::enterprises.9600.1.1.5.1.5.6.95.84.111.116.97.108 | |
CPU (Load Average) | .1.3.6.1.2.1.25.3.3.1.2 | HOST-RESOURCES-MIB::hrProcessorLoad | |
Memory | .1.3.6.1.2.1.25.2.3.1.5 | HOST-RESOURCES-MIB::hrStorageSize | |
※HOST-RESOURCES-MIB::hrStorageDescrの値から監視するメモリの種別を確認 | .1.3.6.1.2.1.25.2.3.1.6 | HOST-RESOURCES-MIB::hrStorageUsed | |
Disk Usage | .1.3.6.1.2.1.25.2.3.1.5 | HOST-RESOURCES-MIB::hrStorageSize | |
※HOST-RESOURCES-MIB::hrStorageDescrの値から監視するパーティションを確認 | .1.3.6.1.2.1.25.2.3.1.6 | HOST-RESOURCES-MIB::hrStorageUsed | |
Disk IO | .1.3.6.1.4.1.9600.1.1.1.1.15.2.67.58 | SNMPv2-SMI::enterprises.9600.1.1.1.1.15.2.67.58 (Read) | |
※Cドライブの一例。システム毎にindexが異なる場合があるので要確認 | .1.3.6.1.4.1.9600.1.1.1.1.18.2.67.58 | SNMPv2-SMI::enterprises.9600.1.1.1.1.18.2.67.58 (Write) | |
Network IO | .1.3.6.1.2.1.2.2.1.10 | IF-MIB::ifInOctets | |
※IF-MIB::ifDescrの値から監視するNICを確認 | .1.3.6.1.2.1.2.2.1.16 | IF-MIB::ifOutOctets | |
Ciscoスイッチ | CPU | .1.3.6.1.4.1.9.2.1.57.0 | OLD-CISCO-CPU-MIB::avgBusy1 (1分毎平均) |
Free Memory | .1.3.6.1.4.1.9.2.1.8.0 | OLD-CISCO-MEMORY-MIB::freeMem | |
Network IO | .1.3.6.1.2.1.31.1.1.1.6 | IF-MIB::ifHCInOctets | |
※監視したいポート毎に値取得 | .1.3.6.1.2.1.31.1.1.1.10 | IF-MIB::ifHCOutOctets |
※WindowsのCPUやDiskの使用率をチェックするためにはSNMP-informantを導入する必要があります。(http://www.snmp-informant.com/)
Zabbix2.0での新機能 -ホストインベントリ機能-
Zabbix2.0からの新機能ホストインベントリ機能
まだリリースはされていませんが、Zabbix2.0の開発版であるZabbix1.9.8を導入して、
新機能であるホストインベントリ機能について動作確認してみました。
ホストのOSやHWの情報を管理しておく機能ですが、
最初、Hinemosのような感じを想定していました。
Hinemosの場合、ホストに関するSNMPの情報を登録してFindを実行すると、
自動的にOSが何で、NICやディスクのデバイス名が取得できたり、ファイルシステム名が取得できたりします。
これと似たような感じでZabbixにホストの基本監視設定をしておくとその辺りの情報が取れるのかなと思っていました。
ホストインベントリの管理画面は下記のようになります。
ここでAutomaticというのがあるのでホスト設定をすれば自動的に取れるのかと思っていました。
しかし、Zabbixのホストインベントリ機能はHinemosのものとは少し違います。
Zabbixの基本設定をしただけでは何も取れて来ません。
2 Inventory [Zabbix Documentation 2.0]
ここのマニュアルを読んでわかりました。
アイテムに監視設定を入れて、その監視結果をどこのインベントリ項目に登録するかをあらかじめ設定しておきます。
すると、ホストインベントリに自動的に登録されていくといった機能のようです。
例えば以下のようなアイテムを登録します。
重要なのは、「Item will populate host inventory field」の設定です。
ここで、どのインベントリ項目に監視結果を登録するのかを指定します。
上記のアイテムの場合、OSの情報が取得できるので、「OS」を指定します。
すると、ホストインベントリの画面で以下の図のようにOSの情報が登録されます。
Automaticに設定していると手動で値を変更することはできないようになります。
しかし、アイテムの設定を変更してItem will populate host inventory fieldの指定を解除するとこのように編集できるようになります。
そのかわり、動的に変更させることはできません。
このようにアイテムの監視結果と連動してインベントリを管理していく機能になっています。
ですので、あらかじめホストインベントリを作成するための監視テンプレートを作っておけば、
そのテンプレートを有効にするだけで自動的にホストインベントリに登録されていくので便利に活用できます。
とりあえずホストインベントリを登録することはできました。
今後は、この登録した情報をどう活用できるかを試していきたいと思います。