1.安装Prometheus
Prometheus(普罗米修斯)是一个系统和服务的监控系统。它以在给定的时间间隔从配置的目标收集指标数据,评估规则表达式,显示结果。并可以在观察到指定条件时触发警报。Prometheus 于 2016 年加入云原生云计算基金会(CNCF),成为继 kubernetes 之后的第二个项目,是当下容器监控的主流方案。
Prometheus是由 go 语言编写而成,采用 pull 方式获取监控的数据信息,并提供了多维度的数据模型和灵活的查询接口。Prometheus 不仅可以通过静态文件配置监控对象,还支持自动发现机制,能够通过 Kubernetes,Consul,DNS等多种方式动态获取监控对象。在数据采集方面,借助 go语言的高并发特性,单机Prometheus 可以采集数百个节点的监控数据;在数据存储方面,随着本地时序数据库的不断优化,单机 Prometheus 每秒可以采集一千万个指标,如果需要存储大量的历史监控数据,则还支持远端存储。
来看看它的架构及其一些生态系统组件:
下面我们来安装一下:
1.下载地址:
https://prometheus.io/download/
2.上传到服务器并解压:
tar -zxvf prometheus-2.29.1.linux-amd64.tar.gz
3.文件夹名字太长,重命名一下:
mv prometheus-2.29.1.linux-amd64 prometheus-2.29.1
4.启动prometheus:
cd prometheus-2.29.1
./prometheus --config.file="/data/prometheus/prometheus-2.29.1/prometheus.yml" &
5.检测是否启动成功:
//有以下三种方式可以检测
//1.查看端口情况
ss -naltp |grep 9090
//2.curl命令查看
curl http://localhost:9090/
//3.浏览器访问
http://公网ip:9090/
2.安装Grafana
Grafana 是一个可视化面板,用来搭配 Prometheus 使用。有着非常漂亮的图表和布局展示;功能齐全的度量仪表盘和图形编辑器;支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB等等作为数据源;还可以设置钉钉、邮件报警。
1.wget方式下载安装包:
wget https://dl.grafana.com/oss/release/grafana-8.1.2-1.x86_64.rpm
2.安装rpm包:
sudo yum install grafana-8.1.2-1.x86_64.rpm
3.启动grafana:
service grafana-server start
4.访问grafana网址:
//初始账号密码:admin/admin
http://公网ip:3000/
3.监控服务器各项指标
这一步需要利用 node_exporter ,它用于服务器各项指标的监控,是一个使用Go语言编写的收集器。
1.下载node_exporter:
wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
2.解压:
tar -zxvf node_exporter-1.2.2.linux-amd64.tar.gz
3.由于文件名太长,改个名:
mv node_exporter-1.2.2.linux-amd64 node_exporter
4.赋予执行权限:
chmod 777 /data/prometheus/node_exporter/node_exporter &
5.后台运行:
nohup ./node_exporter --web.listen-address=":9100"&
6.检测是否运行成功:
ss -naltp |grep 9100
7.修改prometheus的配置文件,增加如下配置
- job_name: '节点名称'
static_configs:
- targets: ['机器ip:9100']
8.杀掉原prometheus服务,重新启动,让配置生效:
pkill prometheus
./prometheus --config.file="/data/prometheus/prometheus-2.29.1/prometheus.yml" &
9.访问prometheus网址,可以看到,已经检测到刚添加的节点已经处于up状态:
10.在grafana中添加prometheus数据源:
11.grafana提供了面板生态,上面有一些开箱即用的模版。我们可以直接拿来用,不用自己去配置自定义面板:
https://grafana.com/grafana/dashboards?search=node_exporter
搜索node_exporter,这里我们选第一个,拿到对应的id:8919
导入dashboard模版,id:8919
到这一步面板就添加好了,进入面板就可以看到如下花里胡哨的监控大盘:
其他:除了监控服务器的各项指标,也可以监控mysql、es、redis等等中间件。只需要去下载安装对应的收集器即可。
当然也可以整合 springboot 监控 jvm 的各项指标,这里就不详细讲如何操作了,感兴趣的话可以自行学习,我有空的时候再补充一下,不懂的地方可以私聊我。效果如下图所示:
4.钉钉报警
接下来我们就来讲讲:如何设置内存达到一定阀值时进行钉钉报警吧。
- 首先找到你要接收报警的钉钉群,添加一个机器人:
2.将webhook的url地址复制出来,在 grafana 控制台,左边栏”Alerting“模块,新建一个通知渠道。
3.新建一个自定义的dashboard和panel ,进入编辑模式
先填入计算内存百分比的PromQL,然后配置报警规则后保存
4.到这里警报就配置完了,开启警报后,当内存使用达到百分之70以上时就会收到钉钉机器人的报警了。