Shell抓取Linux系统指标通过api上报

  1. 背景

    创新互联专注于瀍河网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供瀍河营销型网站建设,瀍河网站制作、瀍河网页设计、瀍河网站官网定制、小程序制作服务,打造瀍河网络公司原创品牌,更为您提供瀍河网站排名全网营销落地服务。

     (1).系统运维过程中会遇到 系统运行定制化跟多个人性配置,个性化配置属于私有配置不属于监控平台的监控范畴,且个性化指标出现异常问题会导致系统出现不可预期问题及程序运行风险; 针对这种场景 我们会自己提供检查系统检查脚本或者agent 达到系统保障目的;  如下就是系统探测脚本;

  2.系统收集实战脚本;

#!/bin/bash
#系统信息抓取脚本
function current_date(){
start_current_date="`date "+%Y-%m-%d %H:%M:%S"`"
echo ${start_current_date}
}
 
function init_logs(){
log_dir="/chj/logs/"
log_file="/chj/logs/pushData.log"
if [ -f ${log_file} ]
then
   echo ${log_file}
else
   touch ${log_file}   
   echo  ${log_file}
fi   
}
 
#1.获取系统ip地址
function getSysIp(){
ipaddr=$(/bin/hostname -i)
echo $ipaddr
}
 
#2.解析DNS检查是否存在有效dns;
function getSysDns(){
    domain="do.chj.cloud"
    if dig @172.21.2.10 $domain +short |grep '[0-9]' >/dev/null;then
        echo "True"
    else
        echo "False"
    fi
} 
 
#3.获取系统env环境变量

function getSysEnv(){
envfile=/etc/profile.d/chj-common.sh
if [ -f $envfile ] 
then
   env=$(grep "RUNTIME_ENV=" $envfile |awk -F "=" '{print $2}')
   echo $env
else
   echo "none"
fi
}
 
#4.获取应用名称
 
function getJavaName(){
appname=$(ps -ef |grep java |grep -v "grep"|head -1|awk -F "-D" '{print $2}'|awk -F "=" '{print $2}')
echo $appname
}
 
 
#5.获取java应用jvm参数
function getJavaInfo(){
appinfo=$(ps -ef |grep java |grep -v "grep"|head -1|sed 's/[[:space:]]/-/g')
echo "$appinfo"
}
 
 
#6.获取应用端口
function getAppPort(){
apppid=$(ps -ef |grep java |grep -v "grep" | /bin/awk '{print $2}' |head -1)
if [ ! -z "$apppid" ]
then
    appport=$(netstat -tulpn | grep "$apppid" | awk -F ":" '{print $2}'|/bin/awk -F " " '{print $1}')
    echo "$appport"
     
else
    echo "none"
fi
} 
 
#7.获取当前连接tcp
function getTcp(){
tcp=$(netstat -anplt  |grep -v tcp6 |grep -v "127.0.0.1"|grep "ESTABLISHED"|sort |awk '!a[$5]++{print}'|awk '{print $5,$7}'|sed 's/[[:space:]]/-/g'|sed 's/\///g'|sed 's/sshd:/sshd/'|sed s'/-.-//g')
if [ ! -n "tcp" ]
then
     echo "none"
else
     echo $tcp|sed 's/[[:space:]]/,/g'
fi
}
 
#8.检查是否存在nat;

function sysNat(){
    local timeout="1"
    local target="www.badu.com"
    local ret_code=`curl -I -s --connect-timeout ${timeout} ${target} -w %{http_code} | tail -n1`
    if [ "x$ret_code" = "x200" ]; then
        echo "1"
    else
        echo "0"
    fi
}
 
#9.调用动态上传接口发送请求数据

function reqDynamicData(){
sysipaddr=$1
sysdns=$2
sysenv=$3
appName=$4
appjvm=$5
appPort=$6
conntcp=$7
nat=$8
fetchUrl="http://ops.chj.cloud/dynamic/api/v1"
/bin/curl "$fetchUrl" -X POST -H "Content-Type: application/json" -d "{\"instance_ip\": \"$sysipaddr\",\"env\":\"$sysenv\",\"dns\":\"$sysdns\",\"appname\":\"$ppName\",\"appjvm\":\"$appjvm\",\"appport\":\"$appPort\",\"apptcp\":\"$conntcp\",\"nat\":\"$nat\"}"
}

 
#10.发送数据

function main(){
ip=`getSysIp`
dns=`getSysDns`
env=`getSysEnv`
name=`getJavaName`
jvm=`getJavaInfo`
port=`getAppPort`
tcp=`getTcp`
nat=`sysNat`
reqDynamicData $ip $dns $env $name $jvm $port $tcp $nat
log=`init_logs`
runTime_date=`current_date`
echo "上传数据时间:$runTime_date" >> $log    
}

main

3.数据库字段设计;

 3.1 创建数据库sql;
 
 CREATE TABLE `dynamic_Check` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ip` varchar(92) COLLATE utf8mb4_bin DEFAULT NULL,
  `dns` varchar(128) COLLATE utf8mb4_bin DEFAULT NULL,
  `env` varchar(64) COLLATE utf8mb4_bin DEFAULT NULL,
  `appname` text COLLATE utf8mb4_bin,
  `appport` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL,
  `appjvm` text COLLATE utf8mb4_bin,
  `conn_tcp` text COLLATE utf8mb4_bin,
  `snat` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL,
  `run_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin 


3.2.数据库表结构

+----------+--------------+------+-----+---------+----------------+
| Field    | Type         | Null | Key | Default | Extra          |
+----------+--------------+------+-----+---------+----------------+
| id       | int(11)      | NO   | PRI | NULL    | auto_increment |
| ip       | varchar(92)  | YES  |     | NULL    |                |
| dns      | varchar(128) | YES  |     | NULL    |                |
| env      | varchar(64)  | YES  |     | NULL    |                |
| appname  | text         | YES  |     | NULL    |                |
| appport  | varchar(32)  | YES  |     | NULL    |                |
| appjvm   | text         | YES  |     | NULL    |                |
| conn_tcp | text         | YES  |     | NULL    |                |
| snat     | varchar(32)  | YES  |     | NULL    |                |
| run_time | datetime     | YES  |     | NULL    |                |
+----------+--------------+------+-----+---------+----------------+

新闻标题:Shell抓取Linux系统指标通过api上报
本文地址:https://www.cdcxhl.com/article6/jhscog.html

成都网站建设公司_创新互联,为您提供定制网站用户体验微信公众号小程序开发网站内链微信小程序

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都网页设计公司