so-manager-dev.com/app/Console/Commands/ShjSixCommand.php
2025-09-19 19:01:21 +09:00

130 lines
4.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
use App\Services\ShjSixService;
/**
* SHJ-6 サーバ死活監視処理コマンド
*
* サーバとデバイスの死活監視を行い、異常時にはメール通知を実行する
* 定期実行またはオンデマンド実行のバックグラウンドバッチ処理
*/
class ShjSixCommand extends Command
{
/**
* コンソールコマンドの名前とシグネチャ
*
* パラメータなしで実行
*
* @var string
*/
protected $signature = 'shj:6';
/**
* コンソールコマンドの説明
*
* @var string
*/
protected $description = 'SHJ-6 サーバ死活監視処理 - サーバ・デバイス監視とアラート通知を実行';
/**
* SHJ-6サービスクラス
*
* @var ShjSixService
*/
protected $shjSixService;
/**
* コンストラクタ
*
* @param ShjSixService $shjSixService
*/
public function __construct(ShjSixService $shjSixService)
{
parent::__construct();
$this->shjSixService = $shjSixService;
}
/**
* コンソールコマンドを実行
*
* 処理フロー:
* 1. サーバ死活監視DBアクセス
* 2. デバイス管理マスタを取得する
* 3. デバイス毎のハードウェア状態を取得する
* 4. プリンタ制御プログラムログを取得する
* 5. バッチ処理ログを作成する
* ※ 異常検出時は共通A処理メール通知を実行
*
* @return int
*/
public function handle()
{
try {
// 開始ログ出力
$startTime = now();
$this->info('SHJ-6 サーバ死活監視処理を開始します。');
Log::info('SHJ-6 サーバ死活監視処理開始', [
'start_time' => $startTime
]);
// SHJ-6監視処理実行
$result = $this->shjSixService->executeServerMonitoring();
// 処理結果確認
if ($result['success']) {
$endTime = now();
$this->info('SHJ-6 サーバ死活監視処理が正常に完了しました。');
$this->info("処理時間: {$startTime->diffInSeconds($endTime)}");
$this->info("監視結果: {$result['monitoring_summary']}");
// 警告がある場合は表示
if (!empty($result['warnings'])) {
$this->warn('警告が検出されました:');
foreach ($result['warnings'] as $warning) {
$this->warn("- {$warning}");
}
}
Log::info('SHJ-6 サーバ死活監視処理完了', [
'end_time' => $endTime,
'duration_seconds' => $startTime->diffInSeconds($endTime),
'result' => $result
]);
return self::SUCCESS;
} else {
$this->error('SHJ-6 サーバ死活監視処理でエラーが発生しました: ' . $result['message']);
// エラー詳細があれば表示
if (!empty($result['error_details'])) {
$this->error('エラー詳細:');
foreach ($result['error_details'] as $detail) {
$this->error("- {$detail}");
}
}
Log::error('SHJ-6 サーバ死活監視処理エラー', [
'error' => $result['message'],
'details' => $result['error_details'] ?? null
]);
return self::FAILURE;
}
} catch (\Exception $e) {
$this->error('SHJ-6 サーバ死活監視処理で予期しないエラーが発生しました: ' . $e->getMessage());
Log::error('SHJ-6 サーバ死活監視処理例外エラー', [
'exception' => $e->getMessage(),
'trace' => $e->getTraceAsString()
]);
return self::FAILURE;
}
}
}