zabbixデータ取得スクリプト

個人的なメモですが、zabbixのhistoryの値を手っ取り早く抽出する為にスクリプトを作りました。

itemidを入れて、tableを指定(historyを指定する事がほとんどですが、私の環境ではhistory_uintもあるので自分で指定する形にしました。historyに無かったらuintに探しに行くようにしてもいいですがあまり負荷をかけたくなかったのでシンプルなものにしました。

—–ここから—–
#!/bin/sh
#
#####################################################################
DATE=`date +%Y%m%d`

## pickup itemid select
echo ” please input id number ”

read id

echo ” please input table ”

read table

## id check
CHECK=`mysql –user=zabbix –password=zabbix zabbix -N -s -e ” select itemid fro
m items where itemid=$id ;”`
CHECK=`expr $CHECK + 0`

## exec
if [ $CHECK -gt 0 ] ; then
mysql –user=zabbix –password=zabbix zabbix -e “select from_unixtime(clock),val
ue from ${table} where itemid=${id} ;” > csvfile/${DATE}_${id}.csv
else
echo ” No id !!”
fi

exit

—–ここまで—–

時間指定とか期間指定とかもできますがとりあえずベースとしてシンプルなテンプレートにしてます。
あと当たり前ですがuserとpasswordとDBは自分の設定に合わせて下さい。
全部仮でzabbixにしてますけど。

zabbixアイテムでのCPU使用率の取得

linuxのCPU使用率をSNMPで取得しようとした際に特定のOIDで確認できるものではないので
計算を使って100からIdle値を引いた値で算出します。

まずは普通にCPUのIdleをOIDを登録します。
UCD-SNMP-MIB::ssCpuIdle.0(.1.3.6.1.4.1.2021.11.11.0)

ホスト:CPU使用率を取得したいホストを選択
説明:分かりやすく「CPUアイドル」とかにしてます
タイプ:SNMPv2エージェントを選択。ここは対向先のSNMPバージョンに合わせて下さい
SNMP OID:MIB値を登録。ここでは、UCD-SNMP-MIB::ssCpuIdle.0を取得しています
SNMPコミュニティ:設定しているSNMPのコミュニティ値。デフォルトはpublic
SNMPポート:SNMPのポートはデフォルトは161です
キー:全体を通したユニークな値を記載。判断する為の値で特に決まりはなさそうです
私はいつもOIDをそのまま入れてます
データ型:数値(整数)
データの形式:10進数
単位:%
乗数を使用:チェックなし
更新間隔(秒):ひとまず60にしてます。デフォルトは30
例外の更新間隔(秒):例外の更新間隔はありません
例外の更新間隔の作成:例外設定
ヒストリの保存期間(日):デフォルトは90日
トレンドの保存期間(日):デフォルトは365日
ステータス:有効
保存時の計算:なし
値のマッピングの使用:なし
アプリケーションの作成:なし
アプリケーション:なし

Idleの登録が完了したら続いて計算アイテムを登録します。

ホスト:先ほど設定したホストを選択
説明:分かりやすく「CPU使用率」とかにしてます
タイプ:計算を選択
式:100-last(.1.3.6.1.4.1.2021.11.11.0)
()内は先ほど登録したOIDを入れます。英表記で登録した場合は
100-last(“ssCpuIdle.0”)となります。
lastは直近の値。
データ型:数値(整数)
データの形式:10進数
単位:%
乗数を使用:チェックしない。
更新間隔(秒):30秒。
例外の更新間隔(秒):例外の更新間隔はありません
例外の更新間隔の作成:そのまま。
ヒストリの保存期間(日):90日
トレンドの保存期間(日):365日
ステータス:有効
保存時の計算:なし
値のマッピングの使用:なし
アプリケーションの作成:なし
アプリケーション:なし

これでCPU使用率が分かります。
使用率とIdleと2つ値をとるのでデータ量としては2倍になりますが、
元のIdle値は要らないのであれば保存期間をギリギリまで減らせば
多少は削減できると思います。
Idleは計算用だから1日あれば十分かも!?

—-追記—-
ついでにメモリの使用率についても下記のような計算で取得しています。

実メモリサイズ
UCD-SNMP-MIB::memTotalReal.0(.1.3.6.1.4.1.2021.4.5.0)
実メモリ空き容量:UCD-SNMP-MIB::memAvailReal.0(.1.3.6.1.4.1.2021.4.6.0)
バッファ使用量
UCD-SNMP-MIB::memBuffer.0(.1.3.6.1.4.1.2021.4.14.0)
キャッシュ使用量
UCD-SNMP-MIB::memCached.0(.1.3.6.1.4.1.2021.4.15.0)

計算部分
((last(.1.3.6.1.4.1.2021.4.5.0)-last(.1.3.6.1.4.1.2021.4.6.0)-last(.1.3.6.1.4.1.2021.4.14.0)-last(.1.3.6.1.4.1.2021.4.15.0))/last(.1.3.6.1.4.1.2021.4.5.0))*100

バッファやキャッシュ領域も空きとしています。
%にする為に使用量/最大値*100をしています。

コマンドで添付ファイル付メール送信

コマンドで添付ファイル付メールを送信したいなーという時があると思います。
ないとか言わないで下さい、きっとあります。
調べてみるとuuencodeというものを使えばできるらしい。
sharutilsパッケージに同梱されているようなのでyumでインストールを行います。

[root@cent5 ~]# yum install sharutils
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* addons: centos.mirror.secureax.com
* base: centos.mirror.secureax.com
* extras: centos.mirror.secureax.com
* updates: centos.mirror.secureax.com
Setting up Install Process
Resolving Dependencies
–> Running transaction check
—> Package sharutils.i386 0:4.6.1-2 set to be updated
–> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
sharutils i386 4.6.1-2 base 201 k

Transaction Summary
================================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 201 k
Is this ok [y/N]: y
Downloading Packages:
sharutils-4.6.1-2.i386.rpm | 201 kB 00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : sharutils 1/1

Installed:
sharutils.i386 0:4.6.1-2

Complete!
[root@cent5 ~]# uu
uuclient uudecode uuencode uuidgen uuserver

コマンドが表示されたので問題なさそう

さっそく送ってみる

[root@cent5 ~]# uuencode test.log test.log | mail -s ‘test’ test@neko.mydns.jp

問題なくメールは送れました。

スクリプト等で集計したファイルを送ったりできるのは便利ですよね!

squid dnsエラー 「All dnsserver processes are busy」

squidが重いと感じてログを見たら下記のようなdnsプロセス待ちのログが大量にでてました。

Mar 5 10:18:03 neko squid[22918]: WARNING: All dnsserver processes are busy.
Mar 5 10:18:03 neko squid[22918]: WARNING: up to 5 pending requests queued
Mar 5 10:20:12 neko squid[22918]: Consider increasing the number of dnsserver processes to at least 13 in your config file.
Mar 5 10:20:12 neko squid[22918]: dnsSubmit: queue overload, rejecting thumbnail.image.rakuten.co.jp
Mar 5 10:20:13 neko squid[22918]: dnsSubmit: queue overload, rejecting c1.rfihub.net

最近はdnsクエリ要求が多くなってきています。
squidではdnsプロセス数はデフォルト5なのでここをMAXの32まで上げます。
※コンパイルし直せばMAX値は上げれますが待ちが5程度なのでそこまでは必要ないのでしていません。

# vi /usr/local/squid/etc/squid.conf

# TAG: dns_children
# The number of processes spawn to service DNS name lookups.
# For heavily loaded caches on large servers, you should
# probably increase this value to at least 10. The maximum
# is 32. The default is 5.
#
# You must have at least one dnsserver process.
#
#Default:
# dns_children 5
dns_children 32

dns_childrenの値を変更したら再起動します。
# /etc/init.d/squid restart

その後はWORNINGもでなくなり、サクサク動くようになりました。(たぶん)

Basic認証

今更な感じはありますが、よく使われるBasic認証についてメモ

apacheに.htaccessを使用させる為にhttpd.confを変更します。

<Directory />
# AllowOverride none を All に変更
AllowOverride All
</Directory>

ケース1 apacheの設定ファイルに記述する場合
httpd.confに以下を追記します。

<Directory “/var/www/html/”> ← Basic認証を設定したいディレクトリのパスを記述
AuthType Basic
AuthName “Please enter your ID and Password”
AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
Require valid-user
</Directory>

apacheの設定変更をしたらapacheは再起動して下さい。
# /etc/init.d/httpd restart

ケース2 .htaccessファイルを作成する場合
Basic認証をかけたい場所に「.htaccess」ファイルを配置します。
記述は下記のような形で書きます。

<<Basic認証用設定>>
AuthType Basic
AuthName “Please enter your ID and Password”
AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
Require valid-user

■ AuthType
認証方法です。Basic認証にしています。
■ AuthName
認証名、主にパスワードを求めるポップアップに表示される文字を書きます。
“”の中身が表示されます。ブラウザによっては日本語は文字化けするので
英語を使うほうが無難です。
■ AuthUserFile
パスワードファイルを指定します。必ずフルパスで記述して下さい。
できればHTTPでアクセスできないディレクトリに置いてください。
■ AuthGroupFile
グループ毎のアクセス制限に用います。
使わなければ書かなくても問題ないです。
ちなみに/dev/nullは制限しないという意味なので書かない事とあまり変わりません。
■Require valid-user
全ユーザーに認証させる設定になります。

認証ファイル「.htpasswd」を作成します。
作成場所はAuthUserFileで指定した場所です。

# htpasswd -c -b /var/www/.htpasswd user1 password

ユーザーを追加する場合

# htpasswd -b /var/www/.htpasswd user2 password

パスワードファイル(.htpasswd)の作り方 apacheを利用しない場合

<<.htpasswrd例>>
neko:gH7weU0OdCg99
cat:G.MuRtXkmfsx2

パスワードファイルの記載方法はアカウント名:パスワードになります。
複数アカウントを指定する場合は改行して次の行に記述します。
パスワードについては暗号化して記述する必要があります。
暗号化には何かしらツールを使う必要がありますが、perlのスクリプトで
暗号化させることができます。
使うのはperlのcrypt関数です。
crypt(TEXT, SALT)
TEXTは暗号化したい文字列です。SALT部分は暗号化する際のキーとなる部分です。
l
<param(‘pass’); ←ここのpassを変更したいパスワードにする。
my $encpass = &encrypt_passwd($pass);
print “Password encryption : “;
print ${encpass};
print “\n”;
exit;

sub encrypt_passwd {
my($pass)=@_;
my @salt_set = (‘a’..’z’,’A’..’Z’,’0′..’9′,’.’,’/’);
srand;
my $ida1 = int(rand(63));
my $ida2 = int(rand(63));
my $salt = $salt_set[$ida1] . $salt_set[$ida2];
return crypt($pass, $salt);
}

print部分は好みで変えてください。
SLAT部分は大文字・小文字アルファベットと 0 ~ 9 の数字、そして、
「.(ドット)」「/(スラッシュ)」のいずれか2文字にしています。
SALTもなるべく生成するたびにランダムな文字列になるほうがいいので
rand関数を使ってランダムな2文字を抽出しています。

perlとか面倒だという場合は暗号化してくれるサイトは結構あるので
そちらで暗号化してその暗号化文字をパスワード欄に記載してください。

メーリングリストサーバmailmanの構築

【前提条件】
apacheがインストール済み
postfix,sendmail,qmail等のsmtpがインストール済み
Pythonがインストール済み
Python-develがインストール済み
gccが2.8.1以降

※selinuxが動いているとmailmanのCGIが動きません。
 SElinuxの設定をする必要がありますが今のところ
 面倒なのでdisableにしています。

今回はpostfixを使用しています。

mailmanはmailman-2.1.14+j7.tgzを使用します。
事前に公式サイトからダウンロードして/usr/local/src/に
配置します。

グループ及びユーザー作成
# groupadd mailman
# useradd -c “GNU Mailman” -s /sbin/nologin -g mailman mailman

デフォルトでインストールディレクトリが/usr/local/mailmanなので
フォルダを作り権限を設定します。
# mkdir /usr/local/mailman
# usermod -d /usr/local/mailman mailman
# chown mailman. /usr/local/mailman
# chmod a+rx,g+ws /usr/local/mailman

mailmanをダウンロードしたディレクトリに移動して解凍します。
また所有者をmailmanユーザーにします。

# cd /usr/local/src/
# tar zxvf mailman-2.1.14+j7.tgz
# chown -R mailman. mailman-2.1.14+j7

解凍したディレクトリへ移動しインストールを実施します。
※注意点 日本語はEUCになります。linux環境でUTF-8にしている場合は
文字化けするので注意すること

# cd mailman-2.1.14+j7
# su mailman -s “/bin/bash” -c “./configure –with-cgi-gid=apache”
# su mailman -s “/bin/bash” -c “make” && make install

インストール終了後、インストールディレクトリに移動して
パーミッションの補正スクリプトcheck_permsを実行します。

# cd /usr/local/mailman
# bin/check_perms -f

警告: 限定公開保存書庫ディレクトリが other-executable (o+x) に
なっています. あなたのシステムのシェルユーザがこの保存書庫
を読むことができます. インストールマニュアルには, これを
どうしたら修正できるか書いてありますので, 参考にしてください.

問題ありません

問題ありませんとなるまで何度か実行します。

●WEBサーバの設定
CGIを使うのでCGIの許可設定が必要です。
今回はmailman用にコンフィグファイルを別途作ります。

# vi /etc/httpd/conf.d/mailman.conf
ScriptAlias /mailman/ /usr/local/mailman/cgi-bin/
<Directory /usr/local/mailman/cgi-bin/>
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
Alias /pipermail/ /usr/local/mailman/archives/public/
<Directory /usr/local/mailman/archives/public/>
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>

mailman用ロゴファイルを所定のディレクトリーにコピーします。
# cp /usr/local/mailman/icons/* /var/www/icons/

ここまで終わったらWEBサーバの再起動
# /etc/init.d/httpd restart

●メールサーバの設定(postfix編)

postfixのmain.cfに下記の設定をします。
デフォルトではoffになっていると思うのでコメントアウトを外すか
新規で記述して下さい。

# vi /etc/postfix/main.cf

alias_maps = hash:/etc/postfix/aliases, hash:/usr/local/mailman/data/aliases

owner_request_special = no
recipient_delimiter = +
unknown_local_recipient_reject_code = 550

●mailmanの設定
mailmanの設定ファイルを編集します。

# vi /usr/local/mailman/Mailman/mm_cfg.py

##################################################
# Put YOUR site-specific settings below this line.

## mailman setup ###
MTA = ‘Postfix’
DEFAULT_URL_HOST = ‘testserver.ddo.jp’
DEFAULT_EMAIL_HOST = ‘testserver.ddo.jp’
DEFAULT_URL_PATTERN = ‘http://%s/mailman/’
DEFAULT_SERVER_LANGUAGE = ‘ja’

PostfixのPは大文字です。間違えると次がエラーになってしまいます。

bin/genaliases スクリプトを実行して aliases ファイルを初期化し、
メーリングリストサーバ管理パスワード設定します。

# /usr/local/mailman/bin/genaliases パスワード
パスワードを変更しました。

data/aliases と data/aliases.db の所有者とグループををmailmanに変更します。
またグループ書き込み許可も付けます。

# chown mailman:mailman data/aliases*
# chmod g+w data/aliases*

サイトリスト登録
# bin/newlist mailman
リスト管理者のメールアドレスを入力してください: webmaster@testserver.ddo.jp
mailman の初期パスワード:
Enter を押して mailman の管理者にメール通知する…

# bin/config_list -i data/sitelist.cfg mailman
標準でない値を修復: personalize

mailmanのcronを設定します。
# cd /usr/local/mailman/cron
# crontab -u mailman crontab.in
確認
# crontab -l -u mailman

起動します。
# /usr/local/mailman/bin/mailmanctl start

起動状況を確認

# ps aux | grep mailman
mailman 5166 0.0 1.0 14716 5444 ? Ss 11:14 0:00 /usr/bin/python /usr/local/mailman/bin/mailmanctl star
mailman 5167 0.9 1.4 14472 7336 ? S 11:14 0:00 /usr/bin/python /usr/local/mailman/bin/qrunner –runner=ArchRunner:0:1 -s
mailman 5168 0.8 1.4 14472 7352 ? S 11:14 0:00 /usr/bin/python /usr/local/mailman/bin/qrunner –runner=BounceRunner:0:1 -s
mailman 5169 0.9 1.4 14476 7340 ? S 11:14 0:00 /usr/bin/python /usr/local/mailman/bin/qrunner –runner=CommandRunner:0:1 -s
mailman 5170 0.8 1.4 14472 7300 ? S 11:14 0:00 /usr/bin/python /usr/local/mailman/bin/qrunner –runner=IncomingRunner:0:1 -s
mailman 5171 0.9 1.4 14460 7384 ? S 11:14 0:00 /usr/bin/python /usr/local/mailman/bin/qrunner –runner=NewsRunner:0:1 -s
mailman 5172 1.0 1.4 14860 7680 ? S 11:14 0:00 /usr/bin/python /usr/local/mailman/bin/qrunner –runner=OutgoingRunner:0:1 -s
mailman 5173 0.9 1.4 14472 7472 ? S 11:14 0:00 /usr/bin/python /usr/local/mailman/bin/qrunner –runner=VirginRunner:0:1 -s
mailman 5174 0.9 1.4 14472 7364 ? S 11:14 0:00 /usr/bin/python /usr/local/mailman/bin/qrunner –runner=RetryRunner:0:1 -s
root 5176 0.0 0.1 5108 788 pts/0 R+ 11:14 0:00 grep mailman

自動起動を登録します。
起動スクリプトをコピー
# cp /usr/local/mailman/scripts/mailman /etc/rc.d/init.d/
スクリプトが動く事を確認
# /etc/init.d/mailman stop
# /etc/init.d/mailman start
問題かければchkconfigに登録
# chkconfig –add mailman
# chkconfig mailman on
# chkconfig –list | grep mailman
mailman 0:off 1:off 2:on 3:on 4:on 5:on 6:off

●mailmanの確認
管理画面は
http://サーバ名/mailman/admin

リストを作ってみます。
http://サーバ名/mailman/create
「リストの名前」⇒test

「リスト管理者アドレスの初期設定」⇒リスト管理者メールアドレス

「初期パスワードを自動生成しますか?」⇒はい

「リスト作成者の認証パスワード」⇒メーリングリストサーバー管理パスワード

「リストを作成する」ボタン押下

管理画面でリストができていればOKです。

Xen+CentOS6.3でのディスク領域拡張(LVM編)

Xenの仮想サーバでdisk領域が足りなくなった際の対処と
してサーバへの割り当てサイズを増やす時の手順です。

【前提条件】

ホストOS:Xen
ゲストOS:CentOS6.3
ゲストOSパーティション:LVM
ホストOSのディスク領域は割り当て済みで空きがある

RHELの最近のバージョンであればほぼLVMになっていると思います。
LVM以外の方法はliknux disk領域拡張で記載しています。

まずはXen側のサイズを変更します。
XenCenterを開き該当の仮想サーバをShutDownします。
その後、ストレージがあるVirtualDisksを選択して、仮想サーバのDiskのProertiesから
Size and Locationを開きサイズを変更します。
※停止していないとsizeを変える事ができません。
今回は1300GBから1700GBへ拡張しました。
サイズを変更したらVMを起動します。

Xen側の作業は以上です。
続いてゲストOS側の作業です。

fdiskでlvmのパーティションを作成します。

まずはfdiskで確認
# fdisk -l

Disk /dev/xvda: 1825.4 GB, 1825361100800 bytes
255 heads, 63 sectors/track, 221920 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00077127

Device Boot Start End Blocks Id System
/dev/xvda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/xvda2 64 169704 1362634356 8e Linux LVM

Disk /dev/mapper/VolGroup-lv_root: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_swap: 2113 MB, 2113929216 bytes
255 heads, 63 sectors/track, 257 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_home: 1339.5 GB, 1339534868480 bytes
255 heads, 63 sectors/track, 162855 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

/dev/xvdaが1800GBありますが割り当てが53Gと1339Gだけである事がわかります。
注意!!
ここの値はdiskのbytesサイズなのでXen等で設定した値と違うので間違えないように!!

# fdisk /dev/xvda

WARNING: DOS-compatible mode is deprecated. It’s strongly recommended to
switch off the mode (command ‘c’) and change display units to
sectors (command ‘u’).

Command (m for help): p  ←パーティションの確認、2番目の/dev/xvda2が今回の対象です。

Disk /dev/xvda: 1825.4 GB, 1825361100800 bytes
255 heads, 63 sectors/track, 221920 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00077127

Device Boot Start End Blocks Id System
/dev/xvda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/xvda2 64 169704 1362634356 8e Linux LVM

Command (m for help): d  ←削除
Partition number (1-4): 2  ←パーティション指定

Command (m for help): p  ←対象パーティションが消えている事を確認

Disk /dev/xvda: 1825.4 GB, 1825361100800 bytes
255 heads, 63 sectors/track, 221920 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00077127

Device Boot Start End Blocks Id System
/dev/xvda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.

Command (m for help): n  ←新規パーティション作成
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2  ←パーティション指定
First cylinder (64-221920, default 64):   ←Startセクターを指定、全部使うのでdefault指定
Using default value 64
Last cylinder, +cylinders or +size{K,M,G} (64-221920, default 221920):   ←Endセクターを指定、こちらもdefault指定
Using default value 221920

Command (m for help): p  ←空き領域が全部割り当て有られている事を確認します。

Disk /dev/xvda: 1825.4 GB, 1825361100800 bytes
255 heads, 63 sectors/track, 221920 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00077127

Device Boot Start End Blocks Id System
/dev/xvda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/xvda2 64 221920 1782059376 83 Linux

Command (m for help): t  ←LVMにする為にsystemidを変更します。
Partition number (1-4): 2  ←パーティション指定
Hex code (type L to list codes): 8e  ←LVMのidを指定、idを確認する場合はCommandでlで一覧がでます。
Changed system type of partition 2 to 8e (Linux LVM)

Command (m for help): p  ←最終チェックをします。

Disk /dev/xvda: 1825.4 GB, 1825361100800 bytes
255 heads, 63 sectors/track, 221920 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00077127

Device Boot Start End Blocks Id System
/dev/xvda1 * 1 64 512000 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/xvda2 64 221920 1782059376 8e Linux LVM

Command (m for help): w  ←書き込みをします。
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
# reboot ←デバイスが使用中だから適用させる為にリブートをします。

リブート完了後、ボリュームの拡張を実施します。
サイズを確認、この時点では何も変わっていません。
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
50G 1.2G 46G 3% /
tmpfs 503M 0 503M 0% /dev/shm
/dev/xvda1 485M 30M 430M 7% /boot
/dev/mapper/VolGroup-lv_home
1.2T 1.1T 70G 95% /home

◎物理ボリュームの拡張
サイズの確認
# pvscan
PV /dev/xvda2 VG VolGroup lvm2 [1.27 TiB / 0 free]
Total: 1 [1.27 TiB] / in use: 1 [1.27 TiB] / in no VG: 0 [0 ]
再割り当てを実施
# pvresize /dev/xvda2
Physical volume “/dev/xvda2” changed
1 physical volume(s) resized / 0 physical volume(s) not resized
サイズが大きくなっている事を確認
# pvscan
PV /dev/xvda2 VG VolGroup lvm2 [1.66 TiB / 399.99 GiB free]
Total: 1 [1.66 TiB] / in use: 1 [1.66 TiB] / in no VG: 0 [0 ]

◎論理ボリュームの拡張
サイズの確認
# lvscan
ACTIVE ‘/dev/VolGroup/lv_root’ [50.00 GiB] inherit
ACTIVE ‘/dev/VolGroup/lv_home’ [1.22 TiB] inherit
ACTIVE ‘/dev/VolGroup/lv_swap’ [1.97 GiB] inherit

サイズの再割り当て、400GだとNGだったので399Gにしています。
# lvscan resize -L +399G /dev/VolGroup/lv_home
Extending logical volume lv_home to 1.61 TiB
Logical volume lv_home successfully resized
サイズが変更されている事を確認
# lvscan
ACTIVE ‘/dev/VolGroup/lv_root’ [50.00 GiB] inherit
ACTIVE ‘/dev/VolGroup/lv_home’ [1.61 TiB] inherit
ACTIVE ‘/dev/VolGroup/lv_swap’ [1.97 GiB] inherit

◎ファイルシステムの拡張

対象ボリュームを指定して再割り当てを実施、サイズによっては結構時間がかかります。
# resize2fs /dev/mapper/VolGroup-lv_home
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/VolGroup-lv_home is mounted on /home; on-line resizing required
old desc_blocks = 78, new_desc_blocks = 103
Performing an on-line resize of /dev/mapper/VolGroup-lv_home to 431630336 (4k) blocks.
The filesystem on /dev/mapper/VolGroup-lv_home is now 431630336 blocks long.

無事拡張されました。
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
50G 1.2G 46G 3% /
tmpfs 503M 0 503M 0% /dev/shm
/dev/xvda1 485M 30M 430M 7% /boot
/dev/mapper/VolGroup-lv_home
1.6T 1.1T 443G 72% /home

注意!!
拡張は必ず物理→論理→ファイルシステムの順番で実施して下さい。
基本は箱の外側から大きくしていくことです。
外側が広がっていなければ内側が広がる事はないですからね。

KVMのバーチャルサーバが重い

以前もあったのですが、バーチャルサーバのWEBアクセスが明らかに遅い現象が起きました。

サーバ側のシステムリソースを見ても特に高負荷でもなくボトルネックは見当たりませんでした。

どうしたものかと考えていたらホストサーバ側はどうだろう?と思いチェックすると
メモリがswapまで使われている状態でした。

何が使っていたかというと「libvirtd」がほぼメモリを圧迫していました。
仮想化にはkvmを使っているのですがその管理プロセスになります。

なんでこんなに使うんだろ・・・?

ひとまずlibvirtdを再起動
# /etc/init.d/libvirtd restart

メモリが解放されて軽くなりました。

今後、何の作業後に上がるのか、ずっと起動させていると上がるのか
ちょっと経過観察です。

mailコマンドでのメール送信

mailコマンドで動いているサーバがあったのでテストした時のメモです。

コマンドで普通に打つ場合はmailの後に送信先アドレスを入れてやればOK
$ mail test@exmple.com
Subject: test mail
send mail test !!
.
Cc:

一行で終わらせたいなぁという場合は下記のようにするとOK
でも本文は書かなきゃいけないですけど・・・

$mail -s ‘件名’ -c ‘CCで送りたいメールアドレス’ ‘送信先メールアドレス’
send mail test !!
.
Cc:CCで送りたいメールアドレス

あとはシェルに組み込む場合は本文はパイプでmailコマンドに引き渡して下さい。

echo “本文を記入” | mail -d ‘件名’ ‘送信先メールアドレス’

wordpressドメイン変更手順

自分が使っている無料のDDNS(Dynamic Domain Name System)のサービスの1つが
サービス変更により使えなくなってしまいました。
まあ、無料だし仕方がないのでひとまず別に持っていたDDNSのドメインに収容変えしました。
普通にapacheのconfig部分だけ修正して再起動したんですがwordpressは前のドメインのままで表示されません( ̄□ ̄;

どうすればいいんだろうとググっていたらmysqlのDBにドメイン名が入っているとのことでこの値を変更して上げれば
良いみたいです。

wp_optionsのsiteurlとhomeというキーにドメイン名が入った値があるみたいで、この2つの値を変更します。

mysql > update wp_options set option_value=replace(option_value, ‘nekofamily.ddo.jp’, ‘neko.mydns.jp’) where option_name in (‘siteurl’, ‘home’);

サクッと終わりました。

サイトも新しいドメインで表示されるようになりました。
—————————————————————————————————–
11月27日追記
投稿ページのリンク等はそのまま前のURLになっていました。
一括で変更する手段を探しましたが見つからず、1つ1つ修正しています。。。