Linuxサービスの監視と運用および保守

Linuxサービスの監視と運用および保守

1. psutilパッケージをインストールする

1.1. 圧縮パッケージをインストールします。CentOS に root としてログインし、次のコマンドを順番に実行します。

https://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar.gz を取得します。

wgetでダウンロードできない場合は、リンクhttps://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar.gzをコピーしてブラウザに直接貼り付けてダウンロードし、ftp転送ツールを使用してLinuxに転送してから、次の操作を実行します。

1.2 解凍: tar zxvf psutil-2.1.3.tar.gz

1.3 解凍したディレクトリに入ります: cd psutil-2.1.3/

1.4 インストールを開始します: python3 setup.py install install

1.5 検証: コマンド ウィンドウに python3 と入力し、次のように入力します。

import psutil がエラーを報告しない場合は、インストールは成功しています。

次に次のように入力します:

res = psutil.process_iter()

res 内の var の場合:

印刷(変数)

たくさんの情報が表示されます

次に、オペレーティングシステム内のすべてのサービスの名前とPIDを見つけます。

psutilをインポートする
proc_dict = {}
#ID: プロセス名 proc_name = set()
#プロセス セットについては、psutil.process_iter() で p の重複排除を設定します。
    proc_dict[p.pid] = p.name()
    proc_name.add(p.name())
proc_dict を印刷する
print('\n\n--------------------------\n')
print(プロシージャ名)


3. 監視する必要があるが開始されていないサービスを見つける

proc_stop = モニター名 - proc_name

つまり、監視対象のサービスの名前からオペレーティングシステム内のすべてのサービスの名前を除いたもの

4. 監視サービスが有効になっていない場合は自動的に有効になり、スタッフに通知するメールが送信されます。

1. os.system(コマンド)を使用してサービスを有効にします。
完全なコードは次のとおりです。

psutilをインポートする
インポートOS
#管理者に通知するためにメールを送信する必要がある場合は、リクエストとjsonを使用する必要があります
#インポートリクエスト
#json をインポート
インポート時間

time_now = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
#監視対象のサービス monitor_name = {'nginx'}
#開始コマンド monitor_map = {'nginx':'service nginx start'}

真の場合:
    #オペレーティングシステム内のすべてのプロセスの辞書 proc_dict = {}

    #オペレーティングシステム内のすべてのプロセス名のセット proc_name = set()

    #psutil.process_iter() は、オペレーティングシステム内のすべてのプロセス名とプロセスIDを返します。
    psutil.process_iter() の p の場合:
        proc_dict[p.pid] = p.name()
        proc_name.add(p.name())
    proc_dict を印刷する
    print('\n\n--------------------------\n')
    print(プロシージャ名)

    # monitor_name - proc_name == 終了したプロセス名
    #開始されていない監視プロセスを抽出します proc_stop = monitor_name - proc_name
    印刷(proc_stop)
    proc_stopの場合:
        proc_stop の p の場合:
             p_status = '停止'
             p_name = p
             データ ={p_status,p_name,time_now}
             ヘッダー = {'Content-Type':'application/json;charset=utf-8'}
             #send_data = json.dumps(data).encode('utf-8')
             #管理者にメールを送信#request.post(url=url,data=send_data,headers=headers)

             os.system(モニターマップ[p])
             proc_name = 設定()

             psutil.process_iter() の p2 の場合:
                 proc_name.add(p2.name())

             proc_nameにpがある場合:
                  print("再起動に成功しました")
              それ以外:
                  print("再起動に失敗しました")
 時間.睡眠(2000)

実行後の効果:

Linux サービスの監視と運用・保守に関する記事はこれで終わりです。Linux サービスの関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linuxの重要プロセス監視の実装方法の詳細説明
  • Linux システムとプロセス リソースの監視を実装するシェル スクリプト
  • Linuxプロセス監視と自動再起動の簡単な実装方法
  • Linuxの運用と保守、基本的なプロセス管理、リアルタイム監視と制御

<<:  CSS は、小さな鋭角のチャット ダイアログ ボックスで鋭角の吹き出し効果を実現します。

>>:  div の特定の実装は自動的に折り返されず、HTML で折り返されないよう強制されます。

推薦する

MySQL 外部キー (FOREIGN KEY) の使用例の詳細な説明

はじめに: すべてのデータを 1 つのテーブルに保存することのデメリット表の構成構造は複雑で不明瞭で...

React 非親子コンポーネントパラメータ渡しのサンプルコード

React は、ユーザー インターフェイスを構築するための JavaScript ライブラリです。 ...

CSSでサウンドを再生するいくつかのテクニック

CSS は、スタイル、レイアウト、プレゼンテーションの領域です。色彩、サイズ、アニメーションが溢れて...

win10環境でDockerをインストールする実装

1. Docker公式サイトにアクセスするまず、Dockerの公式ウェブサイトにアクセスして、最新の...

Homebrewを使用してMacにMySQLをインストールするときにログインできない問題を解決する

お使いのコンピュータが Mac の場合、homebrew を使用して MySQL をインストールする...

Uniapp WeChatアプレット: キー障害の解決策

ユニアプリコード <テンプレート> <表示> <image v-for...

MySQL の完全バックアップ中に特定のライブラリを除外する方法

MySQLの完全バックアップを実行するときは、--all-databaseパラメータを使用します。例...

MySQL 5.6 マスタースレーブエラー報告の実践記録

1. 問題の症状バージョン: MySQL 5.6、従来の binlog ファイルと pos 方式を使...

MySQL データベースのステートメント ワイルドカード ファジー クエリの概要

MySQL エラー: パラメータ インデックスが範囲外です (1 > パラメータ数、つまり 0...

Apache クロスドメイン リソース アクセス エラーの解決策

多くの場合、大規模および中規模の Web サイトでは、静的リソース (フォント ファイル、画像など)...

CentOS 7 に Percona Server+MySQL をインストールする

1. 環境の説明(1) CentOS-7-x86_64、カーネルバージョン uname -r は、 ...

Linux 上の Vim で色とテーマを変更する方法

Vim は Linux でよく使用されるテキスト エディターです。 Vim は、Sublime や ...

Nginx フォワード プロキシとリバース プロキシ、および負荷分散機能の構成コード例

この記事は主に、Nginx のフォワード プロキシとリバース プロキシ、および負荷分散機能の設定コー...

Vueコンポーネントの動的コンポーネントの詳細な説明

目次要約する要約する配列が変更されると、対応するデータを動的にロードしますシナリオ: 異なるコンポー...

高性能な HTML アプリケーションを作成するためのヒント

Web ページのパフォーマンスを向上させるにはどうすればよいでしょうか?ほとんどの開発者は、Java...