2019独角兽企业重金招聘Python工程师标准>>>

摘要:本篇文章介绍了如何通过数人云部署一套标准的 ELK 日志收集系统。第一步,将主机组织成集群;第二步,发布 ElasticSearch 实例;第三步,发布 Kibana 实例;第四步,发布 Logstash 实例到待收集日志的应用 server ;第五步,快速扩展/减少 ElasticSearch , Kibana 实例数(可选)。

在具体介绍部署步骤前,让我们先来了解下 ELK 是什么。 ELK 是 ElasticSearch+Logstash+Kibana 的缩写, ElasticSearch 是一款基于 Lucene 的分布式搜索引擎,大名鼎鼎的 GitHub 就是由它提供的搜索。 Logstash 是一款分布式日志收集系统,是一个应用程序日志、事件的传输、处理、管理和搜索的平台,可以用来统一对应用程序日志进行收集管理,提供 Web 接口用于查询和统计。 Kibana 是一个基于浏览器页面的 ElasticSearch 前端展示工具,内置了各种查询和聚合操作,并拥有图形化展示功能。

我们知道,日志记录了各种重要信息,如应用程序的 log 记录的 error,warn 级别的 log,在量小的情况下,我们当然可以直接 vi+awk+sed+grep 定位原因,而当数量非常大,且需要各种聚合或基于多个异常关键词的组合搜索时,就是 ELK 大显身手的地方!可以说, ELK 是运维界的明星,非常适合应用级的实时监控和核心服务预警。

下面就让我们来看看如何通过数人云部署一套标准的 ELK 日志收集系统吧。

第一步, 将主机组织成集群

首先,需要访问 www.shurenyun.com 注册并登录系统,然后进入主机的准备工作。假设有7台主机,这些主机可以是连接互联网的私有主机,也可以是阿里云、Ucloud、 AWS、Azure、首都在线、华为云等公有云上购买的任意一台云主机。这7台主机之间需要网络互通并能够访问外网。7台主机的规划及配置信息如下:

然后,登录账户,在集群管理中,点击创建群组,填写集群名称( elk ),选择 3 Master 集群,点击完成。 添加主机后,如图点击右上角下拉菜单,选择添加主机。

点击已有主机下面的按钮 Ubuntu 或者 CentOS ,填写主机名称,并在主机上根据"连接主机"的提示进行操作。

选择主机组件:前 3 台主机( 10.3.10.9 [1-3] )为 Master 节点, 无可选组件;在添加主机 10.3.10.94 时需要将可选组件中的内部代理勾选上。

登录到将要添加的主机终端

ssh ubuntu@10.3.10.91

安装 Docker (若主机已安装 Docker ,这步可跳过)

curl -sSL https://get.docker.com/ | sh

安装 Agent :点击页面按钮,点击“生成命令”生成安装命令并粘贴到主机终端运行。

sudo -H OMEGA_ENV=prod bash -c "$(curl -Ls https://raw.githubusercontent.com/Dataman-Cloud/agent-installer/master/install-agent.sh)" -s 92a0c8b287d34445b03f8518ce688e66

按提示执行以上两步后,点击"完成"即成功添加主机。

需要注意的是,由于数人云默认将加入集群的前3台机器作为 master 节点,为了符合前期规划,请确保主机10.3.10.91, 10.3.10.92, 10.3.10.93 首先被加入到集群中。同时,向同一集群添加的主机应存在于同一网段内,暂不支持跨公网的主机组建集群。此外,由于数人云在主机连接后会向主机上安装基础服务,所以主机需要一段时间进行初始化,依主机所处的网络环境,主机初始化的时间有所不同。

主机添加完成后,检查主机运行是否正常,如图:

第二步,发布 ElasticSearch 实例

我们将通过数人云将 ES 的 Docker 镜像以 HOST 模式部署到我们规划的主机 10.3.10.95 和 10.3.10.96 上。具体操作如下:

选择"应用管理"中的"新建应用",如图:

新建 ES 应用:

• 填写应用名称: es

• 选择集群:elk

• 添加应用镜像地址:index.shurenyun.com/dataman/jdk7-elasticsearch-1.4.5

• 填写镜像版本:2015112811

• 网络模式:HOST 模式

• 主机选择:10.3.10.95,10.3.10.96

• 容器目录:容器内的挂载目录 /data/app/elasticsearch

• 主机目录:主机上的挂载目录 /data (该目录是我们主机数据盘所在的目录)

• 选择容器规格: CPU:0.8 内存:4096MB

• 容器个数:2 并且勾选 1 容器: 1 主机

•高级设置:

