jstatを利用して自動的に監視カメラjavaプログラムを発見します.


jstatを利用して自動的に監視カメラjavaプログラムを発見します.
このプロジェクトは何日間もやりました.原因をまとめました.
  • 自動発見登録監視カメラの原理が分かりません.これまで残していたスクリプトが多くてサポートされていません.
  • はできません.
  • 脚本はまだ完全に把握できていません.時間があれば、よく見てください.
  • やはり構想の問題、問題を解決する方法千万、1株の木の上で吊り上げないでください、多く何種類かの死に方を試してみます.以前はjmxを使って監視測定したいです.
  • jstatコマンドを使ってパラメータを取得します.ここでは計画任務を使っています.以前はシナリオに入れていましたが、サービスが死んでしまいました.
        :
    S0C:       survivor(   )    (  )
    S1C:       survivor(   )    (  )
    S0U:       survivor(   )        (  )
    S1U:       survivor(   )        (  )
    EC:    Eden(   )    (  )
    EU:    Eden(   )        (  )
    OC:Old     (  )
    OU:Old         (  )
    PC:Perm(   )    (  )
    PU:Perm(   )        (  )
    YGC:               gc     !
    YGCT:               gc    (s)
    FGC:           old ( gc)gc     !
    FGCT:           old ( gc)gc    (s)
    S0:       survivor(   )            
    S1:       survivor(   )            
    E:    Eden(   )            
    O:old             
    P:perm             
    干物を直接油で絞る
    スクリプト1:
    
    [root@iZj6chku2ng9ofxksew0oiZ userparameter_scripts]# cat java_name_discovery.py
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    import os
    import subprocess
    import simplejson as json
    
    t=subprocess.Popen("ps -ef | grep java|grep -vE '(grep|/bin/bash)'|awk '{print $9}'|awk -F '=' '{print $2}'",stdout=subprocess.PIPE,shell=True).communicate()[0]
    #data=t.stdout.readlines()
    #print(data)
    tomcats=[]
    
    for tomcat in t.split('
    '): if len(tomcat) != 0: tomcats.append({'{#TOMCAT_NAME}':tomcat}) # zabbix json print json.dumps({'data':tomcats},sort_keys=True,indent=4,separators=(',',':')) java , json , zabbix ! pip ,
    スクリプト2:
    #!/bin/bash
    JAVA_NAME=$1
    STATUS=$2
    export PATH=$PATH:/usr/java/jdk1.8.0_144/bin/
    PID=$(ps -ef | grep $JAVA_NAME | grep '/bin/java' | grep -v grep | awk '{print $2}')
    #echo $PID
    fun1 () {
    #    echo "1"
         jstat -gc  $PID | awk -v st=$STATUS '{for(i=1;i<=NF;i++) if($i ==st) n=i} END{print $n}'
    }
    fun2 () {
    #    echo "2"
        jstat -gcutil $PID | awk -v st=$STATUS '{for(i=1;i<=NF;i++) if($i ==st) n=i} END{print $n}'
    }
    case $STATUS in
       "S0C"| "S1C"|"S0U"|"S1U"|"EC"|"EU"|"OC"|"OU"| "YGC"|"YGCT"|"FGC"|"FGCT")
            fun1;;
       "S0"|"S1"|"E"|"O")
            fun2;;
       *)echo "print number error"
        exit1;;
    esac
    Zabbixプロファイル
    UserParameter=java.name.discovery,sudo  /usr/bin/python /etc/zabbix/zabbix_agentd.d/userparameter_scripts/java_name_discovery.py
    UserParameter=java.status.monitor[*],sudo  /etc/zabbix/zabbix_agentd.d/userparameter_scripts/java_status_monitor.sh $1 $2
    権限についてはここで注意してください.
    ヴィスド
    zabbix  ALL=(ALL)       NOPASSWD: ALL. #  
    Defaults:zabbix    !requiretty        #     
    Zabbixプロファイルは修正が必要なところ:
    AllowRoot=1                            #AllowRoot=1(   root  )
    注意:配置を修正してから、zabbix-agentを再起動し、zabbix_を利用する.getでデータを取得して、正常にデータが取得されているか確認してください.