
📅 2018-01-11
使用Prometheus监控Redis,推荐使用https://github.com/oliver006/redis_exporter这个exporter。
目前我们主要使用的是redis的主从复制搭配Sentinel实现的高可用方案。部署形式上有两种:一种形式是使用ansible部署在物理机器上,同样使用ansible在相同的机器上部署redis_exporter;另外一种形式是redis和sentinel以StatefulSet的形式跑在Kubernetes上,redis_exporter以sidecar容器的形式和redis容器在相同的Pod里。
...📅 2018-01-04
之前在《Prometheus监控实践:Kubernetes集群监控》一本中总结了我们目前基于Prometheus对Kubernetes集群的监控,除了监控Kubernetes集群本身的关键指标之外,也对部署在Kubernetes集群上应用的状态做了监控。
对于Kubernetes集群上Pod, DaemonSet, Deployment, Job, CronJob等各种资源对象,我们通过kube-state-metrics作为Prometheus的exporter完成了对这些Kubernetes资源对象的监控。而为了使监控深入到应用的内部,就需要应用自身暴露作为Exporter暴露监控指标,这就和应用的开发语言和技术框架紧密相关了。
我们目前部署在Kubernetes上的微服务主要是由Go和Java两种语言开发的,本篇将总结一下目前我们使用Prometheus对Java应用的监控实践。
...📅 2018-01-01
2017年已经过去了,网上都在写年度总结,这里也流水一篇。
技术
#
2017年技术上主要实践以Kubernetes和Docker为基础的云原生(CloudNative)技术。
根据CNCF的CloudNativeLandscape并结合我们在线上的选型和应用,画了我们线上已经使用的CloudNative技术。
...📅 2017-12-29
本文将总结一下我们目前使用Prometheus对Kubernetes集群监控的实践。
我们选择Prometheus作为监控系统主要在以下各层面实现监控:
- 基础设施层:监控各个主机服务器资源(包括Kubernetes的Node和非Kubernetes的Node),如CPU,内存,网络吞吐和带宽占用,磁盘I/O和磁盘使用等指标。
- 中间件层:监控独立部署于Kubernetes集群之外的中间件,例如:MySQL、Redis、RabbitMQ、ElasticSearch、Nginx等。
- Kubernetes集群:监控Kubernetes集群本身的关键指标
- Kubernetes集群上部署的应用:监控部署在Kubernetes集群上的应用
1.基础设施层和中间件层的监控
#
其中基础设施层监控指标的拉取肯定是来在Prometheus的node_exporter
,因为我们要监控的服务器节点既包含Kubernetes节点又包含其他部署独立中间件的节点,
所以我们并没有将node_exporter
以daemonset的形式部署到k8s上,而是使用ansible将node_exporter
以二进制的形式部署到所有要监控的服务器上。
而负责从node_exporter
拉取指标的Prometheus也是用ansible独立部署在Kubernetes集群外部的。Prometheus的配置文件prometheus.yml使用ansible的j2模板生成。
...📅 2017-12-21
目前我们的一个产品共有4套环境:dev环境、test环境、staging环境、production环境。
其中dev, test, staging环境在一个Kubernetes集群上以不同namespace部署,production环境部署在另一个Kubernetes集群上。这个产品总共有14个微服务组成,对应gitlab中14个代码库,Kubernetes的deployment yaml文件也保存在代码库,为每个服务的每套环境以环境名创建了一个目录,里面是yaml文件,yaml文件的内容使用sed
实现了简单的模板功能。14个服务*4套环境总共56个yaml文件,比较原始。
...📅 2017-12-16
Kubernetes 1.9已经发布,这是2017年第4个版本,也是2017年最后一个版本。以下两个链接是官方对本此更新的介绍:
其中比较关键的特性是Apps Workloads API进入GA阶段,升级到了稳定版。
Workloads API GA
#
apps/v1 Workloads API进入GA阶段,升级到了稳定版本并且默认启用。
Apps Workloads API包含DaemonSet, Deployment, ReplicaSet和StatefulSet,是k8s上运行长时运行的无状态服务和有状态服务的基础。
...📅 2017-12-16
Kubernetes 1.9已经发布,可以开始考虑将团队线上环境的Kubernetes集群从1.7升级到1.8了。
本文记录了在测试环境中的演练过程。
准备
#
当前Kubernetes 1.8的小版本是1.8.5。
在升级之前一定要多读几遍官方的升级须知Kubernetes 1.8 - Action Required Before Upgrading。其中和我们相关的:
...📅 2017-12-16
kubeadm是Kubernetes官方提供的用于快速安装Kubernetes集群的工具,伴随Kubernetes每个版本的发布都会同步更新,kubeadm会对集群配置方面的一些实践做调整,通过实验kubeadm可以学习到Kubernetes官方在集群配置上一些新的最佳实践。
...📅 2017-12-06
前面我们使用Jaeger的all in one docker镜像和Jaeger的HotROD示例应用简单试用了一下,
并对Jaeger的基本概念和组成做了初步了解。接下来该为了在生产环境中部署Jaeger做下一步的试验了。
本篇我们将尝试再Kubernetes集群上部署Jaeger,并使用我们已经存在的Elasticsearch集群作为数据存储。
...📅 2017-12-06
之前我们已经将Jaeger部署到了Kubernetes上,并且对Jaeger官方的示例应用HotROD进行了分布式跟踪。
我们使用Elasticsearch作为Jaeger的后端存储。借助Jaeger我们可以很容易的进行微服务架构应用的服务链调用追踪,进一步实现应用的性能分析和延迟优化。
...