Prometheus时间序列监控方案

最近一直在折腾时序类型的数据库,经过一段时间项目应用,觉得十分不错。而Prometheus又是刚刚推出不久的开源方案,中文资料较少,所以打算写一系列应用的实践过程分享一下。   Prometheus 是什么? Prometheus是一套开源的监控&报警&时...
继续阅读 »
最近一直在折腾时序类型的数据库,经过一段时间项目应用,觉得十分不错。而Prometheus又是刚刚推出不久的开源方案,中文资料较少,所以打算写一系列应用的实践过程分享一下。
 


Prometheus 是什么?


Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。


Prometheus 的优点


  • 非常少的外部依赖,安装使用超简单
  • 已经有非常多的系统集成 例如:docker HAProxy Nginx JMX等等
  • 服务自动化发现
  • 直接集成到代码
  • 设计思想是按照分布式、微服务架构来实现的
 

Prometheus 的特性

  • 自定义多维度的数据模型
  • 非常高效的存储 平均一个采样数据占 ~3.5 bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G。
  • 强大的查询语句
  • 轻松实现数据可视化
 等等, 相对于Graphite这种产品,还是有不少优点的。最让我觉得不错的是非常优秀的写性能和读取性能,它数据结构实现和OpenTSDB是有相似之处,有兴趣可以看看这个文档:解密OpenTSDB的表存储优 。

Prometheus 的系统架构

prometheus.png
它的服务过程是这样的 Prometheus daemon 负责定时去目标上抓取 metrics(指标) 数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。Prometheus支持通过配置文件、文本文件、zookeeper、Consul、DNS SRV lookup等方式指定抓取目标。Alertmanager 是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。Prometheus支持很多方式的图表可视化,例如十分精美的Grafana,自带的Promdash,以及自身提供的模版引擎等等,还提供HTTP API的查询方式,自定义所需要的输出。PushGateway这个组件是支持Client主动推送 metrics 到PushGateway,而Prometheus只是定时去Gateway上抓取数据。如果有使用过statsd的用户,则会觉得这十分相似,只是statsd是直接发送给服务器端,而Prometheus主要还是靠进程主动去抓取。

Prometheus 的数据模型

