CSP - InterSystems

CSP
トラブルシューティング
& Tips
インターシステムズジャパン㈱
イ
タ シ テ
ジャ
㈱
カスタマーサポート
サポートエンジニア
掛地 めぐみ
アジェンダ
 CSPの概要
 トラブルシュ
トラブルシューティング
ティング
 良くある問題 & 解決策
 Tips
2
はじめに
CSPアプリケーションには、様々なトラブルが
あります。そのトラブルが、「どこで」「な
ぜ」起こっているかを確認するために、まずは
CSPの仕組みからみていきます。
また、CSPの動作原理と各コンポーネントとの
関係についても あわせてみていきます
関係についても、あわせてみていきます。
3
CSPの概要
CSP
の概要
4
CSP の概要
CSP の仕組み
クライアント
Web サーバ
Browser
IIS or
Apache
Caché サーバ
CSP
Gateway
http://localhost/csp/samples/demo.csp
5
CSP の概要
Http リクエスト
クライアント
Browser
Web サーバ
IIS or
Apache
Caché サーバ
CSP
Gateway
Web サーバ
クライアント
Browser
HTTP
IIS
or
Apache
http://localhost:57772/csp/samples/demo.csp
プロトコル
6
ホスト名
[ポート]
CSP の概要
Web サーバリクエストハンドリング
Web サーバ
クライアント
Caché サーバ
IIS or
Apache
Browser
CSP
Gateway
• WEBアプリケーションの決定
Web サーバ
IIS
• 拡張子マッピングの確認
CSP
Gateway
• CSPゲートウェイ(CSPms.dll) の呼
び出し
http://localhost/csp/samples/demo.csp
仮想ディレクトリ
拡張子
7
CSP の概要
CSP リクエストハンドリング
Web サーバ
クライアント
Caché サーバ
IIS or
Apache
Browser
CSP
Gateway
Web サーバ
CSP
Gateway
Caché サーバ
• CS
CSPアプリケーションの
プリケ シ
決定
• Caché サーバへ
TCP リクエストの送信
TCP
http://localhost/csp/samples/demo.csp
CSP アプリケーション
8
CSP の概要
Caché リクエストプロセス
クライアント
Browser
Web サーバ
IIS or
Apache
Caché Server
Caché サーバ
CSP
Gateway
• CSP アプリケーションの決定
• セキュリティの確認
• HTML コードの生成
• http レスポンスの送信
htt //l lh t/ /
http://localhost/csp/samples/demo.csp
l /d
CSP アプリケーション
9
トラブルシューティング
10
ページ名
トラブルシューティング
どこで問題が起こっているか?
5
1
クライアント
Web サーバ
Browser
3
2
IIS or
Apache
p
4
CSP
Gatewayy
① Webサーバの構成
② CSP ゲートウェイ接続
③ CSP ゲートウェイの設定(アプリケーション)
④ Cachéサーバ 接続
⑤ Caché CSP アプリケーション設定
⑥ Caché CSP アプリケーション : ユーザ作成
11
トラブルシューティング
① WEB
WEBサーバの構成+接続確認
サーバの構成+接続確認
5
1
クライアント
Web サーバ
IIS or
Apache
Browser
3
2
4
6
Caché サーバ
CSP
Gateway
以下のURLへのテスト接続:
•
http://<webserver>:<port>
http://<webserver>:<port>/csp/samples/
もし、接続できない場合・・・
•
【原因は?】
・ポートに接続できない
⇒ Firewall の設定は問題ない?
・Webサーバの構成・設定に問題がある可能性。
バ 構成
定
があ
能性
⇒ Webサーバの設定・構成の確認
•
IIS
•
Apache - httpd.conf // 格納場所に問題ない?
Windows:
C:¥Program Files (x86)¥Apache Group¥Apache2
C:¥Program Files (x86)¥Apache Software Foundation¥Apache2.2
Unix/linux:
ps –ef | grep httpd (<apache_install_dir>/bin)
12
6
Caché サーバ
トラブルシューティング
② CSP
CSPゲートウェイ接続
ゲートウェイ接続
5
クライアント
1
Web サーバ
2
IIS or
Apache
Browser
3
4
6
Cache サーバ
CSP
Gateway
CSPゲートウェイ管理ページへのテスト接続
ゲ
ウ イ管理ペ ジ
接続
http://<webserver>:<port>/csp/bin/Systems/Module.cxw
** * csp.ini ***
[SYSTEM]
System_Manager=190.8.7.6
No Activity Timeout=1800
No_Activity_Timeout=1800
sys_shm_inst=1
:
• もし、次のエラーになった場合: このシステムを使用する権限がありません
【原因は?】
・ 接続クライアントは、CSPゲートウェイへの接続が許可されていません。
p に、対象クライアントIPアドレスを追加
⇒ csp.ini
• もし、正常に動作しない・接続できない場合・・・
【原因は?】
・ WEBサーバへのCSPゲートウェイのインストレーションが正しく行われていない
可能性がある
⇒ 構成見直し or CSPゲートウェイの再インストール
13
トラブルシューティング
③ CSP
CSPゲートウェイの設定
ゲートウェイの設定
5
クライアント
Browser
1
Web サーバ
IIS or
Apache
2
3
4
6
Cache サーバ
CSP
Gateway
設定内容は、CSP.iniに格納
IIS:C:¥Inetpub¥CSPGateway
Apache:C:¥Program Files (x86)¥Apache Software Foundation¥Apache2.2¥CSPGateway
• デフォルトパラメータ
• サーバ接続
• アプリケーションアクセス
• イベントログファイル (CSP.log)
• CSP.ini と CSP.log の書き込み権限を確認
(& CSPGateway ディレクトリも)
14
トラブルシューティング
④ CSP
CSPゲートウェイのサーバ接続テスト
ゲートウェイのサーバ接続テスト
5
クライアント
1
Web サーバ
2
IIS or
Apache
Browser
3
4
6
Caché サーバ
CSP
Gateway
接続に成功すると・・・
15
トラブルシューティング
CSPゲートウェイ:サーバ接続に失敗したら
CSP
ゲートウェイ:サーバ接続に失敗したら
5
クライアント
Browser
1
Web サーバ
IIS or
Apache
2
3
4
6
Caché サーバ
CSP
Gateway
もし、CSPゲートウェイのサーバ接続テストに失敗したら・・・
【原因は?】
CSPゲートウェイの設定や構成の問題?
⇒ IPアドレス、ポート、ユーザ名/パスワードの確認
設定 問
設定に問題が見つけられない場合、各種ログを確認
見
場 、各種
認
• セキュリティ監査の有効化 + Login, LoginFailureの有効化
• ISCLOG の有効化
^%ISCLOG=3 テスト接続後に確認
16
トラブルシューティング
⑤ CSP
CSPアプリケーションの接続確認
アプリケーションの接続確認
5
クライアント
1
Web サーバ
2
IIS or
Apache
Browser
3
4
6
Caché サーバ
CSP
Gateway
もし 以下のテスト接続に失敗したら
もし、以下のテスト接続に失敗したら・・・
- http://<webserver>:<port>/csp/samples/inspector.csp
【原因は?】
• CSPアプリケーションの設
定・構成に問題?
17
トラブルシューティング
CSPアプリケーションの設定
CSP
アプリケーションの設定
5
クライアント
Browser
1
Web サーバ
IIS or
Apache
2
3
4
6
Caché サーバ
CSP
Gateway
Caché 管理ポータル
管理ポ タル :CSP
CSP アプリケーション設定の確認
アプリケ ション設定の確認
• システム管理 > セキュリティ
> アプリケーション > ウェブアプリケーション
===
•
•
•
•
•
18 •
確認ポイント ===
有効
認証方法
ネームスペース
CSP ファイル物理パス
ログインページ
静的ファイルの提供
トラブルシューティング
⑥Caché
Cachéサーバまでの接続に問題がない場合
サーバまでの接続に問題がない場合
5
クライアント
1
Web サーバ
IIS or
Apache
Browser
3
2
4
6
Caché サーバ
CSP
Gateway
① WEBサーバのテスト接続に問題はない
WEBサ バのテスト接続に問題はない
↓
② CSPゲートウェイのテスト接続にも問題はない
↓
③ CSPアプリケーション設定にも問題はない
↓
ユーザ作成のCSPアプリケーション固有の問題である可能性が考えられる
ログ&エラーメッセージより問題の原因を追跡
19
トラブルシューティング
ロギングについて
クライアント
Browser
Webサーバログ
Web サーバ
IIS or
Apache
HTTPトレース
Caché サーバ
CSP
Gateway
ISCLOG
監査ログ
イベントログ
(CSP.log)
20
Cconsole.log
トラブルシューティング : ロギングについて
Web サーバログ

