前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Prometheus使用[笔记]

Prometheus使用[笔记]

作者头像
suveng
发布2019-09-17 10:25:27
4.1K0
发布2019-09-17 10:25:27
举报
文章被收录于专栏:分享/效率/工具/软件

Prometheus使用

环境

命令行入门实例

  • CPU使用率计算 CPU在t1到t2时间段总的使用时间 = ( user2+ nice2+ system2+ idle2+ iowait2+ irq2+ softirq2) - ( user1+ nice1+ system1+ idle1+ iowait1+ irq1+ softirq1) CPU在t1到t2时间段空闲使用时间 =(idle2 - idle1) CPU在t1到t2时间段即时利用率 = 1 - CPU空闲使用时间 / CPU总的使用时间 increase() 函数:解决counter类型的时间增量 多核CPU计算 sum()结果求和
代码语言:txt
复制
- 获取CPU时间
- 获取空闲时间`idle`

获取总的时间

  • 单台机器的CPU总利用率 1-(sum(increase(node_cpu_seconds_total{instance="192.168.9.232:9100",mode="idle"}1m))/sum(increase(node_cpu_seconds_total{instance="192.168.9.232:9100"}1m)))
  • by(instance): 区分不同实例
  • (1-( sum(increase(node_cpu_seconds_total{mode="idle"}1m)) by(instance) / sum(increase(node_cpu_seconds_total{}1m) ) by(instance) )) * 100
  • 计算其他CPU状态时间的使用
代码语言:txt
复制
-  iowait io等待时间 
代码语言:txt
复制
-  irq 硬中断 
代码语言:txt
复制
-  soft irq 软中断 
代码语言:txt
复制
-  steal 虚拟机的分片时间 
代码语言:txt
复制
-  nice 进程分配nice值的时间 
代码语言:txt
复制
-  idle空闲 
代码语言:txt
复制
-  user用户态 
代码语言:txt
复制
-  sytem内核态 

命令行扩展使用

  • 过滤
代码语言:txt
复制
- 标签过滤 `key{label=""}` 
    - 模糊匹配 `key{label=~"web.*"}`
- 数值过滤 
    - 四则运算 `key{.} > 400`函数
代码语言:txt
复制
-  `rate(.[5m])` 搭配counter型数据, 按照设置的一个时间段,取`counter`在这个时间段的增量的平均每秒 value=∆S/∆tvalue = ∆S/∆tvalue=∆S/∆t
 
代码语言:txt
复制
    - 时间段的取值 要考虑采集数据的程序采集间隔
-  `increase(.[5m])`搭配`counter`型数据,取一个时间段的增量 value=∆Svalue=∆Svalue=∆S
 
代码语言:txt
复制
-  `sum()`加和
代码语言:txt
复制
    - 结合 `by()`
-  `topk(x,key)` 取最高前x位
代码语言:txt
复制
    - 不适合 `graph` ;  适用于`console` 查看
    - 适合瞬时报警
-  `count()`
代码语言:txt
复制
    - 模糊监控判断

采集数据

服务端启动-适用于生产

  • Peometheus加载配置文件
代码语言:txt
复制
- 向prometheus进行发信号 
    - kill -HUP pid
- 向prometheus发送HTTP请求 
    - curl -XPOST http://prometheus.chenlei.com/-/reload后台运行
