开源自动化运维平台BigOps,我要为运维说一句

如何让运维可以轻松配合开发和测试,管理好业务,已经成了运维最大的挑战。

CMDB和运维自动化

IT运维,指的是对已经搭建好的网络,软件,硬件进行维护。运维领域也是细分的,有硬件运维和软件运维

硬件运维主要包括对基础设施的运维,比如机房的设备,主机的硬盘,内存这些物理设备的维护

软件运维主要包括系统运维和应用运维,系统运维主要包括对OS,数据库,中间件的监控和维护,这些系统介于设备和应用之间,应用运维主要是对线上业务系统的运维

这里讨论的主要是软件运维的自动化,包括系统运维和应用运维的自动化

为什么需要运维自动化,运维自动化需要哪些工具,CMDB在运维自动化中的作用是怎样的呢 ?

运维

运维,这里指互联网运维,通常属于技术部门,与研发、测试、系统管理同为互联网产品技术支撑的4大部门,这个划分在国内和国外以及大小公司间都会多少有一些不同。

一个互联网产品的生成一般经历的过程是:产品经理(product manager,非技术部)需求分析、研发部门开发、测试部门测试、运维部门部署发布以及长期的运行维护。

一般来讲国内的互联网运维负责软件测试交付后的发布和管理,其核心目标是将交付的业务软件和硬件基础设施高效合理的整合,转换为可持续提供高质量服务的产品,同时最大限度降低服务运行的成本,保障服务运行的安全。

详情点击:

详情点击:

 

 

运维知识工具体系

操作系统:Centos,Ubuntu,Redhat,suse,Freebsd
网站服务:nginx,apache,lighttpd,php,tomcat,resin
数据   库:MySQL,Mysql-proxy,MariaDB,PostgreSQL
DB中间件:MyCat,atlas,cobar,amoeba,MySQL-proxy
代理相关:lvs,keepalived,haproxy,nginx,heartbeat
网站缓存:squid,nginx,varnish
NOSQL库:memcached,memcachedb,MongoDB,Cassandra,redis,CouchDB
存储相关:Nfs,Moosefs(mfs),Hadoop,glusterfs,lustre,FastDFS
版本管理:svn,git
监控报警:nagios,cacti,zabbix,munin,hyperic,mrtg,graphite
域名解析:bind,powerdns,dnsmasq
同步软件:scp,rsync,inotify,sersync,drbd,csync2,union,lsyncd
批量管理:Ssh Key,Saltstack,expect,puppet,ansible,cfengine
虚拟   化:kvm,xen
云计   算:openstack,docker,cloudstack
内网软件:iptables,zebra,iftraf,ntop,tc,iftop
邮件软件:qmail,posfix,sendmail,zimbra
远程拨号:openvpn,pptp,openswan,ipip
统一认证:openldap
队列工具:ActiveMQ,RabbitMQ,Metaq,MemcacheQ,Zeromq
打包发布:mvn,ants,jenkins,svn
测试软件:ab,JMeter,Webbench,LoadRunner,http_load,tcpcopy
带宽测试:smokeping,iozone  磁盘测试 iozone
性能测试:dd  IOPS测试 fio
日志相关:rsyslog,Awstats,flume,storm,ELK(Elasticsearch+Logstash+Kibana)
搜索软件:Sphinx,Xapian,Solr
无人值守:kickstart,cobbler
软件安装:rpm,yum(设计rpm包定制及yum仓库构建)
大数据:HDFS,Hive,Hbase,Zookeeper,Pig,Spark,Mahout
开发语言:Shell,Python

 

运维知识体系:

运维知识体系-V2.0 By:赵舜东(赵班长) 【转载请注明来自于-运维社区:

运维架构层级/运维角度

内容描述/主要技术关键词

监控体系

自动化/DevOps

云计算

客户端层

浏览器

Cookie、浏览器缓存协商(Last-Modified、Expires、Etag)、组件分离、前端优化、运维检测工具

舆论监控

外部网络监控

APM

故障检测工具

DNS服务
CDN服务
移动服务
云盾

DNS

