ラベル Linux の投稿を表示しています。 すべての投稿を表示
ラベル Linux の投稿を表示しています。 すべての投稿を表示

2020/01/06

iLogScanner

いくつかのサーバ運用を今でもやっていますが,可能な限り省力化したいところ.その中で,ログ監視をやらなきゃいけないので, iLogScanner を使っていますが,備忘録がなかったので自分用のメモです.

やることは簡単で,ダウンロードして,展開して,

iLogScanner/1_bin/iLogScanner.sh mode=cui logtype=apache accesslog=log1,log2... reporttype=html level=detail outdir=$outdir

とかです.accesslog= のところは,複数ファイルをカンマ区切りで繋ぎます.日付ごとにファイルが異なる場合には,ファイルリストが必要になるので,スクリプトを作ると良いでしょう.閲覧用に reporttype=html と日々のメール送信用に reporttype=text の両方を実行しています.

あと,java が必要なので,
 % sudo yum install java-1.8.0-openjdk
しました.

参考)
iLogScannerでログのセキュリティスキャンを自動化する

2017/09/27

CentOS 7

ものすごく久しぶりにサーバ管理者なるものになった.どのOSで作るのが良いかと思うと,個人ベースでは,Debian一択ですが,そうすると職場内で孤立(?)するので,CentOSにした.で,「何も考えずに」CentOS 7 で始めたら,おおはまり・・・そのメモ.

/etc/init.d/httpd (Apache) が無い

Webサーバなので,httpdパッケージ(Apache)を入れたわけですが,起動スクリプトである /etc/init.d/httpd が無い...

% systemctl | grep httpd
httpd.service loaded active running   The Apache HTTP Server

というのが出来ているので,
% sudo systemctl restart httpd.service
とかやるらしい.service コマンドは systemctl にredirectされるようです.
% sudo service httpd restart
Redirecting to /bin/systemctl restart  httpd.service

さらに自動起動(chkconfig --list の後継)に設定します.
% systemctl status httpd.service
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd(8)
           man:apachectl(8)

% sudo systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

% systemctl status httpd.service
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd(8)
           man:apachectl(8)

ifconfig コマンドがない

ifconfig コマンドも消えたようです./sbin/ にPATHが通ってないからだろと思って,
% sudo /sbin/ifconfig
してもありません.ip だそうです.
% ip address
で全てのインタフェースが表示されるようです.  netstat も無い!と思ったら,パッケージが入っていないだけでした.net-tools パッケージを入れれば使えます.
% rpm -ql net-tools | grep /bin/netstat
/bin/netstat
特定のインタフェースの情報だけ表示したい場合は,以下のようにするようです.
% ip address show eth0

iptableの設定

これは,別に CentOS 7 だからという訳じゃないと思いますが,iptables は
/etc/sysconfig/iptables
で設定するようです.

/var/run が消える

/var/run が起動時に掃除されてしまうようなので,/etc/tmpfiles.d で設定して上げる必要があるようです.

2014/10/01

ロック(排他制御)

cronを使って一定の処理をさせたいとき,毎分に設定したいけどそうすると前の処理が終わっていなくて多重起動されてしまうという問題があります(問題ない場合もあると思いますが).これを制御するのにロックファイルを使っていたのですが,ロックディレクトリにしなきゃダメだと指摘され,修正しました.

if [ -r $lockfile ]; then
  exit 0
else
  touch $lockfile
fi
.... (script) ....
rm $lockfile

[ -r $lockfile ] && exit 0
touch $lockfile

としたくなるわけですが,まったく同時に2つ以上のスクリプトが起動された場合には両方共,ロックファイル($lockfile)が無いので処理が始まってしまいます.

これを避けるには,mkdir等の排他的なシステムコールを使うのだそうです.
mkdir $lockdir 2> /dev/null || exit $?
.... (script) ....
rmdir $lockdir

mkdir は既に $lockdir が存在していた場合はエラーになりますので処理を停止できます.たとえスクリプトが同時に起動されたとしても,mkdirで排他してくれるそうです.

ですが,スクリプトが強制終了された時にロックディレクトリが残ってしまうという問題があります.スクリプトの中で使っているコマンドが異常終了したような場合にはちゃんとロックディレクトリを後始末しましょう.

error() {
  echo $1
  rmdir $lockdir
  exit 1
}
などとしておいて,
./command || error "failed ./command"
のようなエラー制御を入れておけば良いはずです.面倒ですが.

