【Jenkins稳定运维】服务器频繁崩溃?资深管理员的应对策略

简介: 本文分享了作者作为管理员在面对服务器频繁崩溃时的应对策略,包括使用Shell脚本优化运维工作、学习Jenkins Pipeline插件以及一些运维技能扩展,强调了在运维工作中不断学习和实践的重要性。
一、背景

最近工作的五年,无论何时何地工作,总之测试已经离不开干运维的工作,或许也是没有界定测试和运维的工作部分,比如说:在linux服务器需要操作某些文件或服务时,总是习惯性的写出一长穿命令来偷懒,结果如下:

. /etc/profile.d/java11.sh && for dir in `ll |grep ^d|awk '{print $9}'`;do cd $dir; mvn -s "/usr/local/maven/conf/xxxx-test.xml"   clean  package  -Dmaven.test.skip=true -Plockin-test; if [ $? -eq 0 ]; then cd ..; else exit 0; fi ; done

这要是放在别人眼里,没有编程基础或者是没有储备多少linux指令的同学来说,看起来有些费劲,那么如何优雅的体现呢?为什么又要写成一长串呢?

二、分析&实现

原因竟然是:当前脚本属于一次性的,那么如何优雅,唯shell脚本而已,将上面一长串linux命令优化如下:

#!/bin/sh
# 引申环境变量
. /etc/profile.d/maven.sh 
. /etc/profile.d/java11.sh
# 遍历目录 ^d 匹配
for dir in `ll |grep ^d|awk '{print $9}'`
  do 
    cd $dir
    # 进入目录构建服务
    mvn -s "/usr/local/maven/conf/xxxx-test.xml"   clean  package  -Dmaven.test.skip=true -Plockin-test
    # 如果构建成功则继续返回上层,否则退出
    if [ $? -eq 0 ]; then 
      # 成功叫jar包传输到服务器上
      rsync -avz target/*.jar xxxx@192.168.12.11:/home/xxxx/jar_server_java/
      cd ..
    else 
      exit 0
    fi
    # 循环、条件结束符
  done
三、苦恼又暗自欣喜

相比之前工作,通过靠兼职运维而涨薪,需要负责公司的运维工作,不管是本地环境还是云服务器,总是要忙忙碌碌,四处救火,有时呢也是清闲,所以能明白环境问题带来的忙碌,有时可能是一周,当然有人会说了,为啥需要这么久时间?呵,这个也没法解释,如果要怪就怪自己手贱,或者是没有做好备份策略。

好在现在的工作,有运维岗位了,只是可能不太熟练这些项目的部署方式和意义,所以在恢复环境过程中遇到无法解决的问题,同时需要开发和测试来协助,所以这时候题主又携带着运维技能上场了。

四、学会了新技能

题主部署过java项目、python项目,当然还有前端vue项目,不管是node管理器还是mvn构建工具,也会遇到一个个不曾见过的难题,好在都能一一找到解决方案。

学习插件:Pipeline Stage View
在这里插入图片描述
如上图所示,在没有写流水线之前,咱们一直在说CI/CD,实现的也很低级:单个服务实现git仓库与jenkins之间相互调用,但是咱们并没有直接上线,不能说开发提交代码了,然后就直接部署生产,至少中间需要经过一轮测试验证,所以题主认为正确的思路就是:开发提交代码(单元测试)–测试环境拉取代码部署–测试验证环节(接口/UI自动化)–上线生产环境–验收测试(接口/UI自动化)

pipeline {
   
   
    agent any

    environment {
   
   
        GITURL = '全局git地址'
    }

    stages {
   
   
        stage('第一个job') {
   
   
            steps {
   
   
                build job: 'test-a', parameters: [
                    [$class: 'BooleanParameterValue', name: 'confirm', value: 'true'],
                    [$class: 'GitParameterValue', name: 'commit_id', value: "${commit_id}"]
                ]
            }
        }
        stage('第二个job') {
   
   
            steps {
   
   
                build job: 'test-b', parameters: [
                    [$class: 'BooleanParameterValue', name: 'confirm', value: 'true'],
                    [$class: 'GitParameterValue', name: 'commit_id', value: "${commit_id}"]
                ]
            }
        }
    }
}

Pipeline这个流水线插件,在这次工作中学习了,突然发现它并高深,大道至简,所以工具还是工具,永远都要服从人的思想工作。

五、技能扩展
  • 系统服务service找出来,批量执行stop && start
find /lib/systemd/system -name "xxxx*"|awk -F "/" '{print $5}'|xargs systemctl stop
  • 查找文件,批量删除
 find ./xxxx*/log/*  -name "*202*" |xargs rm -rf {
   
   }/;
  • 过滤文件内容
 grep -R  xxxx-s5 */config.xml
  • 批量替换