浏览器DNS缓存、DNS缓存、自建DNS服务器、商业DNS产品、智能DNS、公共DNS(BGP anycast)、bind+DLZ/DPDK

客户端/APP

HTTP-DNS、打点日志、加密传输、移动推送、各类SDK(监控SDK、推流SDK等)

外部层

第三方CDN

GSLB、反向代理缓存、分布式存储、流量调度、配置管理、用户端(各类API如:带宽监控、预缓存、缓存刷新)

基于开放API开发

云计算

公有云服务、混合云、运维外包服务、APM(应用性能管理)、第三方安全解决方案(防DDOS、WAF)

网络层

互联层

多机房互联(VPN、专线)、异地灾备-->异地多活-->按SET部署

设备监控
(Zabbix SNMP)

网络质量监控
(Smokeping)

SDN

OpenvSwitch
(GRE、Vxlan)

高速通道

核心层

防火墙、路由器、Ipsec VPN、链路负载均衡和高可用 (CCNP级别)

VPC(专有网络)

汇聚层

三层交换 动态路由(OSPF)、静态路由、EC(端口汇聚)、MSTP+VRRP等 (CCNP级别)

接入层

二层交换 (VTP、SPF、Trunk、端口安全)等 (CCNA级别)

接入层

负载均衡
高可用

四层负载均衡

开源:LVS(IP负载均衡)+Keepalived、Haproxy 商业:F5、Netscaler

服务监控(API)

平台开发
(LBaas)

高防IP
云负载均衡SLB
CDN服务

七层负载均衡

反向代理:Haproxy、Nginx、Apache(根据HTTP协议支持的属性进行L7分发)、A/B Test Gateway、WAF

反向代理缓存

ATS、Squid、Varnish、Nginx(缓存分级、预缓存、缓存刷新)

应用服务层

Web服务层

HTTP协议、Web服务器(Apache、Nginx/OpenResty、Tomcat、Resin、Jboss)安全设置、性能优化

业务监控(API)

流量分析(Piwik)

服务监控(API)

安全监控(WAF)

配置管理:SaltStack
过载保护-服务降级
灰度发布-openresty
项目管理-Readmine
代码仓库-gitlab
持续集成-Jenkins
持续审查-SonarQube

镜像市场

应用服务层

运行环境(PHP Python Java C C++)、性能优化、缓存(OPCache、LocalCache)、Session存储、代码部署

各种SAAS服务

业务层

业务实现

API网关、302调度、业务模块化(电商例:用户、商品、购物车、结算中心、价格等服务)、微服务

服务层

SOA框架(Dubbo)、微服务框架(Spring Cloud)、协议(RPC、RESTful)、框架安全、应用性能监控

分布式应用服务

分布式层

消息队列

ActiveMQ(成熟)、RabbitMQ(成熟、案例多)、RocketMQ(业务应用)、Kafka(日志传输)、ZeroMQ(快)

消息队列服务

存储层

文件存储

单机存储

块存储 - 机械硬盘、SSD、文件系统(ext4、xfs)、LVM、tmpfs

系统监控

软件自带监控

配置管理

云硬盘 对象存储

单机存储扩展

文件分发(多级分发)、文件同步(rsync、inotify)、DRBD、DAS(块存储)

共享存储

文件存储 - NAS[NFS(Unix/Linux)]、FTP、SAN、iSCSI

分布式存储

对象存储 - GlusterFS、MooseFS、Ceph、FastDFS(非对象存储)

DAL

数据访问层

应用层分片、淘宝TDDL、开源:360(Atlas)、阿里(Cobar)、MyCat、MySQL-Proxy、根据业务开发

数据库服务

数据存储

分布式缓存

Memcached、Redis(客户端分片、Redis Cluster、Twemproxy、Codis)

数据库监控

数据库运维平台

云数据库-RDS
Mongodb、Redis
Memcached
OceanBase

NoSQL

Redis、LevelDB(SSDB)、CouchDB、Mongodb、Couchbase 、Cassandra、TiDB(支持MySQL协议)

时间序列

RRDTool、Graphite Whisper、OpenTSDB、InfluxDB、KairosDB、ElasticSearch

