日常产品管理及服务监控.docx
《日常产品管理及服务监控.docx》由会员分享,可在线阅读,更多相关《日常产品管理及服务监控.docx(20页珍藏版)》请在冰点文库上搜索。
日常产品管理及服务监控
毕业论文(设计)
日常产品管理及服务监控
ManageProductandServerMonitoringSystem
完成日期2013年04月.日
吉林大学珠海学院本科毕业论文(设计)开题报告
日常产品管理及服务器监控
摘要
随着科技的发展,移动互联网已经开始走进我们的生活。
中小型移动互联网企业将变得越来越多,移动互联网产品也会随之越来越多。
每个产品从构思到形成产品都有一套流程,每个产品的流程又有差异。
所以很多的企业内部都有自己的一套规范和工作流程。
一个好的工作平台,能够提高工作的效率,能够尽可能的减少重复性的操作。
也能够减少中间环节出现的错误,所以,一个好的产品的管理流程是对于企业来讲是非常重要的。
本次设计只要是针对企业的一些流程开发的一套管理产品的工作流程。
主要根据公司流程的一些特点,将部分的手工操作以转化成自动化的操作。
设计上主要讲述了从产品设计到形成到发布的一系列工作的设计思路。
基本满足公司的需求,并且能够简化日常的工作。
关键词:
产品管理;PHP;MySql;Shell;Python
ManageProductandServerMonitoringSystem
Abstract
Withthedevelopmentoftechnology,theInternethascomeintoourlives.Therearemoresmallandmedium-sizedInternetbusinessenterprisesandmoreInternetproductsaswell.Fromasimpleideatoproductformation,eachproducthasasetofprocess,withdifferencesinoneandanother.That’swhyalotofbusinessenterpriseshavetheirownsetofnormsandworkflow.Agoodworkplatformcanhelptoimprovetheworkefficiency,whiletoreducerepeatabilityofoperationasmuchaspossible.Italsoreducestheerrorsoftheintermediateparts.Thus,agoodproductmanagementprocessisveryimportantforbusinessenterprises.
Thedesignisaimedatasetofmanagementproductsintheprocessofworkflowdevelopmentfortheenterprise.Accordingtothefeaturesofthebusinessenterprise,mainly,itistotransformthepartialmanualoperationintoautomaticoperation.Thedesignfocusesontheideasofaseriesofworkingprocessesfromproductdesigntoproductformationandfinalproductrelease,whichnotonlymeetstheneedsofthebusinessenterprise,butalsosimplifiesthedailywork.
Keywords:
ProductManagement;PHP;MySql;Shell;Python
目录
1绪论………………………1
1.1研究背景………………………1
1.2数据库介绍………………………1
1.2.1MYSQL概述………………………2
1.2.2LDAP概述………………………2
1.3开发环境简介………………………2
1.3.1语言的选择………………………2
1.3.2开发平台………………………3
1.4服务端与客户端简介………………………3
1.4.1服务器端基础环境………………………3
1.4.2客户端使用须知………………………3
1.4.3文件夹组织结构………………………3
1.4.4服务器部署图………………………5
2需求分析………………………6
2.1需求分析………………………6
2.2系统功能分析图………………………7
3总体设计………………………8
3.1系统目标………………………8
3.2数据库设计………………………8
3.2.1系统数据分析………………………8
3.2.2系统E-R图………………………9
3.2数据字典………………………10
3.2.1申请构建表………………………10
3.2.2构建完成………………………10
3.2.3申请测试………………………11
3.2.4渠道………………………11
3.2.5用户………………………11
3.2.6监控………………………12
4设计思想与实现………………………13
4.1用户登录模块………………………13
4.2菜单………………………15
4.3申请构建页面………………………16
4.4构建列表………………………19
4.5构建完成页面………………………21
4.6部署页面………………………22
4.7邮件表格………………………23
4.8传包发布页面………………………24
4.9监控图………………………25
5系统测试与运行………………………27
5.1系统验收测试………………………27
5.2系统运行………………………28
5.3系统的维护………………………28
6结束语………………………29
参考文献………………………30
致谢………………………31
1绪论
1.1研究背景
移动互联网在最近几年的发展非常的迅速,手机成了人与人之间沟通和交流的重要工具之一,移动应用产品也随之越来越多,移动互联网公司之间的竞争也也来越激烈。
产品要想获得用户的信赖和肯定,就需要不断的完善和创新。
对于一个企业来说,有没有竞争力,关键在于有没有一个团结,高效的一个团队。
而对于一个团队来将,工具是非常重要的。
就像Facebook,特别强调团队内部工具的重要性,好的工具能让效率事半功倍,能更快的推出产品,赢得先机。
工欲善其事,必先利其器。
自动化工具在IT行业的需求越来越大,单纯依靠人力劳动是不可取的。
一个大型企业的生产开发线会有许许多多的程序,如果没有一套自动化生产工具,那需要付出多少的人力劳动。
例如Google的服务器有成千上万台,如果他们的运维人员没有一套工具去操作,而一个个ssh连接到服务器去操作,那是一件多么耗时的体力活啊。
实现运维自动化,不依赖手工操作,这将会有效的提高工作效率,降低企业成本。
也不会使IT部门觉得重复的做一件事情,疲惫不堪。
而有更多的时间和精力投入到其他事情中去。
在参加学校生产实习的过程中,我加深对IT企业的认识。
工作的过程也发现,我们需要根据工作的需要,写一些脚本去协助我们更好的完成工作。
例如去统计数台服务器一周的登陆人数,一个个的去数可以完成任务,但是这个会比较耗时间,而且很大的可能会数错。
编写脚本去统计的话就会有效的节省时间,得到的数据也比较可靠。
对于监控方面,服务器的运行关系很重要,有一个比较直观的数据展示能让我们更好的了解服务器的状态,尽量减少我们工作的时候服务器宕机。
并且有助于我们更好的了解服务器的性能,充分利用服务器。
监控在这里面只是其中很小的一部分,其实是需要建立一套完整的体系的,常用的监控方案有好几种,这里只是做一个尝试,之后回独立做一个有关这方面的一个系统。
根据以上的问题。
为了简化工作流程,提高工作效率和人工操作的失误,决定开发一套关于产品的管理流程,方便对产品和服务的管理,规范管理流程。
1.2数据库介绍
数据库是一门重要的计算机技术,数据的存储及管理是一个企业的核心。
企业对于大数据的处理也越来越重视,很多时候都是数据驱动应用,数据能够说明用户的需求。
本设计的数据存储采用Mysql+LDAP。
1.2.1MYSQL概述
MYSQL容易入手。
该系统使用它来存储数据,主要是考虑到数据量并不大,而且本系统主要以linux作为服务器,SQL-Server只能运行在windows系统上面。
而与Oracle相比较,oracle的成本则比较高,因为oracle并非免费版本,oracle在处理大数据方面具备优势,但是对于这种小数据量来说,oracle的优势并不能得到体现。
所以我们就选择了mysql。
1.2.2LDAP概述
LDAP是LightweightDirectoryAccessProtocol的简称,是数据库的一种,但是他和关系数据库不一样,他是以树状结构存储数据的,这种目录组织结构经常用来存储用户信息,可以包含邮件,电话,家庭住址等等。
LDAP目录中,每一条条目都有一个唯一的DN。
它是由基础的DN和CN组成的。
例如:
基础的DN为dc=jluzh,dc=com,那么该学校里的某学生可以这么设置:
cn=mou,ou=student,dc=jluzh,dc=com,如果要以系别分,例如计算机,可以设置为cn=mou,ou=computer,ou=student,dc=jluzh,dc=com,这就是一个LDAP的一个条目。
LDAP适合不需要频繁更新,但需要频繁读取的数据源应用,所以本设计用他来做验证登录。
1.3开发环境简介
1.3.1语言的选择
本系统的开发语言是PHP+Shell+Python,这个组合是开发的过程中商量决定的,应为各自有自己语言的特点,能够利用其特点获得我们想要的效果。
PHP是WEB开发的重要工具,前台的展示也都是由PHP处理,Shell是Linux下的一中脚本语言,在Linux系统下的执行效率相对比较高,有部分的处理便使用Shell进行,Python是一门面向对象的计算机语言,包含了完善而且容易理解的标准库,能够轻松的完成很多常见的任务。
PHP是HypertextPreprocessor的简称,他是一种服务器端解释的脚本语言。
PHP与HTML的兼容性非常的好,PHP的运行速度较快,运行损耗较小。
这也是PHP的一大优势。
Shell是Linux的脚本语言,也可以说是Linux的一个命令程序。
能够便捷快速的处理用户的任务。
能够调用系统内核的大部分功能来帮助我们实现要求。
1.3.2开发平台
开发平台是ubuntu+ZendStudio
Ubuntu是linux操作系统,因其开源和稳定而受欢迎。
绝大多数的服务器也都采用linux系统。
ZendStudio是PHP语言的集成开发环境,本系统用他来做开发。
1.4服务端与客户端简介
服务端和客户端的介绍,主要是介绍基础环境、程序文件夹结构和服务器的部署。
这有助于我们认识程序的基本结构,使得我们的思路更加清晰。
1.4.1服务器端基础环境
操作系统:
linuxserver
服务器:
nginx1.3.2
PHP软件:
PHP5.6.1
数据库:
Mysql
开发工具:
ZendStudio
浏览器:
Chrome或者firefox
1.4.2客户端使用须知
浏览器:
Chrome或者firefox
1.4.3文件夹组织结构
设计的时候,将整体的文件夹框架建立起来,方便开发,不会导致开发工程混乱,规范开发代码。
图1-1为设计的文件夹结构图。
主要是将各个模块分出来,将公共的模块抽出来单独完成,这样减少代码的重复编写。
也使得条例清晰。
主工程名为product,里面包含有多个文件夹,这些都是按照特定的功能分开的,about是存放软件关于信息很相关操作的ajax文件夹主要是存放运用到的ajax页面的代码,buid文件夹是关于构建模块的,有关构建的提交,构建的处理,构建完成的代码模块都是在这里完成。
connect里面是有关数据库mysql的连接,关闭。
css是存放页面的css样式和布局,distribute这部分是产品发布的功能实现,所有的发布代码都在这个文件夹里面。
html,这个是用来存放html文件的,image存放程序使用到的图片,js存放程序使用到的js文件,log,程序日志输出文件夹。
send_mail发送邮件的功能模块,test存放测试相关操作的代码。
主界面的代码都是放在根目录下面,也很容易找到对应的功能代码,这样存放基本的层次结构就比较清晰了,开发过程也能较快的找到相应的代码修改。
这样使得开发效率更高。
图1-1文件结构图
1.4.4服务器部署图
如图1-2所示,服务器A主要是部署主要的工程,web服务器是Nginx、FastCGI。
由于产品人员需要提交产品资料,这是一个带图片和产品说明及更新文档的文件夹。
所以还需要搭建一个samba服务器作为共享的目录。
程序从这个samba共享目录中去读取相关的文件。
服务器B需要部署OpenLDAP作为认证中心。
这里面存放的是员工的基本信息。
服务器C需要部署的时Nginx和python的基础环境,python用来批量的修改大量的文件内容,将版本信息及其他相关的信息修改成需要的内容。
服务器D需要部署的时Django的环境,使python编写的一个页面,使用Ant构建,将程序打包处理。
这里其实可以将所有的东西放到一台服务器上运行,但是考虑到服务器的性能和程序运行的效率,才将这些拆开,以最好的效果展现。
服务器Amysql+nginx+php+sambaBCLDAP验证测试部署D构建平台
图1-2服务器部署图
2需求分析
2.1需求分析
对于公司产品的管理,不同的人有不同的职责。
因此,这个管理平台需要为用户提供不同的功能和权限,需要为他根据产品的设计流程,能够提供便捷的操作,界面简洁。
综合考虑,本系统的要求如下:
1.能够给开发人员提交构建需求:
(1)提供svn代码地址,版本,是否有定制需求,渠道号;
(2)要求输入能判断是否有效,能最快速填写表单;
2.能够处理构建需求:
(1)使用Ant构建,将程序打包并且签名;
(2)使用Ant自带的邮件发送功能将软件包的地址发送到相关人员邮箱中。
3.能够处理产品验收通过并提交申请测试:
(1)提供申请测试页面,能够从前面的构建信息中继续操作;
(2)仅仅填写很少的信息并让需要知道的人知晓;
4.能够给测试人员填写测试计划:
(1)测试人员填写测试计划表单,部分会插入HTML表格;
5.能够测试提交测试环境部署并处理:
(1)构建过程生成一个升级包,测试人员可以点击对应产品的这一条任务而执行申请部署并且自动执行升级包的部署;
(2)能通过网页查看升级文件的详细信息判断和收手机的信息是否一致;
6.有测试结果的处理:
(1)提交测试通过或者不通过的列表;
7.能够申请发布,将软件包传到外网:
(1)申请发布操作,需要将构建好懂俄程序包和产品放到samba中的文件夹合并;
(2)能够打包成7z压缩包;
(3)可以将压缩包上传到外网的一个固定的地址;
(4)程序还需要读取产品放到samba中的文件夹的资料,需要读出产品简介、更新日志的内容和图片的像素大小;
(5)可以将上面获取到的信息以表格的形式制成一张表以邮件形式发送给相关的人员;
8.能够产品状态查询:
(1)查询产品处于哪个状态,是测试中还是构建未完成。
这里都需要能通过对应的信息查询到。
以便相关人员查看;
9.能够实现服务器的状态监控:
(1)服务器的相关状态显示,只有运维人员需要知晓,其他人不需要权限查看。
需要监控nginx的状态、cpu使用情况、系统负载等信息;
10.所有的操作都能有邮件实时通知:
(1)每个操作都会需要通知相关的人员,所以邮件能便捷的提醒相关人员。
2.2系统功能分析图
如图2-1所示,系统功能分析如下,各部门有对应的功能模块,也将整个程序串成一条连贯的流水线:
登录产品部门研发部门运维部门测试部门产品资料产品发布环境部署构建任务监控处理任务结束
图2-1系统功能分析图
3总体设计
3.1系统目标
根据需求分析以及与用户的沟通,系统地基本目标如下:
1.系统界面简洁,美观大方,框架清晰,能实现基本的功能。
2.数据传输存储安全可靠。
3.对用户的输入框提供校验功能,尽可能的减少失误。
4.具有邮箱提示能,最快速的通知相关的人员。
5.网站的维护简单,易操作。
6.获取图片像素功能准确。
7.文件上传功能逻辑正确,安全可靠。
8.压缩资源快速准确。
9.Wimdows文件和Linux文件互相传递没有编码问题。
10.系统运行稳定,能够支持公司员工多人操作。
11.构建的处理及时,准确。
12.测试部署逻辑准确,有效。
13.用户权限控制合理,权限能给的尽量给到最低。
14.监控力度实时有效,监控图直观。
3.2数据库设计
3.2.1系统数据分析
通过对整个流程的分析,该流程主要的数据实体有这么几类:
构建、测试、渠道、用户,申请测试
这些实体涉及的实体项目分别是:
(1)构建:
id、标题、工程名称、svn地址、版本、渠道、定制需求、邮件、备注、构建后软件包地址、更新包地址、更新信息、状态、人员、测试ID
(2)测试:
id、标题、当前时间,测试文档、软件包地址、修改内容、备注、状态、需要测试时间
(3)渠道:
渠道号,渠道名,渠道简短名
(4)用户:
中文名,名字拼音
3.2.2系统E-R图
申请构建提交构建处理产品版本渠道Svn地址定制需求软件信息更新包地址软件包地址验收申请测试产品需求文档软件包地址要包时间备注测试计划处理目的内容人员时间版本设备测试结果测试部署提交结果内容版本设备人员时间测试处理申请发布产品可发布监控ftp服务器htt、tomcatSamba更新包N111N1N11111
图3-1系统E-R图
3.2数据字典
3.2.1申请构建表
申请购建表主要用于开发提交构建申请,id为该表的主键,该数据表结构如表3-1所示:
表3-1申请构建表
3.2.2构建完成
构建完成的表主要是存储构建完成的数据包地址,具体的表结构如表3-2所示:
表3-2构建完成表
3.2.3申请测试
申请测试表主要用于存储申请测试的信息。
Aid是主键,id是构建表的外键,数据表的结构如表3-3所示:
表3-3申请测试表
3.2.4渠道
渠道信息表主要用于存储渠道信息,id作为表的主键,其数据结构如表3-4所示:
表3-4渠道信息表
3.2.5用户
用户表主要用于存储用户的信息,主要是用户的姓名和姓名的拼音,数据表没有外键,与其他表格的联系不大,只是用来方便用户输入的,所以只有有三个数据。
数据结构如表3-5所示:
表3-5用户表
3.2.6监控
监控表主要用于存放监控获取到的数据,主要包含id、流量、接口、php-fpm。
如表3-5所示:
表3-6用户表
4设计思想与实现
4.1用户登录模块
登录模块,对用户身份的验证,使用比较简介的设计,只需要用户输入帐号和密码,就会到LDAP服务器上去验证。
如图4-1所示。
本系统是没有用户表的,在公司有多个系统的情况下能使用统一的帐号密码进行登录,实现单点登录。
当然,权限的设置在程序中还是必须要的。
图4-1登陆模块
登陆模块主要的思路是:
根据LDAP的特性,验证是通过DN和密码来验证的。
上面介绍过LDAP的一些基础信息。
例如基础的DN设置成dc=jluzh,dc=com。
那么我们个人的DN可以是cn=zhangsan,ou=student,dc=jluzh,dc=com,如果验证的话,我们不可能让用户输入这么长的用户名,所以,我们只让用户输入前面的cn。
然后去服务器通过cn获取到用户的dn,然后再通过DN去验证。
用到的一些函数,主要是关于LDAP的连接的函数。
session_start()打开session的函数,用session来保存用户名和密码,这个能在之后的权限设置上发挥比较大的作用。
ldap_connect("ip:
port")LDAP连接函数,返回的是一个链接代号。
ldap_search($conn,$base_dn,cn)根据cn获取到用户的信息,列出树状资料。
这里我们将会获取到用户的全部信息。
然后再去处理。
ldap_get_entries($conn,$search)把用户的信息放到一个数组里面。
然后通过一个for循环找出用户dn。
ldap_bind($conn,$user_dn,$pass)连接函数,用户dn和密码正确返回true。
错误返回false。
验证结束。
验证通过之后跳转到main页面。
如图4-2所示,代码的编写如下:
图4-2登陆代码
4.2菜单
如图4-3所示:
这是所有的产品管理的菜单栏。
能够最快速的找到我们需要完成的任务。
侧边拦主要就是把所有的功能列出来,供用户直观的看到系统的功能,找到相应的操作。
部分代码实现如下所示:
当前目录:
构建
php
if($ou=="运维组"||$ou=="测试组")
{
echo'提交构建
构建任务
构建完成';
//
}
if($ou=="产品组"||$ou=="客户端")
{
echo'提交构建
任务列表';
}
?
>
图4.3菜单栏
4.3申请构建页面
如图4-4所示,申请构建页面的表单较简单,主要用到的技术有JS动态添加一组对话框、根据对话框多少将数据录入数据库和Ajax不刷新页面自动显示输入数据后面部分这三个。
图4-4申请构