zoukankan      html  css  js  c++  java
  • 运维相关指标数据采集并ES入仓

    https://www.cnblogs.com/kevingrace/articles/11044716.html

    为了进行数字化IT治理,需要对一些应用进程相关指标进行采集并入库。收集到的应用指标数据最好要进行ES入仓,入到Kafka里面,并通过Kibana可视化展示。

    需要进行采集的应用进程相关指标如下:

    ES入库的规范如下:

    中文名

    英文名

    类型

    是否必填

    说明

    指标名称

    indexName

    CHAR

     

    指标值

    indexValue

    CHAR

    支持批量

    指标类别

    indexType

    CHAR

    安全

    测试

    运行

    应用

    环境

    指标描述

    indexDesc

    VARCHAR

    指标说明,指标采集数据源(zbx、dota、legao……)

    采集时间

    collectTime

    TIMESTAMP

    支持批量

    应用名称

    appName

    CHAR

    以AIOPS的3位编码为准

    主机名

    hostName

    CHAR

     

    发送数据源主机

    dataSource

    CHAR

    脚本路径@主机IP

    下面是应用指标数据进行ES入仓的请求说明

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    测试区接口说明:
    访问链接:http://192.168.10.10:10222/haha/heiheiAPI/test_1_kafka
    请求header:Content-Type:application/json
    请求方法:POST
    请求参数,token中填入示例中的128位token即可,data的值是一个数组,数组中的每个元素是一个json对象(对应会插入ES中的1个document),给出具体信息:
    {
        "token""bd1df2b11111111112222222222222222333333333333333333yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
        "data": [
            {
                "type""英文字符,最长不超过10位",
                "desc""指标的中文描述, 可为空",
                "@timestamp""时间戳,以标准unix时间戳为准,下面会给出shell和python的生成示例",
                "appname""应用系统编码,以aiops上的信息为准",
                "hostname""主机名",
                "value""采集的指标值, 由于各系统需求不一致, 此处统一使用string类型, 否则可能会造成mapping冲突, 但某些功能需要int/float,再讨论",
                "checker""发送数据的脚本路径或IP, 可为空"
            }
        ]
    }
     
     
    ==============================================================================================
    # python生成时间戳示例
    import datetime
    timestamp = datetime.datetime.strftime(datetime.datetime.now(), '%s')
      
    ==============================================================================================
    # python请求示例
    import urllib2   # 这里是python2,根据各人使用有不同,总之是构建http request
    import hashlib
    import json
    url = 'http://192.168.10.10:10222/haha/heiheiAPI/test_1_kafka'
    data = {
        'token''bd1df2b11111111112222222222222222333333333333333333yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy',
        'data': [
            {}
        ]
    }
    headers = {'Content-Type''application/json'}
    req = urllib2.Request(url, json.dumps(data), headers = headers)
    res = urllib2.urlopen(req).read()
    =============================================================================================
     
    # bash shell生成时间戳示例
    date +'%s'
    # bash shell请求示例
    curl -s -XPOST -H "Content-Type:application/json" -d 请求数据 http://192.168.10.10:10222/haha/heiheiAPI/test_1_kafka

    这里使用了两个脚本:
    1)shell脚本进行指标数据采集(最终使用脚本:20_app_process_index.sh
    2)python脚本进行ES入仓请求提交,请求方法:POST。 在python脚本里调用shell脚本,调取shell脚本执行结果。(最终使用脚本:20_app_process_index_es.py

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    [root@kevin_test app_process_index]# pwd
    /root/100_app_index/app_process_index
    [root@kevin_test app_process_index]# ll
    total 120
    -rwxr-xr-x 1 root root   783 Jun 20 18:16 20_app_process_index_es.py
    -rwxr-xr-x 1 root root   290 Jun 20 18:16 20_app_process_index.py2
    -rwxr-xr-x 1 root root 15398 Jun 20 18:19 20_app_process_index.sh
    -rwxr-xr-x 1 root root 10414 Jun 20 18:16 20_app_process_index_shell.sh
     
    [root@kevin_test ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vda1        20G  4.8G   14G  26% /
    tmpfs           2.9G   12K  2.9G   1% /dev/shm
    /dev/vdb2       9.8G  458M  8.8G   5% /software
    /dev/vdb3        30G   21G  7.2G  75% /opt/bobo
    /dev/vdb4        38G  6.9G   29G  20% /var/log/bobo
     
    其中,/opt/cbd为应用程序所在空间,/var/log/bobo是日志所在空间

    一、shell脚本 (执行结果要时JSON格式的,这里在shell脚本里拼出来的JSON样式)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    [root@kevin_test app_process_index]# cat 20_app_process_index_shell.sh
    #!/bin/bash
     
    source /etc/profile
    hostName=$(hostname)
    IP=$(ifconfig eth0| sed -nr '2s/(^[^0-9]+)([0-9.]+)+( .*$)/2/gp')
    appName=$(echo ${hostName:3:3})
     
    collectTime=`date +'%s'`
    dataSource=$(echo "`pwd`/$0@${IP}")
     
    indexType="应用进程相关指标"
     
    echo "指标类型: ${indexType}"
    echo "指标采集时间: ${collectTime}"
    echo "主机名: ${hostName}"
    echo "应用名称: ${appName}"
    echo "发送数据源主机: ${dataSource}"
    echo -e " 此次采集应用进程相关指标情况如下:"
     
    echo -e "---------------------------------------------------"
    ###########应用进程占内存百分比###########
    indexName1="应用进程占内存百分比"
    ps auxw|grep bxapp|awk '{if (NR>1){print $4}}' /tmp/mem_list
    NUM1=`cat /tmp/mem_list|wc -l`
     
    if [ $NUM1 -eq 0 ];then
       echo "${indexName}为0"
    else
       MEM_PER_SUM=$(awk '{MEM_PER+=$1}END{print MEM_PER}' /tmp/mem_list)
       echo "${indexName1}:" ${MEM_PER_SUM}%
    fi
     
    echo -e "---------------------------------------------------"
    ###########应用进程占CPU百分比###########
    indexName2="应用进程占CPU百分比"
    ps auxw|grep bxapp|awk '{if (NR>1){print $3}}' /tmp/cpu_list
    NUM2=`cat /tmp/cpu_list|wc -l`
     
    if [ $NUM2 -eq 0 ];then
       echo "${indexName2}为0"
    else
       CPU_PER_SUM=$(awk '{CPU_PER+=$1}END{print CPU_PER}' /tmp/cpu_list)
       echo "${indexName2}:" ${CPU_PER_SUM}%
    fi
     
    echo -e "---------------------------------------------------"
    ###########应用进程run最长时间及其进程###########
    indexName3="应用进程run最长时间"
    PID=$(ps -eo user,pid,etime|grep bxapp|sort -k 3 -rn|head -1|awk '{print $2}')
    RUN_TIME=$(ps -eo user,pid,etime|grep bxapp|sort -k 3 -rn|head -1|awk '{print $3}')
    PROCESS=$(ps -ef|grep ${PID}|grep -v grep|awk '{print $8}')
     
    echo -e "${indexName3}: ${RUN_TIME} 进程: ${PROCESS}"
     
     
    echo -e "---------------------------------------------------"
    ###########应用进程TIME-WAIT连接数###########
    indexName4="应用进程TIME-WAIT连接数"
    NUM3=$(ss -a|grep -w "TIME_WAIT" |wc -l)
    echo "${indexName4}: ${NUM3}"
     
    echo -e "---------------------------------------------------"
    ###########应用进程ESTABLISHED连接数###########
    indexName5="应用进程ESTABLISHED连接数"
    NUM4=$(ss -a|grep -w "ESTAB" |wc -l)
    echo "${indexName5}: ${NUM4}"
     
    echo -e "---------------------------------------------------"
    ###########应用进程FIN_WAIT2连接数###########
    indexName6="应用进程FIN_WAIT2连接数"
    NUM5=$(ss -a|grep -w "FIN_WAIT2" |wc -l)
    echo "${indexName6}: ${NUM5}"
     
    echo -e "---------------------------------------------------"
    ###########日志空间使用率###########
    indexName7="日志空间使用率"
    LOG_SPACE_USER=$(df -h|grep "/var/log"|awk '{print $5}')
    echo "${indexName7}: ${LOG_SPACE_USER}"
     
    echo -e "---------------------------------------------------"
    ###########应用程序空间使用率###########
    indexName8="应用程序空间使用率"
    APP_SPACE_USER=$(df -h|grep "/opt"|awk '{print $5}')
    echo "${indexName8}: ${APP_SPACE_USER}"
     
    echo -e "---------------------------------------------------"
    ###########应用所在磁盘读速率(Blk/s)###########
    indexName9="应用所在磁盘读速率(Blk/s)"
    DISK=$(df -h|grep "/opt/${appName}"|awk '{print $1}')
    DEVICE=$(df -h|grep "/opt/${appName}"|awk '{print $1}'|awk -F"/" '{print $3}')
    READ=$(iostat ${DISK}|grep -w ${DEVICE}|awk '{print $3}')
     
    echo "${indexName9}: ${READ}"
     
    echo -e "---------------------------------------------------"
    ###########应用所在磁盘写速率(Blk/s)###########
    indexName10="应用所在磁盘写速率(Blk/s)"
    DISK=$(df -h|grep "/opt/${appName}"|awk '{print $1}')
    DEVICE=$(df -h|grep "/opt/${appName}"|awk '{print $1}'|awk -F"/" '{print $3}')
    WRITE=$(iostat ${DISK}|grep -w ${DEVICE}|awk '{print $4}')
     
    echo "${indexName10}: ${WRITE}"
     
    echo -e "---------------------------------------------------"
    ###########应用所在磁盘TPS###########
    indexName11="应用所在磁盘TPS"
    DISK=$(df -h|grep "/opt/${appName}"|awk '{print $1}')
    DEVICE=$(df -h|grep "/opt/${appName}"|awk '{print $1}'|awk -F"/" '{print $3}')
    TPS=$(iostat ${DISK}|grep -w ${DEVICE}|awk '{print $2}')
     
    echo "${indexName11}: ${TPS}"
     
    echo -e "---------------------------------------------------"
    ###########TOMCAT分配最小内存 ###########
    indexName12="TOMCAT分配最小内存"
    NUM6=$(ps -ef|grep -w tomcat|grep -v grep|wc -l)
    if [ ${NUM6} -eq 0 ];then
       echo "当前没有Tomcat进程,${indexName12}: 0"
    else
        for TOMCAT in $(find /opt/${appName}/ -name *tomcat* -type d)
        do
          NUM7=$(ps -ef|grep ${TOMCAT}|grep -v grep|wc -l)
          if [ ${NUM7} -eq 0 ];then
            echo "not ${TOMCAT}" >> /dev/null 2>&1
          else
            XMS=$(ps -ef|grep ${TOMCAT}/|grep "-Xms"|awk -F"-Xms" '{print $2}'|cut -d" " -f1)
            echo -e "${indexName12}: ${XMS}  (实例名:${TOMCAT})"
          fi
        done
    fi
     
    echo -e "---------------------------------------------------"
    ###########TOMCAT分配最大内存 ###########
    indexName13="TOMCAT分配最大内存"
    NUM8=$(ps -ef|grep -w tomcat|grep -v grep|wc -l)
    if [ ${NUM8} -eq 0 ];then
       echo "当前没有Tomcat进程,${indexName13}: 0"
    else
        for TOMCAT in $(find /opt/${appName}/ -name *tomcat* -type d)
        do
          NUM9=$(ps -ef|grep ${TOMCAT}|grep -v grep|wc -l)
          if [ ${NUM9} -eq 0 ];then
            echo "not ${TOMCAT}" >> /dev/null 2>&1
          else
            XMX=$(ps -ef|grep ${TOMCAT}/|grep "-Xmx"|awk -F"-Xmx" '{print $2}'|cut -d" " -f1)
            echo -e "${indexName13}: ${XMX}  (实例名:${TOMCAT})"
          fi
        done
    fi
     
    echo -e "---------------------------------------------------"
    ###########TOMCAT分配年轻代空间 ###########
    indexName14="TOMCAT分配年轻代空间"
    NUM10=$(ps -ef|grep -w tomcat|grep -v grep|wc -l)
    if [ ${NUM10} -eq 0 ];then
       echo "当前没有Tomcat进程,${indexName14}: 0"
    else
        for TOMCAT in $(find /opt/${appName}/ -name *tomcat* -type d)
        do
          NUM11=$(ps -ef|grep ${TOMCAT}|grep -v grep|wc -l)
          if [ ${NUM11} -eq 0 ];then
            echo "not ${TOMCAT}" >> /dev/null 2>&1
          else
            XMN=$(ps -ef|grep ${TOMCAT}/|grep "-Xmn"|awk -F"-Xmn" '{print $2}'|cut -d" " -f1)
            echo -e "${indexName14}: ${XMN}  (实例名:${TOMCAT})"
          fi
        done
    fi
     
    echo -e "---------------------------------------------------"
    ###########TOMCAT每个线程的堆栈大小 ###########
    indexName15="TOMCAT每个线程的堆栈大小"
    NUM12=$(ps -ef|grep -w tomcat|grep -v grep|wc -l)
    if [ ${NUM12} -eq 0 ];then
       echo "当前没有Tomcat进程,${indexName15}: 0"
    else
        for TOMCAT in $(find /opt/${appName}/ -name *tomcat* -type d)
        do
          NUM13=$(ps -ef|grep ${TOMCAT}|grep -v grep|wc -l)
          if [ ${NUM13} -eq 0 ];then
            echo "not ${TOMCAT}" >> /dev/null 2>&1
          else
            XSS=$(ps -ef|grep ${TOMCAT}/|grep "-Xss"|awk -F"-Xss" '{print $2}'|cut -d" " -f1)
            echo -e "${indexName15}: ${XSS}  (实例名:${TOMCAT})"
          fi
        done
    fi
     
    echo -e "---------------------------------------------------"
    ###########TOMCAT-GC时长占比 ###########
    indexName16="TOMCAT-GC时长占比"
    NUM14=$(ps -ef|grep -w tomcat|grep -v grep|wc -l)
    if [ ${NUM14} -eq 0 ];then
       echo "当前没有Tomcat进程,${indexName16}: 0"
    else
        for TOMCAT in $(find /opt/${appName}/ -name *tomcat* -type d)
        do
          NUM15=$(ps -ef|grep ${TOMCAT}|grep -v grep|wc -l)
          if [ ${NUM15} -eq 0 ];then
            echo "not ${TOMCAT}" >> /dev/null 2>&1
          else
            GC=$(ps -ef|grep ${TOMCAT}/|grep "GCTimeRatio"|awk -F"GCTimeRatio" '{print $2}'|cut -d" " -f1|awk -F"=" '{print $2}')
            echo -e "${indexName16}: ${GC}  (实例名:${TOMCAT})"
          fi
        done
    fi
     
    echo -e "---------------------------------------------------"
    ###########Zookeeper分配最小内存 ###########
    indexName17="Zookeeper分配最小内存"
    #zookeeper安装时没有手动定义内存配置,默认为系统内存的四分之一
    NUM16=$(ps -ef|grep zookeeper|grep -v grep|wc -l)
    if [ ${NUM16} -eq 0 ];then
       echo "当前没有zookeeper进程,${indexName17}: 0"
    else
       MEM_TOTAL=$(free -m|grep "Mem"|awk '{print $2}')
       ZK_MEM_MAX=`expr ${MEM_TOTAL} / 4`
     
       echo "${indexName17}: ${ZK_MEM_MAX}M"
    fi
     
     
    echo -e "---------------------------------------------------"
    ###########Zookeeper分配最大内存 ###########
    indexName18="Zookeeper分配最大内存"
    #zookeeper安装时没有手动定义内存配置,默认为系统内存的四分之一
    NUM17=$(ps -ef|grep zookeeper|grep -v grep|wc -l)
    if [ ${NUM17} -eq 0 ];then
       echo "当前没有zookeeper进程,${indexName18}: 0"
    else
       MEM_TOTAL=$(free -m|grep "Mem"|awk '{print $2}')
       ZK_MEM_MAX=`expr ${MEM_TOTAL} / 4`
     
       echo "${indexName18}: ${ZK_MEM_MAX}M"
    fi
     
    echo -e "---------------------------------------------------"
    ###########KAFKA分配最小内存 ###########
    indexName19="KAFKA分配最小内存"
    NUM18=$(ps -ef|grep kafka|grep -v grep|wc -l)
    if [ ${NUM18} -eq 0 ];then
        echo "当前没有KAFKA进程,${indexName19}: 0"
    else
        cd /opt/${appName}/
        for KAFKA in $(find /opt/${appName}/ -name *kafka* -type d)
        do
        NUM19=$(ps -ef|grep ${KAFKA}|grep -v grep|wc -l)
           if [ ${NUM19} -eq 0 ];then
              echo "not this ${KAFKA}" >/dev/null 2>&1
           else
              FILE=${KAFKA}/bin/kafka-server-start.sh
              KAFKA_MEM_MIN=$(cat ${FILE}|grep "Xmx"|awk -F'"' '{print $2}'|awk '{print $2}'|awk -F"Xms" '{print $2}')
              echo "${indexName19}: ${KAFKA_MEM_MIN}"
           fi
        done
    fi
     
     
    echo -e "---------------------------------------------------"
    ###########KAFKA分配最大内存 ###########
    indexName20="KAFKA分配最大内存"
    NUM20=$(ps -ef|grep kafka|grep -v grep|wc -l)
    if [ ${NUM20} -eq 0 ];then
        echo "当前没有KAFKA进程,${indexName20}: 0"
    else
        cd /opt/${appName}/
        for KAFKA in $(find /opt/${appName}/ -name *kafka* -type d)
        do
        NUM21=$(ps -ef|grep ${KAFKA}|grep -v grep|wc -l)
           if [ ${NUM21} -eq 0 ];then
              echo "not this ${KAFKA}" >/dev/null 2>&1
           else
              FILE=${KAFKA}/bin/kafka-server-start.sh
              KAFKA_MEM_MAX=$(cat ${FILE}|grep "Xmx"|awk -F'"' '{print $2}'|awk '{print $1}'|awk -F"Xmx" '{print $2}')
              echo "${indexName20}: ${KAFKA_MEM_MAX}"
           fi
        done
    fi
     
    echo -e "---------------------------------------------------"
    ###########应用系统进程数量 ###########
    indexName21="应用系统进程数量"
    NUM22=$(ps -eo user,pid,cmd|awk '{if($1=="bxapp")print}'|wc -l)
    echo "${indexName21}:"${NUM22}

    执行这个脚本:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    [root@kevin_test app_process_index]# sh 20_app_process_index_shell.sh
    指标类型: 应用进程相关指标
    指标采集时间: 1561029337
    主机名: kevin_test
    应用名称: bobo
    发送数据源主机: /root/100_app_index/app_process_index/20_app_process_index_shell.sh@192.168.10.99
     
    此次采集应用进程相关指标情况如下:
    ---------------------------------------------------
    应用进程占内存百分比: 69.7%
    ---------------------------------------------------
    应用进程占CPU百分比: 13.8%
    ---------------------------------------------------
    应用进程run最长时间: 609-08:33:26
    进程: ../src/redis-sentinel
    ---------------------------------------------------
    应用进程TIME-WAIT连接数: 0
    ---------------------------------------------------
    应用进程ESTABLISHED连接数: 455
    ---------------------------------------------------
    应用进程FIN_WAIT2连接数: 0
    ---------------------------------------------------
    日志空间使用率: 20%
    ---------------------------------------------------
    应用程序空间使用率: 75%
    ---------------------------------------------------
    应用所在磁盘读速率(Blk/s): 2.30
    ---------------------------------------------------
    应用所在磁盘写速率(Blk/s): 16.41
    ---------------------------------------------------
    应用所在磁盘TPS: 1.31
    ---------------------------------------------------
    当前没有Tomcat进程,TOMCAT分配最小内存: 0
    ---------------------------------------------------
    当前没有Tomcat进程,TOMCAT分配最大内存: 0
    ---------------------------------------------------
    当前没有Tomcat进程,TOMCAT分配年轻代空间: 0
    ---------------------------------------------------
    当前没有Tomcat进程,TOMCAT每个线程的堆栈大小: 0
    ---------------------------------------------------
    当前没有Tomcat进程,TOMCAT-GC时长占比: 0
    ---------------------------------------------------
    Zookeeper分配最小内存: 1459M
    ---------------------------------------------------
    Zookeeper分配最大内存: 1459M
    ---------------------------------------------------
    当前没有KAFKA进程,KAFKA分配最小内存: 0
    ---------------------------------------------------
    当前没有KAFKA进程,KAFKA分配最大内存: 0
    ---------------------------------------------------
    应用系统进程数量:10

    注意:上面是还没有转化JSON格式的脚本。下面是转化为JSON格式后的脚本(实际用的就是下面这个脚本)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    [root@kevin_test app_process_index]# cat 20_app_process_index.sh
    #!/bin/bash
     
    source /etc/profile
    hostName=$(hostname)
    IP=$(ifconfig eth0| sed -nr '2s/(^[^0-9]+)([0-9.]+)+( .*$)/2/gp')
    appName=$(echo ${hostName:3:3})
     
    collectTime=$(date +'%s')
    dataSource=$(echo "$0@${IP}")
    indexType="app_process"
     
     
    ###########应用进程占内存百分比###########
    ps auxw|grep bxapp|awk '{if (NR>1){print $4}}' /tmp/mem_list
    NUM1=`cat /tmp/mem_list|wc -l`
     
    if [ $NUM1 -eq 0 ];then
       echo -e "{
       "type":"${indexType}",
       "desc":"应用进程占内存百分比",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"当前没有进程",
       "checker":"${dataSource}"
       }+"
    else
       MEM_PER_SUM=$(awk '{MEM_PER+=$1}END{print MEM_PER}' /tmp/mem_list)
       echo -e "{
       "type":"${indexType}",
       "desc":"应用进程占内存百分比",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${MEM_PER_SUM}%",
       "checker":"${dataSource}"
       }+"
    fi
     
    ###########应用进程占CPU百分比###########
    ps auxw|grep bxapp|awk '{if (NR>1){print $3}}' /tmp/cpu_list
    NUM2=`cat /tmp/cpu_list|wc -l`
     
    if [ $NUM2 -eq 0 ];then
       echo -e "{
       "type":"${indexType}",
       "desc":"应用进程占CPU百分比",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"当前没有进程",
       "checker":"${dataSource}"
       }+"
    else
       CPU_PER_SUM=$(awk '{CPU_PER+=$1}END{print CPU_PER}' /tmp/cpu_list)
       echo -e "{
       "type":"${indexType}",
       "desc":"应用进程占CPU百分比",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${CPU_PER_SUM}%",
       "checker":"${dataSource}"
       }+"
    fi
     
    ###########应用进程run最长时间及其进程###########
    PID=$(ps -eo user,pid,etime|grep bxapp|sort -k 3 -rn|head -1|awk '{print $2}')
    RUN_TIME=$(ps -eo user,pid,etime|grep bxapp|sort -k 3 -rn|head -1|awk '{print $3}')
    PROCESS=$(ps -ef|grep ${PID}|grep -v grep|awk '{print $8}')
     
       echo -e "{
       "type":"${indexType}",
       "desc":"应用进程run最长时间及其进程",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${RUN_TIME}, ${PROCESS}",
       "checker":"${dataSource}"
       }+"
     
    ###########应用进程TIME-WAIT连接数###########
    NUM3=$(ss -a|grep -w "TIME_WAIT" |wc -l)
       echo -e "{
       "type":"${indexType}",
       "desc":"应用进程TIME-WAIT连接数",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${NUM3}",
       "checker":"${dataSource}"
       }+"
     
    ###########应用进程ESTABLISHED连接数###########
    NUM4=$(ss -a|grep -w "ESTAB" |wc -l)
       echo -e "{
       "type":"${indexType}",
       "desc":"应用进程ESTABLISHED连接数",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${NUM4}",
       "checker":"${dataSource}"
       }+"
     
    ###########应用进程FIN_WAIT2连接数###########
    NUM5=$(ss -a|grep -w "FIN_WAIT2" |wc -l)
       echo -e "{
       "type":"${indexType}",
       "desc":"应用进程FIN_WAIT2连接数",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${NUM5}",
       "checker":"${dataSource}"
       }+"
     
    ###########日志空间使用率###########
    LOG_SPACE_USER=$(df -h|grep "/var/log"|awk '{print $5}')
       echo -e "{
       "type":"${indexType}",
       "desc":"日志空间使用率",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${LOG_SPACE_USER}",
       "checker":"${dataSource}"
       }+"
    ###########应用程序空间使用率###########
    APP_SPACE_USER=$(df -h|grep "/opt"|awk '{print $5}')
       echo -e "{
       "type":"${indexType}",
       "desc":"应用程序空间使用率",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${APP_SPACE_USER}",
       "checker":"${dataSource}"
       }+"
     
    ###########应用所在磁盘读速率(Blk/s)###########
    DISK=$(df -h|grep "/opt/${appName}"|awk '{print $1}')
    DEVICE=$(df -h|grep "/opt/${appName}"|awk '{print $1}'|awk -F"/" '{print $3}')
    READ=$(iostat ${DISK}|grep -w ${DEVICE}|awk '{print $3}')
       echo -e "{
       "type":"${indexType}",
       "desc":"应用所在磁盘读速率(Blk/s)",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${READ}",
       "checker":"${dataSource}"
       }+"
     
    ###########应用所在磁盘写速率(Blk/s)###########
    DISK=$(df -h|grep "/opt/${appName}"|awk '{print $1}')
    DEVICE=$(df -h|grep "/opt/${appName}"|awk '{print $1}'|awk -F"/" '{print $3}')
    WRITE=$(iostat ${DISK}|grep -w ${DEVICE}|awk '{print $4}')
       echo -e "{
       "type":"${indexType}",
       "desc":"应用所在磁盘写速率(Blk/s)",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${WRITE}",
       "checker":"${dataSource}"
       }+"
     
    ###########应用所在磁盘TPS###########
    DISK=$(df -h|grep "/opt/${appName}"|awk '{print $1}')
    DEVICE=$(df -h|grep "/opt/${appName}"|awk '{print $1}'|awk -F"/" '{print $3}')
    TPS=$(iostat ${DISK}|grep -w ${DEVICE}|awk '{print $2}')
       echo -e "{
       "type":"${indexType}",
       "desc":"应用所在磁盘TPS",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${TPS}",
       "checker":"${dataSource}"
       }+"
     
    ###########TOMCAT分配最小内存 ###########
    NUM6=$(ps -ef|grep -w tomcat|grep -v grep|wc -l)
    if [ ${NUM6} -eq 0 ];then
       echo -e "{
       "type":"${indexType}",
       "desc":"TOMCAT分配最小内存",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"当前没有Tomcat进程",
       "checker":"${dataSource}"
       }+"
    else
        for TOMCAT in $(find /opt/${appName}/ -name *tomcat* -type d)
        do
          NUM7=$(ps -ef|grep ${TOMCAT}|grep -v grep|wc -l)
          if [ ${NUM7} -eq 0 ];then
            echo "not ${TOMCAT}" >> /dev/null 2>&1
          else
            XMS=$(ps -ef|grep ${TOMCAT}/|grep "-Xms"|awk -F"-Xms" '{print $2}'|cut -d" " -f1)
              echo -e "{
              "type":"${indexType}",
              "desc":"TOMCAT分配最小内存",
              "@timestamp":"${collectTime}",
              "appname":"${appName}",
              "hostname":"${hostName}",
              "value":"${XMS}  (实例名:${TOMCAT})",
              "checker":"${dataSource}"
              }+"
          fi
        done
    fi
     
    ###########TOMCAT分配最大内存 ###########
    NUM8=$(ps -ef|grep -w tomcat|grep -v grep|wc -l)
    if [ ${NUM8} -eq 0 ];then
       echo -e "{
       "type":"${indexType}",
       "desc":"TOMCAT分配最大内存",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"当前没有Tomcat进程",
       "checker":"${dataSource}"
       }+"
    else
        for TOMCAT in $(find /opt/${appName}/ -name *tomcat* -type d)
        do
          NUM9=$(ps -ef|grep ${TOMCAT}|grep -v grep|wc -l)
          if [ ${NUM9} -eq 0 ];then
            echo "not ${TOMCAT}" >> /dev/null 2>&1
          else
            XMX=$(ps -ef|grep ${TOMCAT}/|grep "-Xmx"|awk -F"-Xmx" '{print $2}'|cut -d" " -f1)
              echo -e "{
              "type":"${indexType}",
              "desc":"TOMCAT分配最大内存",
              "@timestamp":"${collectTime}",
              "appname":"${appName}",
              "hostname":"${hostName}",
              "value":"${XMX}  (实例名:${TOMCAT})",
              "checker":"${dataSource}"
              }+"
          fi
        done
    fi
     
    ###########TOMCAT分配年轻代空间 ###########
    NUM10=$(ps -ef|grep -w tomcat|grep -v grep|wc -l)
    if [ ${NUM10} -eq 0 ];then
       echo -e "{
       "type":"${indexType}",
       "desc":"TOMCAT分配年轻代空间",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"当前没有Tomcat进程",
       "checker":"${dataSource}"
       }+"
     
    else
        for TOMCAT in $(find /opt/${appName}/ -name *tomcat* -type d)
        do
          NUM11=$(ps -ef|grep ${TOMCAT}|grep -v grep|wc -l)
          if [ ${NUM11} -eq 0 ];then
            echo "not ${TOMCAT}" >> /dev/null 2>&1
          else
            XMN=$(ps -ef|grep ${TOMCAT}/|grep "-Xmn"|awk -F"-Xmn" '{print $2}'|cut -d" " -f1)
              echo -e "{
              "type":"${indexType}",
              "desc":"TOMCAT分配年轻代空间",
              "@timestamp":"${collectTime}",
              "appname":"${appName}",
              "hostname":"${hostName}",
              "value":"${XMN}  (实例名:${TOMCAT})",
              "checker":"${dataSource}"
              }+"
          fi
        done
    fi
     
    ###########TOMCAT每个线程的堆栈大小 ###########
    NUM12=$(ps -ef|grep -w tomcat|grep -v grep|wc -l)
    if [ ${NUM12} -eq 0 ];then
       echo -e "{
       "type":"${indexType}",
       "desc":"TOMCAT每个线程的堆栈大小",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"当前没有Tomcat进程",
       "checker":"${dataSource}"
       }+"
    else
        for TOMCAT in $(find /opt/${appName}/ -name *tomcat* -type d)
        do
          NUM13=$(ps -ef|grep ${TOMCAT}|grep -v grep|wc -l)
          if [ ${NUM13} -eq 0 ];then
            echo "not ${TOMCAT}" >> /dev/null 2>&1
          else
            XSS=$(ps -ef|grep ${TOMCAT}/|grep "-Xss"|awk -F"-Xss" '{print $2}'|cut -d" " -f1)
              echo -e "{
              "type":"${indexType}",
              "desc":"TOMCAT每个线程的堆栈大小",
              "@timestamp":"${collectTime}",
              "appname":"${appName}",
              "hostname":"${hostName}",
              "value":"${XSS}  (实例名:${TOMCAT})",
              "checker":"${dataSource}"
              }+"
          fi
        done
    fi
     
    ###########TOMCAT-GC时长占比 ###########
    NUM14=$(ps -ef|grep -w tomcat|grep -v grep|wc -l)
    if [ ${NUM14} -eq 0 ];then
       echo -e "{
       "type":"${indexType}",
       "desc":"TOMCAT-GC时长占比",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"当前没有Tomcat进程",
       "checker":"${dataSource}"
       }+"
    else
        for TOMCAT in $(find /opt/${appName}/ -name *tomcat* -type d)
        do
          NUM15=$(ps -ef|grep ${TOMCAT}|grep -v grep|wc -l)
          if [ ${NUM15} -eq 0 ];then
            echo "not ${TOMCAT}" >> /dev/null 2>&1
          else
            GC=$(ps -ef|grep ${TOMCAT}/|grep "GCTimeRatio"|awk -F"GCTimeRatio" '{print $2}'|cut -d" " -f1|awk -F"=" '{print $2}')
              echo -e "{
              "type":"${indexType}",
              "desc":"TOMCAT-GC时长占比",
              "@timestamp":"${collectTime}",
              "appname":"${appName}",
              "hostname":"${hostName}",
              "value":"${GC}  (实例名:${TOMCAT})",
              "checker":"${dataSource}"
              }+"
          fi
        done
    fi
     
    ###########Zookeeper分配最小内存###########
    #zookeeper安装时没有手动定义内存配置,默认为系统内存的四分之一
    NUM16=$(ps -ef|grep zookeeper|grep -v grep|wc -l)
    if [ ${NUM16} -eq 0 ];then
       echo -e "{
       "type":"${indexType}",
       "desc":"Zookeeper分配最小内存",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"当前没有Zookeeper进程",
       "checker":"${dataSource}"
       }+"
    else
       MEM_TOTAL=$(free -m|grep "Mem"|awk '{print $2}')
       ZK_MEM_MIN=`expr ${MEM_TOTAL} / 4`
       echo -e "{
       "type":"${indexType}",
       "desc":"Zookeeper分配最小内存",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${ZK_MEM_MIN}M",
       "checker":"${dataSource}"
       }+"
    fi
     
    ###########Zookeeper分配最大内存###########
    #zookeeper安装时没有手动定义内存配置,默认为系统内存的四分之一
    NUM17=$(ps -ef|grep zookeeper|grep -v grep|wc -l)
    if [ ${NUM17} -eq 0 ];then
       echo -e "{
       "type":"${indexType}",
       "desc":"Zookeeper分配最大内存",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"当前没有Zookeeper进程",
       "checker":"${dataSource}"
       }+"
    else
       MEM_TOTAL=$(free -m|grep "Mem"|awk '{print $2}')
       ZK_MEM_MAX=`expr ${MEM_TOTAL} / 4`
       echo -e "{
       "type":"${indexType}",
       "desc":"Zookeeper分配最大内存",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${ZK_MEM_MAX}M",
       "checker":"${dataSource}"
       }+"
    fi
     
    ###########KAFKA分配最小内存 ###########
    NUM18=$(ps -ef|grep kafka|grep -v grep|wc -l)
    if [ ${NUM18} -eq 0 ];then
       echo -e "{
       "type":"${indexType}",
       "desc":"KAFKA分配最小内存",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"当前没有KAFKA进程",
       "checker":"${dataSource}"
       }+"
    else
        cd /opt/${appName}/
        for KAFKA in $(find /opt/${appName}/ -name *kafka* -type d)
        do
        NUM19=$(ps -ef|grep ${KAFKA}|grep -v grep|wc -l)
           if [ ${NUM19} -eq 0 ];then
              echo "not this ${KAFKA}" >/dev/null 2>&1
           else
              FILE=${KAFKA}/bin/kafka-server-start.sh
              KAFKA_MEM_MIN=$(cat ${FILE}|grep "Xmx"|awk -F'"' '{print $2}'|awk '{print $2}'|awk -F"Xms" '{print $2}')
              echo -e "{
       "type":"${indexType}",
       "desc":"KAFKA分配最小内存",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${KAFKA_MEM_MIN}",
       "checker":"${dataSource}"
       }+"
           fi
        done
    fi
     
    ###########KAFKA分配最大内存 ###########
    NUM20=$(ps -ef|grep kafka|grep -v grep|wc -l)
    if [ ${NUM20} -eq 0 ];then
       echo -e "{
       "type":"${indexType}",
       "desc":"KAFKA分配最大内存",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"当前没有KAFKA进程",
       "checker":"${dataSource}"
       }+"
    else
        cd /opt/${appName}/
        for KAFKA in $(find /opt/${appName}/ -name *kafka* -type d)
        do
        NUM21=$(ps -ef|grep ${KAFKA}|grep -v grep|wc -l)
           if [ ${NUM21} -eq 0 ];then
              echo "not this ${KAFKA}" >/dev/null 2>&1
           else
              FILE=${KAFKA}/bin/kafka-server-start.sh
              KAFKA_MEM_MAX=$(cat ${FILE}|grep "Xmx"|awk -F'"' '{print $2}'|awk '{print $1}'|awk -F"Xmx" '{print $2}')
              echo -e "{
       "type":"${indexType}",
       "desc":"KAFKA分配最大内存",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${KAFKA_MEM_MAX}",
       "checker":"${dataSource}"
       }+"
           fi
        done
    fi
     
    ###########应用系统进程数量 ###########
    NUM22=$(ps -eo user,pid,cmd|awk '{if($1=="bxapp")print}'|wc -l)
       echo -e "{
       "type":"${indexType}",
       "desc":"应用系统进程数量",
       "@timestamp":"${collectTime}",
       "appname":"${appName}",
       "hostname":"${hostName}",
       "value":"${NUM22}",
       "checker":"${dataSource}"
       }"

    执行这个脚本(JSON字段跟上面ES入仓要求的字段匹配):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    [root@kevin_test app_process_index]# sh 20_app_process_index.sh
    {
       "type":"app_process",
       "desc":"应用进程占内存百分比",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"69.7%",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"应用进程占CPU百分比",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"13.8%",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"应用进程run最长时间及其进程",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"609-08:36:42, ../src/redis-sentinel",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"应用进程TIME-WAIT连接数",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"0",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"应用进程ESTABLISHED连接数",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"454",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"应用进程FIN_WAIT2连接数",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"0",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"日志空间使用率",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"20%",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"应用程序空间使用率",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"75%",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"应用所在磁盘读速率(Blk/s)",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"2.30",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"应用所在磁盘写速率(Blk/s)",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"16.41",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"应用所在磁盘TPS",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"1.31",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"TOMCAT分配最小内存",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有Tomcat进程",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"TOMCAT分配最大内存",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有Tomcat进程",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"TOMCAT分配年轻代空间",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有Tomcat进程",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"TOMCAT每个线程的堆栈大小",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有Tomcat进程",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"TOMCAT-GC时长占比",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有Tomcat进程",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"Zookeeper分配最小内存",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"1459M",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"Zookeeper分配最大内存",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"1459M",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"KAFKA分配最小内存",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有KAFKA进程",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"KAFKA分配最大内存",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有KAFKA进程",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }+
    {
       "type":"app_process",
       "desc":"应用系统进程数量",
       "@timestamp":"1561029533",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"10",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }

    二、然后使用python调用shell脚本,调取shell脚本的执行结果
    下面三个脚本都可以使用,区别在于:
    第一个脚本:默认就是在当前路径下调用shell脚本,shell和python两个脚本是放在统一目录下的
    第二个脚本和第三个脚本:先获取当前脚本所在目录路径,然后在python脚本里调用shell脚本时,使用的是shell脚本全路径

    这里推荐使用第三个脚本,但是注意:
    使用第二或第三个脚本时,shell脚本里的dataSource要写成:dataSource=$(echo "$0@${IP}")
    而使用第一个脚本时,shell脚本里的dataSource要写成:dataSource=$(echo "`pwd`/$0@${IP}")

    区别就是:
    第一或第二个脚本,在输出的JSON格式的结果中,checker不会带上`pwd`
    第三个脚本,在输出的JSON格式的结果中,checker会带上`pwd`,所以就不需要在shell脚本里再加上`pwd`,否则路径就多了~

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    第一个脚本==================================================================
    [root@kevin_test app_process_index]# cat 20_app_process_index.py
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    import os
    import json
     
    #默认就在当前路径下执行20_app_process_index.sh
    json_set = os.popen("sh 20_app_process_index.sh").read().split('+')
    for json_str in json_set:
        print json_str
     
    第二个脚本==================================================================
    [root@kevin_test app_process_index]# cat 20_app_process_index.py1
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    import os
    import json
     
    #获取当前路径,调用shell脚本, 执行时跟全路径
    now_path=os.path.abspath('.')
    index_script="sh %s/20_app_process_index.sh" % (now_path)
     
    json_set = os.popen(index_script).read().split('+')
    for json_str in json_set:
        print json_str
     
    第三个脚本================================================================
    [root@kevin_test app_process_index]# cat 20_app_process_index.py2
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    import os
    import json
     
    #获取当前路径,调用shell脚本, 执行时跟全路径
    now_path=os.path.abspath(__file__)
    now_path=os.path.dirname(now_path)
    index_script="sh %s/20_app_process_index.sh" % (now_path)
     
    json_set = os.popen(index_script).read().split('+')
    for json_str in json_set:
        print json_str

    来看看几个脚本结果:
    如下第一个脚本的"checker" 字段,由于shell脚本里的"dataSource"没有带"pwd",所以"checker"字段中的脚本路径不全

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    [root@kevin_test app_process_index]# python 20_app_process_index.py
    {
       "type":"app_process",
       "desc":"应用进程占内存百分比",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"69.7%",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用进程占CPU百分比",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"13.8%",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用进程run最长时间及其进程",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"609-08:46:50, ../src/redis-sentinel",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用进程TIME-WAIT连接数",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"0",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用进程ESTABLISHED连接数",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"455",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用进程FIN_WAIT2连接数",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"0",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"日志空间使用率",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"20%",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用程序空间使用率",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"75%",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用所在磁盘读速率(Blk/s)",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"2.30",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用所在磁盘写速率(Blk/s)",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"16.41",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用所在磁盘TPS",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"1.31",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"TOMCAT分配最小内存",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有Tomcat进程",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"TOMCAT分配最大内存",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有Tomcat进程",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"TOMCAT分配年轻代空间",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有Tomcat进程",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"TOMCAT每个线程的堆栈大小",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有Tomcat进程",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"TOMCAT-GC时长占比",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有Tomcat进程",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"Zookeeper分配最小内存",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"1459M",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"Zookeeper分配最大内存",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"1459M",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"KAFKA分配最小内存",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有KAFKA进程",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"KAFKA分配最大内存",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有KAFKA进程",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用系统进程数量",
       "@timestamp":"1561030141",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"11",
       "checker":"20_app_process_index.sh@192.168.10.99"
       }

    第二或第三个脚本执行结果一样,"checker"字段中的脚本路径是完整路径

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    [root@kevin_test app_process_index]# python 20_app_process_index.py
    {
       "type":"app_process",
       "desc":"应用进程占内存百分比",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"70.8%",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用进程占CPU百分比",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"144.8%",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用进程run最长时间及其进程",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"609-08:51:53, ../src/redis-sentinel",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用进程TIME-WAIT连接数",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"0",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用进程ESTABLISHED连接数",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"456",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用进程FIN_WAIT2连接数",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"0",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"日志空间使用率",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"20%",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用程序空间使用率",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"75%",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用所在磁盘读速率(Blk/s)",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"2.30",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用所在磁盘写速率(Blk/s)",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"16.41",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用所在磁盘TPS",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"1.31",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"TOMCAT分配最小内存",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有Tomcat进程",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"TOMCAT分配最大内存",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有Tomcat进程",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"TOMCAT分配年轻代空间",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有Tomcat进程",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"TOMCAT每个线程的堆栈大小",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有Tomcat进程",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"TOMCAT-GC时长占比",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有Tomcat进程",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"Zookeeper分配最小内存",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"1459M",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"Zookeeper分配最大内存",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"1459M",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"KAFKA分配最小内存",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有KAFKA进程",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"KAFKA分配最大内存",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"当前没有KAFKA进程",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }
     
    {
       "type":"app_process",
       "desc":"应用系统进程数量",
       "@timestamp":"1561030444",
       "appname":"bobo",
       "hostname":"kevin_test",
       "value":"10",
       "checker":"/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99"
       }

    最后将上面的第三个脚本整合到"20_app_process_index_es.py"脚本里,作为ES入仓请求的脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    [root@kevin_test app_process_index]# cat 20_app_process_index_es.py
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    import urllib2 
    import hashlib
    import json
    import os
     
    now_path=os.path.abspath(__file__)
    now_path=os.path.dirname(now_path)
    index_script="sh %s/20_app_process_index.sh" % (now_path)
     
    json_set = os.popen(index_script).read().split('+')
     
    app_index = []
    for json_str in json_set:
        app_index.append(json.loads(json_str))
     
    url = 'http://192.168.10.10:10222/haha/heiheiAPI/test_1_kafka'
    data = {
        'token''bd1df2b11111111112222222222222222333333333333333333yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy',
        'data': app_index
    }
     
    headers = {'Content-Type''application/json'}
    req = urllib2.Request(url, json.dumps(data), headers = headers)
    res = urllib2.urlopen(req).read()
     
    print res
    #print app_index

    执行这个请求脚本

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    [root@kevin_test app_process_index]# python 20_app_process_index_es.py
    {"retCode": 200}
     
    将脚本中的最后一行注释打开(即"#print app_index"),测试下入仓的数据:
    [root@kevin_test app_process_index]# python 20_app_process_index_es.py
    {"retCode": 200}
    [{u'appname': u'bobo', u'@timestamp': u'1561030595', u'hostname': u'kevin_test', u'value': u'69.7%', u'checker':
    u'/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99', u'type': u'app_process', u'desc': u'
    u5e94u7528u8fdbu7a0bu5360u5185u5b58u767eu5206u6bd4'}, {u'appname': u'bobo', u'@timestamp': u'1561030595',
    u'hostname': u'kevin_test', u'value': u'13.8%', u'checker': u'/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99',
    u'type': u'app_process', u'desc': u'u5e94u7528u8fdbu7a0bu5360CPUu767eu5206u6bd4'}, {u'appname': u'bobo', u'@timestamp': u'1561030595',
    u'hostname': u'kevin_test', u'value': u'609-08:54:24, ../src/redis-sentinel', u'checker':
    u'/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99', u'type': u'app_process', u'desc':
    u'u5e94u7528u8fdbu7a0brunu6700u957fu65f6u95f4u53cau5176u8fdbu7a0b'}, {u'appname': u'bobo', u'@timestamp': u'1561030595', u'hostname':
    u'kevin_test', u'value': u'0', u'checker': u'/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99', u'type': u'app_process',
    u'desc': u'u5e94u7528u8fdbu7a0bTIME-WAITu8fdeu63a5u6570'}, {u'appname': u'bobo', u'@timestamp': u'1561030595', u'hostname': u'kevin_test',
    u'value': u'458', u'checker': u'/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99', u'type': u'app_process', u'desc':
    u'u5e94u7528u8fdbu7a0bESTABLISHEDu8fdeu63a5u6570'}, {u'appname': u'bobo', u'@timestamp': u'1561030595', u'hostname': u'kevin_test',
    u'value': u'0', u'checker': u'/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99', u'type': u'app_process', u'desc':
    u'u5e94u7528u8fdbu7a0bFIN_WAIT2u8fdeu63a5u6570'}, {u'appname': u'bobo', u'@timestamp': u'1561030595', u'hostname': u'kevin_test',
    u'value': u'20%', u'checker': u'/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99', u'type': u'app_process',
    u'desc': u'u65e5u5fd7u7a7au95f4u4f7fu7528u7387'}, {u'appname': u'bobo', u'@timestamp': u'1561030595', u'hostname': u'kevin_test',
    u'value': u'75%', u'checker': u'/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99', u'type': u'app_process', u'desc':
    u'u5e94u7528u7a0bu5e8fu7a7au95f4u4f7fu7528u7387'}, {u'appname': u'bobo', u'@timestamp': u'1561030595', u'hostname': u'kevin_test',
    u'value': u'2.30', u'checker': u'/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99', u'type': u'app_process', u'desc':
    u'u5e94u7528u6240u5728u78c1u76d8u8bfbu901fu7387uff08Blk/suff09'}, {u'appname': u'bobo', u'@timestamp': u'1561030595', u'hostname':
    u'kevin_test', u'value': u'16.41', u'checker': u'/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99', u'type': u'app_process',
    u'desc': u'u5e94u7528u6240u5728u78c1u76d8u5199u901fu7387uff08Blk/suff09'}, {u'appname': u'bobo', u'@timestamp': u'1561030595', u'hostname':
    u'kevin_test', u'value': u'1.31', u'checker': u'/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99', u'type': u'app_process',
    u'desc': u'u5e94u7528u6240u5728u78c1u76d8TPS'}, {u'appname': u'bobo', u'@timestamp': u'1561030595', u'hostname': u'kevin_test', u'value':
    u'u5f53u524du6ca1u6709Tomcatu8fdbu7a0b', u'checker': u'/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99', u'type':
    u'app_process', u'desc': u'TOMCATu5206u914du6700u5c0fu5185u5b58'}, {u'appname': u'bobo', u'@timestamp': u'1561030595', u'hostname': u'kevin_test',
    u'value': u'u5f53u524du6ca1u6709Tomcatu8fdbu7a0b', u'checker': u'/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99',
    u'type': u'app_process', u'desc': u'TOMCATu5206u914du6700u5927u5185u5b58'}, {u'appname': u'bobo', u'@timestamp': u'1561030595', u'hostname':
    u'kevin_test', u'value': u'u5f53u524du6ca1u6709Tomcatu8fdbu7a0b', u'checker': u'/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99',
    u'type': u'app_process', u'desc': u'TOMCATu5206u914du5e74u8f7bu4ee3u7a7au95f4'}, {u'appname': u'bobo', u'@timestamp': u'1561030595', u'hostname':
    u'kevin_test', u'value': u'u5f53u524du6ca1u6709Tomcatu8fdbu7a0b', u'checker': u'/root/100_app_index/app_process_index/20_app_process_index.sh@192.168.10.99',

    ======================================================
    上面涉及到python的当前路径调用问题(即上面讨论的第一、二、三的python脚本)

    这里对python获取当前目录路径和文件的方法做个记录:
    一、获取当前路径

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    1)使用sys.argv[0]
    import sys
    print sys.argv[0]
    #输出
    #本地路径
          
    2)os模块
    import  os
    print os.getcwd()                     #获取当前工作目录路径
    print os.path.abspath('.')            #获取当前工作目录路径
    print os.path.abspath('test.txt')     #获取当前目录文件下的工作目录路径
    print os.path.abspath('..')           #获取当前工作的父目录 !注意是父目录路径
    print os.path.abspath(os.curdir)      #获取当前工作目录路径
     
    3)改变当前目录
    使用: os.chdir(path)。
     
    4)组合路径返回
    os.path.join('file1','file2','file3')
    合并得到路径 file1/file2/file3

    二、获得当前目录下所有文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    1)os.walk() 用于在目录树种游走输出目录中的文件名字,向上或下;
     
    语法
    os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
     
    参数:
    top -- 根目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径,
           文件夹名字, 文件名】。
     
    topdown --可选,为True或者没有指定, 一个目录的的3-元组将比它的任何子文件夹的3-元组先产生 (目录自上而下)。
              如果topdown为 False, 一个目录的3-元组将比它的任何子文件夹的3-元组后产生 (目录自下而上)。
     
    onerror -- 可选,是一个函数; 它调用时有一个参数, 一个OSError实例。报告这错误后,继续walk,或者抛出exception终止walk。
     
    followlinks -- 设置为 true,则通过软链接访问目录。
     
    2)
    import os
    root = os.getcwd()
     
    def file_name(file_dir):
        for root, dirs, files in os.walk(file_dir):
            print "-----------"
            print root    #os.walk()所在目录
            print dirs    #os.walk()所在目录的所有目录名
            print files   #os.walk()所在目录的所有非目录文件名
            print " "
     
    file_name(root)
  • 相关阅读:
    JS数组去重
    正则表达式验证邮箱手机号等
    js中的事件委托
    c++刷题(6/100)最长上升子序列
    c++刷题(3/100)数独,栈和队列
    在express中HMR(合并express和webpack-dev-server)
    面试整理(3)js事件委托
    面试整理(2)跨域:jsonp与CORS
    面试整理(1):原生ajax
    styled-components真的好吗?
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/11418971.html
Copyright © 2011-2022 走看看