源码地址
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
[Install]
WantedBy=multi-user.target
监听在9090端口
部署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 检查配置文件
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
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
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 添加
标签:node,awen,app,prometheus,memory,root From: https://www.cnblogs.com/tshxawen/p/16980645.html