1.为什么要监控
维护业务可持续运行
能够实时的查看系统的运行状况
2.prometheus是什么
Prometheus受启发于Google的Brogmon监控系统
普罗米修斯是一个最初在SoundCloud上构建的监控系统;自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区;
为强调开源及独立维护,prometheus于2016年加入云原生计算基金会,成为继Kubernetes之后的第二个托管项目。
prometheus server: 收集指标和存储时间序列数据,并提供查询接口;
clientLibrary: 客户端库
push gateway: 短期存储指标数据,主要用于临时性的任务
exporters: 采集已有的第三方服务监控指标并暴露metrics
alertmanager: 告警
web ui: 简单的web控制台
白盒监控:通过白盒能够了解其内部的实际运行状态,通过对监控指标的观察能够预判可能出现的问题,从而对潜在的不确定因素进行优化;
黑盒监控:常见的如HTTP探针、TCP探针等,可以在系统或者服务发生故障时能够快速通知相关的人员进行处理;
kubernetes容器探针:
1.TCP探针:对指定端口上的容器的IP地址进行TCP监控,如果端口打开,则诊断认为是成功的;
2.http探针:对指定的端口和路径上的容器ip地址执行http get请求,根据返回的状态码进行诊断;
prometheus:
示例:可以抓取的目标称为实例(instances)
作业:具有相同目标的实例集合称为作业(job)
3.基本部署
由于prometheus是由go语言开发的,所以安装之前需要安装go环境
下载地址
https://studygolang.com/dl/golang/go1.15.3.linux-amd64.tar.gz
上传到服务器上,解压并配置环境变量
[root@proxy1 ~]# tar -zxvf go1.15.3.linux-amd64.tar.gz -C /usr/local/
# vim /etc/profile
# 在最后添加
export PATH=$PATH:/usr/local/go/bin
# source
source /etc/profile
二进制包安装prometheus
https://github.com/prometheus/prometheus/releases/download/v2.13.0/prometheus-2.13.0.darwin-amd64.tar.gz
解压到/usr/local目录下
[root@proxy1 ~]# tar -zxvf prometheus-2.13.0.darwin-amd64.tar.gz -C /usr/local/
4.配置
prometheus作为一个时间序列数据库,其采集的数据会以文件的形式存储在本地,默认的存储路径为安装目录: data/,因此我们需要先手动创建该目录
[root@proxy1 ~]# mkdir /usr/local/prometheus-2.13.0.darwin-amd64/data
也可以通过参数--storage.tsdb.path="data/" 修改本地数据存储的路径
启动prometheus服务器,默认会加载安装目录下的prometheus.yaml文件
./prometheus
可以使用浏览器访问9090端口
Node Exporter
在prometheus的架构中,prometheus server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持;因此,为了能够监控到某些东西,如主机的CPU使用率,我们需要使用到exporter;
prometheus周期性的从exportser暴露的http服务地址(通常是/metrics)拉取监控样本数据;
exporter可以是一个相对开放的概念,其可以是一个独立运行的程序独立于监控目标以为,也可以是直接内置在监控目标中;只要能够向prometheus提供标准格式的监控样本数据即可;
使用node exporter采集linux主机的数据,如CPU、内存、磁盘等
步骤:
# 直接下载二进制包解压即可
[root@proxy1 ~]# tar -zxvf node_exporter-1.0.1.linux-amd64.tar.gz -C /usr/local/
[root@proxy1 ~]# cd /usr/local/node_exporter-1.0.1.linux-amd64/
[root@proxy1 node_exporter-1.0.1.linux-amd64]# mv node_exporter /usr/local/bin/
# 启动
[root@proxy1 ~]# /usr/local/bin/node_exporter &
[root@proxy1 ~]# chmod +x /etc/init.d/node_exporter
[root@proxy1 ~]# service node_exporter start
# 访问9100端口验证
修改prometheus配置文件
使其能够从当前node exporter获取到监控数据
#编辑prometheus.yml文件,在scrape_configs节点下添加:
# 采集node exporter监控数据
- job_name: 'linux'
static_configs:
- targets: ['localhost:9100']
重新启动prometheus,浏览器访问输入 up 验证
如果prometheus能够正常从node exporter获取数据,则会看到:
up{instance="localhost:9090",job="prometheus"} 1
up{instance="localhost:9100",job="linux"} 1
1表示正常
使用PromQL查询监控数据
Prometheus UI是prometheus内置的一个可视化管理界面,通过prometheus UI用户能够轻松的了解prometheus当前的配置,监控任务运行状态等;通过graph面板,可以直接使用promql实时查询监控数据;
通过promql我们可以非常方便的对数据进行查询、过滤以及聚合、计算等操作,通过对这些丰富的表达式语句,监控指标不再是一个单独存在的个体,而是一个个能够表达出正式业务含义的语言;
使用Grafana创建可视化Dsahboard
prometheus UI提供了快速验证PromQL以及临时可视化支持的能力,而在大多数场景下引入监控系统通常还需要构建长期使用的监控数据可视化面板(Dsahboard);
可以考虑使用第三方的可视化工具如Grafana;
1.Grafana是什么?
Grafana是一个开源的可视化平台,并且提供了对prometheus的完整支持;
2.基本按照部署
官方下载地址:https://grafana.com/grafana/download
centos安装步骤:
wget https://dl.grafana.com/oss/release/grafana-7.3.1-1.x86_64.rpm
sudo yum install grafana-7.3.1-1.x86_64.rpm
启动服务:
[root@proxy1 ~]# systemctl start grafana-server
默认端口为3000
默认用户名密码都为admin