阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用 Graylog 和 Prometheus 监视 Kubernetes 集群

478次阅读
没有评论

共计 5705 个字符,预计需要花费 15 分钟才能阅读完成。

使用 Graylog 和 Prometheus 监视 Kubernetes 集群

监视日志和指标状态是集群管理员的重点工作。它的好处很明显:指标能帮你设置一个合理的性能目标,而日志分析可以发现影响你工作负载的问题。然而,困难的是如何找到一个与大量运行的应用程序一起工作的监视解决方案。

在本文中,我将使用 Graylog(用于日志)和 Prometheus(用于指标)去打造一个 Kubernetes 集群的监视解决方案。当然了,这不仅是将三个东西连接起来那么简单,实现上,最终结果看起来应该如题图所示:

正如你所了解的,Kubernetes 不是一件东西 —— 它由主控节点、工作节点、网络连接、配置管理等等组成。同样,Graylog 是一个配角(apache2、mongodb、等等),Prometheus 也一样(telegraf、grafana 等等)。在部署中连接这些点看起来似乎有些让人恐惧,但是使用合适的工具将不会那么困难。

我将使用 conjure-up 和 Canonical 版本的 Kubernetes (CDK) 去探索 Kubernetes。我发现 conjure-up 接口对部署大型软件很有帮助,但是我知道一些人可能不喜欢 GUI、TUI 以及其它用户界面。对于这些人,我将用命令行再去部署一遍。

在开始之前需要注意的一点是,Graylog 和 Prometheus 是部署在 Kubernetes 外侧而不是集群上。像 Kubernetes 仪表盘和 Heapster 是运行的集群的非常好的信息来源,但是我的目标是为日志 / 指标提供一个分析机制,而不管集群运行与否。

 

开始探索

如果你的系统上没有 conjure-up,首先要做的第一件事情是,请先安装它,在 Linux 上,这很简单:

  1. sudo snap install conjure-up --classic

对于 macOS 用户也提供了 brew 包:

  1. brew install conjure-up

你需要最新的 2.5.2 版,它的好处是添加了 CDK spell,因此,如果你的系统上已经安装了旧的版本,请使用 sudo snap refresh conjure-up 或者 brew update && brew upgrade conjure-up 去更新它。

安装完成后,运行它:

  1. conjure-up

使用 Graylog 和 Prometheus 监视 Kubernetes 集群

你将发现有一个 spell 列表。选择 CDK 然后按下回车。

使用 Graylog 和 Prometheus 监视 Kubernetes 集群

这个时候,你将看到 CDK spell 可用的附加组件。我们感兴趣的是 Graylog 和 Prometheus,因此选择这两个,然后点击“Continue”。

它将引导你选择各种云,以决定你的集群部署的地方。之后,你将看到一些部署的后续步骤,接下来是回顾屏幕,让你再次确认部署内容:

使用 Graylog 和 Prometheus 监视 Kubernetes 集群

除了典型的 K8s 相关的应用程序(etcd、flannel、load-balancer、master 以及 workers)之外,你将看到我们选择的日志和指标相关的额外应用程序。

Graylog 栈包含如下:

  • apache2:graylog web 界面的反向代理
  • elasticsearch:日志使用的文档数据库
  • filebeat:从 K8s master/workers 转发日志到 graylog
  • graylog:为日志收集器提供一个 api,以及提供一个日志分析界面
  • mongodb:保存 graylog 元数据的数据库

Prometheus 栈包含如下:

  • grafana:指标相关的仪表板的 web 界面
  • prometheus:指标收集器以及时序数据库
  • telegraf:发送主机的指标到 prometheus 中

你可以在回顾屏幕上微调部署,但是默认组件是必选 的。点击“Deploy all Remaining Applications”继续。

部署工作将花费一些时间,它将部署你的机器和配置你的云。完成后,conjure-up 将展示一个摘要屏幕,它包含一些链接,你可以用你的终端去浏览各种感兴趣的内容:

使用 Graylog 和 Prometheus 监视 Kubernetes 集群

 

浏览日志