RDBMS

MySQL(PXC集群、MHA)、Oracle(DG、OGG、RAC)、PostgreSQL、SqlServer、SQLite、DB2

大数据

Hadoop生态圈(HDFS、Hive、Hbase、Zookeeper、Pig、Spark、Impala、Kudu)、Mahout智能推荐

服务监控

Ambari、CM

大数据服务

基础服务层

业务决策

灰度发布、服务降级、异地灾备、数据分析平台、智能扩容决策树(需要各层支持)

监控工具:
Zabbix
Nagios
Cacti
Open-Falcon
Sensu

自动化工具
(Puppet
Chef
SaltStack
Ansible)

日志服务
操作审计
资源编排
运维监控服务
持续交付系统

运维相关

项目管理(Redmine、Jira、知识库、Bugzilla、CodeReview)、工单系统、运维操作平台、监控平台

应用相关

持续集成、日志收集平台(ELKStack)、自动化部署平台、Job管理(调度)平台、安全扫描平台

系统相关

LDAP、内部DNS、DHCP、Mail、SMS、Gitlab、Yum仓库、操作审计(xenapp)、堡垒机

容器层

容器编排

Mesos(Marathon、Chronos)、Kubernetes(SKYDNS)、Docker Swarm、CoreOS(fleet)、OpenStack(Magnum)

Docker Stats
cAdvisor
DataDog
Zabbix

Docker Swarm
Mesos
Kubernetes

容器服务

容器和系统

容器:LXC、LXD、Docker、rkt、系统:CoreOS、Atomic、RancherOS

网络和存储

网络:Calico、Flanel、Weave Net 存储:Ceph 镜像管理:Docker Registry、Harbor

操作系统层

CPU

CPU运行级别、使用率、上下文切换、运行队列、进程调度、系统调用、CPU管理(进程管理、taskset、intel VT-X)

mpstat、strace

虚拟化

公有云
弹性计算产品

内存

虚拟内存、SWAP换入换出、内存寻址、内存管理(Buffer Cache、HugePages、ksmd、EPT)

vmstat、free

I/O(磁盘)

缺页中断、IOPS(顺序IO、随机IO)、IO管理(IO调度算法、virtio)、VFS

iostat、iotop

I/O(网络)

TCP/IP(三次握手、四次挥手、状态转换、TCP队列)、IO模型、Bonding、Bridge、网络管理(iftop、tcpdump)

iftop

内核/Shell

内核定制、内存参数优化、脚本编程(AWK、Sed、Shell、Python、PHP、Perl、Ruby、Lua)

系统监控

基础设施层

IAAS(基础设施即服务)

公有云、私有云(OpenStack/cloudstack+KVM/XEN、oVirt)、混合云

服务监控

配置管理

硬件管理

硬件选型、配件更换、资产录入、系统安装(Cobbler)、标签化、Raid构建、远程控制(KVM、iDrac、ILO、IMM)

巡检、IPMI

IPMI、CMDB

IDC托管

需求分析、IDC选型、网络测试、谈价格、签合同、设备采购(原厂vs渠道)、机柜和机位规划

运维产品化

基于DevOps产品思路

项目管理(类似Jira)、Bug管理、代码托管(类似Gitlab)、持续交付(类似Jenkins的构建、测试、部署)

监控平台、看板

软件定义数据中心

DevOps产品

自动化运维产品思路

CMDB、ITSM管理系统(事件管理、问题管理、故障管理、工单系统)、作业平台、堡垒机、APM、私有云平台

监控平台

CI/CD系统

运维管理产品

运维服务化

OAAS

OAAS:Operations as a Service,运维咨询、运维托管、技术培训、应急处理、产品即服务、DevOps专家服务

测试和开发相关

运维协助:性能测试(TCPCopy、日志转换)、单机监控(nmon)、环境规划(开发、测试、预生产、生产)、CI(持续集成)、自动化部署

运维管理体系

运维管理必会:ITSM、ITIL V3、IT Service CMM、Six Sigma、DevOps Master、项目管理(PMBok)、架构层面(知识体系、运维方案、容量规划、灾备规划、服务降级)

