注:本文基于CentOS 7.2编写
1、下载prometheus安装包
我们以官网最新版本为例,官网地址,https://prometheus.io/download/
wget https://github.com/prometheus/prometheus/releases/download/v2.16.0/prometheus-2.16.0.linux-amd64.tar.gz
如果觉得官网下载实在慢,可以通过以下链接下载,
prometheus-2.16.0.linux-amd64.tar.gz
下载完压缩包后我们直接解压,并放到/usr/local/prometheus目录,便于管理,
[root@centos7 prometheus]# tar -xf prometheus-2.16.0.linux-amd64.tar.gz
[root@centos7 prometheus]# ls
prometheus-2.16.0.linux-amd64 prometheus-2.16.0.linux-amd64.tar.gz
[root@centos7 prometheus]# mkdir -p /usr/local/prometheus
[root@centos7 prometheus]# mv prometheus-2.16.0.linux-amd64/* /usr/local/prometheus
[root@centos7 prometheus]# cd /usr/local/prometheus
[root@centos7 prometheus]# ./prometheus --version
prometheus, version 2.16.0 (branch: HEAD, revision: b90be6f32a33c03163d700e1452b54454ddce0ec)
build user: root@7ea0ae865f12
build date: 20200213-23:50:02
go version: go1.13.8
2、配置Prometheus
[root@centos7 prometheus]# grep -vE "^$|^[ | ]*#" prometheus.yml
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
alerting:
alertmanagers:
- static_configs:
- targets:
rule_files:
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
主要有四个字段,
-
global:全局配置
scrape_interval:设置prometheus守护进程拉取agent信息时间间隔
evaluation_interval:设置根据后面rule_files字段定义的规则计算的时间间隔 -
alerting:告警配置
用于配置告警信息,需要通过alertmanagers插件实现,这里暂时未配置 -
rule_files:规则配置
主要用于触发告警,这里也暂未配置 -
scrape_configs:抓取目标机器配置
job_name:标识这条记录,也就是这个配置内的记录都会添加上该字段
targets:设置目标机地址
3、启动服务
鉴于安装是通过二进制文件安装,没有service文件,因此,为了便于管理,我们增加一个对应的systemd服务这样启动和开机启动就更方便了。
cat > /usr/lib/systemd/system/prometheus.service <<EOF
[Unit]
Description=prometheus
After=network.target
[Service]
ExecStart=/usr/local/prometheus/prometheus
--config.file=/usr/local/prometheus/prometheus.yml
--storage.tsdb.path=/var/lib/prometheus
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
设置配置文件路径以及本地时序数据库数据存放路径,因为prometheus只是热更新配置,因此增加reload字段。
然后就可以通过systemctl命令设置开机启动,并启动服务了。
systemctl enable prometheus && systemctl start prometheus
一切正常的情况下,就能在/var/log/messages中看到如下打印,
Mar 10 10:08:55 centos7 systemd: Started prometheus.
Mar 10 10:08:55 centos7 systemd: Starting prometheus...
...
Mar 10 10:08:55 centos7 prometheus: level=info ts=2020-03-10T14:08:55.895Z caller=main.go:630 msg="Server is ready to receive web requests."
4、访问web
Prometheus自带一个比较简单的Web界面,访问http://your-ip:9090 即可。
因为默认配置里我们只监控了prometheus,因此在target页面也就只有一个项目,
5、增加服务器监控
为了能知道本机的一些信息,比如,CPU使用率,内存,磁盘IO等,我们需要增加一个插件来帮我们收集信息——node_exporter,其实也就是一个系统信息采集的客户端。
- 安装node_exporter
同样我们从官网下载二进制安装包,
wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
如果嫌弃官网下载慢,可以通过下面链接下载,
node_exporter-0.18.1.linux-amd64.tar.gz
同样,解压后移动到/usr/local/prometheus目录,便于管理,
[root@centos7 prometheus]# tar -xf node_exporter-0.18.1.linux-amd64.tar.gz
[root@centos7 prometheus]# mkdir -p /usr/local/prometheus/node_exporter
[root@centos7 prometheus]# mv node_exporter-0.18.1.linux-amd64/* /usr/local/prometheus/node_exporter/
[root@centos7 prometheus]# cd /usr/local/prometheus/node_exporter
[root@centos7 node_exporter]# ls
LICENSE node_exporter NOTICE
- 启动服务
为了统一管理,我们仍然使用systemctl来管理,创建个systemd的服务文件,
cat > /usr/lib/systemd/system/node_exporter.service <<EOF
[Unit]
Description=node_exporter
After=network.target
[Service]
ExecStart=/usr/local/prometheus/node_exporter/node_exporter
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
之后就通过systemctl来设置开机启动和启动服务,
[root@centos7 ~]# systemctl enable node_exporter
Created symlink from /etc/systemd/system/multi-user.target.wants/node_exporter.service to /usr/lib/systemd/system/node_exporter.service.
[root@centos7 ~]# systemctl start node_exporter
node_exporter默认开启了很多信息的采集,主要是proc文件系统下的各种参数,详细配置可以参考该链接,https://github.com/prometheus/node_exporter。
- 增加prometheus监控目标
客户端配置好了,还需要服务端来拉取数据,因此我们还需要在prometheus中增加配置,主要涉及scrape_configs字段配置,原先我们只配置了监控prometheus本身,现在我们将服务器也添加进去,注意node_exporter的端口为9100,
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'my-server' #新增的配置
static_configs:
- targets: ['localhost:9100']
更新了配置,自然要重新启动服务,
systemctl restart prometheus
这时候我们再看target页面,就能看到两个项目了,
6、web查看监控信息
配置好后,我们就能在prometheus的web界面来查看监控信息了,比如内存使用率,
7、node_exporter指标
node_exporter有很多指标,详细配置可以通过访问http://yourip:9100/metrics来查看具体有哪些指标,