Prometheus 从根本上所有的存储都是按时间序列去实现的,相同的 metrics(指标名称) 和 label(一个或多个标签) 组成一条时间序列,不同的label表示不同的时间序列。为了支持一些查询,有时还会临时产生一些时间序列存储。 metrics name & label 指标名称和标签每条时间序列是由唯一的 指标名称 和 一组 标签 (key=value)的形式组成。指标名称 一般是给监测对像起一名字,例如 http_requests_total 这样,它有一些命名规则,可以包字母数字_之类的的。通常是以应用名称开头_监测对像_数值类型_单位这样, 例如:[list=1]
  • push_total
  • userlogin_mysql_duration_seconds
  • app_memory_usage_bytes
  •  标签 就是对一条时间序列不同维度的识别了,例如 一个http请求用的是POST还是GET,它的endpoint是什么,这时候就要用标签去标记了, 最终形成的标识便是这样了:
    http_requests_total{method="POST",endpoint="/api/tracks"}
    记住,针对http_requests_total这个metrics name 无论是增加标签还是删除标签都会形成一条新的时间序列。查询语句就可以跟据上面标签的组合来查询聚合结果了。如果以传统数据库的理解来看这条语句,则可以考虑 http_requests_total是表名,标签是字段,而timestamp是主键,还有一个float64字段是值了。(Prometheus里面所有值都是按float64存储)。

    Prometheus 的四种数据类型

    Counter:
    • Counter 用于累计值,例如 记录 请求次数、任务完成数、错误发生次数。
    • 一直增加,不会减少。
    • 重启进程后,会被重置。
    例如:http_response_total{method="GET",endpoint="/api/tracks"} 10010秒后抓取 http_response_total{method="GET",endpoint="/api/tracks"} 100
    Gauge:
    • Gauge 常规数值,例如 温度变化、内存使用变化。
    • 可变大,可变小。
    • 重启进程后,会被重置
    例如: memory_usage_bytes{host="master-01"} 100 < 抓取值memory_usage_bytes{host="master-01"} 30memory_usage_bytes{host="master-01"} 50memory_usage_bytes{host="master-01"} 80 < 抓取值
    Histogram:
    • Histogram 可以理解为柱状图的意思,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。它特别之处是可以对记录的内容进行分组,提供 count 和 sum 全部值的功能。
    例如:{小于10=5次,小于20=1次,小于30=2次},count=7次,sum=7次的求和值
    sum.png
     Summary:
    • Summary和Histogram十分相似,常用于跟踪事件发生的规模,例如:请求耗时、响应大小。同样提供 count 和 sum 全部值的功能。
    • 例如:count=7次,sum=7次的值求值
    • 它提供一个quantiles的功能,可以按%比划分跟踪的结果。例如:quantile取值0.95,表示取采样值里面的95%数据。

     
    分享阅读原文:http://www.cnblogs.com/vovlie/p/Prometheus_CONCEPTS.html  收起阅读 »

    influxdata监控系统介绍

    influxdata是一个强大的实时监控系统,分为4个部分,系统架构图如下:  Telegraf Telegraf负责收集监控数据,并将数据输出到influxDB数据库,它支持多种类型的数据输入,比如httpjson、mysql、rabbitMQ...
    继续阅读 »
    influxdata是一个强大的实时监控系统,分为4个部分,系统架构图如下: 
    influxdata.png


    Telegraf


    Telegraf负责收集监控数据,并将数据输出到influxDB数据库,它支持多种类型的数据输入,比如httpjson、mysql、rabbitMQ等等。
     


    InfluxDB


    influxdb.png

    InfluxDB 是一个开源分布式时序、事件和指标数据库。使用 Go 语言编写,无需外部依赖。其设计目标是实现分布式和水平伸缩扩展。
     


    Chronograf


    chronrogf.png

    从InfluxDB时间序列数据的数据可视化工具,负责从InfluxDB收集数据,并将数据图表以web的形式发布。
     


    Kapacitor


    kapacitor.png

    Kapacitor是InfluxDB的数据处理引擎,主要作用是时间序列数据处理、监视和警报。
     


    Enterprise Manager


    Enterprise Manager是正在开发的UI系统,用于更加广泛的图形展示。

    InfluxData平台是第一个专用,端到端解决方案收集、存储、可视化和警报在时间序列数据规模。基于堆栈,所有组件平台的设计无缝地协同工作。TICK堆栈是什么?这是influxdata的愿景管理时间序列数据的完整的数据平台。
    tick-stack-grid.jpg
    收起阅读 »

    华为开源支持Apache Hadoop的列式存储文件格式的CarbonData

    CarbonData是由华为开发、开源并支持Apache Hadoop的列式存储文件格式,支持索引、压缩以及解编码等,其目的是为了实现同一份数据达到多种需求,而且能够实现更快的交互查询。目前该项目正处于Apache孵化过程中。 为什么重新设计一种文件格式 ...
    继续阅读 »
    CarbonData是由华为开发、开源并支持Apache Hadoop的列式存储文件格式,支持索引、压缩以及解编码等,其目的是为了实现同一份数据达到多种需求,而且能够实现更快的交互查询。目前该项目正处于Apache孵化过程中。


    为什么重新设计一种文件格式


    目前华为针对数据的需求分析主要有以下5点要求:
      []支持海量数据扫描并取其中几列;[/][]支持根据主键进行查找,并在压秒级响应;[/][]支持在海量数据进行类似于OLAP的交互式查询,并且查询中涉及到许多过滤条件,这种类型的workload应该在几秒钟内响应;[/][]支持快速地抽取单独的记录,并且从该记录中获取到所有列信息;[/][]支持HDFS,这样客户可以利用现有的Hadoop集群。[/]


    目前现有的Hadoop生态系统中没有同时满足这五点要求文件格式。比如Parquet/ORC的文件仅仅满足第一和第五条要求,而其他的要求无法满足,所以基于这些事实华为开始开发CarbonData。


    CarbonData有啥优势


    CarbonData文件格式是基于列式存储的,并存储在HDFS之上;其包含了现有列式存储文件格式的许多有点,比如:可分割、可压缩、支持复杂数据类型等;并且CarbonData为了解决上面5点要求,加入了许多独特的特性,主要概括为以下四点:
      []存储数据及其索引:在有过滤的查询中,它可以显著地加速查询性能,减少I/O和CPU资源。CarbonData的索引由多级索引组成,处理框架可以利用这些索引信息来减少调度和一些处理的开销;在任务扫描数据的时候它可以仅仅扫描更细粒度的单元(称为blocklet),而不需要扫描整个文件。[/][]可操作的编码数据:通过支持高效的压缩和全局编码模式,它可以直接在压缩或者编码的数据上查询,仅仅在需要返回结果的时候才进行转换,这种技术被称为late materialized。[/][]列组:支持多列组成一个列组,并且使用行格式进行存储,这减少了查询时行重建的开销。[/][]支持多种使用场景:比如支持类OLAP风格的交互式查询、顺序存取、随机访问等。[/]


    CarbonData文件格式


    一个CarbonData文件是由一系列被称为blocklet组成的;除了blocklet,还有许多其他的元信息,比如模式、偏移量以及索引信息等,这些元信息是存储在CarbonData文件中的footer里。

    每当在内存中建立索引的时候都需要读取footer里面的信息,因为可以利用这些信息优化后续所有的查询。

    每个blocklet又是由许多Data Chunks组成。Data Chunks里面的数据既可以按列或者行的形式存储;数据既可以是单独的一列也可以是许多列。文件中所有的blocklets都包含相同数量和类型的Data Chunks。CarbonData文件格式如下所示:
    carbon_data_file_structure_new.png

    每个Data Chunk又是由许多被称为Pages的单元组成。总共有三种类型的pages:

    1、Data Page:包含一列或者列组的编码数据;

    2、Row ID Page:包含行id的映射,在Data Page以反向索引的形式存储时会被使用;

    3、RLE Page:包含一些额外的元信息,只有在Data Page使用RLE编码的时候会被使用。

    CarbonData文件的详细信息如下:
    carbon_data_format_new.png


    编译CarbonData


    编译CarbonData的预备条件:
    1、类Unix环境(Linux, Mac OS X)
    2、git
    3、Apache Maven (推荐使用3.0.4)
    4、Java 7 or 8
    5、Scala 2.10
    6、Apache Thrift 0.9.3
    从github中克隆CarbonData
    $ git clone https://github.com/HuaweiBigData/carbondata.git
    根据自己需求依次选择下面命令编译CarbonData
    1、Build without testing
    $ cd carbondata
    $ mvn -DskipTests clean install
    2、Build with testing:
    $ cd carbondata
    $ mvn clean install
    3、Build along with integration test cases
    $ cd carbondata
    $ mvn -Pintegration-test clean install
    更多关于Carbondata的信息请参考:https://github.com/HuaweiBigData/carbondata 
    分享原文地址:http://www.iteblog.com/archives/1689 收起阅读 »

    php扩展谷歌JsonNet发布

    就在昨天,六一儿童节,云智慧高级架构师Neeke把支持谷歌的JsonNet的php扩展模块封装开源了!   简单语法改进 Input (Jsonnet){ cocktails: { // Ingredient quantities ar...
    继续阅读 »
    就在昨天,六一儿童节,云智慧高级架构师Neeke把支持谷歌的JsonNet的php扩展模块封装开源了!
     
    简单语法改进
    Input (Jsonnet)
    {
    cocktails: {
    // Ingredient quantities are in fluid ounces.
    "Tom Collins": {
    ingredients: [
    { kind: "Farmers Gin", qty: 1.5 },
    { kind: "Lemon", qty: 1 },
    { kind: "Simple Syrup", qty: 0.5 },
    { kind: "Soda", qty: 2 },
    { kind: "Angostura", qty: "dash" },
    ],
    garnish: "Maraschino Cherry",
    served: "Tall",
    },
    Manhattan: {
    ingredients: [
    { kind: "Rye", qty: 2.5 },
    { kind: "Sweet Red Vermouth", qty: 1 },
    { kind: "Angostura", qty: "dash" },
    ],
    garnish: "Maraschino Cherry",
    served: "Straight Up",
    },
    }
    }
    Output (JSON)
    {
    "cocktails": {

    "Tom Collins": {
    "ingredients": [
    { "kind": "Farmers Gin", "qty": 1.5 },
    { "kind": "Lemon", "qty": 1 },
    { "kind": "Simple Syrup", "qty": 0.5 },
    { "kind": "Soda", "qty": 2 },
    { "kind": "Angostura", "qty": "dash" }
    ],
    "garnish": "Maraschino Cherry",
    "served": "Tall"
    },
    "Manhattan": {
    "ingredients": [
    { "kind": "Rye", "qty": 2.5 },
    { "kind": "Sweet Red Vermouth", "qty": 1 },
    { "kind": "Angostura", "qty": "dash" }
    ],
    "garnish": "Maraschino Cherry",
    "served": "Straight Up"
    }
    }
    }
    Demo of PHP
        JsonNet::evaluateFile('bar_menu.1.jsonnet');

    $Snippet = '
    {
    cocktails: {
    // Ingredient quantities are in fluid ounces.
    "Tom Collins": {
    ingredients: [
    { kind: "Farmers Gin", qty: 1.5 },
    { kind: "Lemon", qty: 1 },
    { kind: "Simple Syrup", qty: 0.5 },
    { kind: "Soda", qty: 2 },
    { kind: "Angostura", qty: "dash" },
    ],
    garnish: "Maraschino Cherry",
    served: "Tall",
    },
    Manhattan: {
    ingredients: [
    { kind: "Rye", qty: 2.5 },
    { kind: "Sweet Red Vermouth", qty: 1 },
    { kind: "Angostura", qty: "dash" },
    ],
    garnish: "Maraschino Cherry",
    served: "Straight Up",
    },
    }
    }
    ';

    var_dump(JsonNet::evaluateSnippet($Snippet));
    安装请参考我的实践文章:http://www.openskill.cn/article/373
     
    项目地址


    Github:https://github.com/Neeke/Jsonnet-PHP
    Pecl:  http://pecl.php.net/package/jsonnet 
    Gitosc:  http://git.oschina.net/ciogao/Jsonnet-PHP


    收起阅读 »

    开源Mysql自动补全、语法高亮客户端Mycli

    介绍:MyCli是一个MySQL的命令行客户端,可以实现自动补全(auto-completion)和语法高亮,同时也可应用于MariaDB和Percona。   功能特征: []MyCli使用Python Prompt Toolkit编写。[/][]支持语法高...
    继续阅读 »
    介绍:MyCli是一个MySQL的命令行客户端,可以实现自动补全(auto-completion)和语法高亮,同时也可应用于MariaDB和Percona。
     
    功能特征:
      []MyCli使用Python Prompt Toolkit编写。[/][]支持语法高亮[/][]当你输入SQL关键字,数据库的表格和列时可自动补全。[/][]智能补全(默认启用),会提示文本感应的(context-sensitive)补全。[/][]配置文件在第一次启动时,自动创建在~/.myclirc[/]

     
    安装:
    兼容性:
    OS X和Linux上测试过。运行在Python 2.6,2.6,3.3,3.4和3.5。能够很好地处理unicode输入/输出。
     
    Python Package:
    $ pip install mycli

    or

    $ easy_install mycli

     Mac OS X:
    最简单的方法在OS X机器安装mycli是使用homebrew
    $ brew update && brew install mycli
    Linux:
    Debian/Ubuntu Package:
    mycli托管在debian软件包packagecloud.io.
    添加gpg密钥packagecloud包验证。
     $ curl https://packagecloud.io/gpg.key | apt-key add -
    安装apt-transport-https包,支持apt使用https下载包
    $ apt-get install -y apt-transport-https
    添加mycli安装源
    $ echo "deb https://packagecloud.io/amjith/mycli/ubuntu/ trusty main" | sudo tee -a /etc/apt/sources.list
    更新mycli的安装源,然后安装mycli
    $ sudo apt-get update
    $ sudo apt-get install mycli
    现在使用sudo apt-get upgrade mycli很容易使mycli升级!
     
    RHEL, Centos, Fedora:
    我还没有为mycli构建RPM包。所以请使用pip安装mycli。你可以在你的系统上安装pip使用:
    $ sudo yum install python-pip python-devel
    一旦安装pip,您可以如下安装mycli:
    $ sudo pip install mycli

    效果图:
    自动补全
    简单的完成如关键字和sql函数。
    t1.png

     
    智能提示
    Table name completions after the 'FROM' keyword.
     
    t2.png

    列名中引用的表的查询范围
    t3.png

     
    别名支持
    列完成将即使工作表名称别名。
    t4.png

     
    语法高亮显示
    sql的语法高亮显示。
    t5.png

     
    pager
    一个sql命令的输出是通过更少的命令自动输送。
    t6.png

     
    动态效果图如下:
    dt.gif

     


    项目官网:http://mycli.net/
    开源地址:https://github.com/dbcli/mycli


    收起阅读 »

    道里云开源DaoliNet高效动态Docker网络

    DaoliNet是高效和动态Docker网络 DaoliNet是一个软件,旨在提供Docker容器效率和动态连接,这是适合于Docker容器的微服务工作负荷的重量轻且短暂性质定义网络(SDN)的系统。 高级特征: []资源高效:容器连接消耗,当容器...
    继续阅读 »
    daolinet.png

    DaoliNet是高效和动态Docker网络
    DaoliNet是一个软件,旨在提供Docker容器效率和动态连接,这是适合于Docker容器的微服务工作负荷的重量轻且短暂性质定义网络(SDN)的系统。

    高级特征:
      []资源高效:容器连接消耗,当容器不主动沟通的小主机资源,而且可以立即切换到提供完整的连接能力。 这是在主机CPU资源的容器有效地利用相同的方式。 你获得更多的服务器资源。[/][]分布在任何地方:Docker服务器可以在公共云,如AWS在自己的数据中心的笔记本电脑或PC你的办公室或家中,服务器的防火墙内,或虚拟机。[/][]网络虚拟化:您可以选择任何CIDR IP地址,你的容器和容器可以保持IP地址移动物理位置后保持不变。[/][]使用开放式的V-Switch纯软件实现(OVS):提供网络功能的分布式交换机,路由器,网关和防火墙。 在插件的即插即用的简单系统的部署。[/]

    要了解更多关于DaoliNet: http://www.daolinet.org 
     
    Docker在高效和动态网络的需求
    提供高效的微服务容器时,可以在生命周期短暂的高度:大量的Docker动态云集装箱的需要快速建立连接,以及频繁更换连接状态。 传统的数据平面的路由学习技术要求泊坞窗服务器经常学习和更新了大量动态的容器,这转化为较低的高效利用服务器资源的路由信息。 迄今为止,网络是Docker的核心特征是相对不成熟,仍处于开发状态。

    架构
    DaoliNet的网络体系结构是基于OpenFlow的标准。 它采用的OpenFlow控制器作为智能控制平面,和Open-V开关(OVSes)来实现数据路径。 该OpenFlow的控制器在DaoliNet是逻辑上集中的实体,但实际一组HA分布式Web服务类似物。  OVSes是无所不在提供Linux内核,因此可以应用在所有的Docker服务器。

    在DaoliNet网络中,所有Docker服务器都在其中无论是身体或VPN连接的以太网。 每个Docker服务器充当所有在该服务器上托管的容器的工作负载的虚拟路由器。 然而,这些虚拟路由器的OpenFlow技术工作,他们不运行任何路由算法。 在一个容器发起连接,所涉及的虚拟路由器将实时由OpenFlow的控制器配置成建立路由。
    dotnet.png


    怎么运行的
    当容器开始在Docker服务器作为源路由器将发出一个PacketIn请求的OpenFlow控制器的连接时,OVS。 该PacketIn请求是刚刚从启动容器中的第一个数据包。 在OpenFlow的控制器,知道所有Docker服务器,路由器OpenFlow技术在系统中,看到PacketIn,可以识别它承载容器作为目标工作负载的另一个Docker服务器。 该第二Docker服务器是为连接目的地路由器。 所述的OpenFlow控制器将有一对PacketOut流,一个用于源服务器,和另一个用于目标服务器的响应。 这些PacketOut流建立在两个容器之间热插拔路线,见下图:
    dnet2.png

    当一个连接变得空闲并且在一个时间阈值,则热插拔路线将超时和删除以释放服务器的资源。 由于热插拔路由建立快速,删除不活动的连接可以在重新连接被重新热插拔。 因此Docker服务器作为DaoliNet路由器工作在无连接,无资源消耗的风格。 网络资源利用率的这种风格完全匹配利用服务器CPU在该容器的时候,闲置集装箱消耗很少的服务器资源. DaoliNet是一种有效的和动态的网络技术用于连接Docker容器。

    简单的网络为集装箱
    在DaoliNet,在系统Docker服务器处于未会意酮另一个的一个简单的状态,完全独立于彼此。 这个体系结构不仅节省了资源利用率,但更重要的是Docker服务器之间的独立关系极大地简化了资源的管理。 扩展资源池是为服务器添加到游泳池和通知的OpenFlow控制器的即插即用的打法一样简单。 需要在路由器之间没有复杂的路由表查找和更新。 也没有必要Docker服务器成对运行一些包的封装协议,它不仅是资源利用效率低,而且会抵消网络诊断和故障排除工具,如跟踪路由。
    更多了解官网: http://www.daolinet.org/html/technology.html 
    Github项目地址https://github.com/daolinet/daolinet 收起阅读 »

    开源的即时通讯在线客服平台(持续更新维护中)

    ppmessage:README.md_at_master_·_PPMESSAGE:ppmessage_·_GitHub_.pdf PPMessage是一个开源的在线客服平台。PPMessage能够帮助你在第一时间与你的客户建立联系,开发人员可以非常...
    继续阅读 »


    PPMessage是一个开源的在线客服平台。PPMessage能够帮助你在第一时间与你的客户建立联系,开发人员可以非常容易的将 PPMessage 集成到你的网站或者 iOS、Android 的应用中。PPMessage的前端后端都是开源的,后端全部基于 Python,简洁高效。前端根据不同平台提供原生的SDK。 基于 PPMessage 还能实现私有的·微信·功能,在企业内部或者私有云上建立自主的·微信·服务器;也可以将 PPMessage 与企业业务系统整合,实现自建的·钉钉·系统。 PPMessage 后端建议部署到 Linux 上,推荐使用 Debian 或者 Ubuntu,同时支持 Mac OS X 系统,方便开发者测试。 PPMessage 提供了完整而清晰的 API 和 OAuth 系统,所有前端应用和 SDK 都是通过调用或者封装后端的 API 而实现。PPMessage 能够做到最大程度和最底层的整合开发。 PPMessage 包含由数个 Python 后台应用组成的后端,Python 后端应用通过 Supervisor 统一管理,通过 Nginx 反向代理进行 HTTP 请求的统一分发和负载均衡。PPMessage 的后端使用了 Mysql 数据库,事实上 PPMessage 后端并没有直接操作数据库,直接操作数据库速度不能满足 PPMessage 支持大并发量消息服务,PPMessage所有的数据操作通过单独的、异步的 Cache 服务完成。PPMessage 的前端开发 SDK 称为 PPCom,PPCom 会被集成到你的企业 Web 站点,Android、iOS 应用之中,为你的客户提供建立联系的入口;给客服和企业组织内部人员使用的前端应用叫做 PPKefu,PPKefu 可以运行在 Web 端,Windows、Mac 和 Linux 桌面端,Android、iOS 移动应用端,几乎支持所有的可以运行应用的平台,让你的客服人员随时随地为你的客户提供服务或者建立联系。 PPMessage 同时提供了一个 Web 管理界面,称之为 PPConsole,当然也是开源的,PPConsole 提供一个管理界面去管理配置PPMessage。PPConsole 同时也集成了一些企业运营所需的常用功能,探索使用 PPConsole 让它为你的企业业务服务。通过使用 PPConsole 上的企业应用,PPMessage 完全成为了一个自主、自建的企业微信,或者是阿里钉钉,但是数据和程序以及安全性却能得到充分的保障。 下面是PPMessage提供的一些文档,详细信息及在线体验PPMessage,请访问PPMessage Site
     • 在 Debian 8.4 上安装 PPMessage 
    在 Ubuntu Server 16.04 上安装 PPMessage 
    PPMessage 完全参考手册,请关注 PPMessageGITBOOK上的持续更新 PPMessage Book。欢迎小伙伴们到官网github上体验和提出宝贵意见,发现BUG请及时反馈给我们,非常感谢大家!


    Attachment-1.gif

      收起阅读 »

    商业级开源虚拟化管理平台OVM

    开源的虚拟化管理平台也有很多,比如OpenStack、Cloudstack OpenNebula、oVirt/RHEV、ZStack等,为什么还要自行研发开发呢,因为这些都不够简单和易用,功能不够全面。而OVM得出发点就是简单、易玩! 经历了一年来一个虚拟化...
    继续阅读 »
    开源的虚拟化管理平台也有很多,比如OpenStack、Cloudstack OpenNebula、oVirt/RHEV、ZStack等,为什么还要自行研发开发呢,因为这些都不够简单和易用,功能不够全面。而OVM得出发点就是简单、易玩!

    经历了一年来一个虚拟化的开源管理平台OVM-(Open Virtual Manager )终于诞生了。OVM作为开源虚拟化管理平台以做最好用的虚拟化管理平台为目标。面向中小型虚拟化环境,打造简单易用的虚拟化和管理平台。 让零基础的用户在几个小时内可以部署、使用自己的虚拟化系统。主要特性就是简单、易部署。
     
    具体的安装下载参考:http://www.openvirtmanager.org/install.html​ 
     
    下面就让我们来体验初恋般的感觉,OVM具有魅力,我们可以怎么使用?!!!
     
    一、使用Web客户端登录OVM
    OVM安装配置完成后,您可以使用FireFox浏览器或Google浏览器访问OVM用户界面。
    前提条件:
              您必须具有在系统配置期间创建的系统管理员用户名和密码(系统默认用户名为admin、默认密码为password。
    步骤:
      []打开Web 浏览器,并导航到http://管理平台ip[/][]输入系统管理员用户名和密码(系统默认为admin、password),并单击登录。[/]

    image001.png

    OVM将带您进入到虚拟化与云的世界。
     
    二、新建数据中心
      []OVM数据中心支持管理私有的数据中心和公有云资源。[/][]OVM通过远程服务模块管理数据中心和公有云。[/]

    image005.png

    新建数据中心步骤:
    1、选择添加内部虚拟中心,弹出对话框,由于各个组件使用all-in-one安装,所以输入管理平台IP,重复IP,免除重复操作。
    image006.png

    2、检查所有IP,如果安装没有问题,检查会顺利通过。
    image007.png

    3、点击保存,内部数据中心建立完毕。
    imag8.png

     
    三、新建服务器资源池
    服务器池是物理主机的主要容器,通常要把主机(即物理服务器)添加到服务器池。

    数据中心可包含多个服务器池,一般全国性的集团公司或跨国公司会使用多个服务器池来表示企业内的组织结构。

    服务器池的对象可以交互,但不同服务器池的交互则会受到限制。例如:您可以使用OVM迁移技术在一个服务器池内的主机之间迁移虚拟机,但不可以将虚拟机迁移到另一个服务器池的主机上。
    新建服务器资源池步骤:
    1、选择数据中心—主机,建立资源池:
    image009.png

     2、输入资源池名称,描述点击保存,资源池建立完毕。
    image010.png


    四、为服务器资源池设置分配策略
    点击数据中心—资源分配,可以为虚拟资源进行配置负载均衡策略,合理调度虚拟资源,提高虚拟机性能。
    image011.png

     
    五、添加主机1、请确保你已经安装了OVM节点主机;
    2、选择建立好的资源池,添加主机
    image012.png

    3、选择相应的Hypervisor,添加计算节点的IP,点击保存。
    image013.png

    image014.png

    4、在新的弹框中在数据存储选择共享NFS存储,网络接口进行选择,之后保存,主机添加成功。
    image015.png

    image016.png

    image017.png

     
    六、主机管理
    选择编辑主机,可对主机资源进行管理或修改,如主机环境有问题,可以进行操作此项。
    image018.png

     
    七、创建虚拟数据中心
     1、 选择主菜单栏虚拟数据中心—虚拟数据中心,点击+号添加
    image019.png

    2、填写名称,选择相应数据中心和Hypervisor。
    image020.png

    3、点击保存,虚拟数据中心添加成功。
    image021.png

     
    八、创建vApp
    1、选择主菜单栏虚拟数据中心—vApp,点击+号,填写名称。
    image022.png

    2、点击保存,vApp添加成功
    image023.png

     
    九、通过ISO新建VM
     1、选择主菜单栏应用商店,上传ISO。
    image024.png

    2、上传ISO后 ,进入虚拟数据中心的vApp,在ISO选项中创建虚拟机,创建过程中可以进行资源配置建立。
    image025.png

    image026.png

    image027.png

    更多详情和项目进度可以关注官网:http://www.openvirtmanager.org/  和官网社区! 收起阅读 »

    开源管理的Saltstack Web UI(持续更新)

    项目名称:dzhops []使用Django框架开发的Salt Stack Web UI[/][]开发语言: python;[/][]后端框架: Django;[/][]前端框架:bootstrap/jquery;[/][]这个项目最初是我个人爱好,不过后来发...
    继续阅读 »
    项目名称:dzhops
      []使用Django框架开发的Salt Stack Web UI[/][]开发语言: python;[/][]后端框架: Django;[/][]前端框架:bootstrap/jquery;[/][]这个项目最初是我个人爱好,不过后来发现,确实能解决目前SaltStack在命令行模式下的部分缺陷;所以,现在公司已经开始在生产使用,这也直接带来一个问题,关于这套系统是否继续开源的思考;[/]
     环境:
      []RHEL 6.5 x86_64[/][]salt-master 2015.5.3[/][]salt-minion 2015.5.3[/][]salt-api 2015.5.3[/][]Django 1.6.8[/][]python 2.6.6[/][]MySQL 5.5[/][]网卡流量图使用rrdtool(v1.3.8)工具[/]
     dzhops更新记录:
      []> SaltStack相关功能(部署、更新、维护、远程)代码重构;[/][]> 视图文件拆分,新建立app:saltstack/record/managekeys;[/][]> 使用json格式通过接口传递数据,提高代码重用率;[/][]> 远程操作的jid及返回结果相关信息入库;[/][]> 对返回结果按IP进行排序;[/][]> 返回结果展示按钮增加上下距离;[/][]> 前端各选项左右对齐;[/][]> 远程命令执行返回结果显示优化;[/][]> 取消网卡流量监控;[/]
     功能介绍1.登陆页面 
    login.png
    2.首页,显示SaltMaster所在服务器及相关组件状态信息 目前监控数据,都是通过独立的信息采集脚本完成,需要做计划任务。 
    index.png
    3.主机列表 进入主机列表界面,可以选择机房和维护人员,使用ajax处理,每次选择会从库中重新查询符合条件的数据; 这些服务器相关的信息支持自动采集,由于目前写的方法只能完成采集任务,所以并没有将链接放出来,不过可以通过访问指定链接进行访问。 
    asset.png
    4.SaltStack 可完成如下功能:
      []服务器初始化(如模块部署等)[/][]程序、配置更新[/][]日常维护操作[/][]远程命令执行 当对Minion执行操作时,会记录本次目标Minion的数量,然后与返回结果的Minion数量进行对比,找出哪些没有返回结果;当接收到返回结果后,使用bootstrap的模态框显示结果,其中蓝色表示执行成功,红色表示有失败存在,可以点击标签查看详细情况;[/]

    deploy.png

    deploy_show.png

    deploy_show_success.png

    5.MinionKeys管理 可以分别选择已接受、待接受、已拒绝,并且可以选择机房及维护人员,进行对应的管理操作; 
    manage.png

    6.操作记录 可以记录每次操作执行人的账号、操作、目标、及jid,并可以通过jid查看该次操作的返回结果详细情况。
    record.png

    record_detail.png

    更多详情可以访问项目开源地址:https://github.com/Hasal/dzhops 收起阅读 »

    开源运维管理平台OpsSam

    基于saltstack、cobbler和zabbix接口的集成管理开源运维平台 一、基本环境​ os: Centos 6.6 x86_64 python: 2.6.6   二、依赖关系 1、python依赖包pip install -r requirement...
    继续阅读 »
    基于saltstack、cobbler和zabbix接口的集成管理开源运维平台
    一、基本环境​
    os: Centos 6.6 x86_64
    python: 2.6.6
     
    二、依赖关系
    1、python依赖包
    pip install -r requirements.txt
    2、epel源rpm安装包
    mysql-5.5.19
    subversion-1.6.11-10
    rabbitmq-server-3.1.5-1
    cobbler-2.6.3-1
    3、其他接口
    a)cobbler服务器
    cobbler-2.6.3-1.el6.noarch
    cobbler-web-2.6.3-1.el6.noarch

    b)saltstack服务器
    salt 2014.7.2
    salt-api-2014.7.2

    c)svn服务器
    subversion-1.6.11-11
    4、启动数据库
    a)创建登陆用户
    /etc/init.d/mysqld start
    mysqladmin -uroot password opsSAM

    b)创建数据库:
    mysql -uroot -popsSAM -e "create database opsSAM;"

    c)生成项目数据表:
    cd /your/sitepath/
    python manage.py syncdb

    d)创建初始登陆用户admin(密码admin):
    mysql -uroot -popsSAM -e "insert into opsSAM.opsSAM_users(username,password,admin) values ('admin','f313176847fcc0c82dae8e51e0e40b1d33ec7f0fabf279c164f8541ec99f8a06f473b3b1439a41a898aa2f70f076a59bb671e17bed52471cb9adfee9701a7fb5','是');"
    5、设置django
    opsSAM.opsSAM.settings.py
    opsSAM.opsSAM.settings_local.py

     三、django生产环境安装(非必须)
    推荐nginx+uwsgi(略)
    安装后按照实际情况修改scripts/supervisord.conf相关django配置
    [program:django]

    command=/usr/bin/python /your/sitepath/opsSAM/manage.py runserver 0.0.0.0:80

     四、启动
    cp scripts/supervisord.conf /etc/
    cp scripts/supervisord /etc/init.d/
    chmod 755 /etc/init.d/supervisord
    /etc/init.d/supervisord start

    五、访问地址
    opsSAM前台: http://your_ip/
    opsSAM后台: http://your_ip/admin
    rabbitmq: http://your_ip:15672/
    celery flower: http://your_ip:5555/
    supervisor: http://your_ip:9001/
     
    六、Demo效果图
    login.png

    index.jpg

    system_install.png

    exec_command.png

    deploy_app.png

    deploy_code.png

    项目地址:https://github.com/MorningSong/opsSAM 收起阅读 »