アクセスログ・エラーログ
• リクエストとレスポンスを記録
リク ストとレスポンスを記録
-Webクライアントからどのようなリクエストがきたか?
- Webクライアントにどのようなレスポンスが返されたか?
• 格納場所
- IIS:C:¥inetpub¥logs¥LogFiles
- Apache:
C:¥Program Files (x86)¥Apache Software Foundation¥Apache2.2¥logs
※ログの格納場所は、IISマネージャー / httpd.conf で確認
21
トラブルシューティング : ロギングについて
CSPGatewayログ(イベントログと
CSPGateway
ログ(イベントログとHTTP
HTTPトレース)
トレース)
 イベントログ
• CSPゲートウェイとCaché間のデータ送受信を記録
イベントログは、次のログレベルを設定可能。 EVn (n=1~9)
• 出力ファイル C:¥Inetpub¥CSPGateway¥CSP.log
 HTTP トレース
• HTTPヘッダやPOSTされた内容(アプリケーション)を記録
HTTP トレース機能は、ログ・レベル
トレ
機能は
グ レベ v99 (処理の HTTP 要求を記録)
および v9r (HTTP 要求および応答を記録) で、
既に収集されているイベント・ログ情報がベース。
• CSPゲートウェイ管理画面より確認
22
トラブルシューティング : ロギングについて
Cachéサーバログ
Caché
サーバログ
 ISCLOG
