Linux集群监控部署: prometheus 普罗米修斯 + Grafana(超详细)

Posted 七月的小尾巴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 主要是用于数据展示,并且可以做到定时读取数据

部署前的准备

  1. 关闭所有Linux机器的防火墙:systemctl stop firewalld.service
  2. 保证所有Linux机器的时间是准确的,执行date命令检查;如果不准确,建议使用
  3. 如果你Linux上的时间不准确,可以使用ntp命令同步网络时间
# 首先 ntp需要安装
yum install -y ntp 

# 安装成功之后,输入如下命令
ntpdate pool.ntp.org 

部署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://github.com/prometheus/prometheus/releases/download/v2.15.2/prometheus-2.15.2.linux-amd64.tar.gz.

  2. 将prometheus上传到一台单独的Linux机器上,执行解压操作 tar xvf prometheus-2.15.2.linux-amd64.tar.gz

  3. 进入到解压后的文件夹中,修改配置文件,添加要监控的服务器信息ip

    vi prometheus.yml 
    

    在scrape_configs配置项下添加Linux监控的job,其中 IP修改为上面部署 node_exporter机器的ip,端口号为9100,注意缩进

    - job_name: 'node'  
      static_configs:  
      - targets: ['10.0.0.71:9100'] 
    

  4. 保存配置文件,启动prometheus

    nohup ./prometheus &
    // 检查nohup.out日志,如果有以下信息,启动成功 
    


    在浏览器中访问部署的prometheus:http://{ip}:9090

点击菜单栏“Status-Targets”,看到页面中有如下node节点,代表prometheus和node_exporter链接成功

![在这里插入图片描述](https://img-blog.csdnimg.cn/c3f6a93659fd4cb380243680f7509962.png

部署Grafana

  1. 下载安装grafana,(和prometheus同一台服务器)输入命令安装
wget https://dl.grafana.com/oss/release/grafana-8.0.6-1.x86_64.rpm


10. 安装grafana

yum localinstall -y grafana-6.5.3-1.x86_64.rpm
  1. 启动 grafana
systemctl start grafana-server 
  1. 在浏览器访问:http://{ip}:3000/
  2. 输入用户名/密码:admin/admin登录 ,首次会让你设置密码。如果不设置的话,可以直接点击skip

  1. 登录之后,会显示下面的页面,点击添加数据源

  1. 选择prometheus

  2. 直接添加监控的服务器ip+端口号,我们之前配置的是默认端口9090,添加点击保存即可,其他的都可以不填。

  3. 导入监控模板
    打开 grafana 官网,查找官网提供的 prometheus 监控模板
    链接: https://grafana.com/grafana/dashboards.

    点击 Linux 服务器监控的中文模板,记录该模板的 id:8919


    在 grafana 系统页面中,通过 id 导入该模板,即可在 grafana 中看到 10.0.0.71 机器的性能监控数据



将数据更新频率设置为 5s,展示最近 5 分钟的数据,就可以看到实时的、最近 5 分钟的各项性能指标。包含了 CPU、Load、内存、网络、磁盘、IO 耗时等指标。监控数据永久保存,可以随时查看任意时间点内的历史统计数据,非常方便。

如果使用的是grafana 6.x,需要下载他们的json文件,把table-old替换成table,再导入到grafana即可。否则可能会有点问题。


对数据库mysql监控

  1. 下载 MySQL 的 exporter
    链接: https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz.
  2. 上传至 MySQL 服务器上,解压包
tar xvf mysqld_exporter-0.12.1.linux-amd64.tar.gz
  1. 执行命令
export DATA_SOURCE_NAME='root:Test#123@(127.0.0.1:3306)/'

其中:
root 为数据库用户名
Test#123 为数据库密码
127.0.0.1 为数据库 IP
3306 为数据库端口号
  1. 启动 mysql exporter
    进入到解压后的文件夹中,执行命令

    nohup ./mysqld_exporter &
    

    监控 nohup.out 日志,输入 tail -f nohup.out ,有如下日志代表成功

  2. 启动成功之后,进入prometheus.yal 配置文件中,修改 prometheus 的配置文件 prometheus.yml

    vi prometheus.yml
    

    增加监控 MySQL 的 job(注意缩进格式)

- job_name: 'mysql'
  static_configs:
  - targets: ['10.0.0.71:9104']

targets 中的 IP 为 mysql_exporter 的 IP,端口号固定为 9104
重启 prometheus,进入 prometheus 的 UI 界面,在 status-targets 页面下,可以看
到 MySQL exporter 的状态

  1. 在 Grafana 中添加 MySQL 的监控模板
  2. 在 grafana 官网模板中找到 MySQL 监控模板 Mysql Overview,id 为 7362,并导入到 Grafana 中(具体操作步骤参考上面导入 Linux 监控模板操作)

    这样在 grafana 中,就可以轻松监控 MySQL 的连接数、内存、表锁、慢查询、网络、查询缓存等监控数据



以上是关于Linux集群监控部署: prometheus 普罗米修斯 + Grafana(超详细)的主要内容,如果未能解决你的问题,请参考以下文章

基于k8s集群部署prometheus监控etcd

K8S部署Prometheus+Grafana监控集群

Kubernetes(k8s)之在集群环境部署Prometheus(普罗米修斯监控)和集群的ui管理工具Grafana

Linux系统裸金属环境下部署prometheus监控

Kubernetes 集群和应用监控方案的设计与实践

Prometheus-Prometheus-Opterator中添加监控etcd集群