文件名称 | 版本号 | 作者 | 版本 | |
---|---|---|---|---|
Prometheus普罗米修斯监控的使用 | v1.0.5 | 若布与宫合 | 8416837 | go1.12.5.linux-amd64 prometheus-2.22.0.linux-amd64 node_exporter-1.0.1.linux-amd64 google/cadvisor:latest grafana-7.2.2-1.x86_64.rpm |
效果
安装完毕后,监控效果:
概论
简介
Prometheus
提供全类型的Exporter用于采集数据,支持数据库、硬件、MQ、其它存储系统、网络服务器等。更支持定制开发,可基于Prometheus提供的Client Library创建自己的Exporter程序。
主要工作原理:prometheus作为集中式的数据规整管理、聚合。cAdvisor、exporter作为数据采集,被prometheus轮询调用获取准实时数据,之后套上grafana界面壳。
用途
应用、数据库、硬件以及组件的监控。
安装
需安装啥
分为监管机与被监管机,当然监管机也可以是被监管机
prometheus | exporter | cAdvisor | grafana | 备注 | |
---|---|---|---|---|---|
监管机 | √ | √ | 看情况 | √ | 整合数据 |
被监管机 | —— | √ | Docker√ | —— | 采集数据 |
Win OS 安装待续
Linux OS安装
安装golang
# 下载之后,将go安装包放置好。执行解压命令。解压到/usr/local便于管理;
sudo tar -C /usr/local/ -xvzf go1.12.5.linux-amd64.tar.gz
# vim /etc/profile 增加下述内容
# 定义环境变量常量
GO_HOME=/usr/local/go
# 增加到path集合,加上$PATH
PATH=$GO_HOME/bin:$PATH
# 导出path(已有)
export PATH
# 注入
source /etc/profile
# 检查
go version
Prometheus
Docker安装Prometheus待续,另下文的cAdvisor使用Docker跑
Docker安装的原理其实和安装包安装是一样的,只不过它集成了依赖甚至OS,兼容性更强,另外,通过Docker安装prometheus、grafana后,便于通过Docker进行横向扩展、监控等,以便对整体把控。
安装包安装
下载
在国内镜像站下载
名称:prometheus-2.22.0.linux-amd64.tar.gz
安装
# 解压
sudo tar -xvzf prometheus-2.22.0.linux-amd64.tar.gz -C /usr/local/
# 备份原版配置文件
sudo cp /usr/local/prometheus-2.22.0.linux-amd64/prometheus.yml /usr/local/prometheus-2.22.0.linux-amd64/prometheus.yml._back-up_202010220946
# 软链接
ln -sv /usr/local/prometheus-2.22.0.linux-amd64/ /usr/local/Prometheus
# 修改配置文件 配置被监控的名称和地址(tcp)根据提示,很容易看懂。# 最好在图形界面编辑
sudo vim /usr/local/prometheus-2.22.0.linux-amd64/prometheus.yml
配置
- 上文也简略提到了监控的配置文件,配置的种类很多,如监控linux server,抑或server上面的app,所使用的的监控包是不同的,这就是下文提到的exporter。
- 比如,要监控服务器,就安装节点服务器exporter:
node_exporter-1.0.1.linux-amd64.tar.gz
,→下文提供下载地址。 - 根据提示,修改这个配置文件的job项:
sudo vim /usr/local/prometheus-2.22.0.linux-amd64/prometheus.yml
,填入ip、端口、job名称等,以便普罗米修斯采集。
启动
# 前台启动
cd /usr/local/prometheus-2.22.0.linux-amd64;./prometheus
# 后台启动 【注意日志级别,否则日志增速很快】
nohup ./prometheus > 日志||/dev/null 2>&1 &
启动成功,下面一行日志是:caller=main.go:684 msg="Server is ready to receive web requests."
使用
浏览地址:http://192.168.4.65:9090/targets
如果配置不正确,则监控不到:
技术要点说明
在
主机安装node_exporter程序,对外暴露用于获取当前监控样本数据的http地址, 称为target, prometheus application【轮询】target获取监控数据。与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取。
Prometheus
提供多种类型的Exporter用于采集不同服务的状态。支持数据库、硬件、消息中间件、存储系统、HTTP服务器等。也可以进行自定义开发,还可以基于Prometheus提供的Client Library创建自己的Exporter程序,目前Promthues社区官方提供了对以下编程语言的支持:Go、Java/Scala、Python、Ruby。同时还有第三方实现的如:Bash、C++、Common Lisp、Erlang,、Haskeel、Lua、Node.js、PHP、Rust等。
与
翻译机类似。
设置报警
被监控的主机必须安装:exporter(有各种类型)
要监控应用、数据库、硬件还是组件,就安装对应的exporter
.
下载
安装
sudo tar xvzf node_exporter-1.0.1.linux-amd64.tar.gz -C /usr/local/
运行,它是个进程
# 启动
nohup /usr/local/node_exporter-1.0.1.linux-amd64/node_exporter > /dev/null 2>&1 &
# 查看状态
netstat -tlnp|grep 9100
设置报警规则
见报警文档
grafana Dashboard
下载安装
安装日志👇,有不少依赖要装
CENT OS
# wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.3-1.x86_64.rpm
# latest
wget https://mirrors.tuna.tsinghua.edu.cn/grafana/yum/rpm/grafana-7.2.2-1.x86_64.rpm
# sudo yum localinstall grafana-5.2.3-1.x86_64.rpm
sudo yum -y localinstall grafana-7.2.2-1.x86_64.rpm
# 上一步安装完毕后,根据grafana的日志提示命令↓:将其作为系统服务之一,并启动
sudo /sbin/chkconfig --add grafana-server;
# 启动
sudo service grafana-server start # 这样,断电后也能自动启动
# 启停命令↓
其它
启停命令
# 查看帮助可知
sudo service grafana-server start|stop|restart|force-reload|status
# 检测是否启动
netstat -tlnp|grep 3000
- 登录 初始a/p:admin/admin
登录后,请你设置新pw
配置 主要是添加数据源 选择 prometheus
先找到齿轮icon
输入prometheus的数据源地址,其它配置暂时默认:
允许嵌入 允许匿名访问(分享时)
sudo vim /etc/grafana/grafana.ini(centos rpm是安装到这个目录)
# 允许iframe嵌入:allow_embedding=true
# 免密:搜索[auth.anonymous] 改为:enabled = true
访问
分享,嵌入到其它网页或UI里面
分享的意思是将仪表盘的链接以iframe的形式嵌入web ui。
1)找到仪表盘的标题,单击,弹出管理窗口,
2)注意修改url参数👇
3)嵌入到其它网站后的效果:
导入监控模板
下载节点监控模板
下载对应的json,在grafana仪表盘管理模块,import下载的json,根据提示选择prometheus和其它组件,确定后效果就出来了。
浏览并下载模板
带饼图的模板
饼图+容器监控
监控效果:
- 硬件:
- Docker:
对Docker容器进行监控
前置条件
安装cAdvisor - Docker
docker run -d \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8090:8080 \
--detach=true \
--name=cadvisor \
-v "/etc/localtime:/etc/localtime" \
google/cadvisor:latest
注意,宿主机端口使用8090
默认网络,若加入指定网络(host):--net=host \
- 检测是否启动成功:
netstat -tlnp|grep 8090
界面
-
启动后,cAdvisor也有个界面,但是我们主要使用prometheus的数据聚合和grafana的界面。
cAdvisor的地址和界面:
http://ip:8090/containers/
-
将jobName、ip、port配置到Prometheus任务,下载Docker监控模板查看监控效果👇
解决问题
不采集数据
修正系统时间
没有数据
- 普罗米修斯日志报错::9090/metrics msg=“Error on ingesting samples that are too old or are too far into the future” num_dropped=608
- 可能因为断电导致时间问题
- 解决办法:
第一步,新建目录mkdir
cd /usr/local/prometheus-2.22.0.linux-amd64;mkdir tsdb_data
第二步,启动,指定ts目录↓
# 创建一个新的 tsdb 数据目录
# 启动时指定 tsdb
nohup /usr/local/prometheus-2.22.0.linux-amd64/prometheus \
--config.file="/usr/local/prometheus-2.22.0.linux-amd64/prometheus.yml" \
--storage.tsdb.path="/usr/local/prometheus-2.22.0.linux-amd64/tsdb_data" \
--web.enable-lifecycle \
--web.enable-admin-api > /dev/null 2>&1 &
- 另一种写法:不带斜杠 换行
nohup /usr/local/prometheus-2.22.0.linux-amd64/prometheus --config.file=/usr/local/prometheus-2.22.0.linux-amd64/prometheus.yml --storage.tsdb.path=/usr/local/prometheus-2.22.0.linux-amd64/tsdb_data --web.enable-lifecycle --web.enable-admin-api > /dev/null 2>&1 &