• CSPゲートウェイとCachéサーバ間のやりとりを記録
Set ^%ISCLOG=n (n=1,2, or 3)
Set ^%ISCLOG=0 でロギング無効化
• ^%ISCLOGグローバルに記録、管理ポータル等で確認
 監査ログ
監査 グ
• %Loginfailureイベントで、なぜログインに失敗したかを確認できる
• 監査ログの閲覧で確認
23
トラブルシューティング : デモ
実際にログを見てみよう!
ログを利用したトラブルシューティング
24
トラブルシューティング:デモ
トラブル事例:1
トラブル その1:<UNDEFINED>エラー 関連
5
クライアント
1
Web サーバ
2
IIS or
Apache
Browser
3
4
6
Caché サーバ
CSP
Gateway
どこに問題の原因
があるかな?
25
トラブルシューティング:デモ
トラブル事例:2
トラブル その2:ハイパーイベントが動かない
5
クライアント
Browser
1
Web サーバ
IIS or
Apache
2
3
4
6
Caché サーバ
CSP
Gateway
どこに問題の原因
があるかな?
26
トラブルシューティング:デモ
トラブル事例:3
トラブル その3:Cachéサーバに接続できない
5
クライアント
Browser
1
Web サーバ
IIS or
Apache
2
3
4
6
Caché サーバ
CSP
Gateway
どこに問題の原因
があるかな?
27
よくある問題 & 解決策
28
よくある問題 & 解決策
Error 404.8 – Not Found:
Found:HiddenSegments
• 管理ポータルにはアクセスでき
る。しかし、CSPゲートウェイ管理
ページにアクセスすると、このエ
ラーになる場合
• C:¥Windows¥System32¥inetsrv¥co
nfig¥applicationHost.config
fi ¥ li ti H t
fi
の
内容を確認
• <add segment=“bin”/>
があれば、コメントアウトする
29
よくある問題 & 解決策
You are not authorized to view this page…
• HTTPステータスコードは以下
401.3 – Access Denied か
403 – Forbidden
• OS レベルのパーミッション
(アクセス権)エラー
• C:¥inetpub¥CSPGateway と
<instaldir>¥CSP
に対し、IIS_IUSRS, USERS,
SYSTEM Administrators 等に正
SYSTEM,
しい権限が付与されているかを
確認
• 親ディレクトリの権限を継承す
るように設定
30
よくある問題 & 解決策
警告:: 構成ファイルに書き込めません
警告
構成ファイルに書き込めません..
• 警告: 構成ファイルに書き込めません.
もしくは
警告: ログファイルに書き込めません.
• C:¥inetpub¥CSPGateway¥CSP.ini
と
C ¥i t b¥CSPG t
C:¥inetpub¥CSPGateway¥CSP.log
¥CSP l
について、Write権限を付与する
必要がある
31
よくある問題 & 解決策
その他よくある問題…
その他よくある問題
…
 “Cannot find ZenUtils.js”
