prometheus exporter监控部署(一)
github项目
https://github.com/prometheus/prometheus
https://github.com/grafana/grafana
prometheus原理
-
Prometheus server Prometheus服务器,用于抓取和存储时间序列数据。Prometheus server 由三个部分组成:Retrival,Storage,PromQL
Retrieval:负责在活跃的target 主机上抓取监控指标数据。
Storage:存储,主要是把采集到的数据存储到磁盘中。默认为15天(可修改)。
PromQL:是Prometheus提供的查询语言模块。 -
client libraries 客户端库,用于检测应用程序代码的客户端库。Prometheus本身提供了支持多种语言的SDK,用于对接 Prometheus Server, 可以查询和上报数据。目的在于为那些期望原生提供Instrumentation功能的应用程序提供便捷的开发途径。
-
push gateway 支持短期工作的推送网关。类似一个中转站,可以理解成目标主机可以上报短期任务的数据到Pushgateway,然后Prometheus server 统一从Pushgateway拉取数据。
-
exporters 指标暴露器,负责收集不支持内建Instrumentation的应用程序或服务的性能指标数据,并通过HTTP接口供Prometheus Server获取。用于暴露已有的第三方服务的 metrics 给 Prometheus。
-
alertmanager 是一个独立的告警模块,从Prometheus server端接收到“告警通知”后,会进行去重、分组,并路由到相应的接收方,发出报警。
-
Service Discovery:服务发现,用于动态发现待监控的Target,Prometheus支持多种服务发现机制,例如文件、DNS、Consul、Kubernetes等等。
-
Grafana:是一个跨平台的开源的度量分析和可视化工具,可以将采集的数据可视化的展示,并及时通知给告警接收方。其官方库中具有丰富的仪表盘插件。
prometheus配置
# my global config
global:
scrape_interval: 15s # 采集被监控段指标的一个周期
evaluation_interval: 15s # 告警评估的一个周期
# 告警的配置文件,目前未涉及
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# 告警规则配置
rule_files:
# - "first_rules.yml"
#被监控端的配置
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: "docker"
static_configs:
- targets: ['192.168.31.62:8080']
- job_name: "Linux"
static_configs:
- targets: ['192.168.31.62:9100']
prometheus grafana 安装
#grafana docker部署
docker pull grafana/grafana
docker run -itd --name=grafana --restart=always -p 3000:3000 -v /home/grafana grafana/grafana
#prometheus docker部署
docker pull prom/prometheus
docker run -d --name=prometheus --restart=always -p 9090:9090 -v /root/tmp/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
#查看docker部署是否成功
docker ps
prometheus Exporter应用
-
下载exporter
https://github.com/prometheus/node_exporter
不同操作系统使用对应的暴露器,官方暴露器监控指标覆盖不全,自定义指标可使用自研采集器
-
运行exporter
下载执行程序后解压运行,其中node exporter默认监听端口9100,因此在server端配置文件中设置端口时需要对应
linux系统设置开机自启动配置
#1.解压exporter工具 tar zxf node_exporter-0.17.0.linux-amd64.tar.gz mv node_exporter-0.17.0.linux-amd64/* /usr/local/node_exporter #2.linux系统设置开机自启动配置配置文件 #/usr/lib/systemd/system/node_exporter.service [Unit] Description=https://prometheus.io [Service] Restart=on-failure ExecStart=/usr/local/node_exporter/node_exporter [Install] WantedBy=multi-user.target #3.设置系统权限 systemctl enable node_exporter systemctl restart node_exporter #4.设备使用后台方式运行,AC使用arm版本 iptables -I INPUT_ZONE_WAN -i br-wan+ -p tcp -m tcp --dport 9100 -j ACCEPT #放开9100端口防火墙限制 nohup node_exporter-1.7.0.linux-arm64/node_exporter > /dev/null &
-
检查采集结果
通过 http://[ip address]:9100/ 可查看exporter执行结果
设备可能因为防火墙导致接口无法访问,实际使用时需要注意放开相关端口
-
检查prometheus采集结果
在server端查看监控状态 state显示up即为监控成功
-
查看监控数据图表
通过Graph页面借助PromQL指令可以查询保存的数据,可查看数据结果,PromQL指令较为繁琐,此处可直接使用grafana导入数据使用其数据表盘直观查看
grafana数据展示
-
进入web页面添加数据源,通过http://[ip address]:3000/访问web页面并添加数据源
-
检查数据源是否正常,获取失败时检查prometheus server防火墙状态
systemctl stop firewalld systemctl disable firewalld
-
设置数据面板表盘模板格式 更多格式访问https://grafana.com/grafana/dashboards/
-
设置完成后导入数据,查看面板展示结果如下
以ID1860 Node Exporter Full为例