prometheus基本使用

文章目录

      • 一、介绍
        • 1.基本概念
          • 1.1 主要特征
          • 1.2 相关组件
          • 1.3 整体架构
          • 1.4 四种指标
          • 1.5 数据模型
          • 1.5 作业和实例
        • 2.与zabbix对比
      • 二.Prometheus部署
          • 1. Server端配置
          • 2. node_exporter配置
            • 2.1 二进制程序 部署
            • 2.2 docker 部署
          • 2.3 启用密码认证
      • 三.grafana展示
          • 1.docker安装grafana
          • 2.配置可视化显示
            • 2.1 登录 granfana
            • 2.2. 配置数据源
            • 2.3 创建可视化dashboard
            • 2.4.修改默认 Dashboards
      • 参考:

一、介绍

1.基本概念

prometheus是一种时间序列的数据库,适合应用于监控以及告警,但是不适合100%的准确计费,因为采集的数据不一定很准确,主要是作为监控以及收集内存、CPU、硬盘的数据。

前身是SoundCloud警告工具包,在2016年继Kubernetes之后,加入了 Cloud Native Computing Foundation。

1.1 主要特征
  • 多维数据模型(时序数据由 metric名和一组 key/value组成)
  • 在多维度上灵活的查询语言(PromQI)
  • 不依赖分布式存储,单主节点工作
  • 通过基于HTTP的pull方式采集时序数据
  • 也通过中间网关进行时序数据推送(pushing)
  • 通过服务发现或静态配置,来发现目标服务对象
  • 多种可视化和仪表盘支持,如grafana
1.2 相关组件

Prometheus生态系统由多个组件组成,其中许多是可选的:

  • Prometheus Server::负责对监控数据的获取,存储以及查询

  • Client Library: 客户端库,负责检测应用程序代码

  • Push Gateway:正常情况下Prometheus Server能够直接与Exporter进行通信,然后pull数据;当网络需求无法满足时就可以使用PushGateway作为中转站了

  • Exporter:监控数据采集器,将数据通过Http的方式暴露给Prometheus Server;

  • AlertManager::Prometheus支持通过PromQL来创建告警规则,满足规则时创建一条告警,后续的告警流程就交给AlertManager,其提供了多种告警方式包括email,webhook等方式;

  • Web UI:简单的web控制台

