服务器管理平台(6)- Utils

Utils

  • 本篇为服务器管理平台的结篇,讲述一些必要的Util,如钉钉告警、安全加密、远程登录等功能的实现

1、钉钉告警

1.1、SQL配置告警规则

  1. 逻辑磁盘容量已使用比例超过90%

  2. 超过30天未登录

字段名称字段类型解释
Idint自增ID
Tablestring监测表名
Metricstring监测指标
Templatestring告警模版
Frequencystring告警频率
Thresholdstring指标阈值
CreatedAttimestamp创建时间
UpdatedAttimestamp修改时间

1.2、Shell定时轮询

## 打开定时任务配置文件crontab -e## 指定每个工作日上午11:10定时执行脚本,并把执行脚本的日志写入文件 result.log10 11 * * 1,2,3,4,5 sh [alert.sh](http://alert.sh) > result.log

1.3、核心功能函数

const openUrl = "https://oapi.dingtalk.com/robot/send?access_token=43e4ad2bcbbef692c7652b9eecca6fd51a0db9e544edcb579640e78f71259006"// NotifyHandler NotifyHandler
type NotifyHandler struct {web.BaseHandler
}// POST method
func (NotifyHandler) POST(ctx *web.Context) {//1.根据POST表单拼接SQLvar rules []model.AlertRulerules, err := model.GetRules()if err != nil {ctx.JSON("Describe AlertRule", 101, err)return}//2. 查询记录匹配告警模版for _, rule := range rules {switch rule.Table {case "es_logicaldisk":threshold, err := strconv.Atoi(rule.Threshold)if err != nil {ctx.JSON("Describe AlertRule Threshold ,table es_logicaldisk", 101, err)return}disks, err := model.GetDiskInfo(threshold)if err != nil {ctx.JSON("Describe GetDiskInfo Fail", 101, err)return}if len(disks) != 0 {for _, disk := range disks {alarmStr := fmt.Sprintf("时间: %s\n告警标题:逻辑磁盘容量超出%v\n业务IP:%v\n序列号:%v\n磁盘:%v使用百分比%v",time.Now().Format("2006-01-02 15:04:05"), rule.Threshold, disk.BusinessIp, disk.SN, disk.Filesystem, disk.UsePercent)err := notify.SendDingCh(openUrl, alarmStr)if err != nil {ctx.JSON("Describe LogicalDisk", 101, err)return}}}case "es_logininfo":logins, err := model.GetLoginInfo()if err != nil {ctx.JSON("Describe GetLoginInfo Fail", 101, err)return}if len(logins) != 0 {for _, login := range logins {alarmStr := fmt.Sprintf("时间: %s\n告警标题:超过30天未登录\n业务IP:%v\n序列号:%v\n上次登录时间:%v\n,距今间隔:%v",time.Now().Format("2006-01-02 15:04:05"), login.BusinessIp, login.SN, login.StartTime, login.Interval)err := notify.SendDingCh(openUrl, alarmStr)if err != nil {ctx.JSON("Describe LoginInfo", 101, err)return}}}}}ctx.JSON(fmt.Sprintf("ALL Alert Info Already send"), 0, nil)
}

1.4、结果验证

2、数据安全加密

2.1、Token鉴权

  • 根据web访问来源平台,分配不同Token进行鉴权识别,不同Token标识不同平台,权限不同,如web链接访问无删除权限

2.2、权限分级及加密存储

  • 平台账户分级,不同权限可访问界面不同
  • 账户密码加密存储

3、远程登录

3.1、Ansible实现

  • 安装
## 安装Ansibleyum install -y ansibleyum install -y sshpass### 修改配置,忽略告警vim /etc/ansible/ansible.cfg[defaults]host_key_checking = False # 第一次远程ssh主机需要将机器指纹添加到known_hosts,此设置忽略该步骤command_warnings=False  #忽略ansible执行命令的告警信息deprecation_warnings=False### 增加test用户组vim /etc/ansible/hosts[test]127.0.0.1 ansible_ssh_user=root ansible_ssh_port=22 ansible_ssh_pass=xxx### 执行命令,验证功能ansible test -m shell -a 'lspci'## 批量机器登录 + 执行shell命令
1. ip列表写入ip_list.ini
2. 执行脚本sh auto_ssh.sh $Password
  • auto_ssh.sh