grep -R  xxxx-s5 */config.xml |awk -F ":" '{print$1}'|xargs sed -i 's/xxxx-s5/xxxx-test/g'
相关文章
|
20天前
|
运维 应用服务中间件 网络安全
自动化运维的新篇章:使用Ansible进行服务器配置管理
【10月更文挑战第34天】在现代IT基础设施的快速迭代中,自动化运维成为提升效率、确保一致性的关键手段。本文将通过介绍Ansible工具的使用,展示如何实现高效的服务器配置管理。从基础安装到高级应用,我们将一步步揭开自动化运维的神秘面纱,让你轻松掌握这一技术,为你的运维工作带来革命性的变化。
|
2月前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
67 2
|
2月前
|
运维 监控 安全
高效运维管理:提升系统稳定性的策略与实践
【10月更文挑战第2天】 在当今数字化时代,运维管理成为企业IT部门的重要任务。本文将探讨如何通过高效的运维管理策略和最佳实践,提升系统的稳定性,确保业务持续平稳运行。通过分析常见问题、预防措施以及应对策略,我们将揭示高效运维的关键要素,助您打造一个可靠的IT环境。
|
28天前
|
运维 应用服务中间件 调度
自动化运维:使用Ansible实现服务器批量管理
【10月更文挑战第26天】在当今快速发展的IT领域,自动化运维已成为提升效率、降低人为错误的关键技术手段。本文通过介绍如何使用Ansible这一强大的自动化工具,来简化和加速服务器的批量管理工作,旨在帮助读者理解自动化运维的核心概念和实践方法。文章将围绕Ansible的基础使用、配置管理、任务调度等方面展开,通过实际案例引导读者深入理解自动化运维的实现过程,最终达到提高运维效率和质量的目的。
|
2月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
2月前
|
运维 负载均衡 安全
自动化运维:使用Ansible进行服务器配置管理
【10月更文挑战第15天】在本文中,我们将探讨如何利用Ansible这一强大的自动化工具来简化和加速服务器的配置管理工作。通过实际案例和代码示例,我们将展示Ansible如何帮助运维人员高效地进行软件部署、系统更新和日常维护任务,从而提升工作效率并减少人为错误。
|
2月前
|
运维 监控 安全
高效运维管理:提升系统稳定性的策略与实践
【10月更文挑战第13天】 本文探讨了高效运维管理的关键策略和实践,旨在帮助运维团队提升系统的稳定性。通过分析常见问题,提出具体的解决方案,包括监控与告警、自动化工具的应用、故障排查与恢复、性能优化以及安全防护等方面。通过这些策略和实践,可以帮助企业构建一个稳定、可靠且高效的IT系统。
79 1
|
2月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
45 1
|
2月前
|
运维 jenkins 持续交付
自动化部署的魅力:如何用Jenkins和Docker简化运维工作
【10月更文挑战第7天】在现代软件开发周期中,快速且高效的部署是至关重要的。本文将引导你理解如何使用Jenkins和Docker实现自动化部署,从而简化运维流程。我们将从基础概念开始,逐步深入到实战操作,让你轻松掌握这一强大的工具组合。通过这篇文章,你将学会如何利用这些工具来提升你的工作效率,并减少人为错误的可能性。
|
2月前
|
存储 数据库 虚拟化
无缝过渡:企业级服务器迁移的策略与最佳实践
【10月更文挑战第4天】随着企业数字化转型的加速,服务器迁移成为企业IT基础设施升级的重要环节。本文从架构与规划的视角,探讨了企业级服务器迁移的策略与最佳实践,旨在帮助企业实现无缝过渡,降低迁移风险,提高迁移效率。
183 4

热门文章

最新文章