•添加应用地址:o  应用端口: 9200o  类型: 对内o  协议: TCPo  地址: 10.3.10.94:9998•环境变量o  Key: CLUSTERNAMEo  Value: dataman-es•环境变量o  Key: ZOOKEEPER_ADDRESSo  Value: 10.3.10.91:2181,10.3.10.92:2181,10.3.10.93:2181

填写完成后,点击创建。 如图:

第一次向集群部署 ES 时由于本地没有 Docker 镜像 index.shurenyun.com/dataman/jdk7-elasticsearch-1.4.5,集群需要大约 1-2 分钟去拉取镜像(可能更长时间)。我们可以在 ES 的应用详情页看到相应的状态,以及事件等。

第三步, 发布 Kibana 实例

点击新建应用,新建 Kibana 应用:

• 填写应用名称: kibana

• 选择集群:elk

• 添加应用镜像地址:index.shurenyun.com/dataman/kibana

• 填写镜像版本:4.1.4

• 网络模式:网桥模式

• 选择主机: ALL

• 容器规格: CPU:0.2 内存:256 MB

• 容器个数:1

• 高级设置:

• 应用地址:o 应用端口: 5601o 类型: 对内o 协议: HTTPo 地址: http://10.3.10.94:5601• 环境变量:o KEY: ELASTICSEARCH_URLo VALUE: http://10.3.10.94:9998

注: Kibana 需要通过环境变量 ELASTICSEARCH_URL 来确定 ElasticSearch 的地址,由于添加主机时我们已经设置内部代理的节点为 10.3.10.94,并且在添加 ES 应用时将其端口映射到了内部代理端口 9998 , 所以这里我们只需要设置 ELASTICSEARCH_URL=http://10.3.10.94:9998 即可使得 Kibana 发现 ES 实例。

来到 Kibana 的应用详情页,若应用状态为运行中即应用已正常运行。

打开浏览器,访问地址:http://10.3.10.94:5601(可能需要为你的浏览器设置内网代理),看到如下页面,则说明 Kibana 应用已经成功运行。

第四步, 发布 Logstash 实例到待收集日志的应用 server

点击新建应用,新建 Logstash 应用:

• 填写应用名称: logstash

• 选择集群:elk

• 添加应用镜像地址:index.shurenyun.com/dataman/logstash

• 填写镜像版本:2.1

• 网络模式:网桥模式

• 选择主机: 10.3.10.97

注:由于上面我们假设应用运行在了主机 10.3.10.97 上,所以这里我们限制 Logstash 在该主机上收集日志

• 主机/容器目录

• 数据挂载目录: /var/log/app

• 容器目录: /var/log/app

注: 这里我们假设用户的应用(待采集日志的应用)日志存储在了主机目录 /var/log/app 下面。

• 容器规格: CPU:0.3 内存:256 MB

• 容器个数:1

• 高级设置:

• CMD:
logstash -e 'input { file { type => "linux-syslog" path => ["/var/log/app/*.log"]}} output { elasticsearch { hosts => "10.3.10.94:9998" }}'

同样,等待 1-2 分钟后 Logstash 将被部署到应用 server 上并且开始收集日志, 用户可以通过访问 Kibana 的页面来发掘相应的日志信息。

第五步, 快速扩展/减少 ElasticSearch, Kibana 实例数(可选)

为了提高集群的资源利用率,我们可能需要根据负载来扩展或者减少 ElasticSearch , Kibana 等的实例数,在数人云的应用列表页或者应用详情页, 点击扩展按钮,即可快速调整相应应用的实例数。

通过前面的五步实战,大家都尝试了用数人云去部署 ELK 系统,总结来说,使用数人云去部署 ELK 主要有三大优势:第一,部署方便: 用户的应用无需任何改造,只需要提供日志的存储目录;第二,可扩展: 如果日志存储端( ElasticSearch )需要添加更多的实例, 用户只需要向集群中添加更多的机器, 并在应用列表页点击扩展相应的 ELK 即可;第三,安全: 用户应用的所有日志数据都存储在了集群内网的 ES 服务集群中。

转载于:https://my.oschina.net/shurenyun/blog/605838

