Changes between Initial Version and Version 1 of misc/server_process


Ignore:
Timestamp:
02/22/18 14:12:23 (7 years ago)
Author:
Kameta
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • misc/server_process

    v1 v1  
     1= サーバープロセスの定期保存 =
     2== 概要 ==
     3psコマンドによるサーバー毎の状態を定期保存する方法を紹介する。[[br]]
     4psコマンドの結果をログとして保存するスクリプトをcronで10毎に実行している。
     5
     6== ディレクトリ構成 ==
     7{{{
     8ServerProcess
     9|-- script
     10|   |-- snap.sh                              <- ログとして保存するスクリプト
     11|
     12|-- data
     13|   |-- pfrproc2                             <- サーバー
     14|   |   |-- 2018
     15|   |   |   |-- 02
     16|   |   |   |   |-- 22
     17|   |   |   |   |   |-- 20180222000001.log
     18|   |   |   |   |   |   ..................
     19|   |   |   |   |   |-- 20180222134001.log
     20| ..................
     21|   |-- pfrproc4                             <- サーバー
     22|   |   |-- 2018
     23|   |   |   |-- 02
     24|   |   |   |   |-- 22
     25|   |   |   |   |   |-- 20180222000001.log
     26|   |   |   |   |   |   ..................
     27|   |   |   |   |   |-- 20180222134001.log
     28| ..................
     29}}}
     30
     31== ログ ==
     32ログにはヘッダとしてホスト名、PSコマンド、日時を付加している。
     33{{{
     34# hostname : pfrproc2
     35# command  : ps axwwwo user,pid,ppid,%cpu,%mem,vsz,rss,tname,stat,start_time,bsdtime,args
     36# date     : 2018/02/22 14:00:01
     37
     38USER        PID   PPID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
     39root          1      0  0.0  0.0  33664  1236 ?        Ss    2017   0:01 /sbin/init
     40root          2      0  0.0  0.0      0     0 ?        S     2017   0:00 [kthreadd]
     41root          3      2  0.0  0.0      0     0 ?        S     2017   0:25 [migration/0]
     42root          4      2  0.0  0.0      0     0 ?        S     2017  11:58 [ksoftirqd/0]
     43root          5      2  0.0  0.0      0     0 ?        S     2017   0:00 [stopper/0]
     44root          6      2  0.0  0.0      0     0 ?        S     2017   0:06 [watchdog/0]
     45root          7      2  0.0  0.0      0     0 ?        S     2017   0:04 [migration/1]
     46root          8      2  0.0  0.0      0     0 ?        S     2017   0:00 [stopper/1]
     47root          9      2  0.0  0.0      0     0 ?        S     2017   2:44 [ksoftirqd/1]
     48root         10      2  0.0  0.0      0     0 ?        S     2017   0:07 [watchdog/1]
     49root         11      2  0.0  0.0      0     0 ?        S     2017   1:17 [migration/2]
     50root         12      2  0.0  0.0      0     0 ?        S     2017   0:00 [stopper/2]
     51root         13      2  0.0  0.0      0     0 ?        S     2017   6:29 [ksoftirqd/2]
     52root         14      2  0.0  0.0      0     0 ?        S     2017   0:05 [watchdog/2]
     53root         15      2  0.0  0.0      0     0 ?        S     2017   0:46 [migration/3]
     54..................
     55}}}
     56
     57== スクリプト ==
     58ディレクトリの設定を変更することによって他の環境でも使用可能。[[br]]
     59cERL/PFではppidも情報として残したいのでpsコマンドを変更している。
     60{{{
     61#!/bin/sh
     62
     63#PS_CMD="ps auxwww"
     64PS_CMD="ps axwwwo user,pid,ppid,%cpu,%mem,vsz,rss,tname,stat,start_time,bsdtime,args"   <- psコマンド
     65
     66HOST_NAME="`hostname -s`"
     67
     68YEAR="`date +%Y`"
     69MONTH="`date +%m`"
     70DAY="`date +%d`"
     71HOUR="`date +%H`"
     72MIN="`date +%M`"
     73SEC="`date +%S`"
     74
     75BASE_DIR="/pf/archive/OP/ServerProcess/"                                                <- ディレクトリ
     76DATA_DIR="$BASE_DIR/data"
     77
     78LOG_DIR="$DATA_DIR/$HOST_NAME/$YEAR/$MONTH/$DAY"
     79LOG_NAME="$YEAR$MONTH$DAY$HOUR$MIN$SEC.log"
     80LOG_FULL_NAME="$LOG_DIR/$LOG_NAME"
     81
     82#echo "$HOST_NAME"
     83#echo "$YEAR"
     84#echo "$MONTH"
     85#echo "$DAY"
     86#echo "$HOUR"
     87#echo "$MIN"
     88#echo "$SEC"
     89
     90#echo "$BASE_DIR"
     91#echo "$DATA_DIR"
     92
     93#echo "$LOG_DIR"
     94#echo "$LOG_NAME"
     95echo "$LOG_FULL_NAME"
     96
     97if [ ! -e $LOG_DIR ]; then
     98  mkdir -p $LOG_DIR
     99fi
     100
     101echo "# hostname : $HOST_NAME" > $LOG_FULL_NAME
     102echo "# command  : $PS_CMD" >> $LOG_FULL_NAME
     103echo "# date     : $YEAR/$MONTH/$DAY $HOUR:$MIN:$SEC" >> $LOG_FULL_NAME
     104echo "" >> $LOG_FULL_NAME
     105$PS_CMD >> $LOG_FULL_NAME
     106}}}