2012年8月7日火曜日

【Zabbix 1.8.13】zapcatでJMXを監視する方法

zabbixのバージョン2系ではJMXを監視するのにJavaProxyというProxyを立てることで監視できるようになりますが、1.8系の場合はまだその機能がないです
その場合には「zapcat」と呼ばれるモジュールを使うことでそのモジュールが動作しているポート上でJMXを動作させることでJMXを監視することができるようになります

何はともあれ設定方法です

■設定方法
・zapcatをインストール
http://sourceforge.jp/projects/sfnet_zapcat/downloads/zapcat/zapcat-1.2/zapcat-1.2.zip/
unzip zapcat-1.2.zip
cd zapcat-1.2
mv zapcat-1.2.war /usr/local/tomcat/webapps/
service tomcat restart
http://yoshi3:8080/zapcat-1.2/にアクセス
zapcatのウェルカム画面が表示されれば10052で監視できるようになっています

・JMXの設定
今回はTomcatにJMXの設定を入れ込み値を監視してみます
ps aux | grep java | grep jmx
→何も表示されないことを確認
cd /usr/local/tomcat/bin
touch setenv.sh
chmod 755 setenv.sh
emacs setenv.sh
以下を記載する
---
export CATALINA_OPTS="-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9012 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false"
---
→ポート番号は何でもOK
service tomcat start
ps aux | grep java | grep jmx
→JMXの設定が入っている状態でTomcatが起動していることを確認

・Zabbix Serverでホストの設定
zabbixのホスト作成で10052をZabbixエージェントのポートしてホストを作成する
その際にテンプレートの追加で「Template Java」を追加する
エージェントの起動が確認できたら、各アイテム項目が監視できているか確認する
(少しかけているが気にしない)
グラフはすでにいくつか登録してあるので、スクリーンに登録するといいと思います

参考サイト
http://d.hatena.ne.jp/fat47/20110926

基本は2系を使うのがいいと思うんですが、どうしても1.8系でないと・・・という場合には参考にしてみてください
お試しあれー

2012年8月6日月曜日

【Zabbix】UserParameterを指定して好きな値を監視する方法

■バージョン
Zabbix 1.8.13

■zabbix-agentの設定
emacs /etc/zabbix/zabbix_agentd.conf
⇒zabbix_agent.confではないので注意しましょう
以下を追記します
UserParameter=snmpwalk.memTotalReal,snmpwalk -OnQ -v 2c -c public -t 2 -r 1 yoshi3:161 .1.3.6.1.4.1.2021.4.15.0
⇒今回はsnmpでメモリ上でキャッシュしているサイズを取得します
service zabbix-agent restart
zabbix_get -s 127.0.0.1 -ksnmpwalk.memTotalReal
⇒zabbix_getコマンドで設定したUserParameterが取得できているか確認します
⇒-sはホスト名でも指定できますが、うまく取得できない場合があるのでIPアドレスで確認しましょう

■zabbix-serverの設定(WebUIからの設定)

上記の設定のようにアイテムをZabbixのWebUIから新規作成しましょう
アイテムを新規作成する画面に行く方法は
「設定」→「テンプレート」のアイテム欄ををクリックすると
右上に「アイテムの作成」という欄が表示されます

これでテンプレートにアイテムを作成すれば
そのテンプレートを設定されたホストは今回作成したアイテムを監視できるようになります
今回はsnmpでの監視をするようにしたので当たり前ですが、監視対象のサーバにはnet-snmpがインストールされている必要があります

UserParameterを使用すればなんでも好きなモノが監視できるようになりますね
お試しあれ

2012年8月5日日曜日

Redmineの活動ページで「Wiki編集」「メッセージ」「作業時間の記録」をデフォルトで表示する方法

Redmineの活動ページの表示で「Wiki編集」「メッセージ」「作業時間の記録」はデフォルト設定ではチェックがONになっておらず、わざわざONにして再表示する必要があります

またログインをしなおしたりしてもチェックが外れてしまいます

