Enterprise 技術情報 Enterprise Technical information
Kompiraジョブフローの基礎 既存のスクリプトをKompiraで利用する
運用の現場では日々の作業を行うために、さまざまなスクリプトを利用されていると思います。Kompiraで利用する「ジョブフロー」もスクリプトの一種ですが、Kompira用の特別な記法で処理を記述する必要があります。
この記事では、いままで運用で利用しているスクリプトをKompiraに取り入れて実行する方法を紹介します。
環境情報
本稿は、以下の環境で検証しています。
項目 | バージョン |
OS | CentOS Linux release 7.7.1908 |
Kompira | ver.1.5.5.post7 |
スクリプトの例として、ファイルの退避を行うスクリプトを考えてみます。例えば、ログファイルは障害分析などに必要な直近の分はサーバー上に置いておきつつ、logrotateなどでアーカ イブされた古くなった分についてはディスク容量の逼迫を避けるため、ファイルサーバーなどに保存用に退避させておきたいなどの運用があります。
まずは以下のようなログファイルを退避させるシェルスクリプト”movelogfile.sh”を使っているとします。これは複数の指定のフォルダに作成される”*.log”という名前のファイルを、ファイルサーバーの指定のパスに移動する処理を行います。ここでは、ファイルの移動にscpコマンドを利用していますが、パスワードの登録を求められないように証明書認証ができるように設定しておく必要があります。
#!/bin/sh # 移動対象のログファイル名のパターン ext='*.log' # 転送先のアカウントとアドレス(scpで証明書認証が出来る事) $user='admin' $host='192.168.1.1' # 特定拡張子ファイルを指定ディレクトリに移動する関数 # MoveFile 移動元ディレクトリ 移動先ディレクトリ MoveFile(){ FromDir=$1 ToDir=$2 # 移動元ディレクトリの存在確認 if [ ! -d $FromDir ]; then echo "ERROR: 移動元ディレクトリ[$FromDir]が存在しません。" exit fi # シェルスクリプト内で対象ディレクトリへ移動 cd $FromDir # 指定のパターンを持つファイルの検索 for FromFile in `find . -name "$ext"` do # 移動先 Name=`echo $FromFile | sed -e 's/\..*\///'` ToFile=$ToDir/$Name # ファイル移動 echo "[$Name]を[$ToDir]に移動します。" scp $FromFile $user@$host:$ToFile done } # 処理メイン echo "################## START ######################" MoveFile /home/user/project1/ /home/user/log MoveFile /home/user/project2/ /home/user/log MoveFile /home/user/project3/ /home/user/log echo "################### END #######################" exit
これを深夜2:00に定期的に自動実行する場合では、crontabに次の様に登録しているでしょう。
0 2 0 0 0 /usr/local/bin/movelogfile.sh
「スクリプトジョブ」オブジェクトの作成
さて、上記の処理をKompiraのスクリプトジョブの機能を使って実行する方法を説明していきます。ここではサーバー側でファイル移動のスクリプトを実行するため、「スクリプトジョブ」型のオブジェクトを作成します。以下の条件でオブジェクトを作成します。
名称: ファイルのバックアップ
型:スクリプトジョブ
ここで「+」ボタンをクリックすると、次のようなソースを入力する編集画面が表示されます。
「スクリプト」欄にファイル移動のためのシェルスクリプトを記載します。ここでは上記の”movelogfile.sh”のソースをそのまま転記してください。
スクリプトの実行
スクリプトを実行するサーバーとそのアカウントを指定する必要があります。ここでは事前準備で作成した”server1″、”アカウント1″を指定して「実行」をクリックします。もしスクリプトが引数を取る場合には「コマンドライン引数」の欄に記載してください。
ここで実行ボタンをクリックすると
1. 「スクリプト」に記載したコードを一時ファイルにして、指定の「実行ノード」に転送
2. 転送したファイルに実行権限を付与
3. スクリプト実行
4. 作成した一時ファイルを削除
上記のような処理が順次実行されます。
ここではKompiraの「スクリプトジョブ」型のオブジェクトを利用して、サーバー側にシェルスクリプトの一時ファイルを転送して実行するようにしました。もちろん、サーバー側に事前に用意したスクリプトを [ “backup.sh” ] のようにして起動するジョブフローを作っても同様の事ができますが、ジョブフローをメンテナンスする際に、各サーバーに配置されたシェルスクリプトを置き換えるよりは、「スクリプトジョブ」型を利用する方が集中して管理できるメリットがあります。
また、このスクリプトをcrontabに登録するのと同じように定期的に実行したい場合は「スケジューラを使って定期的にジョブを実行する」で紹介したスケジューラ機能を使用することで、同様の定期的な実行をさせることができます。
スクリプトジョブの単体での実行だけでなく、Kompiraのジョブフローの中からスクリプトジョブを呼び出し、結果をさらにジョブフローで扱うということも可能です。
ジョブフローからのスクリプトジョブの実行例は、今後改めてコラムとしてご紹介する予定です。
スタートガイド
Kompiraジョブフローの基礎
ジョブフローの簡単な例
Kompiraの機能
-
- フィールド修飾子でフィールドの入力内容に制約を設ける
- Kompiraでの文字列のパターンマッチング
- Kompira上でWikiページを作成する
- スケジューラを使って定期的にジョブを実行する
- ジョブフローを実行するフォームを作成する
- テーブル内の情報を選択して処理を実行する
- ジョブフローに権限設定をする
- ジョブフロー画面の各種設定
- Pythonで記述された処理をKompiraから呼び出す
- Kompiraオブジェクトのプロパティ,メソッド,フィールドを扱う
- Windowsでリモートスクリプトを実行する(その1)
- Windowsでリモートスクリプトを実行する(その2)
- Kompira上のデータをバックアップする(その1)
- Kompira上のデータをバックアップする(その2)
- Kompira上のデータをバックアップする(その3)
外部との連携
-
- Prometheusからの通知をKompiraで受信する
- Kompira cloud Pigeonを利用した通知電話の利用
- ネットワーク機器へのコマンド投入
- KompiraからWindowsGUIアプリケーションを操作する (1/2)
- メールを送信する
- メール受信をトリガーにしてジョブフローを実行する
- アラートメールをフィルタリングして転送する
- チャネルを利用して外部システムからデータを受信する
- Webページから内容を取得する
- Redmineへ新規チケットを登録する
- Redmineでのチケット作成をKompiraに通知する
- Kompira REST APIを利用して外部からジョブフローを実行する
- Kompira REST APIを利用して外部からオブジェクト情報を取得する
- KompiraからSlackに通知する
- Slackでの投稿をKompiraに通知する
- KompiraからTwilioで電話をかける
- Zabbixからの通知をKompiraで受信する
- syslogをKompiraで受信する
- snmptrapをKompiraで受信する
- KompiraでExcelファイルの読み書きをする
- KompiraでGoogle SpreadSheetの読み書きをする
- Active Directoryから情報を取得する
- Active Directoryにユーザーを登録する