Linux集群监控部署: prometheus 普罗米修斯 + Grafana
前言
之前我们有用到top、free、iostat等等命令,去监控服务器的性能,但是这些命令,我们只针对单台服务器进行监控,通常我们线上都是一个集群的项目,难道我们需要每一台服务器都去敲命令监控吗?这样显然不是符合逻辑的,Linux中就提供了一个集群监控工具 – prometheus。
prometheus 监控原理
1、prometheus :虽然说是监控平台,但是实际上是一套数据库
2、mysql_exporter: 可以理解成程序或者软件,他是工作在我们要监控的目标服务器上,主要是用于监控mysql的数据。
3、node_exporter: 他的作用主要是收集性能测试的数据,如cpu、内存磁盘网络等信息,然后将数据保存到prometheus,相当于将数据存入到数据库中。
4、prometheus 只能用于做数据存储,不能做展示,因此我们需要用到grafana组件。
5、grafana 主要是用于数据展示,并且可以做到定时读取数据
部署Linux操作系统监控组件
1.下载监控Linux的exporter (注意选择自己的操作系统,我的操作系统是 Linux CentOS7)
链接: https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz .
2.将node_exporter包上传到需要被监控的Linux服务器上任意目录下,执行解压命令
tar xvf node_exporter-0.18.1.linux-amd64.tar.gz
3.进入到解压后的文件夹中,执行启动脚本
nohup ./node_exporter &
// 查看nohup日志:tail -100 nohup.out,出现如下日志,代表启动成功
部署prometheus
1.下载包 :
链接: https://prometheus.io/download/
2.将prometheus上传到一台单独的Linux机器上,执行解压操作 tar xvf prometheus-2.15.2.linux-amd64.tar.gz
3.进入到解压后的文件夹中,修改配置文件,添加要监控的服务器信息ip
vi prometheus.yml
4.在scrape_configs配置项下添加Linux监控的job,其中 IP修改为上面部署 node_exporter机器的ip,端口号为9100,注意缩进
- job_name: 'node'
static_configs:
- targets: ['10.0.0.71:9100']
5.保存配置文件,启动prometheus
nohup ./prometheus &
// 检查nohup.out日志,如果有以下信息,启动成功
6. 在浏览器中访问部署的prometheus:http://{ip}:9090
7.点击菜单栏“Status-Targets”,看到页面中有如下node节点,代表prometheus和node_exporter链接成功
部署Grafana 参考上篇Jmeter+Granfana+InfluxDB配置监控面板
1.点击添加数据源
2.选择prometheus
3.直接添加监控的服务器ip+端口号,我们之前配置的是默认端口9090,添加点击保存即可,其他的都可以不填。
4.导入监控模板
打开 grafana 官网,查找官网提供的 prometheus 监控模板
链接: https://grafana.com/grafana/dashboards/?search=Node+Exporter+for+Prometheus+Dashboard+
复制模板id12377 导入即可
效果展示
5. 配置监控多台服务器
实际环境中,现在的系统应用通常不止一台服务器,需要监控多台服务器则需要:
在对应的服务器上安装并启动node_exporter;
在prometheus的配置文件上增加对应服务器的配置;
vim prometheus.yml
# 要监控的server1的node_exporter 的 ip 和端口号填上
- job_name: 'server1'
static_configs:
- targets: ['server1的IP:9100']
# 要监控的server2的node_exporter 的 ip 和端口号填上
- job_name: 'server2'
static_configs:
- targets: ['server2的IP:9100']
然后在grafana的监控页面的Job下拉列表选择对应的server,就能看到对应server的监控数据了:
mysql监控后续补充