代码语言:txt
复制
-  [使用 `screen` 工具](https://linux.cn/article-8215-1.html)
代码语言:txt
复制
-  [使用 `daemonize`](https://github.com/bmc/daemonize)yum install -y kernel-devel  > yum groupinstall -y Development tools > git clone 
  • 启动prometheus额外参数
代码语言:txt
复制
- –web.listen-address : 监听地址 `0.0.0.0:9090`
- –web.read-timeout : 请求链接最大等待时间 `2m`
- –web.max-connections: 最大连接数 `10`
- –storage.tsdb.retention: 数据保存期限 `90d`
- –storage.tsdb.path: 数据保存路径 `/data/prometheus/server/data`
- –query.max-concurrency: 最大并发数 `20`
- –query.timeout: 查询超时时间 `2m`存储结构
server/ └── data     ├── 01DM9HP1PHHK2BD1MGC7J1C0YC     │   ├── chunks     │   │   └── 000001     │   ├── index     │   ├── meta.json     │   └── tombstones     ├── 01DM9ZDG8QKWTPYZ86K7XW6FKZ     │   ├── chunks     │   │   └── 000001     │   ├── index     │   ├── meta.json     │   └── tombstones     ├── 01DMAM0NM51YSQ4EVRRV46X2E1     │   ├── chunks     │   │   └── 000001     │   ├── index     │   ├── meta.json     │   └── tombstones     ├── 01DMAM0P4CGJWSSA15QPWJGZXF     │   ├── chunks     │   │   └── 000001     │   ├── index     │   ├── meta.json     │   └── tombstones     ├── lock     ├── queries.active     └── wal         ├── 00000011         ├── 00000012         ├── 00000013         ├── 00000014         ├── 00000015         ├── 00000016         ├── 00000017         ├── 00000018         └── checkpoint.000010             └── 00000000
  • 近期数据保存在wal/目录中,防止突然断电或者重启,以用来恢复内存中的数据

服务端配置文件写法

代码语言:javascript
复制
global:
  scrape_interval:     5s #抓取频率
  evaluation_interval: 1s 



alerting:
  alertmanagers:
  - static_configs:
    - targets:



rule_files:

scrape_configs:	

  - job_name: 'prometheus'

    static_configs:
    - targets: ['localhost:9090']

  - job_name: '233-node-exporter'

    static_configs:
    - targets: ['192.168.9.233:9100']

  - job_name: '232-node-exporter'

    static_configs:
    - targets: ['192.168.9.232:9100']

  - job_name: '239-node-exporter'

    static_configs:
    - targets: ['192.168.9.239:9200']

node_exporter

github地址

  • 采集服务器的指标
  • 有足够多的默认采集项
  • 可以通过启动时,开启或者禁用某些指标

pushgateway

  • 介绍 主动推送数据到prometheus server 可以单独运行在不同节点上,并不要求是监控节点
  • 安装
代码语言:txt
复制
- [0.9.1 / 2019-08-01](https://github.com/prometheus/pushgateway/releases/tag/v0.9.1)
- 下载地址: [链接](https://github.com/prometheus/pushgateway/releases/download/v0.9.1/pushgateway-0.9.1.linux-amd64.tar.gz)
- 解压
- 运行自定义采集脚本发送到pushgateway
代码语言:txt
复制
-  安装pushgeteway
代码语言:txt
复制
-  prometheus配置job关联pushgateway
代码语言:txt
复制
-  目标主机编写脚本采集数据
代码语言:txt
复制
-  [定时执行发送metric数据到pushgateway](https://blog.csdn.net/y_z_w123/article/details/79816474) #!/bin/bash instance_name=instance_name  label=label value=123  echo "$label $value" | curl --data-binary @- 
  • 缺点
代码语言:txt
复制
- 单点瓶颈
- 没有数据过滤

自定义exporter

  • 开发流程
代码语言:txt
复制
- [官网介绍](https://prometheus.io/docs/instrumenting/writing_exporters/)
- web HTTP 服务, 响应外部GET请求
- 运行在后台,定期触发抓取本地的监控数据
- 响应结果 必须符合prometheus的metrics的格式JavaSpring版exporter
代码语言:txt
复制
- [自定义Metrics:让Prometheus监控你的应用程序(Spring版)](http://ylzheng.com/2018/01/24/use-prometheus-monitor-your-spring-boot-application/)Go语言开发Prometheus Exporter

界面可视化

grafana

  • 介绍 开源数据绘图工具
  • 安装
代码语言:txt
复制
- [grafana官网](https://grafana.com/)
- [官网安装引导](https://grafana.com/grafana/download?platform=linux)
- 默认端口: 3000配置
代码语言:txt
复制
-  添加`prometheus`数据源
代码语言:txt
复制
-  添加`dashboard`
代码语言:txt
复制
-  建立Dashboard
代码语言:txt
复制
    - 数据源配置
  • 图形配置
代码语言:txt
复制
- Visualization
代码语言:txt
复制
- Axes
代码语言:txt
复制
- Legend
代码语言:txt
复制
- Thresholds & Time Regions
代码语言:txt
复制
- Data link通用配置
  • 告警配置
  • 备份
代码语言:txt
复制
- 导出json
- save as还原
代码语言:txt
复制
- 导入json/粘贴json报警功能
报警是 
代码语言:txt
复制
- 钉钉告警
- pageduty

实践

  • 内存使用率
代码语言:txt
复制
- 数据来源 node_exporter
    - 计算公式
 value=available/Sumvalue=available/Sumvalue=available/Sum
 实际可用内存=free+buffers+cached
    - 公式实现
 
代码语言:txt
复制
- 数据来源 node_exporter
    - 计算公式
 value=读速度+写速度value=读速度+写速度value=读速度+写速度
    - 公式实现
 函数: predict_linear(), 预测趋势
 
代码语言:txt
复制
-  数据来源 bash脚本+pushgateway
 
代码语言:txt
复制
-  脚本编写 采集内网流量ping延迟和丢包率
 instance=
代码语言:txt
复制
-  定时执行 
代码语言:txt
复制
    - 安装crontab
    - 在`/etc/crontab`配置cron运行对应可执行脚本
-  查看结果
代码语言:txt
复制
    - 在prometheus查看targets有没有在线,如果没有需要到prometheus配置,记得刷新配置
代码语言:txt
复制
    - 查看配置
代码语言:txt
复制
    - 看指标,在命令行输入刚刚自定的key应该会有提示出现`lostpk` `rrt`
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年09月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Prometheus使用
    • 环境
      • 命令行入门实例
        • 命令行扩展使用
          • 采集数据
            • 服务端启动-适用于生产
            • 服务端配置文件写法
            • node_exporter
            • pushgateway
            • 自定义exporter
          • 界面可视化
            • grafana
          • 实践
          相关产品与服务
          命令行工具
          腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档