[实战] 用数人云,部署弹性 ELK 集群就五步相关推荐

  1. [实战] 用数人云,部署弹性 ELK 集群就五步 1

    摘要:本篇文章介绍了如何通过数人云部署一套标准的 ELK 日志收集系统.第一步,将主机组织成集群:第二步,发布 ElasticSearch 实例:第三步,发布 Kibana 实例:第四步,发布 Log ...

  2. 数人云CEO王璞:容器正成为软件交付的标准

    2014年Docker技术逐步兴起,大量围绕Docker的创业公司以及诸多开源软件项目涌现.如今,容器技术的生态圈渐成气候,此领域的新技术已呈井喷之态. 技术的迭代同时,Docker在资本市场的斩获也 ...

  3. 数人云轻量级PaaS将弹性做到极致

    技术型创业公司有一个比较普遍的现象,老板大多是留过洋,甚至在国际互联网公司里打拼过几年小有成就.他们带着先进的思想.技术,以及抱负回到中国,开始自己的创业梦想. 数人云就是这样的技术性创业企业,由原谷 ...

  4. 数人云牵手红帽Ansible:七大最佳实践解锁DevOps落地姿势

    2018年1月23日,红帽联合至顶网在上海举办了以"智能 自动 规范--迎接自动化运维新时代"为主题的"Ansible Automates"大会. 这是国内首届 ...

  5. 云计算与 Cloud Native | 数人云CEO王璞@KVM分享实录

    今天小数又给大家带来一篇干货满满的分享--来自KVM社区线上群分享的实录,分享嘉宾是数人云CEO王璞,题目是<云计算与 Cloud Native>.这是数人云在KVM社区群分享的第一弹,之 ...

  6. 数人云DCOS:坚持Mesos+Docker,图谋10万主机集群与机器学习扩容

    国内的容器创业公司各具特色,数人云看中的是用Mesos和Docker改变企业级市场.在日前的媒体沟通会上,数人云创始人&CEO王璞和数人云CTO肖德时介绍了数人云的目标以及技术选择.商业路径. ...

  7. 数人云CTO解读Docker 1.12和金融业容器化

    7月29日 数人云 在上海举办金融沙龙,邀请上交所和近二十家来自银行.保险.证券的IT技术专家一同探讨容器技术在金融业中的最佳实践.数人云CTO肖德时在会上将传统金融行业通过容器可以解决的四大问题做了 ...

  8. 【每日新闻】2017年亚马逊研发投入排世界第一,超过华为、BAT 总和 | 数人云宣布与UMCloud合并

    每一个企业级的人  都置顶了 中国软件网 中国软件网  为你带来最新鲜的行业干货 小编点评 我们希望邀请更多的生态伙伴 共同探讨 共同行动 2018年4月25日 北京站,不见不散! 趋势洞察 生态视角 ...

  9. 【每日新闻】2017年亚马逊研发投入排世界第一,超过华为、BAT 总和 | 数人云宣布与UMCloud合并...

    每一个企业级的人  都置顶了 中国软件网 中国软件网  为你带来最新鲜的行业干货 小编点评 我们希望邀请更多的生态伙伴 共同探讨 共同行动 2018年4月25日 北京站,不见不散! 趋势洞察 生态视角 ...

最新文章

  1. VMware卸载虚拟机
  2. mysql常用日期时间函数_MySql常用日期时间函数
  3. 武汉大学计算机学院 曹老师,关于校园网吧建设的计算机网络综合设计.doc
  4. 成功解决极其刁钻bug之TypeError: ‘<=‘ not supported between instances of ‘list‘ and ‘int‘
  5. 深入理解Java虚拟机-如何利用VisualVM对高并发项目进行性能分析
  6. 一个比较方便的转换NSString为UTF8编码的函数
  7. c语言linux消息机制,linux消息机制的过程是什么啊,请赐教
  8. 结合案件要素序列的罪名预测方法
  9. Python 夺大满贯!三大编程语言榜即将全部“失守”!
  10. 用c语言编写五子棋用vs写,c语言写的五子棋人与人对战
  11. [置顶] 【cocos2d-x入门实战】微信飞机大战之二:别急,先处理好CCScene和CCLayer的关系...
  12. 【大咖有约】58同城孙玄:58同城从MongoDB到MySQL迁移之路
  13. 网页游戏开发秘笈 PDF扫描版
  14. 网页视频播放器-插件
  15. 华为5G手机回归,再次打破国外技术垄断,将价格推至新高度
  16. play框架使用起来(16)
  17. python中自然数e怎么表示_python e怎么表示
  18. html页面 消除横向滚动条,框架网页中去掉横向(水平)滚动条的方法
  19. kaptcha验证码使用
  20. RabbitMQ——RabbitMQ集群原理

热门文章

  1. “XXXXX” is damaged and can’t be opened. You should move it to the Trash 解决方案
  2. 找出数组中出现次数最多的一项并统计次数
  3. 关于Azure存储账户中存储虚拟机VHD文件的注意事项
  4. php-5.2.3.tar.bz2.gz 的解压方法
  5. QQ交流群,欢迎有兴趣的同学加入。
  6. Java Socket实战之一:单线程通信
  7. bootstrapTable语言包设置
  8. zyUpload+struct2完成文件上传
  9. 《黑客秘笈——渗透测试实用指南(第2版)》目录—导读
  10. Yii-mongo操作