运维发展趋势(个人理解)

打杂(小公司啥都干)->分层(应用运维、系统运维、基础运维、运维开发等)->场景化(分业务)->自动化(最终大家的目标都是自动化)

运维自动化发展趋势(个人理解)

标准化(文档化、流程化)->工具化(流程固化为工具)->Web化(平台化)->服务化(API化)->智能化(自动化)->产品化(服务化,云服务、运维创业)

备注:

1.本表格只体现和运维相关的内容;2.表格没有严格意义上的层级关系;3.持续更新中,由于每个层次内容多,只例举比较出名(重要/开源)的关键词;
4.运维人员要给自己划好知识边界!(横向|纵向)5.转载请注明来自-运维社区

 

  图片转自赵班长!!

运维的价值到底是什么?运维的挑战又是什么?

一. 传统运维痛点

先来看一下传统运维的痛点

为了解决运维可视化、自动化及未来智能化的问题,我们开发了这款自动化运维软件,起名叫BigOps比格运维。

1.1 日常工作繁琐

日常运维工作是比较繁琐的,研发同学会经常需要到服务器上查日志,重启应用,或者是说今天上线某个产品,需要部署下环境。这些琐事是传统运维的大部分工作

我们能解决什么问题?

1.2 应用运行环境不统一

在部署某应用后,应用不能访问,就会听到开发人员说,在我的环境运行很好的,怎么部署到测试环境后,就不能用了,因为各类环境的类库不统一

还有一种极端情况,运维人员习惯不同,可能凭自己的习惯来安装部署软件,每种服务器上运行软件的目录不统一

一、统一认证

1.3 运维及部署效率低下

想想运维人员需要登陆到服务器上执行命令,部署程序,不仅效率很低,并且非常容易出现人为的错误,一旦手工出错,追溯问题将会非常不容易

已经整合了Zabbix、Jira、Confluence、Jenkins和Gitlab,如果你现在也在使用这些开源软件,那么恭喜你,可以和BigOps无缝整合,只需要打个Patch即可轻松接入。

1.4 无用报警信息过多

经常会收到很多报警信息,多数是无用的报警信息,造成运维人员经常屏蔽报警信

另外如果应用的访问速度出了问题,总是需要从系统、网络、应用、数据库等一步步的查找原因

二、如果你已经有了LDAP,我们也可以接入你的认证系统

1.5 资产管理和应用管理混乱

资产管理,服务管理经常记录在excel、文本文件或者wiki中,不便于管理,老员工因为比较熟,不注重这些文档的维护,只有靠每次有新员工入职时,资产才能够更正一次

三、个人桌面,为每个用户定制自己的桌面,千人千面,相当每个人拥有了一个MAC OS的操作系统。

二. 自动化运维平台应该有哪些特性

针对传统运维的痛点,我们可以知道自动化运维需要支持哪些功能

四、消息,管理员可以给普通用户发消息,系统也可以给管理员或者普通用户发消息。

2.1 标准化一切

运维自动化最重要的就是标准化一切

  1. OS的选择统一化,同一个项目使用同样的OS系统部署其所需要的各类软件
  2. 软件安装标准化,例如JAVA虚拟机,php,nginx,mysql等各类应用需要的软件版本,安装目录,数据存放目录,
    日志存放目录等
  3. 应用包目录统一标准化,及应用命名标准化
  4. 启动脚本统一目录和名字,需要变化的部分通过参数传递
  5. 配置文件标准化,需要变化的部分通过参数传递
  6. 日志输出,日志目录,日志名字标准化
  7. 应用生成的数据要实现统一的目录存放
  8. 主机/虚拟机命名标准化,虚拟机管理使用标准化模板
  9. 使用docker比较容易实现软件运行环境的标准化

五、工单。工单不光是审批,也可以做到审批后直接执行,节省运维工作量。

2.2 资产管理系统(CMDB)

CMDB是所有运维工具的数据基础

