Webアプリケーションについての検証（Pythonを用いて）

　最近、WEBアプリケーションに関係する言語を検証していて思ったことがある。
アラーム設定抜きでサーバーは落ちていないけれどもアプリケーションのみダウンしていることを確認する方法はないのだろうか？

# 今回、準備するもの

⓵FLASKで作ったPythonのファイルとフォルダ
⓶Windows10

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533364/048eabbd-7627-6b09-5393-8cd8f5779160.png)

```PowerShell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\Users\USER> cd .\Desktop\
PS C:\Users\USER\Desktop> cd .\flask_app\
PS C:\Users\USER\Desktop\flask_app> python app.py
```

　起動させると、以下のようになる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3533364/4b7d7832-0bc8-4509-b397-a061682a82a7.png)

 という、シンプルなものである。

# 検証その１、Get-Processコマンドで調べてみた

```PowerShell
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6

PS C:\Users\USER> Get-Process -NAME python

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    186      22    21660      30608       1.63   6676   4 python
    212      22    21880      19348       0.89  12388   4 python
```

　そうすると、プロセスIDが6676と12388であることが分かった。これをさらにpowershellでコマンドで調査する。

```PowerShell
PS C:\Users\USER> wmic process where "ProcessID=6676" get /format:list


Caption=python.exe
CommandLine=C:\Users\USER\AppData\Local\Programs\Python\Python39\python.exe C:\Users\USER\Desktop\flask_app\app.py
CreationClassName=Win32_Process
CreationDate=20231021191558.664282+540
CSCreationClassName=Win32_ComputerSystem
CSName=DESKTOP-5CUS4H7
Description=python.exe
ExecutablePath=C:\Users\USER\AppData\Local\Programs\Python\Python39\python.exe
ExecutionState=
Handle=6676
HandleCount=186
InstallDate=
KernelModeTime=13906250
MaximumWorkingSetSize=1380
MinimumWorkingSetSize=200
Name=python.exe
OSCreationClassName=Win32_OperatingSystem
OSName=Microsoft Windows 10 Home|C:\WINDOWS|\Device\Harddisk0\Partition2
OtherOperationCount=37056
OtherTransferCount=24278409
PageFaults=10435
PageFileUsage=21660
ParentProcessId=12388
PeakPageFileUsage=31596
PeakVirtualSize=4451524608
PeakWorkingSetSize=40728
Priority=8
PrivatePageCount=22179840
ProcessId=6676
QuotaNonPagedPoolUsage=22
QuotaPagedPoolUsage=166
QuotaPeakNonPagedPoolUsage=24
QuotaPeakPagedPoolUsage=167
ReadOperationCount=571
ReadTransferCount=4213058
SessionId=4
Status=
TerminationDate=
ThreadCount=4
UserModeTime=14375000
VirtualSize=4437446656
WindowsVersion=10.0.19045
WorkingSetSize=10293248
WriteOperationCount=0
WriteTransferCount=0



PS C:\Users\USER> wmic process where "ProcessID=12388" get /format:list


Caption=python.exe
CommandLine="C:\Users\USER\AppData\Local\Programs\Python\Python39\python.exe" app.py
CreationClassName=Win32_Process
CreationDate=20231021191555.880637+540
CSCreationClassName=Win32_ComputerSystem
CSName=DESKTOP-5CUS4H7
Description=python.exe
ExecutablePath=C:\Users\USER\AppData\Local\Programs\Python\Python39\python.exe
ExecutionState=
Handle=12388
HandleCount=212
InstallDate=
KernelModeTime=5000000
MaximumWorkingSetSize=1380
MinimumWorkingSetSize=200
Name=python.exe
OSCreationClassName=Win32_OperatingSystem
OSName=Microsoft Windows 10 Home|C:\WINDOWS|\Device\Harddisk0\Partition2
OtherOperationCount=7129
OtherTransferCount=447314
PageFaults=7937
PageFileUsage=21880
ParentProcessId=14404
PeakPageFileUsage=21984
PeakVirtualSize=4441899008
PeakWorkingSetSize=31216
Priority=8
PrivatePageCount=22405120
ProcessId=12388
QuotaNonPagedPoolUsage=23
QuotaPagedPoolUsage=167
QuotaPeakNonPagedPoolUsage=23
QuotaPeakPagedPoolUsage=167
ReadOperationCount=573
ReadTransferCount=4214746
SessionId=4
Status=
TerminationDate=
ThreadCount=3
UserModeTime=3906250
VirtualSize=4435804160
WindowsVersion=10.0.19045
WorkingSetSize=10141696
WriteOperationCount=0
WriteTransferCount=0



PS C:\Users\USER>
```
 とまあ、こんな風にプロセスIDと実行ファイルからスクリプトのコンフィグファイルを確認することができる。これを利用すれば、プロセスが落ちているかどうかは判別付きそうではある。

　ちなみに、ポート番号がわかればコマンドプロンプトでこんな調査も可能ではある。
```コマンドプロンプト
C:\Users\USER>netstat -nao | find ":5000"
  TCP         127.0.0.1:5000         0.0.0.0:0              LISTENING       12388

C:\Users\USER>
```
 参考までに。