#!/bin/bashif [ -s ./result.ini ] ; then> result.ini
fiPassword=$1
sed -i '/ansible_ssh/d' /etc/ansible/hosts# 添加机器信息
for Ip in $(cat ip_list.ini)doUsername="root"echo -e "$Ip ansible_ssh_user=$Username ansible_ssh_port=22 ansible_ssh_pass=$Password" >> /etc/ansible/hostsdone# [test]用户组 执行命令
ansible test -m shell -a 'lspci' > result.ini
echo "All Hosts Ansible Done , please check result.ini ! ! !"

3.2、Expect实现

  • 安装
## 安装expectyum install -y expect## 单台机器登录sh login.sh $Ip $Pwd## 单台机器登录 + 执行shell命令
1. 执行命令写入execute_cmd.ini
2. 执行脚本sh cmd_login.sh $Ip $Pwd## 批量机器登录 + 执行shell命令
1. ip列表加入ip_list.ini
2. 执行命令写入execute_cmd.ini
3. 执行脚本
sh list_cmd_login.sh $Pwd
  • auto_ssh.sh
#!/usr/bin/expectset user "root"
set host [lindex $argv 0]
set port "22"
set password [lindex $argv 1]spawn ssh -p$port $user@$host
expect {"*yes/no" { send "yes\r"; exp_continue }"*assword:" { send "${password}\r" }}
interact

End

  • 欢迎关注,感谢支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab appdesigner系列-常用18-表格

表格,常用来导入外部表格数据 示例: 导入外界excel数据:data.xlsx 姓名年龄城市王一18长沙王二21上海王三56武汉王四47北京王五88成都王六23长春 操作步骤如下: 1)将表格拖拽到画布上 2)对app1右键进行…

GPSR路由算法的MATLAB实现

GPSR基于节点地理位置路由信息,采用贪婪策略和右手准则的结合在邻居节点中选择下一跳节点进行数据转发。节点在进行路由选择时,只需知道自己、邻居和目标节点的地理位置信息,无需维护全局网络的链路状态,这在很大程度上降低了网络…

高质量简历模板网站,免费、免费、免费

你们在制作简历时,是不是基本只关注两件事:简历模板,还有基本信息的填写。 当你再次坐下来更新你的简历时,可能会发现自己不自觉地选择了那个“看起来最好看的模板”,填写基本信息,却没有深入思考如何使简历…

基于 Docker 部署 Pingvin Share 文件共享平台

一、Pingvin Share 介绍 Pingvin Share 简介 Pingvin Share 是自托管文件共享平台,是 WeTransfer 的替代方案。 Pingvin Share 特点 在 2 分钟内启动您的实例使用可通过链接访问的文件创建共享没有文件大小限制,只有你的磁盘是你的限制设置共享到期时间…

C++11新特性:final/override控制

override关键字 用于显式标识一个成员函数(通常是虚函数)是在派生类中重写(覆盖)了基类中的虚函数。这有助于提高代码的可读性,同时在编译时提供了检查,确保派生类中的函数确实是在基类中有对应的虚函数。…

GZ036 区块链技术应用赛项赛题第3套

2023年全国职业院校技能大赛 高职组 “区块链技术应用” 赛项赛卷(3卷) 任 务 书 参赛队编号: 背景描述 新能源作为新兴领域,产业呈现碎片化与复杂化的特性,逐渐出现管理困难、供应链金融、可信监管与数…

论文阅读_训练大模型用于角色扮演