- 拡張子マッピングの設定に問題がないか?
*.js のマッピングは追加されているか?
- 静的ファイルが指定した物理パスに存在するか?
静的ファイルの設定に問題はないか?
 管理ポ
管理ポータルで特定ページのみ表示されない
タルで特定
ジのみ表示されない
- IEでダメな場合、他のブラウザでは?
Firefox、Chrome など
32
よくある問題 & 解決策
その他よくある問題…
その他よくある問題
…
 Http 404 Error – File Not Found
Object Not Found
Fo nd
- CSPアプリケーションパスが定義されているか確認
- 拡張子のマッピングが設定されているか確認
- 指定した物理パスにファイルが存在するか
→ ある方法を使うとわかり易いエラー表示ができる!
33
よくある問題 & 解決策
エラーメッセージ:よりわかり易く
古いバージョンでは・・・
・エラー時に、わかりやすいエラーページを返していた
⇒ そのページを表示する分、余分にライセンスを消費
CSPエラー発生
エラー: ログアウトしているので、この操作を行うことができません。
エラー番号: 5918
CSPページ: /csp/wrc/B.csp
ネームスペース: WRC
クラス: csp.e
新しいバージョンでは・・・
・シンプルなエラーを返すようになった
・シンプルなエラ
を返すようになった
⇒ 余分なライセンスは消費されなくなったが、エラー詳細が分りづらい
Object Not Found
The requested URL /csp/wrc/B.csp was not found on this server.
34
よくある問題 & 解決策
エラーメッセージ:よりわかり易く
 これまでの動きに戻すには?
カスタムエラーページで、 PAGENOTFOUNDERRORPAGE パラメータを指定
PAGENOTFOUNDERRORPAGE = “”
– 404 ページが見つかりません エラーを返す (既定)
PAGENOTFOUNDERRORPAGE = 1
– 古いバージョンのように通常のエラーページを返す。
※ライセンスが消費される
PAGENOTFOUNDERRORPAGE = “HTML ページへのパス”
– 静的ページを表示。 例えば ‘/csp/samples/static.html’
※ライセンスは消費されないが、固定のHTMLページを表示するのみ。
Class %
%ZCSP.Error Extends %
%CSP.Error
{
Parameter PAGENOTFOUNDERRORPAGE As STRING = 1;
}
※その他、LICENSEERRORPAGE/OTHERSTATICERRORPAGEなどのパラメータを指定可能
http://docs.intersystems.com/cache20131j/csp/docbook/DocBook.UI.Page.cls?KEY=GCSP_httpreq#GCSP_C161955
35
Tips
36
Tips
タイムアウトの違い
クライアント
Browser
Web サーバ
IIS or
Apache
Cache サーバ
CSP
Gateway
 CSPアプリケ
