JP1サポート技術者ブログ

  • 統合管理
2021.03.29

【JP1/IM2】JP1×チャットツールで実現!素早く・手軽なJP1イベントの確認手順

【JP1/IM2】JP1×チャットツールで実現!素早く・手軽なJP1イベントの確認手順

近年、テレワークの普及もあり、メールよりもチャットツールを使ったやり取りが増えてきていますね。メーラーを見る時間よりもチャットツールを見る時間が長い、という方も多いのではないでしょうか。

JP1製品でもJP1イベントをメール通知させる機能がありますが、インターネットへ接続可能な環境であれば、コマンドまたはスクリプト実行によるチャットツールへの連携が可能です。

そこで、本記事ではJP1イベントをSlackおよびGoogle Chatへ連携させる手順をご案内します。


連携環境について

本記事では、Windows環境はPowerShell、Linux環境ではCurlを使用した連携方法を記載します。

<動作確認環境>
(Windows環境)
OS:Windows Server 2019
JP1バージョン:V12.1

(Linux環境)
OS:CentOS Linux release 7.8.2003 (Core)
JP1バージョン:V12.1
Curlバージョン:curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.44 zlib/1.2.7 libidn/1.28 libssh2/1.8.0


チャットツールとの連携準備

チャットツールとの連携にはWebhookを使用します。予めチャット側にてWebhookでpostするためのURLを発行しておきます。
手順は下記のとおりです。

Slack連携の場合

1.Slackへのアプリのインストール
 事前にSlackに「Incoming Webhook」アプリケーションをインストールしておきます。アプリケーションのインストールにつきましてはSlack側にてご確認ください。

2.Incoming Webhookの追加
 Incoming Webhookのインストール後、新規追加ページ にアクセスし、JP1イベントを通知したいチャンネルを選択、または新規作成し「Incoming Webhookインテグレーションの追加」をクリックします。

3.作成されたWebhook URLを記録

 下記画面が表示され、Webhook URLが生成されるので、こちらのURLを控えておきます。

Google Chat連携の場合

1.チャットルームの作成
 JP1イベントを通知したいチャットルームを作成します。

2.Webhookの設定

 チャットルーム名を選択し、表示されたメニューから「Webhookを管理」をクリックします。

3.Webhookを作成

 任意の名前を入力し、「保存」をクリックします。

4.生成されたWebhook URLの確認
 下記画面が表示され、Webhook URLが生成されますので、こちらのURLを控えておきます。

連携用PowerShellスクリプトの作成

Linux環境ではcurlコマンドでそのままpostが可能ですが、Windows環境のcurlで実行した場合、文字コードがShift-JISとなるためチャット側で文字化けしてしまいます。PowerShellのInvoke-RestMethodコマンドで文字コードを変換することで文字化けすることなくpostできるため、事前にスクリプトを用意しておきます。

以下、サンプルスクリプトです。

■Slack連携用スクリプト

slacknotify.ps1
-------------------------------------------------------------------------------------
#文字化け防止のための文字コード変換
$enc1 = [System.Text.Encoding]::GetEncoding('ISO-8859-1')
$enc2 = [System.Text.Encoding]::UTF8.GetBytes($args)
#JP1イベント格納用の変数定義
$jp1eventnotify = @{
text = $enc1.GetString($enc2);
#slack側のユーザ名を定義
username = "JP1Event";
}
#Invoke-RestMethodでJP1イベントをPOST
Invoke-RestMethod -Uri "https://hooks.slack.com/services/xxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyy" -Method Post -Body (ConvertTo-Json $jp1eventnotify)
-------------------------------------------------------------------------------------

■Google Chat連携用スクリプト

googolechatnotify.ps1
-------------------------------------------------------------------------------------
#文字化け防止のための文字コード変換
$enc1 = [System.Text.Encoding]::GetEncoding('ISO-8859-1')
$enc2 = [System.Text.Encoding]::UTF8.GetBytes($args)
#JP1イベント格納用の変数定義
$jp1eventnotify = @{
text = $enc1.GetString($enc2);
}
#Invoke-RestMethodでJP1イベントをPOST
Invoke-RestMethod -Uri "https://chat.googleapis.com/v1/spaces/abcde/messages?key=xxxxxxxxxxxxxxxxxxxxx" -Method Post -ContentType 'application/json' -Body (ConvertTo-Json $jp1eventnotify)
-------------------------------------------------------------------------------------
赤字部分にそれぞれ事前に控えたWebhook URLを指定します。

(補足)
○PowerShellスクリプトを実行する場合、事前にコマンドプロンプトを管理者権限で起動し、下記コマンドを実行して実行許可を付与しておく必要があります。

 >Set-ExecutionPolicy RemoteSigned

 詳細につきましてはPowerShell側にてご確認ください。

○実行環境からのインターネット接続にProxyがある場合、スクリプト内に下記設定を行うことで定義可能です。