1.3 整体架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-reh69ymx-1652268438509)(https://prometheus.io/assets/architecture.svg)]

1.4 四种指标
  • Counter-计数器:
    递增的计数器,这类指标只增不减,常用来统计http请求数、下单数等指标。

  • Gauge-测量仪:
    可以任意变化的数值,这类指标可增可减,常用来统计比如CPU、内存、在线用户等标。

  • Histogram-直方图:
    对一对时间范围内数据进行采样,并对所有数值求和与统计数量。这类指标使用分桶方式来统计样本分布,比如请求的延迟是落在哪个区间范围内的。

  • Summary-汇总:
    这类指标是根据样本计算出百分位的,是在客户端计算好的然后被抓取到promethues中的。比如99%、90%、85%、70%/60%的响应时间在哪个区间。

1.5 数据模型
  • Prometheus将所有数据存储为时间序列,具有相同度量名称以及标签属于同一指标
  • 每个时间序列都由度量标准名称和一组键值对(也称为标签)的唯一标识

时间序列格式:

 {

示例: api_http_requests_total{method=“POST”, handler=“/messages”}

1.5 作业和实例

实例: 可以抓取的目标成为实例(instances)

工作: 具有相同目标的实例集合成为作业(job)

示例:

scape_configs:- job_name: 'prometheus'static_configs:- targets: ['localhost:9090']- job_name: 'node'static_configs:- targets: ['10.10.10.10:9090']
2.与zabbix对比

Prometheus vs Zabbix

  • Zabbix 使用的是 C 和 PHP, Prometheus 使用 Golang, 整体而言 Prometheus 运行速度更快一点。
  • Zabbix 属于传统主机监控,主要用于物理主机,交换机,网络等监控,Prometheus 不仅适用主机监控,还适用于 Cloud, SaaS, Openstack,Container 监控。
  • Zabbix 在传统主机监控方面,有更丰富的插件
  • Zabbix 可以在 WebGui 中操作配置,Prometheus 需要手动修改文件配置。

总结


  • Prometheus 属于一站式监控告警平台,依赖少,功能齐全

  • Prometheus 支持对云或容器的监控,其他系统主要对主机监控

  • Prometheus 数据查询语句表现力更强大,内置更强大的统计函数

  • Prometheus 在数据存储扩展性以及持久性上没有 InfluxDB,OpenTSDB,Sensu 好

二.Prometheus部署

  • 二进制部署:https://prometheus.io/docs/prometheus/latest/getting_started/

  • Docker部署:https://prometheus.io/docs/prometheus/latest/installation/

1. Server端配置

docker部署

vi docker-compose.yaml


version: '3'
services:prometheus:image: prom/prometheuscontainer_name: prometheusvolumes:- "/home/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml"- "/etc/localtime:/etc/localtime"# 自动发现配置文件目录
#      - "/home/prometheus/sd_config/:/etc/prometheus/sd_config/"ports:- "9090:9090"

prometheus.yml 配置

Configuration | Prometheus

vi prometheus.yml

# 全局配置
global:# 设置间隔时间为每15秒,默认为每1分钟scrape_interval: 15s# 计算采集数据时间间隔,并对变更进行更新。evaluation_interval: 15s# 监控指标配置
scrape_configs:# 作业名称,可以有多个作业- job_name: 'prometheus'# 设置采集周期,默认使用全局得scrape_interval: 5s# 静态配置监控实例static_configs:# 监控目标主机地址- targets: ['localhost:9090']labels:idc: local

基于文件服务发现

vi perometheus.yml


# 在scrape_configs得 job_name下面添加如下配置
file_sd_configs:- files: ['/etc/prometheus/sd_config/*.yml']refresh_interval: 5s# 创建新配置文件
mkdir /etc/prometheus/sd_config/
cd /etc/prometheus/sd_config/
vi test.yml- targets: [10.10.10.10:9090]## 或者 写成- targets:- 10.10.10.10:9090- 10.10.10.11:9090
2. node_exporter配置

Monitoring Linux host metrics with the Node Exporter | Prometheus

GitHub - prometheus/node_exporter: Exporter for machine metrics

Download | Prometheus

2.1 二进制程序 部署
  • 下载程序包

    wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
    
  • 解压并创建 软连接

    tar xvf  node_exporter-1.3.1.linux-amd64.tar.gz -C /usr/local/
    cd /usr/local/
    ln -s node_exporter-1.3.1.linux-amd64/ node_exporter
    
  • 创建service脚本,由systemd管理

    vi /usr/lib/systemd/system/node_exporter.service

    [Unit]
    Description=node_exporter.service[Service]
    Restart=no-failure
    # --web.listen-address=:9100 指定端口
    ExecStart=/usr/local/node_exporter/node_exporter --web.listen-address=:9100[Install]
    WantedBy=multi-user.target
    
  • 启动服务

    systemctl daemon-reloadsystemctl start node_exportersystemctl enable node_exporter
  • 重载配置文件

    docker exec -it prometheus kill -HUP 1
    
2.2 docker 部署

vi docker-compose.yaml

version: '3'
services:node_exporter:image: prom/node-exporter container_name: node_exportercommand:- '--path.rootfs=/host'network_mode: hostpid: hostrestart: unless-stoppedvolumes:- '/:/host:ro,rslave'

perometheus.yml 中添加配置

vi perometheus.yml

  - job_name: nodestatic_configs:- targets: ['localhost:9100']# 或者配置自动发现- job_name: nodefile_sd_configs:- files: ['/etc/prometheus/sd_config/*.yml']refresh_interval: 5s
2.3 启用密码认证
  • 生成加密密文

htpasswd 创建密码

# 安装 htpasswd命令软件
yum install httpd-tools -y# 创建密文
htpasswd -nBC 12 '' | tr -d ':\n'$2y$12$LM2y0E3sXT4LSdJFPI4j6euPSqVnou7Nl39nP9b1txcwgI5dTTgru
  • 创建密码配置文件
cd /usr/local/node_exportervi config.ymlbasic_auth_users:# 当前设置的用户名为admin,可以设置多个admin: $2y$12$LM2y0E3sXT4LSdJFPI4j6euPSqVnou7Nl39nP9b1txcwgI5dTTgru
  • node_exporter启动时引用该配置
# 修改 service中 Execstartvi /usr/lib/systemd/system/node_exporter.service/usr/local/node_exporter/node_exporter --web.config=/usr/local/node_exporter/config.yml
  • 重启服务
# 重启加载,并重启
systemctl daemon-reload 
systemctl restart node_exporter.service
  • 配置Prometheus启用用户名密码访问
  - job_name: nodebasic_auth:username: adminpassword: 123456static_configs:- targets: ['localhost:9100']

三.grafana展示

1.docker安装grafana

vi docker-compose.yml

version: '3'
services:grafana:image: grafana/grafanacontainer_name: grafanavolumes:- "/home/grafana/data:/var/lib/grafana"ports:- "3000:3000"environment:GF_SECURITY_ADMIN_PASSWORD: password

设置权限

chmod 777 /home/grafana/data

2.配置可视化显示
2.1 登录 granfana

登录 http://10.10.10.200:3000

账号:admin 密码: password

2.2. 配置数据源
  • 点击 “设置” 图标
  • 选择 “Data Sources”
  • 选择 “Prometheus”
  • 填写 URL 为 node_exporter地址,例如:http://10.10.10.200:9090
  • 拉到页面最后,点击 Save
2.3 创建可视化dashboard
  • 使用 grafana 官网现成面板:
    地址:https://grafana.com/grafana/dashboards/
  • 搜索 “Node Exporter Full”
    https://grafana.com/grafana/dashboards/1860
  • 可以看到 面板对应ID,1860
  • 在granfana页面,点击 "加号"图标,选择 “Import”
    输入 1860 ,点击 Load ,即加载面板
  • 常用好看得 8919
2.4.修改默认 Dashboards

修改Grafana 默认的 home Dashboards_LQ_2021的博客-CSDN博客_grafana设置默认主页

  • Dashboards首页 将要设置得仪表盘 加星
  • 左侧菜单上,将光标停留 Configuration (齿轮)图标上,然后单击 Preferences
  • 在 “Home Dashboard” 中选择要设置得默认 仪表盘
  • 点击 save 保存

参考:

【云原生学习】史上最全Prometheus学习笔记_九离⠂的博客-CSDN博客_prometheus 云原生
Introduction · Prometheus中文技术文档


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部