prometheus+node-exporter+grafana 监控服务器系统资源

版本及环境介绍
iphostname服务
172.18.138.10guojingprometheus、grafana
172.18.138.8zunshangnode-exporter
各节点systemd 管理相关服务

此部署过程跳过

prometheus 配置文件修改
prometheus.yml 修改成如下 

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.
    static_configs:
      - targets: ["guojing:9090"]
    relabel_configs:
      - source_labels: [ "__address__" ]
        regex: "(.*):(.*)"
        target_label: "instance"
        replacement: $1

  - job_name: "node-exporter"
    scrape_interval: 15s
    scrape_timeout: 10s
    file_sd_configs:
    - files:
      - node-info.yml
    relabel_configs:
      - source_labels: [ "__address__" ]
        regex: "(.*):(.*)"
        target_label: "instance"
        replacement: $1

node-info.yml 配置文件

[root@guojing prometheus]# cat node-info.yml 
- targets: ["zunshang:9100","luodiyebei:9100","luodiyezhu:9101","dingdan:9100","guanggao:9100","guojing:9100"]

重新加载prometheus配置文件

[root@guojing prometheus]# netstat -tunlp|grep prometheus
tcp        0      0 172.18.138.10:9090      0.0.0.0:*               LISTEN      6094/prometheus 
kill -1 6094

在这里插入图片描述

grafana 展示 及 告警

展示job为node-export 所有服务器的系统资源信息

https://img-blog.csdnimg.cn/b8ce6950b932437abb75451263af3d0d.png

展示job为node-export dingdan服务器的系统资源信息

在这里插入图片描述

系统资源模板下载

该模板导入过程跳过

使用grafana自带的邮件告警

在这里插入图片描述
由于该模板使用变量,告警无法使用

解决方法:在查询语句中用确定的值

用上述模板重新导入一份dashbord

修改查询语句

在这里插入图片描述

原查询语句

在这里插入图片描述

alert 配置介绍

在这里插入图片描述

  1. 定义规则名称
  2. 每隔多少时间评估
  3. 如果警报规则已配置并且查询违反了配置的阈值,则它会从 OK 变为 Pending。Grafana 不会针对该更改发送任何通知。一旦警报规则的触发时间超过持续时间,警报就会更改为 Alerting 并发送警报通知。 超过设置阈值的持续时间
  4. 查询的类型,可选项有很多,最大值、最小值、平均值等等
  5. (A,1m,now)A 是Query的查询语句得到的值,如A,B,C,D。 1m,now 指的是当前查询语句1min内的平均值、最大值、最小值等等。
    在这里插入图片描述
  6. 设定的阈值 ,可选项有高于、低于、超出范围,在范围内等
node-exporter 查询语句详解
  1. 查询磁盘利用率
round((1 - (node_filesystem_avail_bytes{fstype=~"ext3|ext4|xfs|nfs"} / node_filesystem_size_bytes{fstype=~"ext3|ext4|xfs|nfs"} ))* 100)

node_filesystem_avail_bytes: 可用磁盘空间字节
node_filesystem_size_bytes:磁盘总空间字节
fstype=~“ext3|ext4|xfs|nfs”:通配相关的文件系统
round():四舍五入为最接近的整数
磁盘使用率 =( 1 - 可用磁盘空间字节/磁盘总空间字节 ) * 100

  1. 查询cpu利用率
(1 - (sum(increase(node_cpu_seconds_total{mode="idle"}[1m]))by (instance) )  / (sum(increase(node_cpu_seconds_total[1m])) by (instance) )) * 100 

increase(node_cpu_seconds_total{mode=“idle”}[1m]):cpu空闲时间1分钟内增量
increase()[1m]: 表示变量在1分钟产生增量
sum(increase(node_cpu_seconds_total{mode=“idle”}[1m]))by (instance):每一个服务器所有的cpu空闲时间的总合
sum() by (instance): 先把所有的服务器空闲时间加在一起,在以 instance 标签 分开统计(即每台服务器)
node_cpu_seconds_total:cpu 所有类型时间的总合如下图所示
在这里插入图片描述
cpu 利用率 = 1 - 空闲cpu利用率

  1. 查询服务器负载
node_load1{}  #1分钟负载
node_load5{}  #5分钟负载
node_load15{} #15分钟负载
  1. 查询内存使用率
ceil((1 - (node_memory_MemAvailable_bytes{} / (node_memory_MemTotal_bytes{})))* 100 )

node_memory_MemAvailable_bytes{}:内存可用字节数
node_memory_MemTotal_bytes{}):内存最大字节数
ceil: 向上取整数

内存使用率= (1 - 内存可用字节数/内存最大字节数) * 100

  1. 文件句柄打开数
node_filefd_allocated{}
  1. 等待关闭的TCP连接数
node_sockstat_TCP_tw{}
  1. 网络流量流出 Mb/s
irate(node_network_transmit_bytes_total{instance="guojing",device!~"tap.*|veth.*|br.*|docker.*|virbr*|lo*"}[5m])*8 /1024/1024
  1. 网络流量流入 Mb/s
(irate(node_network_receive_bytes_total{instance="guojing",device!~"tap.*|veth.*|br.*|docker.*|virbr*|lo*"}[5m]))*8 / 1024 /1024
  1. 磁盘读 KB/s
sum (irate(node_disk_read_bytes_total{device!~"dm-0"}[5m]) /1024) by (instance)
  1. 磁盘写 KB/s
sum (irate(node_disk_read_bytes_total{device!="dm-0"}[5m]) /1024) by (instance)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值