现在,Graylog 已经部署和配置完成,我们可以看一下采集到的一些数据。默认情况下,filebeat 应用程序将从 Kubernetes 的 master 和 worker 中转发系统日志(/var/log/*.log)和容器日志(/var/log/containers/*.log)到 graylog 中。

记住如下的 apache2 的地址和 graylog 的 admin 密码:

  1. juju status --format yaml apache2/0|greppublic-address
  2. public-address:<your-apache2-ip>
  3. juju run-action --wait graylog/0 show-admin-password
  4. admin-password:<your-graylog-password>

在浏览器中输入 http://<your-apache2-ip>,然后以管理员用户名(admin)和密码(<your-graylog-password>)登入。

注意: 如果这个界面不可用,请等待大约 5 分钟时间,以便于配置的反向代理生效。

登入后,顶部的“Sources”选项卡可以看到从 K8s 的 master 和 workers 中收集日志的概述:

使用 Graylog 和 Prometheus 监视 Kubernetes 集群

通过点击“System / Inputs”选项卡深入这些日志,选择“Show received messages”查看 filebeat 的输入:

使用 Graylog 和 Prometheus 监视 Kubernetes 集群

在这里,你可以应用各种过滤或者设置 Graylog 仪表板去帮助识别大多数比较重要的事件。查看 Graylog Dashboard 文档,可以了解如何定制你的视图的详细资料。

 

浏览指标

我们的部署通过 grafana 仪表板提供了两种类型的指标:系统指标,包括像 K8s master 和 worker 的 CPU / 内存 / 磁盘使用情况,以及集群指标,包括像从 K8s cAdvisor 端点上收集的容器级指标。

记住如下的 grafana 的地址和 admin 密码:

  1. juju status --format yaml grafana/0|greppublic-address
  2. public-address:<your-grafana-ip>
  3. juju run-action --wait grafana/0get-admin-password
  4. password:<your-grafana-password>

在浏览器中输入 http://<your-grafana-ip>:3000,输入管理员用户(admin)和密码(<your-grafana-password>)登入。成功登入后,点击“Home”下拉框,选取“Kubernetes Metrics (via Prometheus)”去查看集群指标仪表板:

使用 Graylog 和 Prometheus 监视 Kubernetes 集群

我们也可以通过下拉框切换到“Node Metrics (via Telegraf)”去查看 K8s 主机的系统指标。

使用 Graylog 和 Prometheus 监视 Kubernetes 集群

 

另一种方法

正如在文章开始的介绍中提到的,我喜欢用 conjure-up 的向导去完成像 Kubernetes 这种复杂软件的部署。现在,我们来看一下 conjure-up 的另一种方法,你可能希望去看到实现相同结果的一些命令行的方法。还有其它的可能已经部署了前面的 CDK,并想去扩展使用上述的 Graylog/Prometheus 组件。不管什么原因你既然看到这了,既来之则安之,继续向下看吧。

支持 conjure-up 的工具是 Juju。CDK spell 所做的一切,都可以��用 juju 命令行来完成。我们来看一下,如何一步步完成这些工作。

 

从 Scratch 中启动

如果你使用的是 Linux,安装 Juju 很简单,命令如下:

  1. sudo snap install juju --classic

对于 macOS,Juju 也可以从 brew 中安装:

  1. brew install juju

现在为你选择的云配置一个控制器。你或许会被提示请求一个凭据(用户名密码):

  1. juju bootstrap

我们接下来需要基于 CDK 捆绑部署:

  1. juju deploy canonical-kubernetes

 

从 CDK 开始

使用我们部署的 Kubernetes 集群,我们需要去添加 Graylog 和 Prometheus 所需要的全部应用程序:

  1. ## deploy graylog-related applications
  2. juju deploy xenial/apache2
  3. juju deploy xenial/elasticsearch
  4. juju deploy xenial/filebeat
  5. juju deploy xenial/graylog
  6. juju deploy xenial/mongodb
  1. ## deploy prometheus-related applications
  2. juju deploy xenial/grafana
  3. juju deploy xenial/prometheus
  4. juju deploy xenial/telegraf

现在软件已经部署完毕,将它们连接到一起,以便于它们之间可以相互通讯:

  1. ## relate graylog applications
  2. juju relate apache2:reverseproxy graylog:website
  3. juju relate graylog:elasticsearch elasticsearch:client
  4. juju relate graylog:mongodb mongodb:database
  5. juju relate filebeat:beats-host kubernetes-master:juju-info
  6. juju relate filebeat:beats-host kubernetes-worker:jujuu-info
  1. ## relate prometheus applications
  2. juju relate prometheus:grafana-source grafana:grafana-source
  3. juju relate telegraf:prometheus-client prometheus:target
  4. juju relate kubernetes-master:juju-info telegraf:juju-info
  5. juju relate kubernetes-worker:juju-info telegraf:juju-info

这个时候,所有的应用程序已经可以相互之间进行通讯了,但是我们还需要多做一点配置(比如,配置 apache2 反向代理、告诉 prometheus 如何从 K8s 中取数、导入到 grafana 仪表板等等):

  1. ## configure graylog applications
  2. juju config apache2 enable_modules="headers proxy_html proxy_http"
  3. juju config apache2 vhost_http_template="$(base64 <vhost-tmpl>)"
  4. juju config elasticsearch firewall_enabled="false"
  5. juju config filebeat \
  6. logpath="/var/log/*.log /var/log/containers/*.log"
  7. juju config filebeat logstash_hosts="<graylog-ip>:5044"
  8. juju config graylog elasticsearch_cluster_name="<es-cluster>"
  1. ## configure prometheus applications
  2. juju config prometheus scrape-jobs="<scraper-yaml>"
  3. juju run-action --wait grafana/0import-dashboard \
  4. dashboard="$(base64 <dashboard-json>)"

以上的步骤需要根据你的部署来指定一些值。你可以用与 conjure-up 相同的方法得到这些:

  • <vhost-tmpl>:从 github 获取我们的示例 模板
  • <graylog-ip>juju run --unit graylog/0 'unit-get private-address'
  • <es-cluster>juju config elasticsearch cluster-name
  • <scraper-yaml>:从 github 获取我们的示例 scraper;[K8S_PASSWORD][20][K8S_API_ENDPOINT][21] substitute 的正确值
  • <dashboard-json>:从 github 获取我们的 主机 和 k8s 仪表板

最后,发布 apache2 和 grafana 应用程序,以便于可以通过它们的 web 界面访问:

  1. ## expose relevant endpoints
  2. juju expose apache2
  3. juju expose grafana

现在我们已经完成了所有的部署、配置、和发布工作,你可以使用与上面的 浏览日志 浏览指标 部分相同的方法去查看它们。

 

总结

我的目标是向你展示如何去部署一个 Kubernetes 集群,很方便地去监视它的日志和指标。无论你是喜欢向导的方式还是命令行的方式,我希望你清楚地看到部署一个监视系统并不复杂。关键是要搞清楚所有部分是如何工作的,并将它们连接到一起工作,通过断开 / 修复 / 重复的方式,直到它们每一个都能正常工作。

这里有一些像 conjure-up 和 Juju 一样非常好的工具。充分发挥这个生态系统贡献者的专长让管理大型软件变得更容易。从一套可靠的应用程序开始,按需定制,然后投入到工作中!

大胆去尝试吧,然后告诉我你用的如何。你可以在 Freenode IRC 的 #conjure-up#juju 中找到像我这样的爱好者。感谢阅读!

 

关于作者

Kevin 在 2014 年加入 Canonical 公司,他专注于复杂软件建模。他在 Juju 大型软件团队中找到了自己的位置,他的任务是将大数据和机器学习应用程序转化成可重复的(可靠的)解决方案。

这篇文章最初发表在 Kevin Monroe 的博客 上。


via: https://insights.ubuntu.com/2018/01/16/monitor-your-kubernetes-cluster/

作者:Kevin Monroe 译者:qhwdw 校对:wxy

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

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计5705字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7983228
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用 AI 做了一个 1978 年至 2019 年中国大陆企业注册的查询网站 最近星哥在 GitHub 上偶然...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...