如果用开源工具(openstack,jenkins,ansible,saltstack,zabbix)来搭建自动化运维平台,如何将各个工具之间的数据统一起来就非常重要,如果这些工具的数据不统一记录,那么意味着每增加一台服务器,需要将这个服务器的数据在所有的工具系统中增加一遍,那么这些数据的统一就需要CMDB,那么如何获取和更新CMDB中的数据呢,API无疑是一种非常好的方法

另外现在越来越多的公司选择将自己的服务器迁移到云上,云其实就是虚拟化的一种高级应用,这些公有云(阿里云,腾讯云,aws等)、私有云(openstack,Vmware等)都拥有比较完备的资源管理的API,这些API也就是构建一个云服务器的CMDB的基础。自动化运维平台可以基于这些云平台的API来管理和维护服务器、存储、网络、负载均衡等资源。

通过API对资源的操作需要日志记录,以备后续操作审计。

六、资源管理,主机配置全自动化更新,准确率99%,并可以进行资产的全生命周期管理。

2.3 集中化批量运维工具

当你维护的服务器从几台,到几十台,再到几百台,集中化运维就势在必行了。现在有不少开源的集中化批量运维工具,比如puppet、chef、ansible、saltstack。

我们主要使用ansible和saltstack,这两个系统都是python写的,而且现在大多数运维人员都有一定的python开发能力,这两个工具提供的API或者SDK来来实现更为复杂的功能

资源使用模型和实例的方式进行管理,随心所欲定制资源表单。

2.4 持续集成和部署工具

集成和部署工具,一般用jenkins的比较多,把打好的包发布至各台服务器,可以通过批量运维工具或者自定义脚本,软件应用从立项开始就需要定义好业务线,项目等,如果某个项目对,服务器的资源需求增多,只需要在对应的项目集群中增加对应的资源,这些需要和CMDB联系起来

软件发布包括文件的上传、分发、版本管理、回滚等各种操作,推荐使用SVN或者GIT对打包好的文件进行管理,然后通过脚本在各台服务器上进行发布操作,利用SVN或GIt来完成文件的上传、分发、版本管理、回滚等各种操作,这些操作对需要进行日志记录,需要在记录中来确保

另外使用docker镜像来进行持续交付会更加高效,因为docker镜像可以轻松解决环境依赖的问题

资源实例,支持导入、导出、,自定义显示列,批量修改和删除等操作

2.5 监控及应用性能分析工具

资源性能监控和应用性能监控,有很多重叠的地方,如CPU或者内存的使用率增高往往和应用的性能有关

常使用开源资源监控系统有Zabbix、Nagios,OpenFalcon,这些软件主要是服务器的资源性能监控(例如CPU,磁盘、网络、内存等)和服务软件的性能监控(例如JAVA虚拟机,中间件,数据库等)

APM关注于对应用程序内部及应用程序之间调用的性能分析,比如能精确定位到某应用的URL的访问速度快慢,SQL执行速度的快慢,这可以帮助开发和运维人员定位程序的应用性能瓶颈

资源详情,清晰的显示资源所有信息及变更信息,主机和硬件可以自动化更新,无需人工参与。

2.6 日志集中分析工具

应用系统的问题定位方式,主要就是日志分析。但是随着业务和服务器的增长,日志的分析定位也会比较困难,系统一旦出故障,发生哪个应用,引用所在服务器以及应用的代码。日志集中分析和APM一起使用,同时可以根据CMDB中记录的应用服务相关信息,应用定位问题会更加高效。

七、强大的IP地址管理,让你轻松掌握IP使用情况

2.7 安全漏洞扫描工具

安全漏洞更多的是安全工程师的来做,运维工程师更多是去解决这些漏洞,关于安全漏洞扫描如何与CMDB结合起来使用,可以使用提供API的漏洞扫描工具,针对CMDB中记录中对安全要求很高的应用来进行扫描。

八、主机自动发现,自动发现公有云和指定网段新接入的主机。

三. 资源管理系统的功能

从上面可以知道,所有的运维工具都离不开CMDB的支持,那么CMDB应该有哪些数据,可以实现什么样的功能,如何确保CMDB的准确性 ?

