Kubernetes(K8S) 监控
-
Kubernetes 监控
监控是管理大型集群的关键组件之一。为此,我们有许多工具。 -
用 Prometheus 进行监测
这是一个监控和警报系统。它建立在SoundCloud上,并于2012年开源。它可以很好地处理多维数据。Prometheus有多个组件可以参与监控-- Prometheus-它是抓取和存储数据的核心组件。
- Prometheus node explore-获取主机级别矩阵,并将其公开给Prometheus。
- Ranch-eye- 是haproxy,将cAdvisor的统计信息暴露给Prometheus。
- Grafana- 数据可视化。
- InfuxDB - 时间序列数据库,专门用于存储牧场主的数据。
- Prom-ranch-exporter -这是一个简单的node.js应用程序,可帮助查询Rancher服务器的服务堆栈状态。
-
Sematext Docker代理
它是现代的Docker感知指标,事件和日志收集代理。它作为每个Docker主机上的微型容器运行,并收集所有集群节点和容器的日志,指标和事件。如果核心服务部署在Docker容器中,它将发现所有容器(一个容器可能包含多个容器),包括用于Kubernetes核心服务的容器。部署后,所有日志和指标均可立即使用。 -
将代理部署到节点
Kubernetes提供了DeamonSets,以确保将Pod添加到集群中。 -
配置SemaText Docker代理
通过环境变量进行配置。- 如果您还没有免费的帐户,请访问apps.sematext.com。
- 创建类型为“Docker”的SPM应用程序以获取SPM应用程序令牌。SPM应用程序将保存您的Kubernetes性能指标和事件。
- 创建一个Logsene应用以获得Logsene应用令牌。Logsene应用程序将保存您的Kubernetes日志。
- 如下所示,在DaemonSet定义中编辑LOGSENE_TOKEN和SPM_TOKEN的值。
- 获取最新的sematext-agent-daemonset.yml(原始纯文本)模板(也如下所示)。
- 将其存储在磁盘上的某个位置。
- 将SPM_TOKEN和LOGSENE_TOKEN占位符替换为您的SPM和Logsene应用令牌。
-
创建DaemonSet对象
使用kubectl运行Sematext Agent DockerKubernetes日志Kubernetes容器的日志与Docker容器日志没有太大区别。但是,Kubernetes用户需要查看已部署的Pod的日志。因此,将特定于Kubernetes的信息用于日志搜索非常有用,例如-- Kubernetes命名空间
- Kubernetes Pod名称
- Kubernetes 容器名称
- Docker 镜像名称
- Kubernetes UID
使用ELK Stack和LogSpoutELK堆栈包括Elasticsearch,Logstash和Kibana。为了收集日志并将日志转发到日志记录平台,我们将使用LogSpout(尽管还有其他选项,例如FluentD)。以下代码显示了如何在Kubernetes上设置ELK集群并为ElasticSearch创建服务-创建复制控制器 -
Kibana URL
对于Kibana,我们提供Elasticsearch URL作为环境变量。将在容器端口5601和相应的主机/节点端口组合处访问Kibana UI。开始时,在Kibana中将没有任何数据(这是您没有推送任何数据的预期结果)。