百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

功能实用,效率提升,Python开发的自动化运维工具

bigegpt 2024-09-02 16:26 3 浏览

想要高效的完成日常运维工作,不论是代码部署、应用管理还是资产信息录入,都需要一个自动化运维平台。

今天我们分享一个开源项目,它可以帮助运维人员完成日常工作,提高效率,降低成本,它就是:OpsManage

OpsManage 是什么

OpsManage是一个自动化运维平台:,提供了代码及应用部署CI/CD、资产管理CMDB、计划任务管理平台、SQL审核|回滚、任务调度、站内WIKI等功能。

开发语言与框架:

  • 编程语言:Python3.6 + HTML + JScripts
  • 前端Web框架:Bootstrap
  • 后端Web框架:Django
  • 后端Task框架:Celery + Redis

OpsManage开发语言主要是Python,Web框架是Django,还采用了Celery和Redis作为后端Task框架,以实现异步任务处理和分布式消息队列服务。Celery是一个异步任务队列/作业队列,通过它能够实现任务的分发和处理,而Redis则提供了持久化的数据存储和缓存,为任务处理提供了必要的支持。

部署 OpsManage

首先部署前请确认环境要求:

- 编程语言:Python 3.6
- 操作系统:CentOS 6+
- Ansible版本:2.6 +
- 部署平台及节点服务器:Rsync 3+
- MySQL版本:5.1-5.6

一、安装Python

# yum install epel-release -y
# yum install zlib zlib-devel readline-devel sqlite-devel bzip2-devel openssl-devel gdbm-devel libdbi-devel ncurses-libs kernel-devel libxslt-devel libffi-devel python-devel zlib-devel openldap-devel sshpass gcc git rabbitmq-server supervisor -y
# yum localinstall <http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm>
# yum install mysql-community-server mysql-devel -y
# wget <https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tgz>  #CentOS 7不用安装python2.7
# tar -xzvf Python-3.6.6.tgz
# cd Python-3.6.6
# ./configure --prefix=/usr/local/python3
# make all
# make install
# make clean
# make distclean
# ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

二、安装模块

# cd /mnt/
# git clone -b v3 <https://github.com/welliamcao/OpsManage.git>
# cd /mnt/OpsManage/
# pip3 install -r requirements.txt  #CentOS 7使用pip3

三、安装Redis

# wget <http://download.redis.io/releases/redis-3.2.8.tar.gz>
# tar -xzvf redis-3.2.8.tar.gz
# cd redis-3.2.8
# make
# make install
# vim redis.conf

修改以下配置(不要配置认证)

daemonize yes
loglevel warning
logfile "/var/log/redis.log"
bind 你的服务器ip地址
例如: bind 127.0.0.1 192.168.88.201
# cd ../
# mv redis-3.2.8 /usr/local/redis
# /usr/local/redis/src/redis-server /usr/local/redis/redis.conf

四、安装MySQL

# vim /etc/my.cnf
[mysqld]
character_set_server = utf8
添加以上字段
# /etc/init.d/mysqld restart     	#centos 6
# systemctl start mysqld.service 	#centos 7
# mysql -uroot -p  				#初始密码为空,直接回车就行
mysql> create database opsmanage DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> grant all privileges on opsmanage.* to root@'%' identified by 'password';
mysql>\\q

五、配置RabbitMQ

# systemctl start rabbitmq-server.service    #启动RabbitMQ
# systemctl enable rabbitmq-server.service   #设置开机自启动RabbitMQ
# rabbitmqctl add_user admin admin           #添加RabbitMQ账户
# rabbitmqctl set_user_tags admin administrator
# rabbitmqctl set_permissions  -p  '/'  admin '.' '.' '.'
# rabbitmqctl list_users
# rabbitmqctl delete_user guest 			 #删除guest账户(可以不删除)
# rabbitmq-plugins enable rabbitmq_management   #开启Web UI,可以通过http://server_IP:15672/访问

六、配置OpsManage

# cd /mnt/OpsManage/conf
# vim opsmanage.ini
根据自己的情况修改配置

七、生成数据表与管理员账户

# cd /mnt/OpsManage/
# /usr/local/python3/bin/python3 manage.py makemigrations account
# /usr/local/python3/bin/python3 manage.py makemigrations wiki
# /usr/local/python3/bin/python3 manage.py makemigrations orders
# /usr/local/python3/bin/python3 manage.py makemigrations navbar
# /usr/local/python3/bin/python3 manage.py makemigrations databases
# /usr/local/python3/bin/python3 manage.py makemigrations asset
# /usr/local/python3/bin/python3 manage.py makemigrations deploy
# /usr/local/python3/bin/python3 manage.py makemigrations cicd
# /usr/local/python3/bin/python3 manage.py makemigrations sched
# /usr/local/python3/bin/python3 manage.py makemigrations apply
# /usr/local/python3/bin/python3 manage.py migrate
# /usr/local/python3/bin/python3 manage.py createsuperuser  #创建管理员账户与密码

