引子:最近在学golang,又碰巧项目组需要做微服务监控,搜索之后最终选定prometheus+grafana+springcloud(eureka)作为技术框架。
本篇文章主要讲解prometheus服务端的安装及配置
1. Prometheus的下载
官网: https://prometheus.io/
下载地址: https://prometheus.io/download/
官方文档: https://prometheus.io/docs/prometheus/latest/getting_started/
Prometheus是一套开源的监控&报警&时间序列数据库的组合,基于应用的metrics来进行监控的开源工具 。
更多信息请参考官网介绍: https://prometheus.io/docs/introduction/overview/
当然,更多的时候由于访问外网的速度过慢,你是无法直接从官网上下载的,这里推荐一个镜像站点:http://cactifans.hi-www.com/
2. Prometheus的安装
由于使用的是二进制压缩文件,所以安装方式非常简单。
- 首先,打开xshell连接服务器;
- 使用
rz
命令上传压缩包(如果找不到rz
命令的,请使用yum install lrzsz
安装) - 使用
tar -zvxf prometheus-2.14.0.linux-amd64.tar.gz
解压 - 使用
mv prometheus-2.14.0.linux-amd64 /usr/local/prometheus
移动文件夹到/usr/local
目录下,便于管理 - 使用
./prometheus --help
查看启动配置项,复制--config.file="prometheus.yml"
后构成最基本启动项,执行./prometheus --config.file="prometheus.yml"
启动prometheus - 查看是否启动成功,浏览器访问
ip:port
。我这里是http://192.168.13.101:9090
这样,prometheus的基本安装就已ok,接下来我们研究一下prometheus的配置。
3. Prometheus的配置
3.1 配置后台启动
- CentOS7下,采用systemd配置后台启动,首先使用
cd /usr/lib/systemd/system
进入目录 - 拷贝一个现有的service作为prometheus的service
cp sshd.service prometheus.service
- 修改service文件
vi prometheus.service
[Unit]
Description=prometheus.io
[Service]
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
- 生效系统systemd配置文件,
systemctl daemon-reload
- 启动prometheus
systemctl start prometheus
- 查看进程
ps -ef|grep prometheus
3.2 配置文件说明
prometheus的大部分功能可以通过配置实现,因此这里介绍一下其默认配置文件。
详细的配置说明请参考官方文档:prometheus.config.doc, 这里只介绍一下关键配置项
- 全局配置项(global):
global:
# 监控采集周期
[ scrape_interval: <duration> | default = 1m ]
# 采集超时时长
[ scrape_timeout: <duration> | default = 10s ]
# 告警周期
[ evaluation_interval: <duration> | default = 1m ]
# 外部标签
external_labels:
[ <labelname>: <labelvalue> ... ]
# 告警规则
rule_files:
[ - <filepath_glob> ... ]
# 被监控端配置
scrape_configs:
[ - <scrape_config> ... ]
# AlertManager告警组件配置
alerting:
alert_relabel_configs:
[ - <relabel_config> ... ]
alertmanagers:
[ - <alertmanager_config> ... ]
# 远程存储,用于替代默认TSDB,推荐采用InfluxDB
remote_write:
[ - <remote_write> ... ]
# 远程读取
remote_read:
[ - <remote_read> ... ]
- 被监控端配置项(scrape_config部分):
# 各种服务发现配置项
# List of Azure service discovery configurations.
azure_sd_configs:
[ - <azure_sd_config> ... ]
# Spring Cloud Consul,该项可以在EUREKA中集成,实现EUREKA的服务发现
consul_sd_configs:
[ - <consul_sd_config> ... ]
# List of DNS service discovery configurations.
dns_sd_configs:
[ - <dns_sd_config> ... ]
# List of EC2 service discovery configurations.
ec2_sd_configs:
[ - <ec2_sd_config> ... ]
# List of OpenStack service discovery configurations.
openstack_sd_configs:
[ - <openstack_sd_config> ... ]
# 文件
file_sd_configs:
[ - <file_sd_config> ... ]
# List of GCE service discovery configurations.
gce_sd_configs:
[ - <gce_sd_config> ... ]
# 用于k8s的服务发现,也是prometheus最大的优势
kubernetes_sd_configs:
[ - <kubernetes_sd_config> ... ]
# List of Marathon service discovery configurations.
marathon_sd_configs:
[ - <marathon_sd_config> ... ]
# 爱彼迎的注册中心
nerve_sd_configs:
[ - <nerve_sd_config> ... ]
# 大名鼎鼎的ZK
serverset_sd_configs:
[ - <serverset_sd_config> ... ]
# List of Triton service discovery configurations.
triton_sd_configs:
[ - <triton_sd_config> ... ]
# 静态配置被监控端
static_configs:
[ - <static_config> ... ]
# 配置项重载,使用率很高
relabel_configs:
[ - <relabel_config> ... ]
# List of metric relabel configurations.
metric_relabel_configs:
[ - <relabel_config> ... ]
至此,Prometheus的安装及配置已经完成,下一节讲解如何在Spring Cloud中集成Prometheus