基于Django实现Linux运维管理平台整个实现过程和各种API接口调用以及Echarts绘图的使用介绍
项目内容涉及技术直通车:
zabbix监控api接口的调用详解:
数据可视化工具Echarts:
saltstack的API解释:
下面贴上可能遇到的报错和问题:
先说一下,完成一半自己想做的项目的感受和经历。
这是一个从后台到前端独自完成的自己的项目,虽然这两天刚加入的功能还没有完全实现,但是也差不多存在一些功能了。由于第一次并且独自做开发,也没有使用前端模板,所以前端代码写的很烂,Django,后端代码也不规范,不过可以用来练习API的调用。。。期间遇到了很多问题,saltstack,zabbix等各种api的调用,以及获取到的数据如何发到前端利用Echarts展示,等等,不过也学到了很多,特别是浏览需要调用的API接口,像Zabbix,Saltstack等等。特别是如何调用API,官网是最好的,最有用的,最值得花时间去研究的。
由于从zabbix–saltstack等API调用和后端接口书写以及前端Echarts数据图形展示,都是独自开发,由于一直在学云计算运维相关的知识,开发代码写的不好,请多多指教,不胜感激涕零。
最近一段时间多个博客文章断断续续一直处于草稿状态,没有及时更新,是由于即将毕业进入社会实习并工作,想在简历上加上一个由自己独自完成的项目,这期间真是经历了酸甜苦辣咸------寂寞。
- 决定选Django的原因,首先因为她是Python的强大的WEB UI框架,
- 其次,从大一下学期的大数据比赛,就开始接触PYTHON了,
- 再加上最近在捣鼓PYTHON的自动化运维相关的模块。。。
- 其实主要还是因为从谷歌到的信息和社区博客看出,她真的很强大!!!
实现思路
边学Django边规划着自己所谓的LINUX运维平台,初开始打算做这样的功能:
以上7条,便是我准备要实现的这个平台的功能,目前为止刚刚完成1,2,3,7这四个功能,剩下的功能有时间的话继续干。
主要涉及到的技术:
Python,Linux, Django, Bootstrap(Html, CSS,JS),Echarts,Mysql(sqlite3),zabbix+saltstack.
这里解释一下为什么选择这些东西:
废话不在多说,牢骚不在多发,首先先介绍本次环境的版本。 软件版本
ZABBIX
V3.4
Python
V3.6
Django
V1.95
bootstrap
v3.30
Mysql
v5.7
saltstack
v2019.2.0 (Fluorine)
Centos
CentOS-7-x86_64-DVD-1511
Pycharm(专业版)
v2019.2.x
Docker
v18.3
Grafana(测试API)
v5.6
Echarts
官网最新版(开发者版完整版)
一、部署的方法:
第一种方法:
可以选择在WIN或者**LINUX(推荐)**环境下,调试,使用Pycharm进行部署,运行runserver,打开浏览器就能访问了。
下面是细节:
先下载专业版的Pycharm,选择Django模板,这里如果Django使用的是v2.X版本的话,会报一些警告,因为1.95和2.x的平台会有些不兼容,比如urls.py文件内容的书写格式,有很大偏差,建议没有特殊要求,就直接使用1.95。
第二种方法:
使用Docker-compose部署Django环境,这种方法是在linux环境下部署的,或者你购买的云主机服务器等。
[root@master ~]# systemctl start docker
[root@master ~]# systemctl enable docker
[root@master ~]# docker pull mysql
[root@master ~]# docker pull django:1.9.5
[root@master ~]# docker pull python:3.6.0
[root@master ~]# mkdir -p /mysite/{DjangoWeb,db}
[root@master mysite]# vim /mysite/Dockerfile
FROM python:3.6.0 #ROM指令表示新的镜像将基于python:2.7的镜像来构建
ENV PYTHONUNBUFFERED 1 #ENV为环境变量(PYTHONUNBUFFERED见这里)
RUN mkdir /code # RUN指令表示在镜像内新建/code目录
RUN mkdir /code/db
WORKDIR /code # 指定RUN、CMD与ENTRYPOINT命令的工作目录
ADD ./DjangoWeb/requirements.txt /code/ # 将./mysite/requirements.txt文件添加到刚才新建的code目录中
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt # 运行pip安装所需的软件
ADD . /code/
[root@master mysite]# vim /mysite/docker-compose.yml
db: #db标签
image: mysql # images表示使用mysql镜像
expose: # expose表示暴露端口3306,但不发布到宿主机上
- "3306"
volumes: # volume表示挂载宿主机的路径作为卷,冒号左边为宿主机路径,右边为镜像内路径
- ./db:/var/lib/mysql
environment: # environment为环境变量,每个容器都有自己定义的环境变量,具体查看镜像手册中的mysql
- MYSQL_DATABASE=mysitedb
- MYSQL_ROOT_PASSWORD=888888
web: # web标签:
build: . # build指定建立Dockerfile路径
command: python ./DjangoWeb/manage.py runserver 0.0.0.0:8000 # command将覆盖默认的命令
volumes:
- .:/code
ports: # ports指定主机开放的端口
- "8000:8000"
links: # links指向其他容器中的服务
- db
[root@master mysite]# vim /mysite/DjangoWeb/requirements.txt
django==1.9.5
mysqlclient
django-admin-bootstrapped
django_bootstrap3
pillow
salt
[root@master mysite]# cd /mysite
[root@master mysite]# docker-compose build
[root@master mysite]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysite_web latest 4306618s87c7 6 minutes ago 720.5 MB
docker.io/mysql latest b4e78b89bcf3 9 months ago 412.3 MB
docker.io/python 3.6.0 a1782fa44ef7 4 months ago 687.1 MB
docker.io/django 1.9.5 c5b6e7c5c44c 11 months ago 433.4 MB
[root@master mysite]# docker-compose run web django-admin.py startproject webserver ./DjangoWeb
[root@master mysite]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ad0c75e2fd3d mysite_web "django-admin.py star" 5 minutes ago Exited (0) 5 minutes ago mysite_web_run_1
77e91e05178d mysql "docker-entrypoint.sh" 5 minutes ago Up 5 minutes 3306/tcp mysite_db_1
[root@master mysite]# chmod -R 777 DjangoWeb
[root@master mysite]# vim DjangoWeb/webserver/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mysitedb',
'USER': 'root',
'PASSWORD': '888888',
'HOST': 'db',
'PORT': 3306,
}
}
添加net端口映射:
[root@master DjangoWeb]# docker inspect 1bf8642343e3 | grep IPAddress #这里的inspect命令很强大
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.3",
"IPAddress": "172.17.0.3",
[root@master DjangoWeb]# iptables -t nat -A DOCKER -p tcp --dport 80 -j DNAT --to-destination 172.17.0.3:8000
这里要注意最好是在manage.py的目录下执行:
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
docker-compose up
有关Docker-compose的相关操作,我已经在上面添加了链接,可以了解一下,该流程和操作。
这里先强调一下:由于我做了ssh免密登录,所以不会在弹出一个dalang形式的输入并验证密码窗口。可以打开后台调试,看一下是否获取到token:
![图片[1]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_0.png)
也可以直接在终端下输入密码:(主要区别是看你的配置环境)
![图片[2]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_1.png)
![图片[3]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_2.png)
下面先贴上几张小项目功能截图:
![图片[4]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_3.png)
![图片[5]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_4.png)
![图片[6]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_5.png)
![图片[7]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_6.png)
![图片[8]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_7.png)
![图片[9]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_8.png)
![图片[10]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_9.png)
![图片[11]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_10.png)
![图片[12]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_11.png)
![图片[13]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_12.png)
![图片[14]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_13.png)
![图片[15]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_14.png)
![图片[16]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_15.png)
![图片[17]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_16.png)
![图片[18]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_17.png)
![图片[19]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_18.png)
![图片[20]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_19.png)
这里做了一个吟唱菜单栏的按钮(把左边的灰色菜单栏隐藏掉),由于初开始写页面时,没有考虑到后面的架构,所以有些少了div,导致某些地方一塌糊涂(最上面就不会自适应拉伸,反而跟着跑了。。)。。。(这里写的JS是把左边的菜单栏变为负值。。。)
![图片[21]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_20.png)
虽然整个项目已经实现的功能仅有一部分,还有些未实现,但是也连续作战大半个月。就像Bootstrap的菜鸟教程上写的一样,“学的不仅是技术,更是梦想!再牛逼的梦想,也抵不住你傻逼似的坚持!”
簇簇绿叶围起来的柔光细腻显示屏下的某个盛夏深夜,
越来越发觉,很多时候,人就像植物一样,
甚至多数时候还不如植物,
因为植物每时每刻都在疯狂的生长,拼命的开枝散叶。
而人,大多数时候,是处于被动,一种来自生活的被动,
看似实属无奈,
实际上,是对过往的轻狂不屑的一种偿还。
这种偿还,
可以是一种对现实生活的碌碌无为,
也可以是对未来如何高质量就业的迷茫,
还可以是今天晚上考虑明天该干什么的纠结,
再低一层,
甚至这些偿有些人还未曾想过,
但是,只要生存一天,
该来的总会来的,该偿还的总会换着形式偿还,
因为上帝不会遗忘任何一个角落里的任何一条主动亦或被动的生命。
![图片[22]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_21.png)
![图片[23]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_22.png)
![图片[24]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_23.png)
日月如梭,
如若,人,大多数更像绿萝一样,每天都在疯狂的生长发叶,
光阴似箭,久而久之,也会变得越来越主动,需要被动偿还给生活的也越来越屈指可数。
多数时候,
看似不起眼的几件事情,
甚至几句话,
都可以使人逐渐成熟稳重,形成一种睿智。
祝愿:身边的每一位朋友、同学都疯狂的主动去吃学习上工作上亦或是更接近梦想路上的苦,减少被动的去接受生活上的苦。
每个人的人生都有自己的精彩都能活出别样精彩,
像正在快速发展的新中国一样辉煌。
梦想,使我变得成熟睿智。
正值本该吃苦奋进的年龄段,绝不应该有丝毫退缩,
撸起袖子加油干,
![图片[25]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_24.png)
![图片[26]-基于Django实现Linux运维管理平台的整个实现过程和各种API接口调用以及Echarts绘图项目介绍(一)记录点滴生活-JieYingAI捷鹰AI](https://www.jieyingai.com/wp-content/uploads/2024/09/1725123775759_25.png)
像一个生产环境下的Linux核心服务云监控系统一样,
随着企业用户需求加大,
系统功能也逐渐趋于成熟完善。
像眼前一天一个样的绿萝一样,我想它肯定每天都在踏着梦想前进。
人生如棋,我愿为卒,行动虽慢,何曾后退,云计算运维开发DevOps,漫漫之路,愿能分得一杯羹。。。。