# 如果出现错误ImportError: cannot import name 'LDAPError'
pip3 uninstall python-ldap
pip3 install --upgrade python-ldap

八、启动部署平台

# echo_supervisord_conf > /etc/supervisord.conf
# export PYTHONOPTIMIZE=1
# vim /etc/supervisord.conf
最后添加,/var/log/celery-*.log这些是日志文件,如果有错误请注意查看,directory的值是代码路径
[program:celery-worker-default]
environment=C_FORCE_ROOT="true",PYTHONOPTIMIZE=1
command=/usr/local/python3/bin/celery -A OpsManage worker --loglevel=info -E -Q default -n worker-default@%%h
directory=/mnt/OpsManage
stdout_logfile=/var/log/celery-worker-default.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
numprocs=1

[program:celery-worker-ansible]
environment=C_FORCE_ROOT="true",PYTHONOPTIMIZE=1
command=/usr/local/python3/bin/celery -A OpsManage worker --loglevel=info -E -Q ansible -n worker-ansible@%%h
directory=/mnt/OpsManage
stdout_logfile=/var/log/celery-worker-ansible.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
numprocs=1

[program:celery-beat]
environment=C_FORCE_ROOT="true",PYTHONOPTIMIZE=1
command=/usr/local/python3/bin/celery -A OpsManage  beat --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler
directory=/mnt/OpsManage
stdout_logfile=/var/log/celery-beat.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
numprocs=1

[program:apply-task]
environment=C_FORCE_ROOT="true",PYTHONOPTIMIZE=1
command=/usr/local/python3/bin/python3 manage.py apply_task
directory=/mnt/OpsManage
stdout_logfile=/var/log/apply-task.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
numprocs=1

[program:opsmanage-web]
command=/usr/local/python3/bin/python3 manage.py runserver 0.0.0.0:8000 --http_timeout 1200
directory=/mnt/OpsManage
stdout_logfile=/var/log/opsmanage-web.log
stderr_logfile=/var/log/opsmanage-web-error.log
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT

启动celery
# supervisord -c /etc/supervisord.conf
# supervisorctl status #要检查是否都是running状态,uptime是不是递增

配置nginx(请注意服务器上面是否安装了Nginx):
# vim /etc/nginx/conf.d/opsmanage.conf
server {
    listen 80 ;
    server_name 192.168.1.233;

    access_log /var/log/nginx/opsmanage_access.log;
    error_log /var/log/nginx/opsmanage_error.log;

    location / {
        proxy_next_upstream off;
        proxy_set_header    X-Real-IP           $remote_addr;
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header    Host                $host;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_pass http://192.168.1.233:8000$request_uri;
    }
    location /static/ {
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias /mnt/OpsManage/static/;
     }
    location /media/navbar/ {
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias /mnt/OpsManage/upload/navbar/;
     }
	location /media/avatar/ {
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias /mnt/OpsManage/upload/avatar/;
     }
    location /media/apply/icon/ {
        expires 30d;
        autoindex on;
        add_header Cache-Control private;
        alias /mnt/OpsManage/upload/apply/icon/;
     }
}
# nginx -t  #检查配置文件
# service start nginx			 #CentOS 6
# systemctl start nginx.service  #CentOS 7

使用 OpsManage

项目提供了一个在线的试用环境,可以直接去体验下项目的功能。

demo地址:URL: <http://42.194.214.22:8000/>
UserName:demo
Password:demo

1. 代码部署

OpsManage提供了便捷的代码部署功能,用户可以将自己的代码上传至平台,并通过简单的配置实现自动化部署。这大大简化了部署流程,减少了人为错误的发生,提高了部署的效率和准确性。

2. 应用部署

除了代码部署外,OpsManage还支持应用部署。用户可以通过平台管理自己的应用程序,并对其进行部署和更新。这样可以有效管理应用的版本,确保线上应用的稳定性和安全性。

3. 计划任务

平台还提供了计划任务的管理功能,用户可以在OpsManage上设置定时任务,定期执行一些重复性的工作,比如日志清理、备份等。这样能够避免因为遗漏或疏忽而导致的重要任务未执行,保证系统的稳定运行。


4. 设备资产管理

OpsManage还具备设备资产管理功能,用户可以在平台上记录和管理各类设备的信息,比如服务器、网络设备等。通过统一的管理,可以及时查找到设备的位置、配置信息,方便运维人员进行维护和故障排查。


  1. 站内wiki文档

OpsManage可以直接建立站内WIKI,功能比较实用。


总结

OpsManage 是一个已经发布了有很长时间的项目,项目提供了比较实用的功能,整体的实现是比较完整的。并项目采用的技术栈比较容易上手,所以无论是对于想要解决实际工作的中的问题,还是希望通过项目学习如何进行开发,都是还挺不错的。

最后希望推荐大家的项目可以带来一些价值,或者能够激发一些灵感。

