シェルスクリプトマガジン Vol.24

Similar documents
シェルスクリプトマガジン vol.30

USP MAGAZINE 2014 August

シェルスクリプトマガジン Vol27

Open usp Tukubai ってなに? Open usp Tukubai は 売上データの処理や勘定系システムの構築に利用されているエンタープライズ向けの高性能コマンド群 usp Tukubai のオープンソース版です 業務で特によく使われるコマンドを選りすぐって Python で再実装したも

K-BASIC 1st: ユニケージ基礎編(前編)

第122号.indd

インストーラー 管理番号 内容 対象バージョン 230 HULFT がすでにインストールされているパスに対してサイレントインストールを実行すると インストールされていた HULFT の動作環境が不正な状態になる 7.3.0~7.3.1 ユーティリティ 管理番号 内容 対象バージョン 231 管理情報

DHCPサーバのクラスタ化

実験 5 CGI プログラミング 1 目的 動的にWebページを作成する手法の一つであるCGIについてプログラミングを通じて基本的な仕組みを学ぶ 2 実験 実験 1 Webサーバの設定確認と起動 (1)/etc/httpd/conf にある httpd.conf ファイルの cgi-bin に関する

ファイルサーバー(Samba)構築ガイド

Windows Powershell 入門

リスト 1 1 <HTML> <HEAD> 3 <META http-equiv="content-type" content="text/html; charset=euc-jp"> 4 <TITLE> 住所の検索 </TITLE> 5 </HEAD> 6 <BODY> <FORM method=

Taro-cshプログラミングの応用.jt

ユーティリティ 管理番号 内容 対象バージョン 157 管理情報バッチ登録コマンド (utliupdt) のメッセージ出力に対し リダイレクトまたはパイプを使用すると メッセージが途中までしか出 力されないことがある 267 転送集計コマンド (utllogcnt) でファイル ID とホスト名の組

ことばを覚える

<48554C46545F F A5490E08E9197BF2E786C73>

Futaba File System Utility T12K/T14SG/FX-22/T12FG/T8FG/FX-20 用ファイルシステムユーティリティ説明書 (Version 7. x) T12K/T14SG/FX-22/T12FG/T8FG/FX-20 はモデルデータを SD カードに保存する

タイトル□□□□□□□□□□

広報さがみはら第1242号

レプリケーションについて レプリケーション元に設定したメイン機の共有フォルダーと レプリケーション先に指定した予備機の共有フォルダーを同期し 同じ状態に保ちます (LAN 環境により遅延が発生します ) 遠隔地へのレプリケーションにより メイン機側での災害 事故によるデータ損失のリスク低減ができます

SmartGS-ReleaseNote-V132

Asterisk PBX 不正利用防止

データ構造の作成 一時 SAS データセットと永久 SAS データセットの作成 テキストファイルから SAS データセットを作成するための DATA ステップの使用例 : Data NewData; Infile "path.rawdata"; Input <pointer-control> var

McAfee Application Control ご紹介

TOMOYO Linuxを体験しよう

3.Cygwin で日本語を使いたい Cygwin で以下のコマンドを実行すると それ以降 メッセージが日本語になります export LANG=ja_JP.UTF-8 これは 文字コードを日本語の UTF-8 に設定することを意味しています UTF-8 は Cygwin で標準の文字コードで, 多

タイトル□□□□□□□□□□


変更履歴 版数変更日変更内容 /9/1 初版設定

memo

2. Docker の基本的な操作 1 docker hub の参照 2 DockerHub の Explorer リンクからアプリケーションを参照 3 アプリケーション検索 4 tag について 3. docker 基本コマンド 1 docker の

産直くん 9 リピートくん 9 バックアップ リストア作業チェックリスト バックアップ リストア作業項目一覧 作業項目作業目安時間概要 00 バックアップ リストア作業を行う前に 産直くん 9 リピートくん 9 のバックアップ リストア作業を円滑に行うための確認事項をまとめています 1. バックアッ

誓約書の同意 4 初回のみ 下記画面が表示されるので内容を確認後 同意する ボタンをクリック 同意していただけない場合はネット調達システムを使うことができません 参照条件設定 5 案件の絞り込み画面が表示されます 5-1 施工地域を選択して 施工地域選択完了 ボタンをクリック - 2 -

TC5.ids

試作ツールは MIT ライセンスによって提供いたします その他 内包された オープンソース ソフトウェアについてはそれぞれのライセンスに従ってご利用ください

Shareresearchオンラインマニュアル

ReTRY HUB

Microsoft PowerPoint - InfPro_I6.pptx

クエリの作成が楽になるUDF

PowerPoint プレゼンテーション

