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

2024年8月11日日曜日

SAS Viya Monitoring for Kubernetes からログを抽出するカスタムステップ

SAS Viyaでエラーを調査するときにOpenSearchでログを抽出するが、それを簡単に実行するカスタムステップがSAS Communities Libraryに紹介されている。ログの抽出が面倒な理由は複数ある。

  • OpenSearchで抽出できるのは10,000件というAPIの上限がある。
  • その制限の範囲内で抽出しようとすると手間がかかる。
  • フィールドを毎回選ぶのが面倒だ。
それをSAS Studioから範囲を指定して簡単に抽出できるのが、以下のカスタムステップです。get-k8s-info.sh, sas-viya configuration downloadと共に調査のツールとして使い手があります。

2023年11月21日火曜日

SAS StudioからOpenSearchのログを検索するサンプル

Viyaのログの調査の効率を上げるためにSAS Studioからクエリを投入できないか思案しています。できたのが以下のコードです。

/* Sample code to search OpenSearch by PROC HTTP. */
filename myresult temp;

data _null_;
	attrib code length=$64;

	/* Change the following user name (admin) and password (hogehoge) to match your environment. */
	code=put("admin:hogehoge", $base64x64.);
	put code=;
	call symputx('code', compress(code), 'G');
run;

proc http url="https://v4m-search.logging.svc.cluster.local:9200/_search"
		in='{ "query": { "simple_query_string": { "query": "setinit", "fields": [ "message" ], "default_operator": "and" }}}' 
		out=myresult
		timeout=30
		/* clear_cache*/;
	sslparms "SSLREQCERT"="allow" SSLCERTLOC="/opt/sas/viya/home/SASSecurityCertificateFramework/tls/certs/ca-bundle.pem";
	headers "content-type"="application/json" "authorization"="Basic &code.";
	debug level=0;
run;

data _null_;
	infile myresult;
	input;
	put _INFILE_;
run;
このコードが意味するところは、messageフィールドからsetinitを検索しています。URLのホスト名、ポート番号とPEMのファイルはSAS Compute ServerのPodに接続して探したり、kubectl describe endpointsやservicesで探しました。それらのホスト名とかポート番号は公式なドキュメントには書かれていないので実機検証で調べてたものです。なので内部の実装は知らぬ間に変わる可能性があることに留意してください。

CURLの--insecureに相当するのが、SSLREQCERTのオプションです。それだけだとエラーが出るので、SSLCERTLOCでPEMファイルを指定しています。

私は全く知らなかったのですが、これでPROC HTTPを実行すると接続とCOOKEの情報が保持されるそうです。それをクリアするのがコメントアウトしてある CLEAR_CACHEです。その接続とCOOKIEがあれば、毎回SSLSERTLOCを指定する必要はありません。