Openstack云平台脚本部署之Nagios监控(十九)

2017年11月28日 Openstack, Shell, 云计算, 分布式管理, 集群管理 No comments , , ,

一、简介

Nagios是一款开源分布式监控软件,能够有效监控节点状态,交换机、路由器等网络设置。有关Nagios的监控框架、实现原理及配置文档,详细可阅读这边文章

Nagios功能:

  • 监控网络服务(SMTP、POP3、HTTP、FTP、PING 等);
  • 监控本机及远程主机资源(CPU 负荷、磁盘利用率、进程 等);
  • 允许用户编写自己的插件来监控特定的服务,方便地扩展自己服务的检测方法,支持多种开发语言(Shell、Perl、Python、PHP 等)
  • 具备定义网络分层结构的能力,用”parent”主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;
  • 当服务或主机问题产生与解决时将告警发送给联系人(通过 EMail、短信、用户定义方式);
  • 可以支持并实现对主机的冗余监控;
  • 可用 WEB 界面用于查看当前的网络状态、通知和故障历史、日志文件等;

在这里,Nagios用于监控Openstack集群每个物理节点上的所运行的基础服务。

二、部署脚本

安装部署顺序:

  • 在controller01上安装nagios及其插件,并将所有待监控的物理节点添加到/etc/nagios/objects/hosts.cfg中,然后再将所有节点上所有服务添加到nagios的服务列表/etc/nagios/objects/services.cfg中,然后检查controller01上nagios配置项是否正确,如果正确,启动nagios服务并设置帐号密码。
  • 在所有节点上,安装nagios远程插件执行器nrpe,并根据不同节点上所监听的不同服务,配置各自的nrpe.cfg,最后启动所有的nrpe服务,完成对服务的监控。

部署完成后,浏览器访问:http://192.168.2.11/nagio[……]

Read more

Openstack云平台脚本部署之Ganglia监控(十八)

2017年11月28日 Openstack, Shell, 分布式管理, 集群管理 No comments , , ,

一、简介

Ganglia是源于UC Berkeley的一个开源分布式监控工具,能够实现对CPU、内存、网络、磁盘I/O等信息的监控,支持Linux、Unix、Windows等多种操作系统,可支持2000左右的节点的网络监控。

Ganglia主要组件包括以下部分:

  • gmetad: ganglia metadata daemon,Ganglia的数据收集器,通过轮询收集gmond的数据,并聚合簇的各类信息,然后保存在本地rrdtool的数据库中,每个集群最好部署一个gmetad,可以构建多层级的监控网络,如下图。
  • gmond: ganglia monitor daemon,位于每个节点上的监控服务守护进程,能够监控当前节点上的性能信息。
  • ganglia-web: 基于PHP、Appache2实现的监控可视化系统,提供 Web 前端,用于显示监控系统的历史数据和图形。

这里我们仅部署Ganglia-gmond模块,用于每个监控节点上的性能信息收集,通过定期访问主节点的单播端口,获取各物理节点上的性能信息。

二、部署脚本

Ganglia-gmond在Openstack集群上的部署非常简单,选取controller01作为gmond的中心节点,设置数据接收通道udp_recv_channel,如下:

aa所有节点配置gmond,设置数据发送通道udp_send_channel ,如下:

一键部署脚本如下install-configure-ganglia.sh:

部署完成后可以访问中心节点的单播端口查看性能监控数据:
[crayo[……]

Read more

Dockerfile构建镜像学习总结

2017年10月21日 Docker No comments

1 概述

Dockerfile基于DSL(Domain  Specific Language)语法的指令来构建镜像,利用Dockerfile构建镜像具备可重复性和幂等性,比利用docker commit的方式更具优势。

2 指令介绍

每个Dockerfile指令必须大写

(1)FROM:指定基础镜像,FROM是必备的指令,并且必须是第一条指令。

(2)RUN:用来执行命令,有shell格式和exec格式两种方式来执行命令。

每执行一个命令就会构建一层镜像,为避免不必要的commit,建议使用&&将命令连接起来。为了增加可读性,利用#进行注释,利用\进行换行,并增加相应缩进。

注意这里的清理操作,执行rm清理不必要的临时文件,–auto-remove清理临时变量,避免镜像臃肿。

(3)COPY:文件的复制,可用于将一些本地文件复制进镜像。

格式:

COPY <源路径>… <目标路径>
COPY [“<源路径1>”,… “<目标路径>”]

<目标路径> 可以是容器内的绝对路径,也可以是相对于工作目录的相对路径(工作目录可以用 WORKDIR 指令来指定)。

注意:COPY 指令会保留源文件的rwx等权限、变更时间等信息。

(4)ADD:同COPY,但源文件路径可以是URL,Docker 引擎会先下载,然后再拷贝到目标路径中。通常情况下如果需要对文件进行解压并变更权限,建议直接[……]

Read more

Python玩转语音聊天机器人–菜鸟演绎版

2017年10月19日 Python No comments

1 前言

最近比较闲,简单了解了一下微信小程序开发,想着空闲时自己动手也写一个可以陪人聊天的小程序,后来发现类似的小程序已经有好几款了,而且做的都还不错。聊天机器人的好几年前就有了,但最近貌似又开始火热起来了,上次在车库咖啡听百度UNIT分享时,分享嘉宾说目前语音需求远大于图像处理,当时还有点不敢相信,但下面的常见场景大家都不陌生,可见语音到底有多火:

  • 百度AI发布了DuerOS,”小度小度”的唤醒语火遍了朋友圈
  • 微信和输入法中语音输入真是方便,再也不用担心妈妈不会打字了
  • 龙泉寺的贤二机器人居然会跟大师探讨佛法、诵读经文,惊!
  • 好友群中多了一个聊天机器人,比如QQ小冰(2854196306),@她后可以陪聊,天知道未来哪天我是在跟谁聊天
  • DevOps方兴未艾,ChatOps产品却开始崭露头角,运维人员真是越来越懒了,命令都懒得敲了
  • ……

大牛们总是敢为人先,好几年前都已经DIY出来一个能够红外识别人的聊天机器人,电梯直达。汗~,原来自己已经早早落伍啦,现在也利用Python玩玩大神的山寨版聊天机器人。

拼装一个聊天机器人竟然如次简单,你只需要:

语音交互的典型流程:用户说话–>录音–>百度语音识别为文字–>发送文字给图灵机器人–>处理图灵机器人回复文字结果–>将结果文字合成语音–>播放语音给用户。

2 服务调用

(1) 百度语音

百度语音可以调用REST服务,也可以本地安装一个客户端,具体参考开发文档。

https://ai.baidu.com/docs#/ASR-API/top

https://ai.baidu.com/docs#/TTS-[……]

Read more

Oracle数据库服务的启动与停止总结

2017年10月19日 数据库 No comments

1 正常启停流程

切换oracle帐号

执行启动操作,并查看数据库状态

启动监听器

查看监听状态

关闭监听

关闭监听

关闭数据库服务

2 主机名或IP变更相关

如果数据库所在虚拟机或物理机的主机名发生变更后,无法通过ping通之前的主机名称,这时启动数据库会报错:

无法ping通主机名

解决方法:修改hosts文件,追加当前IP和主机名

这时就可以启动数据库服务了。

但是启动监听还会报错:

解决方法:更新/opt/oracle/product/10.2.0.1/network/admin/listener.ora中的主机名:

保存后就可以启动监听了:

3 归档模式开启

什么是Oracle归档模式?

Oracle数据库有联机重做日志,这个日志是记录对数据库所[……]

Read more

Python实现简单网页爬虫及自动告警

2017年9月24日 Python, 编程语言 1 comment

一、概述

Python是一个高效的脚本语言,用python撰写爬虫具有很大的优势,很多大牛已经分享了爬虫经验,各种花式爬,贴子、图片、视频(舅服爬了1.8PB视频的 beaston02),最近由于刚需驱动,也简单学习了下python爬虫,写了一个能够干活的小爬虫,在这里总结下,希望能给后来者提供一点帮助。

这里的爬虫的场景适合监控某个网站上公告信息,等感兴趣的信息发布出来后,爬虫能够自动监控到,然后可以发邮件或短信自动提醒,这个过程涉及系统登录,验证码识别,网页解析和定时任务。爬虫场景比较简单,这里重点介绍下整个过程所用到的工具,方便后来者可以根据自己需求进行扩展:

  • 邮件提醒:利用smtplib进行邮件发送,利用MIME定义图片、HTML等不同类型的邮件内容;
  • 短信提醒:利用Twilio的试用版本,进行实时短信通知;
  • 模拟登录:利用Selenium+WebDriver进行系统登录,对于无图形化界面操作系统环境,利用PhantomJS进行登录;
  • 网页解析:利用BeautifulSoup解析HTML,分析语法,找到感兴趣内容;
  • 验证码识别:利用PIL图片库,进行图片裁剪,利用百度OCR开发API进行识别;
  • 定时任务: BlockingScheduler自定义定时任务。

二、相关工具

2.1 Selenium2

Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。 Selenium 能够在一个或多个浏览器中执行测试,WebDriver 由Google的Simon Stewart创建的一个类似的项目,Selenium 1 和 WebDriver 合并成一款性能更佳的产品 Selenium 2。Selenium 2 具有来自 WebDriver 的清晰面向对象 API,并能以最佳的方式与浏览器进行交互[……]

Read more

Openstack高级虚拟机创建

2017年9月19日 Openstack, 云计算 No comments

1 连接临时或交换磁盘到实例

创建虚拟机类型,指定512MB的交换分区和2G的临时卷。

查看类型

创建虚拟机

查看磁盘情况

发现多了512M的交换空间以及2G的临时磁盘大小。

2 多网卡设备和指定IP

(1)创建多网卡设备,指定两个网络ID即可创建

查看虚拟机状态,会发现比通常创建的虚拟机多出一个网段信息:

 进入到查看网络设备,发现具有两块网卡设备,
 测试联通性:

(2)指定IP

在网络参数中指定v4-fixed-ip的值即可

3 参考文档

https://docs.openstack.org/zh_CN/user-guide/cli-nova-launch-instance-from-volume.html

http://docs.ocselected.org/openstack-manuals/kilo/admin-guide-cloud/content/advanced_vm_creation.html

Spring ROO快速构建Web项目

2017年9月12日 Java, Spring, Web开发, 工具 No comments

一、概述

Spring Roo是基于Java语言快速创建应用的强大开源工具,它来源于SpringSource,能够快速创建和管理基于Spring的Web应用,其目的是提高Java开发人员的生产效率。Spring Roo使用Spring、Java Persistence API(Java 持久层API)、Hibernate、AspectJ、Spring Security、Spring Web Flow、Log4J 和 Maven等成熟可靠的库,快速声场数据库、连接池、模板、logging等组件的配置文件,当然还有POJO的CRUD代码。

利用Spring Roo可以敏捷开发Web项目,但项目不会依赖与Spring  Roo。通常情况下,我们可以利用Spring Roo快速构建MVC工程,自动生成代码,然后导入到STS/Eclipse/IntelliJ等IDE中继续开发,然后根据实际的业务逻辑和个人编码习惯进行改造,当需要增加模型、Service层、Controller层时,执行一行Roo命令就可以快速完成需求。

二、快速构建

2.1 安装配置

系统环境:默认已安装好Jdk1.8和Maven 3.3。

去官网下载安装包:https://projects.spring.io/spring-roo/#running-from-shell

解压,然后将bin路径加入到系统变量Path中,比如C:\spring-roo-2.0.0.RC1\bin,然后在CMD中执行roo命令即可进入Spring Roo的命令行模式,如下:

另外,在Eclipse或STS中安装Roo插件即可集成到IDE中,依次进入Eclipse->Help->Install new Software-Add , 添加如下安装源:Roo – http://dist.spring[……]

Read more

WSO2 API Manager调研学习总结

2017年9月8日 Java, Web开发 2 comments ,

近期要做一个SOA服务治理相关的项目,详细调研了下WSO2的API Manager(简称,APIM)。因为在调研过程中发现,国内研究WSO2的开发者较少,社区中也不是很活跃,可供直接上手的中文文档很少,好在官网提供的用户文档比较详细,认真研读研读,调研推进起来还不算太费劲,不过源码比较庞大,大致了解下框架。本文梳理下所调研的APIM相关知识,希望能给后来的开发学习者提供一点帮助。

一、概述

当企业实现自己的SOA框架时,需要对外以APIs的方式暴露内部系统的一些关键的流程、数据和服务。外部系统可以集成这些开放的APIs构建新的业务的解决方案,这种模式可以以一种去中心化的开发模式快速扩展潜在市场,挖掘潜在客户,带来巨大的经济效益,这就是所谓的“APIs经济”。但以一种协同的方式发挥API的杠杆作用面临着一些挑战:控制管理、可信连接、安全认证等。

WSO2 API Manager是一款可以旨在提供优秀的API管理功能的开源产品,能够实现API的创建、发布、生命周期管理、流量控制、版本控制、治理和安全控制等功能。 已用于WSO2 Enterprise Service Bus、WSO2 Identity Server和WSO2 Governance Registry等产品中。WSO2 API Manager可以为开发团队提供Web页面进行部署、管理和监控API,服务消费者可以进行服务发现、服务订阅以及服务调用。APIM的Key Manager组件默认通信协议是Apache Thrift,另外,APIM可以通过集成WSO2 Analytic平台实现API调用监控及告警。

二、安装部署

2.1 基本配置

单点部署方式:

默认Linux环境:Jdk1.8、关闭防火墙,关闭环境中运行Rabbitmq服务,检查端口是否存在冲突
查看5672端口占用

# nets[……]

Read more

Openstack虚拟机备份

2017年9月8日 Ceph, Openstack, Shell, 云计算 No comments , ,

一、概述

采用Ceph分布式文件系统作为Openstack后端存储已经成为一种主流的存储对接方案,Nova、Glance、Cinder都将Ceph rbd作为默认存储。虚拟机、云硬盘及其快照的备份都可以根据rbd特性进行快捷的备份操作,实践中根据实际的情况制定适合的备份策略。备份策略的制定可考虑以下因素:

  • 备份目标;
  • 备份数据的保有量;
  • 备份频率

制定好备份策略后,据此配置好备份脚本及程序,定时备份生产环境中虚拟机等重要数据的备份。

二、备份操作

2.1 全量备份

(1)直接导出虚拟机镜像的方式

虚拟机、云硬盘及其快照的备份时全部类似,都无需关机,直接从Ceph统一存储rbd上导出相关镜像即可。

这种方式适用于虚拟机当前状态的制作镜像并备份,非常方便,不会在Openstack平台和Ceph系统上留下痕迹,适合跨云的镜像快速迁移。

恢复虚拟机只能通过Openstack镜像上传,然后在Openstack中创建虚拟机的方式进行间接恢复。

(2)利用rbd导出的方式

先给当前虚拟机创建快照并导出全量数据。

例如这里导出一个虚拟机的快照数据到本地,:

这种方式是从Ceph存储端做备份,先给当前虚拟机rbd存储打个快照,然后全量导出。

这种方式的恢复也完全在Ceph侧操作,通过rbd import方式恢复即可。

rbd import会创建一个新的镜像,并从指定的文件中导入数据,当前前提是vms/fa8db954-46c7-40bd-80b5-02[……]

Read more