标签 运维 下的文章

学习一下 Python 世界里最广泛使用的 ChatOps 库:每个都能做什么,如何使用。

ChatOps 是基于会话导向而进行的开发。其思路是你可以编写能够对聊天窗口中的某些输入进行回复的可执行代码。作为一个开发者,你能够用 ChatOps 从 Slack 合并拉取请求,自动从收到的 Facebook 消息中给某人分配支持工单,或者通过 IRC 检查开发状态。

在 Python 世界,最为广泛使用的 ChatOps 库是 Opsdroid 和 Errbot。在这个月的 Python 专栏,让我们一起聊聊使用它们是怎样的体验,它们各自适用于什么方面以及如何着手使用它们。

Opsdroid

Opsdroid 是一个相对年轻的(始于 2016)Python 开源聊天机器人库。它有着良好的开发文档,不错的教程,并且包含能够帮助你对接流行的聊天服务的插件。

它内置了什么

库本身并没有自带所有你需要上手的东西,但这是故意的。轻量级的框架鼓励你去运用它现有的连接器(Opsdroid 所谓的帮你接入聊天服务的插件)或者去编写你自己的,但是它并不会因自带你所不需要的连接器而自贬身价。你可以轻松使用现有的 Opsdroid 连接器来接入:

  • 命令行
  • Cisco Spark
  • Facebook
  • GitHub
  • Matrix
  • Slack
  • Telegram
  • Twitter
  • Websocket

Opsdroid 会调用使聊天机器人能够展现它们的“技能”的函数。这些技能其实是异步 Python 函数,并使用 Opsdroid 叫做“匹配器”的匹配装饰器。你可以设置你的 Opsdroid 项目,来使用同样从你设置文件所在的代码中的“技能”。你也可以从外面的公共或私人仓库调用这些“技能”。

你同样可以启用一些现存的 Opsdroid “技能”,包括 seen —— 它会告诉你聊天机器人上次是什么时候看到某个用户的,以及 weather —— 会将天气报告给用户。

最后,Opdroid 允许你使用现存的数据库模块设置数据库。现在 Opdroid 支持的数据库包括:

  • Mongo
  • Redis
  • SQLite

你可以在你的 Opdroid 项目中的 configuration.yaml 文件设置数据库、技能和连接器。

Opsdroid 的优势

Docker 支持:从一开始 Opsdroid 就打算在 Docker 中良好运行。在 Docker 中的指导是它 安装文档 中的一部分。使用 Opsdroid 和 Docker Compose 也很简单:将 Opsdroid 设置成一种服务,当你运行 docker-compose up 时,你的 Opsdroid 服务将会开启你的聊天机器人也将就绪。

version: "3"

services:
  opsdroid:
    container_name: opsdroid
    build:
      context: .
      dockerfile: Dockerfile

丰富的连接器: Opsdroid 支持九种像 Slack 和 Github 等从外部接入的服务连接器。你所要做的一切就是在你的设置文件中启用那些连接器,然后把必须的口令或者 API 密匙传过去。比如为了启用 Opsdroid 以在一个叫做 #updates 的 Slack 频道发帖,你需要将以下代码加入你设置文件的 connectors 部分:

 - name: slack
    api-token: "this-is-my-token"
    default-room: "#updates"

在设置 Opsdroid 以接入 Slack 之前你需要添加一个机器人用户

如果你需要接入一个 Opsdroid 不支持的服务,在文档里有有添加你自己的连接器的教程。

相当不错的文档: 特别是对于一个在积极开发中的新兴库来说,Opsdroid 的文档十分有帮助。这些文档包括一篇带你创建几个不同的基本技能的教程。Opsdroid 在技能连接器数据库,以及匹配器方面的文档也十分清晰。

它所支持的技能和连接器的仓库为它的技能提供了富有帮助的示范代码。

自然语言处理: Opsdroid 的技能里面能使用正则表达式,但也同样提供了几个包括 Dialogflowluis.aiRecast.AI 以及 wit.ai 的 NLP API。

Opsdroid 可能的不足

Opsdroid 对它的一部分连接器还没有启用全部的特性。比如说,Slack API 允许你向你的消息添加颜色柱、图片以及其他的“附件”。Opsdroid Slack 连接器并没有启用“附件”特性,所以如果那些特性对你来说很重要的话,你需要编写一个自定义的 Slack 连接器。如果连接器缺少一个你需要的特性,Opsdroid 将欢迎你的贡献。文档中可以使用更多的例子,特别是对于预料到的使用场景。

示例用法

from opsdroid.matchers import match_regex
import random


@match_regex(r'hi|hello|hey|hallo')
async def hello(opsdroid, config, message):
    text = random.choice(["Hi {}", "Hello {}", "Hey {}"]).format(message.user)
    await message.respond(text)

hello/\_\_init\_\_.py

connectors:
  - name: websocket

skills:
  - name: hello
    repo: "https://github.com/<user_id>/hello-skill"

