Prometheus 基础(一)

Prometheus 介绍

  Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的监控系统。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,Prometheus于2016年加入云原生云计算基金会(CNCF),成为继Kubernetes之后的第二个托管项目。

相关网站:

Prometheus 具有以下特点:

1、多维数据模型:由度量名称和键值对标识的时间序列数据

2、PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询

3、不依赖分布式存储,单个服务器节点可直接工作

4、基于HTTP的pull方式采集时间序列数据

5、推送时间序列数据通过PushGateway组件支持

6、通过服务发现或静态配置发现目标

7、多种图形模式及仪表盘支持(grafana)

8、适用于以机器为中心的监控以及高度动态面向服务架构的监控

Prometheus 组织架构

Prometheus 由多个组件组成,但是其中许多组件是可选的:

  • Prometheus Server:用于收集指标和存储时间序列数据,并提供查询接口
  • client Library:客户端库(例如Go,Python,Java等),为需要监控的服务产生相应的/metrics并暴露给Prometheus Server。目前已经有很多的软件原生就支持Prometheus,提供/metrics,可以直接使用。对于像操作系统已经不提供/metrics,可以使用exporter,或者自己开发exporter来提供/metrics服务。
  • push gateway:主要用于临时性的 jobs。由于这类 jobs 存在时间较短,可能在 Prometheus 来 pull 之前就消失了。对此Jobs定时将指标push到pushgateway,再由Prometheus Server从Pushgateway上pull。

这种方式主要用于服务层面的 metrics:

  • exporter:用于暴露已有的第三方服务的 metrics 给 Prometheus。
  • alertmanager:从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对收的接受方式,发出报警。常见的接收方式有:电子邮件,pagerduty,OpsGenie, webhook 等。
  • Web UI:Prometheus内置一个简单的Web控制台,可以查询指标,查看配置信息或者Service Discovery等,实际工作中,查看指标或者创建仪表盘通常使用Grafana,Prometheus作为Grafana的数据源;

注:大多数 Prometheus 组件都是用 Go 编写的,因此很容易构建和部署为静态的二进制文件。

Prometheus 安装部署

下载二进制包 wget https://github.com/prometheus/prometheus/releases/download/v2.28.1/prometheus-2.28.1.linux-amd64.tar.gz

[root@mariadb tools]# tar -zxvf prometheus-2.28.1.linux-amd64.tar.gz -C /opt/   # 解压压缩包
prometheus-2.28.1.linux-amd64/
prometheus-2.28.1.linux-amd64/consoles/
prometheus-2.28.1.linux-amd64/consoles/index.html.example
......
[root@mariadb opt]# mv prometheus-2.28.1.linux-amd64/ prometheus         #修改名称
[root@mariadb prometheus]# vim /opt/prometheus/prometheus.yml            #根据需求修改文件
global:
  scrape_interval:     15s # 默认情况下,每15s拉取一次目标采样点数据。
  external_labels:     # 我们可以附加一些指定标签到采样点度量标签列表中, 用于和第三方系统进行通信, 包括:federation, remote storage, Alertmanager 
    monitor: 'codelab-monitor'   # 下面就是拉取自身服务采样点数据配置
scrape_configs:  # job名称会增加到拉取到的所有采样点上,同时还有一个instance目标服务的host:port标签也会增加到采样点上
  - job_name: 'prometheus'  # 覆盖global的采样点,拉取时间间隔5s
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']

注:Prometheus从目标机上通过http方式拉取采样点数据, 它也可以拉取自身服务数据并监控自身的健康状况。

启用Promtheus服务

cd /opt/prometheus  #进入目录
./prometheus  --config.file=prometheus.yml  #启动程序
[root@mariadb prometheus]# netstat -tunlp|grep pro          #查看程序启动状态
tcp6       0      0 :::9090                 :::*                    LISTEN      9586/./prometheus  

将Prometheus注册为服务

cat > /usr/lib/systemd/system/prometheus.service << EOF
> [Unit]
>   Description=https://prometheus.io
> 
>   [Service]
>   Restart=on-failure
>   ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml
> 
>   [Install]
>   WantedBy=multi-user.target    
> EOF           

测试重启Promtheus  

systemctl daemon-reload
systemctl stop prometheus.service
systemctl start prometheus.service     

Dokcer容器部署方式:

参考地址:https://prometheus.io/docs/prometheus/latest/installation/

#绑定主机上的配置文件:prometheus.yml
docker run \
    -p 9090:9090 \
    -v /path/to/prometheus.yml:/etc/prometheus/prometheus.yml \
    prom/prometheus
#或者使用额外的卷
docker run -p 9090:9090 -v /prometheus-data \
       prom/prometheus --config.file=/prometheus-data/prometheus.yml    

注意.yml配置文件路径;   

Prometheus.yml文件

# 全局配置global:
  # 默认抓取周期,可用单位ms、smhdwy #设置每15s采集数据一次,默认1分钟
  [ scrape_interval: <duration> | default = 1m ]
  # 默认抓取超时
  [ scrape_timeout: <duration> | default = 10s ]
  # 估算规则的默认周期 # 每15秒计算一次规则。默认1分钟
  [ evaluation_interval: <duration> | default = 1m ]
  # 和外部系统(例如AlertManager)通信时为时间序列或者警情(Alert)强制添加的标签列表
  external_labels:
    [ <labelname>: <labelvalue> ... ]
 
# 规则文件列表
rule_files:
  [ - <filepath_glob> ... ]
 
# 抓取配置列表
scrape_configs:
  [ - <scrape_config> ... ]
 
# Alertmanager相关配置
alerting:
  alert_relabel_configs:
    [ - <relabel_config> ... ]
  alertmanagers:
    [ - <alertmanager_config> ... ]
 
# 远程读写特性相关的配置
remote_write:
  [ - <remote_write> ... ]
remote_read:
  [ - <remote_read> ... ]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值