资讯专栏INFORMATION COLUMN

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

姘存按 / 3193人阅读

摘要:摘要本篇文章介绍了如何通过数人云部署一套标准的日志收集系统。主机添加完成后,检查主机运行是否正常,如图第二步,发布实例我们将通过数人云将的镜像以模式部署到我们规划的主机和上。

摘要:本篇文章介绍了如何通过数人云部署一套标准的 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 日志收集系统吧。

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

首先,需要访问 数人云 注册并登录系统,然后进入主机的准备工作。假设有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 主机

高级设置:

添加应用地址:

 * 应用端口: 9200

* 类型: 对内

 *  协议: TCP

 * 地址: 10.3.10.94:9998

环境变量

 *  Key: CLUSTERNAME

 *  Value: dataman-es

环境变量

 * Key: ZOOKEEPER_ADDRESS

 * 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

高级设置:

应用地址:

  * 应用端口: 5601

  * 类型: 对内

  * 协议: HTTP

  * 地址: http://10.3.10.94:5601

环境变量:

  * KEY: ELASTICSEARCH_URL

  * 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://www.ucloud.cn/yun/25161.html

相关文章

  • 回顾Java 发展,看 Docker 与Mesos | 数人COO谢乐冰@KVM分享实录

    摘要:马拉松会匹配每个和提供的资源,然后通过将任务下发下去。对外暴露的就是负载均衡的某个服务,后面自动将流量转发到某个容器的端口上。还有一直办法是用内网的,这个会维护现有的容器列表端口,并且返回任意一个的端口,页实现了负载均衡和服务发现功能。 演讲嘉宾 数人云COO 谢乐冰 在德国工作十年,回国后加入惠普电信运营商部门,拥有多年项目经验和创业公司工作经验。在数人云负责产品售前和运营,专注行...

    canger 评论0 收藏0
  • 数人|当K8S遇上微服务-京东金融PaaS平台思考与实践

    摘要:平台上的微服务架构应用再来看一下我眼中的基于当前最流行的微服务架构的设计是什么样的,即我们平台上要运行的典型应用是什么样的。 showImg(https://segmentfault.com/img/remote/1460000010900878); 8月19日的数人云Container Meetup上,张龙老师做了《基于Kubernetes的PaaS平台的设计和思考》的精彩分享,分别...

    Imfan 评论0 收藏0
  • 稳定高于一切的金融行业如何容器?

    摘要:在谷歌不是这样,谷歌不会把特定的应用装在某台服务器上,业务应用和服务器的强绑定对于谷歌这种量级的数据中心的维护难度太高了。但是金融机构的数据中心规模不像谷歌这么大,所以能做到业务应用和硬件的强绑定。 复杂的基础IT架构是传统金融的现状,如何快速响应用户需求,加快新业务上线速度,缩短产品的迭代周期? 数人云在容器落地金融云的2年实践中,实现金融核心业务技术WebLogic、J2EE、Or...

    scola666 评论0 收藏0
  • 从Google的PaaS平台说起,解析中美Docker生态圈

    摘要:新一代也有轻量的特性,介绍谷歌的轻量特性,应用要具有弹性要分布发布,再一个容错性强易于维护,也要对计算资源故障进行容错。 5月18日,第八届中国云计算大会在北京国家会议中心召开。作为领先的云计算创新技术实践者,数人云CEO王璞博士应邀出席并在全体大会上进行主题为中美容器之融合与变革的分享,以下是演讲实录: 容器VS虚拟化 showImg(https://segmentfault.com...

    NSFish 评论0 收藏0
  • 【容器UK8S】新手指导

    摘要:详细请见产品价格产品概念使用须知名词解释漏洞修复记录集群节点配置推荐模式选择产品价格操作指南集群创建需要注意的几点分别是使用必读讲解使用需要赋予的权限模式切换的切换等。UK8S概览UK8S是一项基于Kubernetes的容器管理服务,你可以在UK8S上部署、管理、扩展你的容器化应用,而无需关心Kubernetes集群自身的搭建及维护等运维类工作。了解使用UK8S为了让您更快上手使用,享受UK...

    Tecode 评论0 收藏0

发表评论

0条评论

姘存按

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<