Cadvisor +Prometheus+Grafana 监控架构详解
cadvisor、prometheus、grafana、docker、架构
先简单介绍一下cadvisor、prometheus、grafana是什么以及特点
cadvisor是什么?
Cadvisor 是Google用来监测单节点资源信息的监控工具。 Cadvisor 提供了基础查询界面和http接口,方便其他组件如Grafana 、Prometheus等进行数据抓取。Cadvisor 可以对Docker主机上的资源及容器进行实时监控和性能数据采集,包括CPU使用情况、内存使用情况、网络吞吐量及文件系统使用情况等。Cadvisor 使用Go语言开发,利用Linux的Cgroups获取容器的资源使用信息。
Google的Kubernetes中也默认地将其作为单节点的资源监控工具,各个节点默认会安装上Cadvisor组件。
Cadvisor 产品特点:
- 可以展示主机和容器两个层次的监控数据。
- 可以展示历史变化数据。
- 谷歌公司的开源产品。
- 监控指标齐全。
- 方便部署,有官方的docker镜像。
- 默认只在本地保存1分钟数据,可以集成InfluxDB等第三方存储使用。
由于 Cadvisor 提供的操作界面略显简陋,而且需要在不同页面之间跳转,并且只能监控一个 Host,这不免会让人质疑它的实用性。但 Cadvisor 的一个亮点是它可以将监控到的数据导出给第三方工具,由这些工具进一步加工处理。
我们可以把 Cadvisor 定位为一个监控数据收集器,收集和导出数据是它的强项,而非展示数据。
grafana是什么?
Grafana是一个可视化面板(Dashboard)工具,有着非常漂亮的图表和布局等展示功能,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB等组件作为数据源。
Grafana主要特性
- 灵活丰富的图形化选项;
- 可以混合多种风格;
- 支持白天和夜间模式;
- 支持多个数据源;
prometheus是什么?
Prometheus是一个最初在SoundCloud上构建的开源系统监视和警报工具包。自2012年成立以来,很多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发者和用户社区。 它现在是一个独立的开源项目,可以独立于任何公司进行维护。 为了强调这一点,并阐明项目的治理结构,Prometheus于2016年加入Cloud Native Computing Foundation(云原生基金会),作为继Kubernetes之后的第二个托管项目。
Prometheus的主要特征有:
- 多维度数据模型-由指标键值对标识的时间序列数据组成
- PromQL,一种灵活的查询语言
- 不依赖分布式存储; 单个服务器节点是自治的
- 以HTTP方式,通过pull模型拉取时间序列数据
- 支持通过中间网关推送时间序列数据
- 通过服务发现或者静态配置,来发现目标服务对象
- 支持多种多样的图表和界面展示
具体操作步骤:
1,安装dockers
A.先关闭防火墙,安全机制,centos7自带的防火墙也要关掉
iptables -F
setenforce 0
systemctl stop firewalld
B.安装docker所需要的一些yum源及插件
cd /etc/yum.repos.d/
cd
wget http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
C.安装docker-ce,启动docker(这个过程可能会有点慢,耐心等待)
yum -y install docker-ce
systemctl start docker
systemctl enable docker.service
可用docker version 查版本的方式,检测docker是否安装成功
2.为了日后加载镜像方便,配置加速器,这里采用阿里的(可省)
cat << END > /etc/docker/daemon.json
{
"registry-mirrors":[ "https://nyakyfun.mirror.aliyuncs.com" ]
}
END
systemctl daemon-reload
systemctl restart docker
3.下载cadvisor组件镜像
在被监控的主机上安装cadvisor
docker run -d \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--volume=/dev/disk/:/dev/disk:ro \
--publish=8080:8080 \
--detach=true \
--name=cadvisor \
google/cadvisor:latest
4.访问cadvisor页面
在浏览器上输入http://自己主机ip:8080 就可以看到cadvisor收集到的数据页面了
5.下载及安装Prometheus镜像(需要编写Prometheus配置文件)
docker pull prom/prometheus
编写自己的Prometheus配置文件(内容如下)
vim /tmp/prometheus.yml
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
- job_name: 'docker' ##定义一个叫docker的组
static_configs:
- targets: ['192.168.200.111:8080'] ##填写一个或多个cadvisor的主机地址用逗号隔开
docker run -d \
--name=prometheus -p 9090:9090 \
-v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /etc/localtime:/etc/localtime \
prom/prometheus
6.访问prometheus页面
在浏览器上输入http://自己主机ip:9090 就可以看到prometheus页面了
根据流程点击
看到docker组状态up为正常
查询项是可以查到数据的
7.下载及安装grafana镜像
docker run -d \
--name=grafana \
-p 3000:3000 \
grafana/grafana
8.访问grafana的页面
访问http://自己的ip:3000默认账户admin 密码 admin首次登陆需要修改密码
修改密码,(新密码写上面,在确认输入一次)
配置数据源
添加数据(点蓝色)
选择用的数据工具(本文介绍的是用Prometheus,则选择第一个)
进去之后,填写url路径
要看到这个绿色的对勾后,选择保存和测试(save&test)
导入模板
得到如下页面(193 grafana id)
选择对应的数据源,点击导入,就可以看到被监控主机的数据
最后,可以 自主 下载一个nginx的镜像 进行测试
docker run --name=nginx -d -p 80:80 nginx
更多推荐
所有评论(0)