相关原文地址:
阿里云:小柒2012:Grafana+Prometheus打造全方位立体监控系统
简书:虫儿飞ZLEI:Prometheus+node_exporter+grafana打造spring boot项目的监控系统
简书:ihujian:docker 安装配置Prometheus+node_exporter+cadvisor



一、Grafana+Prometheus通过node_exporter监控Linux服务器信息

Grafana和Prometheus的安装不再赘述,可参考网上教程或本专栏内的其他文章。
直接讲解node_exporter部分。

1.1node_exporter下载

进入官网node_exporter
https://prometheus.io/download/#node_exporter
进行下载。

1.2解压

tar -zxvf ...node_exporter.tar.gz

1.3启动

解压后,进入到解压目录,启动node_exporter:

./node_exporter
#这种方式启动会将此进程启动到前台,当把当前的命令行关闭,这个进程也会跟着关闭,可以把进程启动到后台运行:
nohup ./node_exporter

nohup ./node_exporter> nodeout.file 2>&1 &
#终端输出存会放在当前目录下的nodeout.file文件中

1.4node_exporter的常用配置项详解

通常,我们使用./node_exporter来启动node_exporter。但是node_exporter其实存在很多内置参数,下面是常用的参数详解。

1.4.1node_exporte基本信息配置

--web.listen-address=":9100"  
#node_exporter监听的端口,默认是9100,若需要修改则通过此参数。

--web.telemetry-path="/metrics"  
#获取metric信息的url,默认是/metrics,若需要修改则通过此参数

--log.level="info" 
#设置日志级别

--log.format="logger:stderr"  
#设置打印日志的格式,若有自动化日志提取工具可以使用这个参数规范日志打印的格式

修改node_exporter启动端口:

nohup ./node_exporter> nodeout.file 2>&1 --web.listen-address=":9101" &  

1.4.2通过正则表达式来屏蔽或选择某些监控项

--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="^$"
 #通过正则表达式配置需要获取的网络状态信息
 
--collector.vmstat.fields="^(oom_kill|pgpg|pswp|pg.*fault).*" 
#通过正则表达式配置vmstat返回信息中需要收集的选项

1.5将node_exporter配置到Prometheus中

修改Prometheus的配置文件:

vi /prometheus/prometheus.yml

增加一个job,target是node_exporter的9100的地址:
Grafana+Prometheus通过node_exporter监控Linux服务器信息_Linux系统
注意是增加一个job,不是覆盖,之前Prometheus的job不动

重新启动Prometheus。

1.6 Docker方式启动node_exporter

创建一个docker 网络,然后将prometheus和node_exporter 加入到这个网络中

docker network create -d bridge my-net
docker run -d -p 9090:9090 --name prometheus --network my-net -v ~/prom/prometheus.yml:/etc/prometheus/prometheus.yml quay.io/prometheus/prometheus

当设置了–net=host时,如果在加-p或者-P,则不会管用。

docker run -d --net="host" --pid="host" --name=node-exporter -v "/:/host:ro,rslave" quay.io/prometheus/node-exporter --path.rootfs /host

修改Prometheus.yml。

global:
  scrape_interval:     15s # By default, scrape targets every 15 seconds.
  evaluation_interval: 15s # By default, scrape targets every 15 seconds.

rule_files:
  - "rules/rule.yml"

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['127.0.0.1:9090']
  - job_name: 'node'
    scrape_interval: 8s
    static_configs:
      - targets: ['127.0.0.1:9100']

job_name为node 服务发现的targets应该是机器的外部ip + hostPort

二、Prometheus+node_exporter+grafana打造spring boot项目的监控系统

Prometheus,Grafana安装不再追诉,参照网上教程或本专栏内相关博文,node_exporter参照Title 一。

2.1集成Prometheus到spring boot项目,并利用Prometheus的查询页面查询spring boot项目的监控数据

添加Maven

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
        </dependency>

添加配置

management:
  endpoints:
    web:
      exposure:
        include:  '*'
  metrics:
    tags:
      application: ${spring.application.name}

在spring boot启动类下添加一个bean

public class BaseMainApp {
    public static void main(String[] args) {
        SpringApplication.run(BaseMainApp.class, args);
    }

    //看这里
    @Bean
    MeterRegistryCustomizer<MeterRegistry> configurer(@Value("${spring.application.name}") String applicationName) {
        return (registry) -> registry.config().commonTags("application", applicationName);
    }
}

配置Prometheus的yml配置文件,添加job

Grafana+Prometheus通过node_exporter监控Linux服务器信息_Linux教程_02

然后重新启动Prometheus。

拦截器的坑

如果你的spring boot设置了拦截器对访问的url进行拦截的话,一定要记得将下面这个地址开放出来,不然虽然采集到了数据,但是这些数据无法访问的话,Prometheus的查询就查询不到。

Grafana+Prometheus通过node_exporter监控Linux服务器信息_Linux系统_03

配置Grafana

Grafana配置同node_exporter。
import dashboard id 4701。

关于dashboard

dashboard的网址https://grafana.com/dashboards

三、搭建相关教程博文

阿里云:小柒2012:Grafana+Prometheus打造全方位立体监控系统

简书:虫儿飞ZLEI:Prometheus+node_exporter+grafana打造spring boot项目的监控系统