Prometheus 配置收集服务器和应用服务信息详解

一、Prometheus 监控系统状态
  1. 假设有一台应用服务器,你想时刻获取它运行时的参数和状态,比如:CPU 负载、系统负载、内存消耗、硬盘使用量、网络 IO 等等,那么这些都可以使用 node_exporter 来收集,并通过 Prometheus 来提供收集和展示

  2. 进入应用服务器下载规划目录,下载 最新版本的 node_exporter 组件

    # 进入系统规划目录
    cd /usr/local/src
    
    # 下载最新版本的 node_exporter
    wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-amd64.tar.gz  
    
    # 解压到规划安装目录
    tar -zxvf node_exporter-1.0.1.linux-amd64.tar.gz -C ../prometheus
    
    # 重命名 node_exporter
    cd /usr/local/prometheus
    mv node_exporter-1.0.1.linux-amd64/ node_exporter-1.0.1
    
    # 后台启动 node_export 
    nohup ./node_exporter &
    
  3. 通过 http://ip:9100/metrics 即可访问到 node_exporter 收集到的系统信息

    # 开放 node_exporter 默认端口 9100 ,提供给 Prometheus 收集系统信息
    firewall-cmd --zone=public --add-port=9100/tcp --permanent
    
    firewall-cmd --reload
    

    在这里插入图片描述

  4. node_exporter 自定义参数参考

    • node_exporte 基本信息配置

      # node_exporter监听的端口,默认是9100,若需要修改则通过此参数。
      --web.listen-address=":9100"  
      
      # 获取metric信息的url,默认是/metrics,若需要修改则通过此参数
      --web.telemetry-path="/metrics"  
      
      # 设置日志级别
      --log.level="info" 
      
      # 设置打印日志的格式,若有自动化日志提取工具可以使用这个参数规范日志打印的格式
      --log.format="logger:stderr"  
      
    • 通过正则表达式来屏蔽或选择某些监控项

      # 通过正则表达式忽略某些磁盘的信息收集
      --collector.diskstats.ignored-devices="^(ram|loop|fd|(h|s|v|xv)d[a-z]|nvme\\d+n\\d+p)\\d+$"
      
      # 通过正则表达式忽略某些文件系统挂载点的信息收集
      --collector.filesystem.ignored-mount-points="^/(dev|proc|sys|var/lib/docker/.+)($|/)"  
      
      # 通过正则表达式忽略某些文件系统类型的信息收集
      --collector.filesystem.ignored-fs-types="^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$"  
      
      # 通过正则表达式忽略某些网络类的信息收集
      --collector.netclass.ignored-devices="^$"  
      
      # 通过正则表达式忽略某些网络设备的信息收集
      --collector.netdev.ignored-devices="^$"  
      
      # 通过正则表达式配置需要获取的网络状态信息
      --collector.netstat.fields="^$"
      
      # 通过正则表达式配置vmstat返回信息中需要收集的选项 
      --collector.vmstat.fields="^(oom_kill|pgpg|pswp|pg.*fault).*" 
      
  5. 配置 Prometheus 来收集步骤 3 暴露出来的系统信息

    • 修改 Prometheusyml 文件,新增监控 node_exporter 收集的信息

      # 进入 Prometheus 挂载的 prometheus.yml 文件  
      vim /opt/docker/prometheus/prometheus.yml
      
      # 新增监控节点
        - job_name: 'node208-metircs'
          scrape_interval: 5s
          static_configs:
            - targets: ['192.169.5.208:9100']
      
    • 配置信息如下

      在这里插入图片描述

    • 重启 Prometheus

      docker restart prometheus
      
    • 查看 Prometheus 是否收集到了 node_exporter 的暴露的信息

      在这里插入图片描述

  6. 也可以通过官网提供的采用 Docker 方式安装 node_exporter ,但是为了更加精确的监控系统指标,建议采用以上方式进行安装