项目信息

  • 项目名称: OpsManage
  • GitHub 链接:https://github.com/welliamcao/OpsManage
  • Star 数:3K

相关推荐

方差分析简介(方差分析通俗理解)

介绍方差分析(ANOVA,AnalysisofVariance)是一种广泛使用的统计方法,用于比较两个或多个组之间的均值。单因素方差分析是方差分析的一种变体,旨在检测三个或更多分类组的均值是否存在...

正如404页面所预示,猴子正成为断网元凶--吧嗒吧嗒真好吃

吧嗒吧嗒,绘图:MakiNaro你可以通过加热、冰冻、水淹、模塑、甚至压溃压力来使网络光缆硬化。但用猴子显然是不行的。光缆那新挤压成型的塑料外皮太尼玛诱人了,无法阻挡一场试吃盛宴的举行。印度政府正...

Python数据可视化:箱线图多种库画法

概念箱线图通过数据的四分位数来展示数据的分布情况。例如:数据的中心位置,数据间的离散程度,是否有异常值等。把数据从小到大进行排列并等分成四份,第一分位数(Q1),第二分位数(Q2)和第三分位数(Q3)...

多组独立(完全随机设计)样本秩和检验的SPSS操作教程及结果解读

作者/风仕在上一期,我们已经讲完了两组独立样本秩和检验的SPSS操作教程及结果解读,这期开始讲多组独立样本秩和检验,我们主要从多组独立样本秩和检验介绍、两组独立样本秩和检验使用条件及案例的SPSS操作...

方差分析 in R语言 and Excel(方差分析r语言例题)

今天来写一篇实际中比较实用的分析方法,方差分析。通过方差分析,我们可以确定组别之间的差异是否超出了由于随机因素引起的差异范围。方差分析分为单因素方差分析和多因素方差分析,这一篇先介绍一下单因素方差分析...

可视化:前端数据可视化插件大盘点 图表/图谱/地图/关系图

前端数据可视化插件大盘点图表/图谱/地图/关系图全有在大数据时代,很多时候我们需要在网页中显示数据统计报表,从而能很直观地了解数据的走向,开发人员很多时候需要使用图表来表现一些数据。随着Web技术的...

matplotlib 必知的 15 个图(matplotlib各种图)

施工专题,我已完成20篇,施工系列几乎覆盖Python完整技术栈,目标只总结实践中最实用的东西,直击问题本质,快速帮助读者们入门和进阶:1我的施工计划2数字专题3字符串专题4列表专题5流程控制专题6编...

R ggplot2常用图表绘制指南(ggplot2绘制折线图)

ggplot2是R语言中强大的数据可视化包,基于“图形语法”(GrammarofGraphics),通过分层方式构建图表。以下是常用图表命令的详细指南,涵盖基本语法、常见图表类型及示例,适合...

Python数据可视化:从Pandas基础到Seaborn高级应用

数据可视化是数据分析中不可或缺的一环,它能帮助我们直观理解数据模式和趋势。本文将全面介绍Python中最常用的三种可视化方法。Pandas内置绘图功能Pandas基于Matplotlib提供了简洁的绘...

Python 数据可视化常用命令备忘录

本文提供了一个全面的Python数据可视化备忘单,适用于探索性数据分析(EDA)。该备忘单涵盖了单变量分析、双变量分析、多变量分析、时间序列分析、文本数据分析、可视化定制以及保存与显示等内容。所...

统计图的种类(统计图的种类及特点图片)

统计图是利用几何图形或具体事物的形象和地图等形式来表现社会经济现象数量特征和数量关系的图形。以下是几种常见的统计图类型及其适用场景:1.条形图(BarChart)条形图是用矩形条的高度或长度来表示...

实测,大模型谁更懂数据可视化?(数据可视化和可视化分析的主要模型)

大家好,我是Ai学习的老章看论文时,经常看到漂亮的图表,很多不知道是用什么工具绘制的,或者很想复刻类似图表。实测,大模型LaTeX公式识别,出乎预料前文,我用Kimi、Qwen-3-235B...

通过AI提示词让Deepseek快速生成各种类型的图表制作

在数据分析和可视化领域,图表是传达信息的重要工具。然而,传统图表制作往往需要专业的软件和一定的技术知识。本文将介绍如何通过AI提示词,利用Deepseek快速生成各种类型的图表,包括柱状图、折线图、饼...

数据可视化:解析箱线图(box plot)

箱线图/盒须图(boxplot)是数据分布的图形表示,由五个摘要组成:最小值、第一四分位数(25th百分位数)、中位数、第三四分位数(75th百分位数)和最大值。箱子代表四分位距(IQR)。IQR是...

[seaborn] seaborn学习笔记1-箱形图Boxplot

1箱形图Boxplot(代码下载)Boxplot可能是最常见的图形类型之一。它能够很好表示数据中的分布规律。箱型图方框的末尾显示了上下四分位数。极线显示最高和最低值,不包括异常值。seaborn中...