Shell 抓取Linux 系统指标通过api 上报
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,背景(1).系统运维过程中会遇到 系统运行定制化跟多个人性配置,个性化配置属于私有配置不属于监控平台的监控范畴,且个性化指标出现异常问题会导致系统出现不可预期问题及程序运行风险; 针对这种场景 我们会
千家信息网最后更新 2025年01月23日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安全错误
数据库的锁怎样保障安全
网络技术考什么上机
保定久久软件开发有限公司怎么样
分析网络安全宣传的意义
怎么登录数据库地址
商标 软件开发属于哪个类别
乌镇乌镇互联网科技馆
自建数据库
accsee数据库时间设置
36岁软件开发什么水平
叁拾叁网络技术有限公司
杨浦区进口网络技术开发产品
闪避攻击 网络安全
房山网络安全教育
万千星网络技术有限公司
大学生网络安全意识研究的收获
做软件开发在哪学
linux服务器管理工作
网络安全运营商排行榜
mfc读取数据库文件画曲线
软件开发前台简称
robot 连接数据库
荷兰5g网络安全建议
惠普的服务器型号都代表什么意思
服务器怎么创建网站步骤
接口测试怎么查看数据库信息
网络安全靠大家主持搞
什么是移动时空数据库
am4379 软件开发
软件开发的项目描述
苹果在俄国有服务器吗