が,それでも,スクリプトが強制終了(たとえば,rebootなどの操作)される可能性もあります.そうすると,もうお手上げでロックディレクトリが常に存在してしまうためスクリプトが動きません.これを回避するために,一定時間以上経過していたらロックディレクトリを消すというロジックもあるようですが,じゃぁ,一定時間はどれくらいだ?という問題が残ります.予期せぬ長時間処理になった場合,どうするかということになります.

が,眼から鱗な解決策が!
lockdir=/dev/shm/xxxx

RAMディスクにロックディレクトリを作成しておけば,rebootが行われた場合でもすっきりとロックファイルを消すことが出来ます.もちろん共有空間ですので,ファイル名のバッティングだけは要注意ですが.

ただし,終了した後のアプリケーションとしてのケアは別途必要ですので悪しからず.


2014/04/26

install Ubuntu

Windows XPのサポート終了と同時に,唯一残っていたDELL Note PCをUbuntuにした.

USBメモリ作成→bootableとして認識されず.しれっとHDDからXPが起動してしまう.内部HDDからの起動をなしにしてUSBだけにしたところ,bootableじゃないよというメッセージ.

DVDを.cdrに一旦変換してからディスクユーティリティで書き込みで成功!

びっくりは,インストーラーを起動したつもりが,すでにUbuntuが起動していること.デスクトップにあるinstallアプリ(?)を起動すると内部HDDに入れてくれる.

完成.


2014/03/28

wgetでPOSTする

機会的に特定のURLにアクセスして何かするときはwgetかcurlを使いますが,滅多に使わないので忘れてしまうwgetでのPOSTのやり方メモ.

wget --post-file="inputfile" -O outputfile URL

ちなみに,GETの場合はURLをそのまま書いてあげるだけですが,シェルが展開してしまうので,URLはクォーテーションで囲む必要があるようです.
wget "http://example.org/cgi-bin/foo.cgi?key=value"

2013/10/15

rsyncでssh接続先のポート番号を指定する

rsync でデータの常時バックアップをやっているのですが,サーバに直接SSHで接続できないので,なんとか抜け道を探していました.踏み台サーバはあるので,そこを経由すれば良いだけなのですが...

■方法1(失敗)
~/.ssh/config にProxyCommand で中継サーバを記述する

Host target
  HostName コピー元サーバ
  ProxyCommand ssh 中継サーバ nc -w 5 %h %p

とすれば,
% ssh target
で直接つながるのでいけると思ったのですが,rsync だとセッションが切れてしまってどうにもなりませんでした.

■方法2
じゃ,よくやる方法として(面倒だけど)SSHのポートフォワーディングでやろうとしたのですが,rsync のSSH にポートを教える方法が....

トンネル作成:
 % ssh 10022:コピー元サーバ:22 中継サーバ
でトンネルを作成してい,別のターミナルから
 % rsync -e "ssh -p 10022" localhost:/targetDIR ./
とかで出来ました!

(自分用メモです....)
参考


2013/03/12

dhcp設定

しょっちゅう忘れるので自分用のメモ

Debianでのネットワークインタフェースに対するIPアドレスの制御は
/etc/network/interface
で出来る.


インストール時にDHCPで設定してるとこんな感じになっているはず.

% cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp


これを固定IPアドレスに変えるには,

iface eth0 inet static
  address 192.168.0.100 (IPアドレス)
  netmask 255.255.255.0 (ネットマスク)
  network 192.168.0.0 (サブネット)
  gateway 192.168.0.1 (ゲートウェイ)
  dns-search private (ドメイン名) ← 必要な場合のみ
のようにすれば良い.


2012/01/04

XFS inode64 オプションの罠

XFSは速いしボリュームサイズの上限も大きいので採用が増えてると思います.
が,32bitモードで使っていると,先頭1TBにinode情報を書くため,まだ空き容量があるのに,新たなファイルが作成できなくなるという問題があります.通常先頭1TBにデータは書き込まれないのでこの問題にはそう簡単にはぶつかりませんが,実はDISKフル近くまで書きこむと,先頭1TB領域にもデータを置き始めるので,実はinode書き込み領域が枯渇する現象に出くわします.

dfで見ると容量はあるのに,No left device と言われて悩まされます.

それを解決するには,inode64オプションの設定が推奨されます.inode64オプションを付与してマウントすることで,inodeの書き込み場所が全体になるので空きがあるのに書き込めないという減少は改善します.

が,,,このディスクで32bitアプリ(OSは64bit)を動かすには注意が必要です.これも余り無いと思いますが,statシステムコールが32bitを期待してbuildされているので,XFS inode64が返す64bitのstat構造体を理解することができません....

XFSにする時はだいぶ慎重に選んだけど,inode64オプションを付ける時は,実害は無いだろうとたかを括ってた...