ftServerでのログの取得方法の概要

RTC_STM32F4 の説明 2013/10/20 STM32F4 内蔵 RTC の日付 時刻の設定および読み込みを行うプログラムです UART2( 非同期シリアル通信ポート 2) を使用して RTC の設定および読み込みを行います 無料の開発ツール Atollic TrueSTUDIO for

MS916 バッチ操作ガイド FW バージョン 0.52 向け バッチ操作の基本 MS916 のバッチ操作について バッチ操作では 読取ったバーコードデータはすべて 不揮発性のメモリ (1MB ROM JAN-13 約 50,000 件 ) に保存されます メモリに保存されたデータは任意のタイミング

P01_改.eps

CM-3G 周辺モジュール拡張技術文書 INA226センサ(電流、電圧、電力)

Linkexpress トラブル初期調査資料 採取コマンド使用手引書

起動する 起動方法は ご使用の OS により異なります 同一ネットワーク内で 本ソフトを複数台のパソコンから起動すると 本ソフト対応の LAN DISK にアクセスが集中し エラーとなる場合があります [ スタート ] メニュー [( すべての ) プログラム ] [I-O DATA] [LAN D

Microsoft Windows Internet Explorer は 米国 Microsoft Corporation の 米国およびその他の国における登録商標または商標です Linux は Linus Torvalds 氏の日本およびその他の国における登録商標または商標です Red Hat

WagbySpec7

CLUSTERPRO MC ProcessSaver 2.3 for Windows 導入ガイド 第 5 版 2018 年 6 月 日本電気株式会社

FTPサーバーへのアクセス権限設定

FTP ウェブコンテンツダウンロード手順書 ver1.0 作成 :KDDI 株式会社 作成日 :2018 年 10 月 31 日

BT-4000

RsMulti の取扱説明 「RS232C で直接接続する(LAN を使用しない場合)」

第5回 マインクラフト・プログラミング入門

<< 目次 >> 1 PDF コンバータのインストール ライセンスコードの入力 PDF にフォントを埋め込みたい場合の設定 PDF オートコンバータ EX で使用しない場合 PDF コンバータ単体で使用する場合の説明 PDF コンバータのアン

Net'Attest EPS設定例

Microsoft Word - DS簡易取扱説明書 完成版

本文書は、SAP ERP(以下、SAP)の消費税機能の概要について説明したものです

$ cmake --version $ make --version $ gcc --version 環境が無いあるいはバージョンが古い場合は yum などを用いて導入 最新化を行う 4. 圧縮ファイルを解凍する $ tar xzvf gromacs tar.gz 5. cmake を用

SmartPlant License Manager 8.0

INDEX Demo の目的 ゴール Scenario 1: 自動化 Scenario 2: 効率化 2

p...{..P01-48(TF)

Microsoft Word - 電源制御コマンドの設定について_UNIX_.doc

Transcription:

ユニケージ開発手法 コードレビュー USP 研究所技術研究員 written by 大内智明 Vol.13 今回は 運用機能の一つであるメモリ情報の監視についてお話します 業務で使用するサーバーは 正常な動作を継続していく必要があります そのためには システム情報を定期的に監視して 取得した情報が正常な動作範囲であること エラーや警告の発生も許容範囲内であることを確認していく必要があります もし システム利用状況が許容範囲から外れても 常に監視を行っていれば早急にシステム負荷やハードウエア故障に対策 / 対応ができます ( 図 1 参照 ) 2-1. 定期的にメモリ情報を保存するシェルの説明メモリ情報は free コマンドを実行することで 物理メモリの使用サイズ 未使用サイズ 仮想メモリの使用サイズ 未使用サイズを取得することができます ( 画面キャプチャ 1) メモリ取得は定期的に実行して 累積することで システム負荷状況を把握することができます 取得したデータは 画面出力用に加工して 日単位のデータとして保存します 画面キャプチャ 1 データ形式と使う場面 図 1 システム運用状況 システム負荷 低 高 ディスク容量 ディスク容量 メモリ使用量メモリ使用量 システムは 定期的にメモリ情報を保存するシェルと保存した情報からメモリの最新情報を取得して 画面に出力する CGI の2セットが必要になります 2-2. 画面に出力する CGI の説明画面出力用データは 保存しているデータから最新情報を取得して メモリ使用率を元に正常 警告 エラーなどの情報を付加して作成します ( 画面キャプチャ 2) 次に HTML 用テンプレートに画面出力用データを貼り付けて HTML ファイルを作成します ( 画面キャプチャ 3) 画面キャプチャ 2 データ形式と使う場面 11

画面キャプチャ 3 データ形式と使う場面 リスト 1 定期的に起動して 複数のサーバーのメモリ使用率を保存するシェル 1 #!/bin/bash -xv 2 # 3 # KANSI_MEMORY 4 # メモリ使用率収集 5 # 6 # Written by aoki 20130902 7 8 # ログ出力 9 appd=/home/usp/kansi 10 logfile=$appd/log/$(basename $0).$(date +%Y%m%d) 11 exec 2> $logfile 12 13 # 変数設定 14 export LANG=ja_JP.UTF-8 15 export PATH=/home/UTL:/home/TOOL:$PATH 16 cgid=$appd/cgi 17 htmd=$appd/html log コマンドは ユニケージ独自コマンド 18 logd=$appd/log 走行ログを出力します exec コマンド相当 19 repd=$appd/report 20 semd=$appd/semaphore 21 shld=$appd/shell 22 tbld=$appd/table 23 tmp=/tmp/$$ 24 today=$(date +%Y%m%d) 25 todayhms=$(date +%Y%m%d%H%M%S) 26 27 # エラーチェックと終了処理の定義 28 ERROR_CHECK(){ 29 [ $(plus ${PIPESTATUS[@]}) -eq 0 ] && return 30 rm -rf $tmp-* 31 touch $semd/$(basename $0).$HOSTNAME.ERROR.$today 32 exit 1 33 } 34 12 2015 April

35 # 起動時刻 36 touch $semd/$(basename $0).$HOSTNAME.START.$today 37 38 #################################################################### 39 # テーブルを読み込んで用意しておく 40 cat /etc/hosts decomment self 2 1 hsort key=1 > $tmp-ip 41 ERROR_CHECK 42 touch ${repd}/memory.${today} 43 44 # 各サーバーごとに容量を計測 45 for host in $(msctrl -ctrl C -print host); do 46 ip=$(nameread $host $tmp-ip itouch _ -) 47 ssh ${host} free 48 yarr 49 self 8/13 16 17 19/21 画面 1 yarr: データを縦型にします 0000000 浜地 50 F 76 0000001 鈴田 50 F 46 $ yarr data 0000000 浜地 50 F 76 0000001 鈴田 50 F 46 50 # 1:total 2:used 3:free 4:shared 5:buffers 6:cached 7:bc-used 8:bd-free 9:swap-total 10:swap-used 11:swap-free ❶ 51 awk 'NF==11{print "'${host}'","'${ip}'","'${todayhms}'",$7/$1*100,$10/$9*100,$0}' 52 done 53 # 1: サーバー名 2:IP 3: 年月日時分秒 4: 本体使用率 5:swap 使用率 54 # 6:total 7:used 8:free 9:shared 10:buffers 11:cached 12:bc-used 13:bd-free 14:swap-total 15:swap-used 16:swapfree 55 LANG=C sort -k1,2 56 up3 key=1/3 $repd/memory.$today > $repd/memory.$today.new 57 ERROR_CHECK 58 59 # 最新のものに置き換え 60 mv $repd/memory.$today.new $repd/memory.$today 61 ERROR_CHECK 62 63 ############################################################################# 64 # 終了 65 echo "$HOSTNAME $(basename $0) END $(date +%Y%m%d%H%M%S)" >> $logd/upcnt 66 touch $semd/$(basename $0).$HOSTNAME.END.$today 67 rm -f $tmp-* 68 exit 0 リスト 2 保存したメモリ使用率を取得して 画面出力する 1 #!/bin/bash -xv 2 # 3 # KANSI_MEMORY.CGI 4 # メモリ使用率監視 5 # 6 # Written by aoki 20130902 7 8 # ログの出力 9 appd=/home/usp/kansi 10 logfile=$appd/log/$(basename $0).$(date +%Y%m%d) 11 exec 2> $logfile 12 13 # 変数設定 14 export LANG=ja_JP.UTF-8 15 export PATH=/home/UTL:/home/TOOL:$PATH 16 cgid=$appd/cgi 17 htmd=$appd/html 13

18 logd=$appd/log 19 repd=$appd/report 20 semd=$appd/semaphore 21 shld=$appd/shell 22 tbld=$appd/table 23 tmp=/tmp/$$ 24 today=$(date +%Y%m%d) 25 todayhms=$(date +%Y%m%d%H%M%S) 26 27 # エラーチェックと終了処理の定義 28 ERROR_CHECK(){ 29 [ $(plus ${PIPESTATUS[@]}) -eq 0 ] && return 30 rm -rf $tmp-* 31 touch $semd/$(basename $0).$HOSTNAME.ERROR.$today 32 exit 1 33 } 34 35 # 起動時刻 36 touch $semd/$(basename $0).$HOSTNAME.START.$today 37 38 #################################################################################################### 39 [ "$QUERY_STRING" == "now=1" ] && $shld/kansi_memory 40 41 # 監視ファイルのデータ形成 42 # 1: サーバー名 2:IP 3: 年月日時分秒 4: 本体使用率 5:swap 使用率 43 # 6:total 7:used 8:free 9:shared 10:buffers 11:cached 12:bc-used 13:bd-free 14:swap-total 15:swap-used 16:swapfree 44 touch $repd/memory.$today 45 cat $repd/memory.$today getlast は 画面 2 参照 46 getlast 1 2 dayslash は 画面 3 参照 47 dayslash HH:MM 3 marume は 画面 4 参照 ❷ 48 marume 4.2 5.2 comma は 画面 5 参照 49 comma 6/16 50 awk '{s="_";c="white"; 51 if(90<=$4 ){s="90% 以上危険 "; c="red" } 52 if(80<=$4&&$4<90){s="80% 以上注意 "; c="pink" } 53 if(70<=$4&&$4<80){s="70% 以上要確認 ";c="white"} 54 print $0,s,c;}' > $tmp-check 55 ERROR_CHECK 56 57 ############################################################ 58 # HTML 作成 59 ############################################################ 60 # 出力 61 62 echo "Content-Type: text/html" 63 echo "" ❸ 64 cat ${htmd}/kansi_memory.html calsed は 画面 6 参照 65 calsed "###DATE###" $(dayslash -d --output HH:MM:SS $todayhms) mojihame は 画面 7 参照 66 mojihame -l###report_loop### - $tmp-check 67 cat 68 69 ############################################################ 70 # 終了 71 touch $semd/$(basename $0).$HOSTNAME.END.$today 72 rm -rf $tmp-* 73 exit 0 14 2015 April

画面 2 getlast: 同一キーの最終行を出力します 0000007 セロリ 20060201 117 0000007 セロリ 20060202 136 0000007 セロリ 20060203 221 0000017 練馬大根 20060201 31 0000017 練馬大根 20060202 127 0000017 練馬大根 20060203 514 画面 5 comma: 指定フィールドに 3 桁コンマをふる $ echo 123456789 comma 1 123,456,789 画面 6 calsed:sed コマンドの簡易版 $ echo AAA calsed "AAA" "123" 123 $ getlast 1 1 data 0000007 セロリ 20060203 221 0000017 練馬大根 20060203 514 画面 3 dayslash: 日付時刻に変換します $ echo 20120304 dayslash yyyy/mm/dd 1 2012/03/04 $ echo 20120304093000 dayslash HH:MM 1 09:30 画面 4 marume: 四捨五入 切り上げ 切捨てします 2 列目の小数第 1 位と3 列目小数第 2 位を四捨五入 $ echo 01 0.3418 1.5283 marume 2.0 3.1 01 0 1.5 2 列目の小数第 1 位と3 列目小数第 2 位を切り上げ $ echo 01 0.3418 1.5283 marume +age 2.0 3.1 01 1 1.6 2 列目の小数第 1 位と3 列目小数第 3 位を切捨て $ echo 01 0.3418 1.5283 marume -sage 2.0 3.2 01 0 1.52 $ echo AAA calsed "AAA" "1 2 3" 1 2 3 画面 7 mojihame: テンプレートに文字をはめ込みます $ cat template ###LINE### 1st=%1 2nd=%2 3rd=%3 4th=%4 ###LINE### a1 b1 c1 d1 a2 b2 c2 d2 $ mojihame -l###line### template data 1st=a1 2nd=b1 3rd=c1 4th=d1 1st=a2 2nd=b2 3rd=c2 4th=d2 data ファイルの 1 行ずつをテンプレートにはめ込みます 複数行ある場合は 繰り返します はめ込む場所は 1 列目が %1 2 列目が %2 と対応しています メモリ不足に対して できるだけ早期に原因究明や対策 を行うことができます 今回は紹介していませんが エラー や警告が発生するタイミングで 自動的にメールで通知 [1] 複数のサーバーのメモリ情報の取得及び保存 (❶ リスト 1. 39 ~ 61 行目まで ) することにより 早期にメモリ問題に対して対応が可能 になります [2] 保存したメモリ情報を画面出力用に加工 (❷ リスト 2. 41 ~ 55 行目まで ) [3] HTML データを作成 (❸ リスト 2. 60 ~ 67 行目まで ) 業務サーバーを管理する運用システムは システムの 状態を知る上で重要です 常にメモリ監視を行うことで パフォーマンスの低下 システム処理遅延の一因になる 15