configuration.yaml

Errbot

Errbot 是一个功能齐全的开源聊天机器人。Errbot 发行于 2012 年,并且拥有人们从一个成熟的项目能期待的一切,包括良好的文档、优秀的教程以及许多帮你连入现有的流行聊天服务的插件。

它内置了什么

不像采用了较轻量级方式的 Opsdroid,Errbot 自带了你需要可靠地创建一个自定义机器人的一切东西。

Errbot 包括了对于本地 XMPP、IRC、Slack、Hipchat 以及 Telegram 服务的支持。它通过社区支持的后端列出了另外十种服务。

Errbot 的优势

良好的文档: Errbot 的文档成熟易读。

动态插件架构: Errbot 允许你通过和聊天机器人交谈安全地安装、卸载、更新、启用以及禁用插件。这使得开发和添加特性十分简便。感谢 Errbot 的颗粒性授权系统,出于安全意识这所有的一切都可以被锁闭。

当某个人输入 !help,Errbot 使用你的插件的文档字符串来为可获取的命令生成文档,这使得了解每行命令的作用更加简便。

内置的管理和安全特性: Errbot 允许你限制拥有管理员权限的用户列表,甚至细粒度访问控制。比如说你可以限制特定用户或聊天房间访问特定命令。

额外的插件框架: Errbot 支持钩子、回调、子命令、webhook、轮询以及其它更多特性。如果那些还不够,你甚至可以编写动态插件。当你需要基于在远程服务器上的可用命令来启用对应的聊天命令时,这个特性十分有用。

自带测试框架: Errbot 支持 pytest,同时也自带一些能使你简便测试插件的有用功能。它的“测试你的插件”的文档出于深思熟虑,并提供了足够的资料让你上手。

Errbot 可能的不足

以 “!” 开头: 默认情况下,Errbot 命令发出时以一个惊叹号打头(!help 以及 !hello)。一些人可能会喜欢这样,但是另一些人可能认为这让人烦恼。谢天谢地,这很容易关掉。

插件元数据 首先,Errbot 的 Hello World 插件示例看上去易于使用。然而我无法加载我的插件,直到我进一步阅读了教程并发现我还需要一个 .plug 文档,这是一个 Errbot 用来加载插件的文档。这可能比较吹毛求疵了,但是在我深挖文档之前,这对我来说都不是显而易见的。

示例用法

import random
from errbot import BotPlugin, botcmd

class Hello(BotPlugin):

    @botcmd
    def hello(self, msg, args):
        text = random.choice(["Hi {}", "Hello {}", "Hey {}"]).format(message.user)
        return text

hello.py

[Core]
Name = Hello
Module = hello

[Python]
Version = 2+

[Documentation]
Description = Example "Hello" plugin

hello.plug

你用过 Errbot 或 Opsdroid 吗?如果用过请留下关于你对于这些工具印象的留言。


via: https://opensource.com/article/18/3/python-chatops-libraries-opsdroid-and-errbot

作者:Jeff Triplett, Lacey Williams Henschel 译者:tomjlw 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

让读者少走弯路,学会一套成熟、规范、有效的IT运维方法。

活动内容

活动时间:2015年3月6日-2015年3月12日

活动要求:

活动形式一 :在新浪微博关注@LINUX中国 @人民邮电出版社-信息技术分社 转发本微博即可。

