介绍
Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包。从2012年开始,许多公司和组织开始使用Prometheus。该项目的开发人员和用户社区非常活跃,越来越多的开发人员和用户参与到该项目中。目前它是一个独立的开源项目,且不依赖与任何公司。为了强调这点和明确该项目治理结构,Prometheus在2016年继Kurberntes之后,加入了Cloud Native Computing Foundation。
安装步骤
- 安装prometheus,监控服务
- 安装node-exporter,节点数据收集服务
- 安装alertmanager,报警服务
- 安装grafana,图形化展示服务
一、安装prometheus
# 下载 wget https://github.com/prometheus/prometheus/releases/download/v2.12.0/prometheus-2.12.0.linux-amd64.tar.gz tar xf prometheus-2.12.0.linux-amd64.tar.gz cd prometheus-2.12.0.linux-amd64 # 根据下面yml配置文件配置需要信息 vim prometheus.yml # 启动 ./prometheus # 访问prometheus http://192.168.1.24:9090
配置修改:prometheus.yml
global: # 每隔15秒向pushgateway采集一次指标数据 scrape_interval: 15s # 每隔15秒根据所配置的规则集,进行规则计算 evaluation_interval: 15s alerting: alertmanagers: - static_configs: # 设置altermanager的地址,altermanager报警规则服务 - targets: ['192.168.1.24:9093'] # 指定所配置报价模板文件,下面给出模板配置 rule_files: - "rules.yml" scrape_configs: # 用于获取被控主机数据,可以添加多条 - job_name: '测试-25' static_configs: - targets: ['192.168.1.25:9100']
使用systemctl管理
vi /etc/systemd/system/prometheus.service [Unit] Description=Prometheus Monitoring System Documentation=Prometheus Monitoring System [Service] ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.listen-address=:9090 [Install] WantedBy=multi-user.target
二、监控机安装node-exporter
# 下载 wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz tar xf node_exporter-0.18.1.linux-amd64.tar.gz cd node_exporter-0.18.1.linux-amd64 # 启动 ./node_exporter # 访问 http://192.168.1.24:9100
使用systemctl管理
--collector.systemd 开启system 服务的监控
vi /etc/systemd/system/node_exporter.service [Unit] Description=node_exporter service [Service] ExecStart=/usr/local/node_exporter/node_exporter --collector.systemd --collector.systemd.unit-whitelist=(chronyd|sshd|nginx).service TimeoutStopSec=10 Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
常用查询
- cpu使用总量
node_cpu_seconds_total
- mode标签值为idle的为空闲
node_cpu_seconds_total{mode='idle'}
- 获取5分钟内的CPU平均空闲情况
avg(irate(node_cpu_seconds_total{mode='idle'}[5m])) by (instance)
- 获取CPU5分钟内使用率
100 - (avg(irate(node_cpu_seconds_total{mode='idle'}[5m])) by (instance) *100)
- 获取空闲内存
(node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes)
- 获取空闲内存率
(node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100
- 获取内存使用率
100 - ((node_memory_MemFree_bytes+node_memory_Cached_bytes+node_memory_Buffers_bytes) / node_memory_MemTotal_bytes * 100)
- 剩余磁盘空间
node_filesystem_free_bytes
- 磁盘空间总大小
node_filesystem_size_bytes
- 获取磁盘空闲率
node_filesystem_free_bytes{fstype=~"ext4|xfs",mountpoint="/"} / node_filesystem_size_bytes{fstype=~"ext4|xfs",mountpoint="/"} *100
- 获取磁盘使用率
100 - (node_filesystem_free_bytes{fstype=~"ext4|xfs",mountpoint="/"} / node_filesystem_size_bytes{fstype=~"ext4|xfs",mountpoint="/"} *100)
- 配置node_exporter启动参数
--collector.systemd --collector.systemd.unit-whitelist=(chronyd|sshd|nginx).service
- 查询nginx状态
node_systemd_unit_state{name="nginx.service", state="active"}
说明:
存活状态
node_systemd_unit_state使用这个监控项查看,里面也有很多标签,
name=“docker.service”,标签name表示服务的名称,
state=“active”,state表示服务的状态,active表示活动的,对应的监控值也是1,如果为1则表示正常,不为1表示异常