CSPアプリケーションのセッションタイムアウト
ションのセッションタイムアウト
-クライアントから最初のリクエストを受け取ってから
(なにも操作がない場合)、セッション情報を保持する最大時間(秒)
 CSPゲートウェイのタイムアウト
(1) [サーバ応答タイムアウト]
- Caché サ
サーバが
バが Web サ
サーバからの要求に応答を返すまでの最大時間
バからの要求に応答を返すまでの最大時間 (秒)
(2) [キューイングされたリクエストのタイムアウト]
-未処理の要求が、キュー内で待機できる最大時間 (秒)
(3) [非活動タイムアウト]
-プールされたプロセスがアイドル状態で保持される最大時間 (秒)
37
Tips
セッションタイムアウトとライセンス

セッションは、ブラウザが初めてCSP画面にアクセスした時に
開始されます。
セッション開始とともに ライセンスのチェックと消費が行われます。
セッション開始とともに、
 セッション終了時、ライセンスを解放します。
セッションの終了は、以下2通りの方法があります。
•
あらかじめ設定されたタイムアウトを経過した場合
•
明示的にセッションを終了する場合
%session.EndSessionプロパティに1を代入するとセッションは終了します。
ただし・・・
CSPページを1 ページだけ表示し、セッションを終了( %session.EndSession = 1 )、または
セッションがタイムアウトした場合、CSP は数分間の 猶予期間 を受け取り、その間はラ
イセンスが消費され続けます。
38
Tips
静的ファイル
• ブラウザはWebサーバに静的ファイ
ルのリクエストを送信
• 拡張子のマッピングを確認する
• CSPゲートウェイか、サーバのファイ
ルシステムにリクエストが送られる
A)
クライアント
Browser
Web サーバ
IIS or
Apache
Image.jpg
Style.css
Scripts.js
B)
クライアント
Browser
Web サーバ
IIS or
Apache
Caché サーバ
CSP
Gateway
Image.jpg
Style.css
Scripts.js
39
Tips
イベントログのサイズでの切り替えについて
Caché 2010.1より、
CSPゲートウェイ:
デフォルトパラメータで「イベントログ切り替えサイズ:」の設定によ
り、一定サイズになったら切り替わる。
※ファイルをリネームした場合は、自動で切り替わる
※Caché 2013.2以降、
2013 2以降 cconsole.log
cconsole log のように
現行 + 1 ファイルのみ生成される
例:CSP_YYYYMMDD_hhmm.log
40
nK(キロバイト)
nM(メガバイト)
Tips
CSPデバッグ
CSP
デバッグ
• CSP Inspector
• Cachéスタジオでエラー発生箇所の確認
• Cachéターミナルからの実行
41
Tips
CSPデバッグについて:
CSP
デバッグについて: CSP Inspector
• ページ内、以下のスクリプトを追加することで
トレース コンソールを Web ページに作成すること
が可能。
<SCRIPT LANGUAGE=CACHE RUNAT=SERVER>
Set %response.TraceDump=1
</SCRIPT>
http://localhost/csp/samples/inspector.csp
• %resuponse.TraceDumpを指定しない場合は0を設定。
42
Tips
CSPデバッグについて:
CSP
デバッグについて: CSP Inspector+スタジオ
Inspector+スタジオ
CSPエラーが発生した場合、CSPエラーページより、以下の情報を確認できます。
・ エラー発生箇所
・ オブジェクトダンプ:「CSP request object inspector」画面
← エラー発生箇所
← エラー種別
← エラー発生行
※注意1
ウォッチポイントを使用する方法
を紹介。
スタジオ:[デバッグ] – [ブレーク
ポイント] – [ブレークポイントの
表示]
ウォッチポイント:
変数:tDateH
条件:$Data(tDateH) = 0
※tDateHが未定義になる時
注意1
自動コンパイルではソース行(*.int)は保存されないため、スタジオでCSPファイル
をコンパイルするか、コマンドにてコンパイルを行ってください。
43
Tips
CSPデバッグについて:
CSP
デバッグについて: ターミナルからの実行
• サーバ上でCSPページの参照を行うには、以下のメソッドを使用して任意
のCSPページを参照可能。(HTTP headers と HTMLコードをダンプ)
例:
do $system.CSP.Show("csp/samples/menu.csp")
or:
do $system.CSP.Shell()
CSP:SAMPLES>>>get csp/samples/menu.csp
• Shell() で実行した場合は、エラー実行後に、ページ内のオブジェクト
(%request や%response、%session)の値を参照できるので、それを利用し
てデバックを行うことができます。
44
Tips
CSPアプリケーションでHTTP
CSPアプリケーションで
HTTPヘッダ
ヘッダ
(CGI環境変数
(CGI
環境変数))を取得
CGI環境変数は、%requestオブジェクトを使用して取得できます。
CGI環境変数の取得には%requestオブジェクトの
CgiEnvsプロパティを使用します。
%request CgiEnvs(“環境変数名”))
%request.CgiEnvs(“環境変数名
例)
%request.CgiEnvs(“HTTP_ACCEPT_CHARSET ”)
また、GetCgiEnvs()メソッドを使用しても取得できま
す。(推奨)
例)
%request.GetCgiEnv(“環境変数名””)
スクリプトでは、取得したCGI
環境変数を全て画面に表示
しています。
サンプルURL
http://localhost/csp/samples/inspector.csp
45
Tips
CSPアプリケーションで
CSP
アプリケーションでCookie
Cookie情報を取得
情報を取得
CGI環境変数と同様にCookieも%requstオブジェクトを使用して取得できます。
書式は以下の通りです。
• Cookiesプロパティを使用する場合
%request.Cookies(“名前”,”参照番号”)
• GetCookie()メソッド、InsertCookie()メソッドを使用する場合 (推奨)
• %request.GetCookie(“名前”,”デフォルト値”,”参照番号”)
戻り値に指定された名前の値を返します。
• %request
%request.InsertCookie(
InsertCookie(“名前”
名前 ,”値”)
値 )
戻り値なしです。
CGI環境変数も同様の書式です。ただし変数名が一意となるため、
参照番号の指定は不要です。
46
Tips
CSPサンプルの紹介
CSP
サンプルの紹介
Caché には、CSP ページの様々なサンプルが用意されています。
• Inspector.csp
• Error/LogError.csp
• Redirect / ServerSideRedirect.csp
• Object.csp
• Query.csp
Q
• ZipCode.csp
などなど.......
47
Tips
ご参考資料
• http://127.0.0.1:57772/csp/samples/menu.csp
CSPサンプルページ
• http://127.0.0.1:57772/csp/docbook/DocBook.UI.Page.cls?KEY=GCSP_cspfaq
オンラインドキュメント :「CSP に関するよくある質問」
• http://127.0.0.1:57772/csp/docbook/DocBook.UI.Page.cls?KEY=TWEB_preface
オンラインドキュメント:「 Caché Web アプリケーション・チュートリアル」
• http://www.intersystems.co.jp/support/guide.html
Caché技術ガイド(CSPガイド)
技術
(
)
• http://faq.intersystems.co.jp/csp/faq/FAQ.FAQTopicSearch.cls
InterSystems FAQ (CSP以外にもよくある質問を掲載しています)
48
まとめ
• CSPアプリケーションに問題があったとき、解決する為に、まず
どこに原因があるのか、切り分けることが重要となります。
• 問題発生要因の特定に
問題発生要因の特定に、デバックツールやログを利用することで、
デバックツールやログを利用することで
WEBサーバに原因があるのか、 CSPゲートウェイ・Cachéサーバの
設定に原因があるのか、ユーザ作成アプリケーションに原因があ
るのかなど、確認できるようになります。
• それでも解決できない場合は、必要なログ情報を添えて、イン
ターシステムズカスタマーサポートセンターまでご連絡ください。
Email:jpnsup@intersystems com
Email:[email protected]
電話:0120-17-1972
49
CSP トラブルシューティング & Tips
ありがとうございました
50