$proxyServer = "http://xxx.xxx.xxx:yyyy"
$proxyUser = "user"
$proxyPassword= "password"

○本スクリプトは弊社環境にて稼働確認を行っておりますが、あくまでもサンプル提供となりますため、記載内容に関するお問い合わせはご容赦ください。

JP1への連携設定

WebhookのURLを発行した後、JP1側で連携するためのコマンドを登録します。JP1/IM、JP1/IM2の自動アクション機能にて、curlコマンドまたはPowerShellスクリプトを定義することで連携が可能です。

自動アクションでは変数として$EVMSGを指定することで元のJP1イベントを引き継ぐことが可能です。

以下、JP1/AJS3のジョブネットがエラーとなった場合(イベントID:4104)に通知する場合の設定例です。

1.JP1/IM-Viewから[オプション]→[自動アクション設定]を開きます。

2.[追加]をクリックし、[アクション詳細設定]画面のアクションへ、下記コマンドを指定します。

 【Slackと連携する場合:Linux環境】
  [コマンド文]
curl -X POST -H "Content-type: application/json" --data "{'text':"'"?EVMSG?"'"}" https://hooks.slack.com/services/xxxxxxxxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyyy

 【Slackと連携する場合:Windows環境】
  [コマンド文]
powershell /c C:\temp\slacknotify.ps1 "'"$EVMSG"'"

 【Googleチャットと連携する場合:Linux環境】
  [コマンド文]
curl -H 'Content-Type:application/json' -d '{ "text":"'"?EVMSG?"'" }' "https://chat.googleapis.com/v1/spaces/abcde/messages?key=xxxxxxxxxxxxxxxxxxxxx"

 【Googleチャットと連携する場合:Windows環境】
  [コマンド文]:powershell /c C:\temp\googlechatnotify.ps1 "'"$EVMSG"'"

下図はSlack連携用自動アクションの設定例です。

上記設定によりジョブネットエラーのJP1イベント発行時にコマンドが実行され、Slack、Google Chatへメッセージが通知されます。


▼Slackへの連携イメージ

▼Google Chatへの連携イメージ


まとめ

今回はJP1イベントをチャットツールに連携する手順についてご案内しました。今回ご紹介したSlack・Google Chatの他、Microsoft TeamsやChatworkなど、ビジネス向けチャットではWebhookによる連携が可能です。

チャット連携によりほぼリアルタイムにJP1イベントが確認できるようになるため、死活監視やジョブエラーの確認にぜひご活用ください。


製品正式名称(略称表記) および機能対象バージョン

JP1/Integrated Management (JP1/IM) 09-00以降
JP1/Integrated Management 2 (JP1/IM2) 12-00以降
JP1/Automatic Job Management System 3 (JP1/AJS3) 09-00以降

JP1ブログをご覧いただいているみなさまへご案内

いつもJP1サポート技術者ブログをご覧いただきありがとうございます。

アシストとJP1保守契約を締結されている方は、Webサポートセンター「AWSC」をご利用いただけます。本ブログサイトではご紹介しきれない3,000件以上のFAQを公開していますので、是非ご利用ください。
また、アシストではJP1ユーザ企業様向けの無償セミナーや支援サービスを多数ご提供しています。JP1の潜在リスクを洗い出す診断サービスや、バージョンアップ時のノウハウをご紹介するセミナーなどご用意していますので、貴社の課題解決へとお役立てください。アシストと保守契約を締結されていないお客様にもご参加いただけます。詳細は、下記リンクよりご確認ください。



執筆者情報

2003年入社。JP1のフィールドエンジニアを経て2015年よりJP1サポートセンターにて勤務。
2020年9月より本ブログ記事を担当することになりました。JP1を利用されている方に少しでもお役に立てる情報を提供したいと思います。

奈良在住。最近は家庭菜園にハマっています。

西尾 高治

関連している記事

  • 統合管理
2020.08.28

【JP1/IM】不要なアラートを抑止! 定期メンテンナンス時間だけ、メールなどによる通報通知を止める方法

定期的なサーバ再起動やメンテナンス時に、不要な通報通知を抑止する方法をご紹介します。

  • 統合管理
2019.05.29

【JP1/IM2】フィルターや自動アクションを設定する時の便利機能

JP1/IM-ViewでJP1イベントを参照する際、「このイベントはフィルタリングしたい」「このイベントを自動アクションの対象にしたい」思った時は、対象のJP1イベントの条件を自動で入力できる機能が便利です!

  • 統合管理
  • ジョブ管理
2019.04.19

【JP1/IM2】【JP1/AJS3】別環境のジョブネット同士の接続性を表示

JP1 Version 12では、別環境のジョブ同士の接続性を表示する機能が実装されました。『システムが複数あると障害がすぐに検知できない…』と困っていた方は必見!対応時間の大幅な短縮が期待できます。

ページの先頭へ戻る