tshxawen

prometheus

源码地址

https://github.com/prometheus/prometheus/blob/main/cmd/prometheus/main.go

storage.tsdb.min-block-duration  一个数据块持久化最短时间默认情况下是两个小时

storage.tsdb.retention.time=2y(年)  保存多长时间

storage.tsdb.min-block-duration   数据块在持久化之前的最短持续时间默认值“2h”)内存利用率越低,这个时间可以设置的时间越大

storage.tsdb.max-block-duration  每个多长时间进行压缩  保存到磁盘的块 默认值是持久化参数的百分之10

storage.tsdb.max-block-chunk-segment-size  设置chunk的大小,数据保存到磁盘以后chunk里面的block的大小  一旦用到了远端存储没用了(不往本地存储放)

内存数据多久往磁盘上持久化  block多大  就没用了  

storage.tsdb.retention.size  块(block)可以存储的最大字节数。需要一个单位,支持的单位:B,KB,MB,GB,TB,PB,EB  默认512MB

root@awen:~# tar xf prometheus-2.40.5.linux-amd64.tar.gz -C /app/

root@awen:/app# ln -sv /app/prometheus-2.40.5.linux-amd64/ /app/prometheus

root@awen:/app# cat /etc/systemd/system/prometheus.service

[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target
[Service]
Restart=on-failure
WorkingDirectory=/app/prometheus/
ExecStart=/app/prometheus/prometheus --config.file=/app/prometheus/prometheus.yml --web.enable-lifecycle --storage.tsdb.min-block-duration=30m --storage.tsdb.retention.time=2y --storage.tsdb.max-block-duration=20m --storage.tsdb.max-block-chunk-segment-size=1GB
[Install]
WantedBy=multi-user.target

监听在9090端口

检查配置文件

root@k8s-maste1:/app/prometheus# ./promtool check config prometheus.yml
Checking prometheus.yml
SUCCESS: prometheus.yml is valid prometheus config file syntax

root@k8s-maste1:/app/prometheus# systemctl start prometheus.service
root@k8s-maste1:/app/prometheus# systemctl enable prometheus.service

 

部署node_exporter:(部署在目标主机的,收集物理机或虚拟机的指标数据)数据导出器  自动发现  没有配置文件  可以收集定义好的指标数据  
prometheus配置node节点地址,根据配置好的周期时间(默认是15s),prometheus主动向node节点发起tcp连接,建立连接后向prometheus server的9100/metrics 这个uri,发起请求,node_exporter吧当前收集的数据发给prometheus server,granfana 就可以练到prometheus 上查看数据
两台主机

 root@awen:~# tar xvf node_exporter-1.5.0.linux-amd64.tar.gz -C /app

root@awen:/app# ln -sv /app/node_exporter-1.5.0.linux-amd64 /app/node_exporter

root@awen:/app# vim /etc/systemd/system/node-exporter.service
[Unit]
Description=Prometheus Node Exporter
After=network.target
[Service]
ExecStart=/app/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target

root@awen:/app# systemctl start node-exporter.service
root@awen:/app# systemctl status node-exporter.service

 scrape_interval 抓取间隔时间

evaluation_interval 扫描规则变更的间隔时间

scrape_configs 数据抓取配置

static_configs 静态配置

targets  目标主机

./promtool check config prometheus.yml  检查配置文件

root@k8s-maste1:/app/prometheus# cat  prometheus.yml 

- job_name: 'promethues-node'
  static_configs:
     - targets: ['10.4.7.145:9100','10.4.7.148:9100','10.4.7.149:9100']

 

 

 

node节点指标数据收集:
node节点常见指标:
node_boot_time:系统自启动以后的总结时间
node_cpu:系统CPU使用量
node_disk*:磁盘IO
node_filesystem*:系统文件系统用量
node_load1:系统CPU负载
node_memory*:内存使用量
node_network*:网络带宽指标
node_time:当前系统时间
go_*:node exporter中go相关指标
process_*:node exporter自身进程相关运行指标
 

wget https://dl.grafana.com/enterprise/release/grafana-enterprise_9.3.1_amd64.deb
dpkg -i grafana-enterprise_9.3.1_amd64.deb

systemctl restart grafana-server
grafana不负责数据收集和存储 都在prometheus存储
数据源是prometheus granfan和prometheus连接在一起才行
与prometheus不是长连接  只有在查看图形的时候才会链接prometheus,加载图形
查询方式是添加个数据源,(图形是模板)导入模板,导入模板的时候添加一个数据源,模板引用数据源,模板的图形会转化为prometheus的查询语句,在prometheus中查询数据

 

 grafana模板

 

选择下载最多的 默认是按下载量排序的 

 

 下载json文件

上传模板

 

PromQL语句-指标数据、数据类型、匹配器;
PromQL语句-时间范围、运算符、聚合运算及示例;
 
PromQL语句:
PromQL简介:
Prometheus提供一个函数式的表达式语言PromQL (Prometheus Query Language),可以使用户实时地查找和聚合时间序列数据,表达式计算结果可
以在图表中展示,也可以在Prometheus表达式浏览器中以表格形式展示,或者作为数据源, 以HTTP API的方式提供给外部系统使用。
https://prometheus.io/docs/prometheus/latest/querying/basics
 

 

 已用内存

总共内存--已用内存

 

 指定时间

 

 

 

 

 

 

 grafana创建Dashboard

 

 

 

 

  保存

pushgetway

root@awen:~# wget https://github.com/prometheus/pushgateway/releases/download/v1.5.1/pushgateway-1.5.1.linux-amd64.tar.gz

root@awen:~# tar xf pushgateway-1.5.1.linux-amd64.tar.gz -C /app/ppushgateway

root@awen:/app# ln -sv pushgateway-1.5.1.linux-amd64 pushgateway

root@awen:/app# cat /etc/systemd/system/pushgateway.service
[Unit]
Description=Prometheus pushgateway
After=network.target
[Service]
ExecStart=/app/pushgateway/pushgateway
[Install]
WantedBy=multi-user.target

root@awen:/app# systemctl daemon-reload
root@awen:/app# systemctl start pushgateway.service

root@awen:/app/pushgateway# ./pushgateway --help

 

  --persistence.interval=5m  持久化周期  每个多长时间持久化到文件中

 

 --persistence.file=""   持久化文件  默认在内存中

echo 指标名称和值 通过curl 去传  --data-binary 格式是二进制  @- 拿到前echo的值   发给pushgetwey

root@awen:~# echo "mytest_metric 2088" | curl --data-binary @- http://10.4.7.132:9091/metrics/job/mytest_job

 

 

root@awen:/app/prometheus# vi prometheus.yml  添加

 

 

 

 

 

客户端推送多条数据-方式一:

root@awen:~# cat <<EOF | curl --data-binary @- http://10.4.7.132:9091/metrics/job/test_job/instance/10.4.7.133
#TYPE node_memory_usage gauge
node_memory_usage 4311744512
# TYPE memory_total gauge
node_memory_total 103481868288
EOF

 

 

 

客户端推送多条数据-方式二:
 基于自定义脚本实现数据的收集和推送:

root@awen:~# vi memory_monitor.sh
#!/bin/bash
total_memory=$(free |awk '/Mem/{print $2}')
used_memory=$(free |awk '/Mem/{print $3}')
job_name="custom_memory_monitor"
instance_name=`ifconfig ens32 | grep -w inet | awk '{print $2}'` pushgateway_server="http://10.4.7.132:9091/metrics/job"
cat <<EOF | curl --data-binary @- ${pushgateway_server}/${job_name}/instance/${instance_name}
#TYPE custom_memory_total gauge
custom_memory_total $total_memory
#TYPE custom_memory_used gauge
custom_memory_used $used_memory
EOF

pushgateway指标数的删除:
通过API删除: 

 

 root@awen:~# curl -X DELETE http://10.4.7.132:9091/metrics/job/custom_memory_monitor/instance/10.4.7.134

 

 

prometheus Federation(联邦集群):
 
root@awen:/apps/prometheus# cat prometheus.yml 添加

 

 

 

 

 

posted on 2022-12-18 08:38  倔强不屈的阿文  阅读(817)  评论(0)    收藏  举报

导航