九、公有云导入,支持阿里云、腾讯云、Ucloud、金山云自动导入和手动导入

3.1 CMDB管理什么数据

  1. 用户信息管理,记录测试,开发,运维人员的用户表
  2. 业务信息线管理,需要记录业务的详情
  3. 项目信息管理,指定此项目用属于哪条业务线,以及项目详情
  4. 应用信息管理,指定此应用的开发人员,属于哪个项目,和代码地址,部署目录,部署集群,依赖的应用,软件等信息
  5. 集群信息管理,指定集群属于哪个项目,以及集群的Level(开发,测试,生产)
  6. 主机信息管理,包括云主机,物理机,主机属于哪个集群,运行着哪些软件,主机管理员,连接哪些网络设备,云主机的资源池,存储等相关信息
  7. 主机信息变更管理,主机的一些信息变更,例如管理员,所属集群等信息更改,连接的网络变更等
  8. 网络设备信息管理,主要记录网络设备的详细信息,及网络设备连接的上级设备
  9. IP信息管理,IP属于哪个主机,哪个网段, 是否被占用等

数据库表如下图所示:

图片 1

cmdb 数据库表2.PNG

十、hostmin,包括主机系统管理和系统备份等

3.2 基于CMDB实现哪些功能

基于CMDB,可以实现采集资源信息自动化,软件安装自动化,应用部署自动化,告警信息更加详细准确,应用关系拓扑图,网络拓扑图更加清晰,这些工具对运维会有很高的价值

在公司业务层面上,基于CMDB我们也可以做很多事情,最直接的就是IT资源的成本控制,另外还有集群容量弹性缩扩容,应用平台的稳定性,应用的持续交付等功能

十一、全面整合Zabbix

3.3 确保CMDB数据的准确性

CMDB存储管理企业IT架构中设备的配置信息,它是所有的应用运行和应用交付的提供相关的资源的数据基础,所以保证CMDB数据的准确性显得非常重要

想要确保CMDB的准确性,根据自己各个公司的业务不同,来制定CMDB数据的录入流程必不可少

我们如何确保CMDB的数据准确性,公司所有的IT应用(数据库除外)全部运行在VMware虚拟机中

  1. 硬件设备的资产管理,在采购服务器或者网络设备后,需要将相关的设备手工录入CMDB系统,并且指定连接的上级网络设备,负责人
  2. 服务器需要安装的VMware软件后,通过Vcenter来管理虚拟机
  3. 新项目确立,申请服务器资源时,需要填写业务线,开发人员,git库, 测试人员,应用依赖的相关环境等详细信息,CMDB系统会关联相关的数据
  4. 运维人员在分配IP,主机名等相关信息后,将开发,测试,生产等服务器记录入CMDB, 且关联相关的数据
  5. 创建虚拟机时使用标准的模板,自动化创建,初始化虚拟机,包括安装salt客户端,监控客户端
  6. 在准备开发环境时,编写salt SLS文件,存入git库,方便安装测试和生产环境
  7. 创建jenkins job,实现自动化部署及自动化打包的相关部分的定义

我们的CMDB还有哪些不足:

  1. 网络关系拓扑图没有在CMDB中显示
  2. 没有实现应用关系拓扑图,希望可以通过APM工具来完善
  3. 资源监控做的不够到位,造成资源浪费,以及Vcenter虚拟机分配不合理
  4. 没有实现应用集成部署流水线
  5. 系统告警后,没有自动化处理相关的事件,更多的是在用人工解决
  6. CMDB没有提供API,提供给别的系统调用

自动和zabbix主机关联

十二、监控大屏、包括主机状态、IP状态和zbx接口

已开发的功能还包括会话管理、硬件端口管理、硬件位置管理、用户权限、主机系统管理、主机系统备份等功能、等等20多个功能等你慢慢发掘。

正在开发的功能包括发布系统、告警系统、堡垒机等

如果获得BigOps软件?

项目首页:,也可以点击阅读原文

项目文档:

开源地址:

本文由澳门威斯尼人平台登录发布于服务器&运维,转载请注明出处:开源自动化运维平台BigOps,我要为运维说一句

相关阅读