微博地址:http://weibo.com/1772191555/C7imDsMtK
活动形式二:在Linux中国(http://linux.cn)试读图书样张,并进行评论,说说你喜爱它的理由。

活动奖品:《IT运维之道》图书一本(共5本)

特此注意:

1、本站论坛评论方式参与的用户,评论前需登录您的Linux中国账号,匿名评论无效

2、微博用户参与活动,活动结束后注意查看@Linux中国\_笑语彦然 微博公布的中奖名单或留意您的微博私信,本站用户参与活动,注意查看您注册Linux中国时所填写的邮箱。 我们会通过微博私信以及电子邮件两种方式获取您的邮寄信息。

基本信息

作者: 李鹏

出版社:人民邮电出版社

ISBN:9787115384508

出版日期:2015 年3月

开本:16开

页码:212

版次:1-1

编辑推荐

全面展现IT服务方法、标准、技巧、技术,让读者能纵览IT服务全貌;深入浅出的阐述了IT运维精髓和全方位要素,深刻剖析了IT运维的成功规律;系统概述了从硬件到软件的各类IT技术,让读者具备IT运维软功夫和硬功夫。

内容简介

本书共分为5篇,机遇篇、做事篇、处事篇、技能篇和高级篇,从不同的层面阐述了IT运维人员应掌握的方法及相关知识与技能。本书作者深入浅出、化繁为简,将信息化服务中晦涩的IT标准规范、流程体系用浅显易懂的方式娓娓道来。在“机遇篇”中,通过实际案例分析,帮助读者选择职业定位,使长期受到选择从事“软件开发”还是投身于“IT服务”问题困惑的从业人员得到明确的指引。在“做事篇”中,针对IT服务做什么、怎么做、怎么做好等问题进行了阐述,为从业人员整天陷于事无巨细的IT服务工作梳理了工作思路,理清了工作目标和方向。在“处事篇”中将IT服务人员从与机器和代码打交道中解脱出来,认真思考和把握如何与用户进行有效的沟通和交流,将“做事先做人,有位必有为”的服务理念分享给读者。在“技能篇”中系统地介绍了运维服务所涉及的各种IT技术和技能。在“高级篇”中向读者深入浅出地介绍了当今国内外先进的IT服务标准、架构、体系和方法。
希望本书的有关内容能够成为IT从业者或即将从事IT运维服务者的指引,为成功遨游于IT运维服务领域奠定基础。

作者简介

李鹏,北京中烟信息技术有限公司,中国信息技术服务标准技术委员会专家,IT运维实验室行业专家,ISO20000国际认证管理师,从事IT安全及运维管理工作近二十年。近年致力于提升中国本土企业IT治理水平,坚持倡导运用国际先进的IT服务管理理念,结合企业实际开展IT系统的安全及运维管理。

试读章节:http://images.china-pub.com/ebook4580001-4585000/4581160/ch03.pdf

购买链接:http://product.china-pub.com/4581160

更多精彩请关注官方微信公众账号

畅销书《高性能linux服务器构建实战:运营监控、性能调优与集群应用》姊妹篇,资深运维专家与架构师多年经验结晶!

活动内容

活动时间:2014年9月23日-2014年9月30日

活动要求:

活动形式一 :在新浪微博关注@LINUX中国 @华章图书 转发本微博并添加有效评论。
活动形式二:在Linux中国(http://linux.cn)对本书进行评论,说说你喜爱它的理由。

活动奖品:《高性能Linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》图书一本(共5本)

特此注意:

1、本站论坛评论方式参与的用户,评论前需登录您的Linux中国账号,匿名评论无效

2、微博用户参与活动,活动结束后注意查看@LINUX中国 官方微博公布的中奖名单或留意您的微博私信,本站用户参与活动,注意查看您注册Linux中国时所填写的邮箱。 我们会通过微博私信以及电子邮件两种方式获取您的邮寄信息

图书详情

ISBN:9787111472490

作者:高俊峰

出版社:机械工业出版社

出版时间:2014 年9月

样章地址:http://wenku.it168.com/d_001532568.shtml

购买链接:http://product.china-pub.com/3770455

编辑推荐

畅销书《高性能linux服务器构建实战:运营监控、性能调优与美群应用》姊妹篇,资深运维专家与架构师多年经验结晶!
以实际生产环境为背景,从系统安全、故障排查、自动化运维、集群架构4个维度讲解构建大规模和高性能linux服务器集群所 需技术、工具、方法和技巧。

内容简介

《高性能linux服务器构建实战:系统安全、故障排查、自动化运维与集群架构》是linux运维领域畅销的、公认的经典著作《高性能linux服务器构建实战:运维监控、性能调优与集群应用》的姊妹篇,它从安全运维、运维故障排查、自动化运维、集群架构四个维度讲解了构建大规模和高性能linux服务器集群所需要的技术、工具、方法和技巧,二者一脉相承,互为补充,内容涵盖了运维工程师构建高性能服务器需要掌握的各种知识。本书在内容上继承了其姊妹篇中被读者认可的诸多优点:实用(以实际生产环境为背景)、实战(包含大量案例)、易懂,同时也改进了读者反馈的不足之处。
全书共14章,分为四个部分:安全运维篇(第1~3章)主要讲解服务器安全运维、网络安全运维和数据安全运维的关键技术和方法;运维故障排查篇(第4~5章)从服务器系统和应用软件两个维度讲解运维故障的排查思路,以及常见的和经典的运维故障的解决方案;自动化运维篇(第6~9章)主要讲解海量主机的自动化部署和配置、自动化监控、分布式监控等大规模集群运维所需的各种工具(pssh、pdsh、mussh、ganglia、nagios、centreon等)和方法;集群架构篇(第10~14章)讲解如何构建和优化基于web和mysql数据库的高性能集群和高可用的负载均衡集群。

作者简介

高俊峰(南非蚂蚁)资深运维专家、系统架构师、DBA和技术顾问,从事Linux/Unix服务器系统的架构、运维和管理多年。擅长大规模服务器集群的运维和管理,在故障诊断与排除、自动化运维、安全运维、性能调优、虚拟化等方面积累了大量的实战经验。国内知名IT技术社区51CTO的博客专家和 ChinaUnix论坛高可用集群版块的版主,同时还活跃于ITPUB等技术社区,在社区和论坛里发表了大量技术文章,深受欢迎。此外,他还著有畅销书《循序渐进Linux》和《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》,后者是本书的姊妹篇,是Linux运维领域公认的经典著作。