英文名称: Character-LLM: A Trainable Agent for Role-Playing 中文名称: 角色-LLM:训练Agent用于角色扮演 文章: [https://arxiv.org/abs/2310.10158](https://arxiv.org/abs/2310.10158) 作者: Yunfan Shao, Linyang Li, Junqi Dai, Xipeng Qiu 机构: 复旦大学…

军事智能中的深度强化学习不同于传统的深度强化学习

在军事智能中,“诡”和“诈”是两个最重要的概念。 “诡”变指的是智能体通过采取一些不可预测或复杂的变化策略来获得优势。诡变可能包括逃避对手的观察或引诱对手采取不利的行动。智能体可以使用诡变来欺骗对手,使其做出错误的决策或暴露其策略。 “诈…

【第七在线】智能商品计划:重塑服装行业的供应链管理

在当今快速变化的市场环境中,供应链管理已成为企业成功的关键因素之一。尤其在服装行业,供应链的效率、灵活性和透明度直接影响着企业的竞争力和盈利能力。随着技术的发展,智能商品计划正逐渐成为重塑供应链管理的强大工具。 一、智能商品计划…

什么是JMeter?我们为什么要用JMeter做性能测试

什么是JMeter?我们为什么要用JMeter做性能测试 什么是JMeter?为什么选择JMeterJMeter的优点JMeter是如何工作的 什么是JMeter? Apache JMeter TM是纯Java开源软件,最初由Apache软件基金会的Stefano Mazzocchi开发,旨在…

如何在Linux上部署Docker容器

一、什么是docker? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不…

方法调用(java)

方法调用的基本内存原理:先进后出 基本数据类型:整数类型、浮点数类型、布尔类型、字符类型;数据类型存储在自己的空间 引用数据类型:除了以上数据类型都是;数据值是存储在其他空间中,变量中存储的是地址…

sprignboot电商书城源码

运行环境: jdk1.8,maven,mysql 项目技术: 后台主要是springbootmybatisshirojsp,前端界面主要使用bootstrap框架搭建,并使用了ueditor富文本编辑器、highcharts图表库。 有需要的可以联系我。 功能介绍: 该系统分为前台展示和后台管理两…

[docker] Docker 网络

一、Docker 网络 1.1 Docker 网络实现原理 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认…

【量化交易】股市舞者:小明的撮合交易之旅

马西森AES撮合交易系统 在繁华的都市中,小明,一个普通的青年,刚刚赚到了人生的第一桶金——20万。这笔意外的财富,点燃了他对股市的强烈兴趣。他开始如饥似渴地学习金融知识,钻研各种交易策略。 一天,小…

C#使用IsLeapYear方法判断指定年份是否为闰年

目录 一、判断指定年是否为闰年的2个方法 1.使用IsLeapYear方法判断指定年份是否为闰年 2.使用自定义的算法计算指定年份是否为闰年 二、示例 1.方法1的实例 2.方法2的实例 一、判断指定年是否为闰年的2个方法 1.使用IsLeapYear方法判断指定年份是否为闰年 使用IsLeapY…

Linux的奇妙冒险———vim的用法和本地配置

vim的用法和本地配置 一.vim的组成和功能。1.什么是vim2.vim的多种模式 二.文本编辑(普通模式)的快捷使用1.快速复制,粘贴,剪切。2.撤销,返回上一步操作3.光标的控制4.文本快捷变换5.批量化操作和注释 三.底行模式四.v…

远程连接银河麒麟

目录 一、防火墙服务 二、安装SSH服务 1.验证SSH服务是否安装 2.安装SSH服务 三、启动SSH服务 四、远程连接 1.切换登录用户 2.查看IP地址 3.FinalShell连接 4.切换root用户 前言: 本篇主要讲述在Win10系统中通过FinalShell远程连接银河麒麟桌面操作系统V10 一、防火…

ardupilot 罗德里格公式的两种推导

目录 文章目录 目录摘要1.等效旋转矢量2.三维旋转3.四元数和罗德里格公式之间的联系摘要 本节主要记录推导罗德里格公式的过程,可以参看视频不错的视频讲解 1.等效旋转矢量 参看严老师的教材: 步骤一:计算向量O’B 步骤二 :分解向量r到u上和垂直u的向量

通过Stable Diffusion生成虚假的遥感影像

简介 这两天玩了一下stable diffusion,是真的好玩! 然后我在想遥感有没有相关的生成模型,找了一下,还真找到了(https://github.com/xiaoyuan1996/Stable-Diffusion-for-Remote-Sensing-Image-Generation/tree/main&a…