Prometheus学习笔记(2)Prometheus部署
Prometheus的安装配置启动
1、Prometheus二进制安装
Prometheus下载链接:https://prometheus.io/download/
Prometheus本身的存储是通过时间序列化存储的,所以对时间是很有要求的,系统时间需要通过ntp进行同步,避免因为时间造成数据无法显示。
# 时间同步
[root@prometheus ~]# ntpdate ntp1.aliyun.com
[root@prometheus ~]# crontab -e
*/5 * * * * ntpdate ntp1.aliyun.com &> /dev/null
# 下载
[root@prometheus ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.14.0/prometheus-2.14.0.linux-amd64.tar.gz
# 解压
[root@prometheus ~]# tar -zxf prometheus-2.14.0.linux-amd64.tar.gz -C /usr/local
[root@prometheus ~]# mv /usr/local/prometheus-2.14.0.linux-amd64 /usr/local/prometheus-2.14.0
[root@prometheus ~]# ln -sv /usr/local/prometheus-2.14.0 /usr/local/prometheus
# 配置自我监控
[root@prometheus ~]# cd /usr/local/prometheus
[root@prometheus ~]# vim prometheus.yaml
global:
scrape_interval: 15s # 全局配置,默认15s收集一次数据.
# 配置外部标签
external_labels:
monitor: 'codelab-monitor'
# 监控配置
scrape_configs:
# 监控任务名称,KV形式.
- job_name: 'prometheus'
# 覆盖前面的全局配置,以5s收集一次数据.
scrape_interval: 5s
# 目标监控主机和收集数据的端口
static_configs:
- targets: ['localhost:9090']
# 启动
[root@prometheus prometheus]# ./prometheus &
[root@prometheus prometheus]# netstat -tulnp |grep 9090
[root@prometheus prometheus]# netstat -tulnp |grep 9090
tcp6 0 0 :::9090 :::* LISTEN 21407/./prometheus
上面可以看到监听了9090端口,即可通过localhost:9090/metrics来获取指标数据,也可以通过浏览器直接访问localhost:9090通过web界面来查看数据。
Prometheus的安装还是比较简单的,但是由于Prometheus没有使用systemd来进行管理,用./的方式启动并不方便,这里虽然使用&、nohup的挂起方式也不尽完美,那么这里再来2种守护进程方式运行prometheus。如下:
- (1)安装screen工具,将prometheus放入后台运行
[root@prometheus prometheus]# yum install screen -y
[root@prometheus prometheus]# screen
[root@prometheus prometheus]# ./prometheus
#按Ctrl+a+d后进入后台运行模式
[root@prometheus prometheus]# screen -ls
There is a screen on:
28915.pts-0.prometheus (Detached)
1 Socket in /var/run/screen/S-root.
[root@prometheus prometheus]# ps -ef |grep prometheus
root 28927 28916 6 15:07 pts/2 00:00:01 ./prometheus
- (2)使用systemd进行管理
[root@prometheus ~]# vim /usr/lib/systemd/system/prometheus.service
[Unit]
Description=prometheus
Documentation=https://prometheus.io/docs/introduction/overview
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=simple
PIDFile==/var/run/prometheus.pid
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.read-timeout=5m --web.max-connections=512 --storage.tsdb.retention=15d --storage.tsdb.path="data/" --query.max-concurrency=20 --query.timeout=2m
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
[root@prometheus ~]# systemctl daemon-reload
[root@prometheus ~]# systemctl start prometheus
[root@prometheus ~]# ps -ef |grep prometheus
root 29688 1 1 16:31 ? 00:00:00 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --web.read-timeout=5m --web.max-connections=512 --storage.tsdb.retention=15d --storage.tsdb.path="data/" --query.max-concurrency=20 --query.timeout=2m
[root@prometheus ~]# netstat -tulnp |grep 9090
tcp6 0 0 :::9090 :::* LISTEN 29707/prometheus
这里需要了解的几个启动优化的参数:
-
--config.file:指定prometheus的配置文件路径
-
--web.read-timeout:请求链接的最大等待时间,为了防止过多查询链接请求或太多的空闲链接占用资源
-
--web.max-connections:最大连接数设置
-
--storage.tsdb.retention:prometheus采集数据后会保存在内存和硬盘当中,设定保留数据的时长,避免高消耗
-
--storage.tsdb.path:指定采集监控数据保存的磁盘路径
-
--query.max-concurrency --query.timeout:这两个参数是用于在用户执行查询时,防止太多用户同时查询,也防止用户执行过大的查询而不退出,导致资源过载。
2、Prometheus容器化安装
直接使用官方的镜像启动,并映射prometheus.yml配置文件到本地进行管理
[root@prometheus ~]# docker run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
还有另外一种方式是通过自定义镜像方式启动Prometheus
[root@prometheus ~]# vim dockerfile
FROM prom/prometheus
ADD prometheus.yml /etc/prometheus/
[root@prometheus ~]# docker build -t my-prometheus .
[root@prometheus ~]# docker run -p 9090:9090 my-prometheus
Don't forget the beginner's mind