{{ template "head" . }}
{{ template "prom_right_table_head" }}
<tr><th colspan="2">Overview</th></tr>
<tr>
<td>User CPU</td>
<td>{{ template "prom_query_drilldown" (args (printf "sum(irate(node_cpu_seconds_total{job='node',instance='%s',mode='user'}[5m])) * 100 / count(count by (cpu)(node_cpu_seconds_total{job='node',instance='%s'}))" .Params.instance .Params.instance) "%" "printf.1f") }}</td>
</tr>
<tr>
<td>System CPU</td>
<td>{{ template "prom_query_drilldown" (args (printf "sum(irate(node_cpu_seconds_total{job='node',instance='%s',mode='system'}[5m])) * 100 / count(count by (cpu)(node_cpu_seconds_total{job='node',instance='%s'}))" .Params.instance .Params.instance) "%" "printf.1f") }}</td>
</tr>
<tr>
<td>Memory Total</td>
<td>{{ template "prom_query_drilldown" (args (printf "node_memory_MemTotal_bytes{job='node',instance='%s'}" .Params.instance) "B" "humanize1024") }}</td>
</tr>
<tr>
<td>Memory Free</td>
<td>{{ template "prom_query_drilldown" (args (printf "node_memory_MemFree_bytes{job='node',instance='%s'}" .Params.instance) "B" "humanize1024") }}</td>
</tr>
<tr>
<th colspan="2">Network</th>
</tr>
{{ range printf "node_network_receive_bytes_total{job='node',instance='%s',device!='lo'}" .Params.instance | query | sortByLabel "device" }}
<tr>
<td>{{ .Labels.device }} Received</td>
<td>{{ template "prom_query_drilldown" (args (printf "irate(node_network_receive_bytes_total{job='node',instance='%s',device='%s'}[5m])" .Labels.instance .Labels.device) "B/s" "humanize") }}</td>
</tr>
<tr>
<td>{{ .Labels.device }} Transmitted</td>
<td>{{ template "prom_query_drilldown" (args (printf "irate(node_network_transmit_bytes_total{job='node',instance='%s',device='%s'}[5m])" .Labels.instance .Labels.device) "B/s" "humanize") }}</td>
</tr>
{{ end }}
<tr>
<th colspan="2">Disks</th>
</tr>
{{ range printf "node_disk_io_time_seconds_total{job='node',instance='%s',device!~'^(md\\\\d+$|dm-)'}" .Params.instance | query | sortByLabel "device" }}
<tr>
<td>{{ .Labels.device }} Utilization</td>
<td>{{ template "prom_query_drilldown" (args (printf "irate(node_disk_io_time_seconds_total{job='node',instance='%s',device='%s'}[5m]) * 100" .Labels.instance .Labels.device) "%" "printf.1f") }}</td>
</tr>
{{ end }}
{{ range printf "node_disk_io_time_seconds_total{job='node',instance='%s'}" .Params.instance | query | sortByLabel "device" }}
<tr>
<td>{{ .Labels.device }} Throughput</td>
<td>{{ template "prom_query_drilldown" (args (printf "irate(node_disk_read_bytes_total{job='node',instance='%s',device='%s'}[5m]) + irate(node_disk_written_bytes_total{job='node',instance='%s',device='%s'}[5m])" .Labels.instance .Labels.device .Labels.instance .Labels.device) "B/s" "humanize") }}</td>
</tr>
{{ end }}
<tr>
<th colspan="2">Filesystem Fullness</th>
</tr>
{{ define "roughlyNearZero" }}
{{ if gt .1 . }}~0{{ else }}{{ printf "%.1f" . }}{{ end }}
{{ end }}
{{ range printf "node_filesystem_size_bytes{job='node',instance='%s'}" .Params.instance | query | sortByLabel "mountpoint" }}
<tr>
<td>{{ .Labels.mountpoint }}</td>
<td>{{ template "prom_query_drilldown" (args (printf "100 - node_filesystem_avail_bytes{job='node',instance='%s',mountpoint='%s'} / node_filesystem_size_bytes{job='node'} * 100" .Labels.instance .Labels.mountpoint) "%" "roughlyNearZero") }}</td>
</tr>
{{ end }}
{{ template "prom_right_table_tail" }}
{{ template "prom_content_head" . }}
<h1>Node Overview - {{ reReplaceAll "(.*?://)([^:/]+?)(:\\d+)?/.*" "$2" .Params.instance }}</h1>
<h3>CPU Usage</h3>
<div id="cpuGraph"></div>
<script>
new PromConsole.Graph({
node: document.querySelector("#cpuGraph"),
expr: "sum by (mode)(irate(node_cpu_seconds_total{job='node',instance='{{ .Params.instance }}',mode!='idle'}[5m]))",
renderer: 'area',
max: {{ with printf "count(count by (cpu)(node_cpu_seconds_total{job='node',instance='%s'}))" .Params.instance | query }}{{ . | first | value }}{{ else}}undefined{{end}},
yAxisFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
yHoverFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
yTitle: 'Cores'
})
</script>
<h3>Disk I/O Utilization</h3>
<div id="diskioGraph"></div>
<script>
new PromConsole.Graph({
node: document.querySelector("#diskioGraph"),
expr: [
"irate(node_disk_io_time_seconds_total{job='node',instance='{{ .Params.instance }}',device!~'^(md\\\\d+$|dm-)'}[5m]) * 100",
],
min: 0,
name: '[[ device ]]',
yAxisFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
yHoverFormatter: PromConsole.NumberFormatter.humanizeNoSmallPrefix,
yUnits: "%",
yTitle: 'Disk I/O Utilization'
})
</script>
<h3>Memory</h3>
<div id="memoryGraph"></div>
<script>
new PromConsole.Graph({
node: document.querySelector("#memoryGraph"),
renderer: 'area',
expr: [
"node_memory_Cached_bytes{job='node',instance='{{ .Params.instance }}'}",
"node_memory_Buffers_bytes{job='node',instance='{{ .Params.instance }}'}",
"node_memory_MemTotal_bytes{job='node',instance='{{ .Params.instance }}'} - node_memory_MemFree_bytes{job='node',instance='{{.Params.instance}}'} - node_memory_Buffers_bytes{job='node',instance='{{.Params.instance}}'} - node_memory_Cached_bytes{job='node',instance='{{.Params.instance}}'}",
"node_memory_MemFree{job='node',instance='{{ .Params.instance }}'}",
],
name: ["Cached", "Buffers", "Used", "Free"],
min: 0,
yUnits: "B",
yAxisFormatter: PromConsole.NumberFormatter.humanize1024,
yHoverFormatter: PromConsole.NumberFormatter.humanize1024,
yTitle: 'Memory'
})
</script>
{{ template "prom_content_tail" . }}
{{ template "tail" }}
promethues-2.37.1.linux-amd64.tar.gz
需积分: 0 62 浏览量
更新于2022-11-02
收藏 79.98MB GZ 举报
Prometheus 是一个开源的系统监控和警报工具,由 SoundCloud 开发并广泛应用于各种规模的组织中。这个压缩包 "prometheus-2.37.1.linux-amd64.tar.gz" 提供了 Prometheus 的 Linux x86_64(AMD64)平台版本,版本号为 2.37.1。下面将详细介绍 Prometheus 的核心功能、架构、配置以及如何在 Linux 系统上部署和使用。
1. **Prometheus 核心功能**:
- **时间序列数据库**:Prometheus 存储和处理时间序列数据,这包括系统指标、应用性能指标等。
- **服务发现**:自动发现要监控的服务和目标,如 Kubernetes 集群中的 Pod 或者静态配置的服务器。
- **拉取模型**:Prometheus 定期从目标服务拉取指标,而不是让目标推送数据,这样更利于控制数据质量和安全性。
- **表达式查询语言**:PromQL(Prometheus Query Language)允许用户编写复杂的查询表达式,用于分析和展示指标。
- **警报规则**:用户可以定义警报规则,当满足特定条件时触发警报,通过 Alertmanager 发送通知。
- **可视化**:与 Grafana 集成,提供丰富的图表和仪表板,便于指标可视化。
2. **Prometheus 架构**:
- **Prometheus Server**:主要负责数据的收集、存储和查询。
- **Target**:被监控的服务,它们暴露指标 HTTP API 给 Prometheus 拉取。
- **Exporters**:用于将其他系统的指标转换为 Prometheus 可以理解的格式。
- **Service Discovery**:自动发现新目标或跟踪现有目标的变化。
- **Alertmanager**:处理 Prometheus 生成的警报,并将其路由到适当的接收器,如邮件、Slack 或者 PagerDuty。
3. **部署 Prometheus**:
- 解压:`tar -zxvf prometheus-2.37.1.linux-amd64.tar.gz`
- 运行:`cd prometheus-2.37.1.linux-amd64/`,然后执行 `./prometheus --config.file=prometheus.yml`,其中 `prometheus.yml` 是配置文件。
- 配置:在 `prometheus.yml` 中配置服务发现、目标地址、警报规则等。
- 自动启动:可将 Prometheus 设置为系统服务,例如在 systemd 系统中创建 unit 文件并启动。
4. **使用 Prometheus**:
- 监控目标:在配置文件中指定目标服务的地址和端口,Prometheus 将定期抓取指标。
- 编写 PromQL 查询:通过浏览器访问 Prometheus Web UI(默认 http://localhost:9090),在表达式浏览器中输入 PromQL 查询指标。
- 警报管理:定义警报规则并在配置文件中指向 Alertmanager 的位置,确保警报正常发送。
- 可视化:配合 Grafana 创建图表和仪表板,展示监控数据。
5. **Prometheus 生态系统**:
- **Pushgateway**:允许目标主动推送指标到 Prometheus,适合短暂任务或不支持拉取的情况。
- **Client libraries**:各种编程语言的客户端库,帮助集成 Prometheus 收集指标。
- **Alertmanager**:处理 Prometheus 生成的警报,避免重复和噪声,支持多种通知渠道。
Prometheus 是一个强大的监控解决方案,通过灵活的配置和丰富的生态,可以适应各种复杂的监控需求。正确部署和配置 Prometheus,能够有效提升系统监控的效率和质量。
qq_16616195
- 粉丝: 0
- 资源: 1
最新资源
- 后勤管理处服务工作标准.docx
- 后勤维修材料管理制度.docx
- 寒假作息时间表.docx
- 基层应急救援站建设提升基层安全防范和应急救援能力的实施方案.docx
- 磷酸铁、磷酸铁锂生产工艺流程.docx
- 环境问题调查表.docx
- 普通高等学校运动训练、武术与民族传统体育专业招生管理办法.docx
- 设备管理制度(全).docx
- 乳酸阈值对照表.docx
- 神经肌肉中心皮肌炎诊断标准.docx
- 硕士研究生招生考试(初试)《考场规则》.docx
- 消防安全常识二十条.docx
- 学校交通安全知识培训内容.docx
- 医疗废物处置管理制度.docx
- 医疗卫生机构医疗废物管理制度.docx
- 招投标中标后,招标方的操作流程.docx