Shell 抓取Linux 系统指标通过api 上报
发表于:2024-10-19 作者:千家信息网编辑
千家信息网最后更新 2024年10月19日,背景(1).系统运维过程中会遇到 系统运行定制化跟多个人性配置,个性化配置属于私有配置不属于监控平台的监控范畴,且个性化指标出现异常问题会导致系统出现不可预期问题及程序运行风险; 针对这种场景 我们会
千家信息网最后更新 2024年10月19日Shell 抓取Linux 系统指标通过api 上报
背景
(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.shif [ -f $envfile ] then env=$(grep "RUNTIME_ENV=" $envfile |awk -F "=" '{print $2}') echo $envelse 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.获取当前连接tcpfunction 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=$1sysdns=$2sysenv=$3appName=$4appjvm=$5appPort=$6conntcp=$7nat=$8fetchUrl="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 $natlog=`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 | |+----------+--------------+------+-----+---------+----------------+
系统
数据
脚本
检查
数据库
应用
配置
个性
问题
监控
运行
指标
有效
人性
信息
动态
参数
变量
名称
地址
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
紫晶系统数据库密码
三级数据库考试笔记
智能网络安全服务
软件开发的风险分析包括
快贷服务器出错
中学生与网络安全方面的书
excel 数据库
软件开发人员成本预算表
数据库数据表格式在哪
东方国信数据库开发笔试题
os6.5卸载数据库
南向数据库
5694美剧软件开发
中职网络技术未来发展方向
深圳市创智通网络技术有限公司
小型服务器管理
可牛网络技术
数据库系统概念 下载
江西app应用软件开发
网络安全法是什么时候
汕头智能软件开发电话
服务器好忙好忙啊
os6.5卸载数据库
学校网络安全专项活动方案
java 数据库 外键
浙江放心选软件开发问答知识
我国网络安全解决
2018网络安全宣传周启幕
北京水费网上缴费软件开发团队
海外高防服务器