Prometheus由Go语言编写而成,采用Pull方式获取监控信息,并提供了多维度的数据模型和灵活的查询接口。Prometheus不仅可以通过静态文件配置监控对象,还支持自动发现机制,能通过Kubernetes、Consl、DNS等多种方式动态获取监控对象。在数据采集方面,借助Go语言的高并发特性,单机Prometheus可以采取数百个节点的监控数据;在数据存储方面,随着本地时序数据库的不断优化,单机Prometheus每秒可以采集一千万个指标,如果需要存储大量的历史监控数据,则还支持远程存储。
通过Http协议周期性抓取被监控组件的状态。输出被监控组件信息的Http接口称为exporter。
常用组件大部分都有exporter可以直接使用,比如haproxy,Nginx,MySQL,Linux系统信息(磁盘、内存、CPU、网络等)
Prometheus由多个组件组成,但是其中很多组件是可选的
Prometeus Server:收集和存储时间序列数据
Client Library:客户端库,为需要监控的服务生成相应的
metrics:并暴露给Prometheus server,当Prometheus server来Pull时,直接返回实时状态的metrics
pushgateway对于短暂运行的任务,负责接受和缓存时间序列数据,同时也是一个数据源
exporter:各种exporter,面向硬件、存储、数据库、Http服务等
alertmanager:处理报警
webUI:其他各种支持的工具,本身的界面值适合用来语句查询,数据可视化,需要第三方组件,比如Granfana
说明:
Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和说几句统计,带有告警功能。
IP | 节点 | 组件 |
---|---|---|
192.168.200.100 | Prometheus服务器 | Prometheus、Node_exporter |
192.168.200.104 | Agent服务器 | Node_exporter |
192.168.200.106 | Grafana服务器 | Grafana |
Prometheus官网:https://prometheus.io/download/
[root@localhost ~]# mkdir /software
[root@localhost ~]# cd /software/
[root@localhost software]# ls
node_exporter-1.5.0.linux-amd64.tar.gz
prometheus-2.37.6.linux-amd64.tar.gz
[root@localhost software]# mv /usr/local/prometheus-2.37.6.linux-amd64/ /usr/local/prometheus
[root@localhost software]# cd /usr/local/prometheus
#查看版本
[root@localhost prometheus]# ./prometheus --version
prometheus, version 2.37.6 (branch: HEAD, revision: 8ade24a23af6be0f35414d6e8ce09598446c29a2)
build user: root@5f96027a7c3e
build date: 20230220-09:36:40
go version: go1.19.6
platform: linux/amd64
#当前环境主配置文件可不用更改
[root@localhost prometheus]# vim /usr/local/prometheus/prometheus.yml
# my global config
global:
# 默认情况下,每15s拉取一次目标采样点数据。
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
# 每15秒评估一次规则。默认值为每1分钟。
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# job名称会增加到拉取到的所有采样点上,同时还有一个instance目标服务的host:port标签也会增加到采样点上
- job_name: 'prometheus'
# 覆盖global的采样点,拉取时间间隔5s
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
[root@localhost prometheus]# vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.listen-address=:9090
[Install]
WantedBy=multi-user.target
#启动服务
[root@bogon prometheus]# systemctl daemon-reload
[root@localhost prometheus]# systemctl enable --now prometheus
Created symlink from /etc/systemd/system/multi-user.target.wants/prometheus.service to /usr/lib/systemd/system/prometheus.service.
主机ip+端口 (默认端口号9090)
点击stats–Targets
即可看到当前只监控了本机
访问http://ip+9090/metrics 可查看到监控的数据
Exporter是Prometheus的指标数据收集组件。它负责从目标Jobs收集数据,并把收集到的数据转换为Prometheus支持的时序数据格式。 和传统的指标数据收集组件不同的是,他只负责收集,并不向Server端发送数据,而是等待Prometheus Server 主动抓取,node-exporter 默认的抓取url地址:http://ip:9100/metrics
[root@agent ~]# mkdir /software
[root@agent ~]# cd /software
[root@agent software]# ls
node_exporter-1.5.0.linux-amd64.tar.gz
[root@localhost bin]# vim /etc/systemd/system/node_exporter.service
#解包并改个名
[root@agent software]# tar -xf node_exporter-1.5.0.linux-amd64.tar.gz -C /usr/local/
[root@agent software]# mv /usr/local/node_exporter-1.5.0.linux-amd64/ /usr/local/node_exporter
#启动,会监听9100端口
[root@agent node_exporter]# ./node_exporter &
#添加服务为系统服务
[root@agent node_exporter]# vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target
[Service]
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
#启动
[root@agent node_exporter]# systemctl daemon-reload
[root@agent node_exporter]# systemctl enable --now node_exporter
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /usr/lib/systemd/system/node_exporter.service.
#查看端口
[root@agent ]# netstat -anpt |grep 9100
tcp6 0 0 :::9100 :::* LISTEN 6352/node_exporter
Prometheus服务器–192.168.200.100
进入Prometheus配置文件添加target
[root@localhost software]# vim /usr/local/prometheus/prometheus.yml
#进入Prometheus安装目录下修改主配置文件
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["192.168.200.100:9090"]
- job_name: 'agent'
static_configs:
- targets: ['192.168.200.104:9100'] #agent服务器ip+node起来的端口,多个用空格隔开
#添加上面三行
重启Prometheus
[root@localhost prometheus]# systemctl restart prometheus.service
重启完浏览器刷新访问192.168.200.100:9090,打开普罗米修斯的监控页面status–Targets查看有没有添加成功
监控目标agent和server添加成功
在192.168.200.106服务器安装Granfana
Grafana官网:https://grafana.com/grafana/download
//该服务器得有docker,docker安装略
[root@grafana ~]# hostnamectl set-hostname granfana && bash
[root@grafana ~]# mkdir /software && cd /software
[root@granfana software]# ls
grafana-enterprise.tar
#用docker启动,导入镜像
[root@granfana software]# docker load -i grafana-enterprise.tar
34d5ebaa5410: Loading layer 5.866MB/5.866MB
579bcda65f88: Loading layer 3.072kB/3.072kB
78559bd3bf46: Loading layer 5.055MB/5.055MB
0e1807ef425a: Loading layer 5.94MB/5.94MB
1d10dec99b22: Loading layer 9.553MB/9.553MB
2b2eefd3b8b8: Loading layer 350MB/350MB
fc17ce513b56: Loading layer 1.536kB/1.536kB
4c186a97ae6c: Loading layer 90.11kB/90.11kB
a5359d592bd8: Loading layer 5.12kB/5.12kB
Loaded image: grafana/grafana-enterprise:9.2.1
[root@localhost software]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
grafana/grafana-enterprise 9.2.1 a45674740e38 5 months ago 370MB
#启动
[root@localhost software]# docker run -d --name grafana -p 3000:3000 grafana/grafana-enterprise:9.2.1
9a5f9763fe4324ef662e30eca0fc7d0e02436abd760659659fa7a33558a9ec0e
ip+端口 192.168.200.100:3000 初始用户admin密码admin
第一次登录进入后让你设置新的密码,进入Grafana,点击DATA SOURCRE添加数据源
选择Prometheus
添加成功的数据源查看
定义显示内容
起个名:agent–192.168.200.104服务器平均负载信息
Grafana模板
Grafana官方提供模板地址:https://grafana.com/grafana/dashboards/