ので今回はそれをデフォルトでチェックONにする方法を紹介します

解決方法は直接ソースコードを編集するしかありませんw
Redmineがインストールしてあるフォルダの
lib/redmine.rb
を編集します

編集するのは以下の部分です

Redmine::Activity.map do |activity|
  activity.register :issues, :class_name => %w(Issue Journal)
  activity.register :changesets
  activity.register :news
  activity.register :documents, :class_name => %w(Document Attachment)
  activity.register :files, :class_name => 'Attachment'
  activity.register :wiki_edits, :class_name => 'WikiContent::Version', :default => true
  activity.register :messages, :default => true
  activity.register :time_entries, :default => true
end

下3行赤字の部分がデフォルトではfalseになっているためチェックが入っていません
ここをtrueの設定にすることでデフォルトでONになっています

どうしてUIから設定できるようにしなかったんだw

ちなみにRedmineのバージョンはちょっと古くて1.4.3.stableですw(それがいけないのかもねw)

2012年8月4日土曜日

【Ruby 1.9】ArgumentError: invalid byte sequence in UTF-8

以下2つで対応できました

「.encode("UTF-8","UTF-8").gsub(/\r/,"") 」を文字列の最後につける
「accept-charset="UTF-8" enctype="UTF-8"」をformの指定で行う

今回のポイントはformからのリクエスト送信ってことですかね
ちゃんとHTMLのformタグの中に文字コードを指定する必要があったみたい

2012年8月2日木曜日

No more variables left in this MIB View (It is past the end of the MIB tree)

のときの速攻対処方法

emacs /etc/snmp/snmpd.conf

に以下を追加

view systemview included .1.3.6.1.

完了したら再起動

service snmpd restart

で値が取得できるようになるはずです

PoderosaのマクロでSSHログイン後にコマンド実行する方法

import Poderosa;
import Poderosa.ConnectionParam;
import Poderosa.Terminal;
import Poderosa.Macro;
import Poderosa.View;
import System.Threading;

var env = new Environment();

// hosts info
var hosts = [{
  hostname: 'hostname',
  ip: 'xxx.xxx.xxx.xxx',
  id: 'username',
  pass: 'password',
  cmd: 'ls -ltr',
  title: 'ls'
 }
]

// Login
var l = hosts.length;
for (var i = 0; i < l; i++) {
 var con = connect(hosts[i].hostname, ConnectionMethod.SSH2, 22, EncodingType.UTF8, hosts[i].id, hosts[i].pass, hosts[i].title);
 wait("$");
 sendln(hosts[i].cmd);
}

function sendln(s) {
 con.TransmitLn(s);
}
 
function wait(s) {
 Thread.Sleep(10);
 var res = con.ReceiveData();
 while(res.indexOf(s) == -1) {
 Thread.Sleep(10);
  res += con.ReceiveData();
 }
}

function connect(host, method, port, encoding, id, password, title) {
 var param = new SSHTerminalParam(method, host, id, password);
 param.Caption = title+"["+host+"]";
 param.Port = port;
 param.Encoding = encoding;
 var connection = env.Connections.Open(param);
 return connection;
}

wait("$")は「$」という文字列が表示されるまで待つメソッドです
たまーに動作しないこともあるので、Thread.Sleep(5000);とかで普通に5秒止めたほうがいい場合もあります
sendlnメソッドは引数で渡したコマンドを実行するメソッドです

あとは以下をダウンロードしてPoderosaにマクロを登録するだけです

http://www.poderosa.org/download/plugins/Macro402.tar.gz
マクロの登録方法は検索すれば出てくると思いますw

参考までに

2012年8月1日水曜日

【Windows】コマンドプロンプトで空白やハイフンを含むファイルの内容を一行ずつ表示するバッチファイル

ちょっと苦戦したのでメモ

@REM Read File and echo
@echo off
for /F "EOL=# TOKENS=* " %%i in (.\test.txt) do @echo %%i

ポイントはEOFとTOKENSの指定でした。。
誰かのためになれば・・・orz