忍者ブログ
全くIT系ではない製造業の社員がイントラ上でColdFusionと格闘。システム構築を外部委託するとき「できればColdFusionでお願いします」と頼むのだが・・・・
[68] [67] [66] [65] [64] [63] [62] [61] [60] [59] [58]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

YouTubeでピタゴラスイッチのピタゴラ装置やアルゴリズム行進がワールドワイド。
フランス語で字幕のついたアルゴリズム行進とか、1000人弱の囚人(フィリピンセブ島?)によるアルゴリズム行進とか。
百科おじさんの声が名古屋章だった頃から録画で見ているワタシ的にはちょっと嬉しい。
「何してるの?おじさん」コーナーも好きだったが、無くなってしまった。ラーメンズを起用するあたり、NHKもなかなかやるな。と思った次第。

さて、

年末年始中にバックアップジョブが失敗し、Oracleが停止したままになっていたのは問題なので、ColdFusionでOracleの死活を通知させることにしました。

ColdFusionのスケジュールタスク機能を使って、下記のテンプレートを1時間ごとに呼ぶことで実現します。

ColdFusionAdministratorのタスクスケジューリング画面ColdFusionAdministratorのタスクスケジューリング画面

<cfprocessingdirective pageencoding="UTF-8">
<!---
スケジュールタスクとして呼ばれ、Oracleへの接続を確認する。
呼ばれるのは、AM7:00からPM22:30の間、1時間ごと。
メールで通知する。
復旧も通知する。
--->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Oracleへの接続確認をする</title>
</head>
<!--- 初期設定 --->
<cfset orastop = false>
<cfset mailto="cfif@hoge.co.jp,cfif@hoge.ne.jp"><!---メール通知先--->
<cffile action="read" file="d:\Inetpub\wwwroot\CF\pingOracle.txt" variable="oracleStatus"><!--- ファイルから前回の状態を読む。"stop" or "open" --->

 <!--- 接続確認 --->
<cftry>
 <cfquery datasource="tip" name="pin">
 select litemid from techmstl
 </cfquery>
 <cfcatch type="database">
  <cfset orastop = true>
 </cfcatch>
</cftry>

<cfif orastop>
<!--- 停止している場合 --->
 <!--- ファイルにstopを書く --->
 <cfif oracleStatus is "open">
  <cffile action="write" file="d:\Inetpub\wwwroot\CF\pingOracle.txt" addnewline="no" output="stop">
 </cfif>
 <!--- メール通知 --->
 <cfmail subject="STOP Oracle" from="server@hoge.co.jp" to="#mailto#">
Oracleが停止しています。
 </cfmail>

<cfelse>

<!--- 起動している場合 --->
 <!--- 復旧かどうかの確認 --->
 <cfif oracleStatus is "stop">
 <!--- 復旧通知 --->
 <cfmail subject="OPEN Oracle" from="server@hoge.co.jp" to="#mailto#">
Oracleが復旧しました。
 </cfmail>
 <!--- ファイルにopenを書く --->
 <cffile action="write" file="d:\Inetpub\wwwroot\CF\pingOracle.txt" addnewline="no" output="open">
 </cfif>
</cfif>
<body>
</body>
</html>

1時間に1回、データーベースに接続を行い、エラーが帰ってきた場合は、指定されたメールアドレスに通知を行います。また、前回エラーで今回正常だった場合は、「復旧」を通知します。

クエリを発行してデータベースのエラーをcfcatchするわけですが、「復旧」を通知するために、状態をファイルに書き込んでいます。application変数を使ってもいいのですが、ColdFusionやサーバーの再起動があった場合には保持できなくなるので、ファイルに書いています。

cffileで読み書きをしていますが、action="write"のaddnewlineプロパティはデフォルトで"yes" つまり追記になります。日時も含めて書き込み、ログ的に使うなら"yes"ですが、今回は"no"でやってます。
ややこしくならないし。f(^^;)

ColdFusionAdministratorの設定では、7:00 - 22:50 をスケジューリングの範囲にしています。
夜中に携帯が鳴るのも鬱陶しい(というか、夜中止まっても支障ないシステムだ)し、週末の23時からバックアップのためデーターベースを停止させているので。

ということで、今年最初のコードを書きました。

PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
ブログ内検索
プロフィール
HN:
CFIF
性別:
男性
自己紹介:
もっと日本でもColdFusionが広まって欲しいです。

情報通信を生業としない企業の、システム系でもない普通の社員なので、 ColdFusionは独学。参考書が少ないのがツライです・・・・なんだかんだ、ColdFusion4.xのシリウス時代から7年くらいのおつきあい?リンコムNextのソースが教科書かも。

外注するときはよく「できればColdFusionで・・・・」とお願いするのですが、ほとんどの場合「えっ!?」と驚かれてしまい、「SEのアサインが・・・」などと営業さんが困ってしまうことが多くて悲しいです。
ちょっとしたものなら自分でシステム構築しちゃいますが、一人でやるには時間が足りませんね・・・

FlashRemotingとかもやりますが、Flexには手を出してません。
と、最初の頃書きましたが、ついにFlexに手を出しました。Flex1.5はイマイチわかりませんでしたが、Flex2は別物ですね。これで6万円でイインデスカ?
そしてFlex2とColdFusionの組み合わせなら無敵な気がしますよ。ほんとに。
最新トラックバック
カレンダー
01 2025/02 03
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
なかのひと
忍者ブログ [PR]