二、Prometheus 监控数据库状态
  1. 假设有一台 MySQL 数据库实例的服务器,你需要监控它的运行指标,我们可以在数据库实例的服务器上安装 mysql_exporter 来监控该服务器上 MySQL 实例的状态

  2. 进入 MySQL 服务器的规划下载目录,下载 最新版本的 mysql_exporter 组件

    # 进入系统规划目录
    cd /usr/local/src
    
    # 下载最新版本的 mysql_exporter
    wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
    
    # 解压到规划安装目录
    tar -zxvf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C ../prometheus
    
    # 重命名 node_exporter
    cd /usr/local/prometheus
    mv mysqld_exporter-0.12.1.linux-amd64/ mysqld_exporter-0.12.1
    
  3. root 用户登录需要被监控的 MySQL 数据库实例,创建监控账户

    # 登录数据库
    mysql -u root -p
    
    # 创建监控数据库用户
    CREATE USER 'exporter'@'%' IDENTIFIED BY '123456' WITH MAX_USER_CONNECTIONS 3;
    
    # 为用户赋权
    GRANT PROCESS,REPLICATION CLIENT,SELECT ON *.* TO 'exporter'@'%';
    
    # 刷新配置
    FLUSH PRIVILEGES;
    
  4. 启动 mysql_exporter

    # 在解压后 mysql_exporter 根目录创建 .my.conf 文件并配置数据库连接信息
    vim /usr/local/prometheus/mysqld_exporter-0.12.1/.my.conf
    
    # 配置连接信息如下
    [client]
    host=192.169.5.207
    user=exporter
    password=123456
    
    [mysqld]
    port=8001
    
    # 后台启动
    #(非必要) export DATA_SOURCE_NAME='exporter:123456@(192.169.5.207:8001)/'
    nohup /usr/local/prometheus/mysqld_exporter-0.12.1/mysqld_exporter --config.my-cnf='/usr/local/prometheus/mysqld_exporter-0.12.1/.my.cnf' &
    
    # 查看启动状态
    ss -antpl | grep 9104
    
  5. 开放 9104 端口后访问 http://ip:9104 效果如下

    firewall-cmd --zone=public --add-port=9104/tcp --permanent
    
    firewall-cmd --reload
    

    在这里插入图片描述

  6. 也可以编写 mysql_exporter.service 文件来通过 systemctl 控制启停操作

  7. 修改 prometheusyml 配置文件,收集 步骤 5 暴露出来的信息

    • 修改 prometheusyml 文件,新增监控 mysql_exporter 收集的信息

      # 进入 Prometheus 挂载的 prometheus.yml 文件  
      vim /opt/docker/prometheus/prometheus.yml
      
      # 新增监控节点
        - job_name: 'node207-mysql'
          scrape_interval: 5s
          static_configs:
            - targets: ['192.169.5.207:9104']
      
    • 配置信息如下

      在这里插入图片描述

    • 重启 Prometheus

      docker restart prometheus
      
    • 查看 Prometheus 是否收集到了 node_exporter 的暴露的信息

      在这里插入图片描述

  8. 也可以通过官网提供的采用 Docker 方式安装 node_exporter

三、Prometheus 监控应用状态
  1. 在应用程序的 pom 文件中添加 MicrometerPrometheus 的桥梁

    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-prometheus</artifactId>
        <!-- 此处的版本一定要和 Prometheus 兼容(浏览器访问 http://appip:port/actuator/prometheus  应用程序控制台不报错) -->
        <version>1.3.6</version>
    </dependency>
    
  2. 在启动类添加 MeterRegistryCustomizer 配置信息

    @Bean
    MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName) {
        // 此处的配置名称将会在 Prometheus 的控制面板显示
        return (registry) -> registry.config().commonTags("application", applicationName);
    }
    

    P.S

    官方参考文献

  3. 在应用程序的配置信息中暴露注册信息

    # 暴露注册信息
    management:
      endpoints:
        web:
          exposure:
            include: '*'
      endpoint:
        health:
          show-details: always
    
  4. 启动应用程序并访问 http://appip:port/actuator/prometheus

    在这里插入图片描述

  5. 配置 Prometheus 来收集步骤 4 暴露出来的系统信息

    • 修改 Prometheusyml 文件,新增监控 node_exporter 收集的信息

      # 进入 Prometheus 挂载的 prometheus.yml 文件  
      vim /opt/docker/prometheus/prometheus.yml
      
      # 新增监控节点
      - job_name: 'rms-console-service'
          # 由于默认 pull 的 uri 是 metrics 所以这里要指定 uri
          metrics_path: '/actuator/prometheus'
          scrape_interval: 5s
          static_configs:
            - targets: ['192.169.5.247:9002']
      
    • 配置信息如下

      在这里插入图片描述

    • 重启 Prometheus

      docker restart prometheus
      
    • 查看 Prometheus 是否收集到了 node_exporter 的暴露的信息

      在这里插入图片描述

四、其它监控组件
  • prometheus 为我们提供了许多监控组件,点击此处 查看组件的具体功能和用法
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值