prometheus
prometheus 优点
监控软件 有
软件 | 优点 | 缺点 |
---|---|---|
nagios | 无历史数据 | |
ganglia | 无法实现报警 | |
openfalcol | 自动发现 支持用户主动push、支持每周上亿次数据采集告警判定、多维数据展示、点击支撑200万metric上报归档存储 | 社区不完善 功能有待完善 |
zabbix | 支持多平台分布式开源监控软件、安装简单多种数据采集灵活集成、提供多找API接口 支持调用脚本、出现问题时可自动远程执行命令 | 项目批量修改不方便、定制开发难度较大、系统级报警较多、无报表功能 |
prometheus | 定制换难度较低、监控数据基于时间序列存储数据库内便于对数据聚合、哥哥组件有成熟的高可用方案没有单点故障、适合对云环境监控对kubernetes很好的支持、支持报警收敛 | 安装复杂 监控 告警页面分属于不同组件 |
prometheus 监控原理及架构
-
存储数据库
- prometheus 监控使用时序数据库 TSDB。
- 时间作为他的主轴,数据按顺序到达。
- 大多数操作是插入新数据,偶尔伴随查询,更新数据比较少。
- 时间序列数据累计速度非常快, 高的容纳率、更快的大规模 查询以及更好的数据压缩。
- TSDB通常还包括一些共通的時間序列数据分析的功能和操作:数据保留策略、灵活的时间聚合等。
-
数据来源
- 官方的exporter
- 自定义的SDK接口
解释: server 通过http的pull 方式采集监控数据,并存储在本地TSDB中
不能通过网络互通的元数据可以通过pushgateway 组件代理 实现数据采集
-
查询语言 promql
报警方式是通过promql 写规则, 与设置的阈值进行匹配,超过阈值报警,报警组件是独立的,alertmanger -
webUI
server 提供了 简单的UI 也可以使用第三方插件 如grafana -
原理架构图
安装prometheus
- 正常linux 系统 centos
- 下载二进制安装包 并解压
官网下载地址https://prometheus.io/download/
wget https://github.com/prometheus/prometheus/releases/download/v2.22.0/prometheus-2.22.0.linux-amd64.tar.gz
tar zxvf prometheus-2.22.0.linux-amd64.tar.gz
mkdir /data
mv prometheus-2.22.0.linux-amd64 /data/prometheus
useradd prometheus -s /sbin/nologin
chown prometheus:prometheus -R /data/prometheus
- 封装service
cat << EOF > /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
After=network.target
[Service]
ExecStart=/data/prometheus/prometheus --config.file=/data/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus/data --web.enable-lifecycle --storage.tsdb.no-lockfile
User=prometheus
[Install]
WantedBy=multi-user.target
EOF
配置参数 | 解释 |
---|---|
config.file | 配置文件 |
storage.tsdb.path | 指定 tsdb 路径 |
storage.tsdb.retention.time | 指定数据存储时间 |
web.enable-lifecycle | 提供类似nginx reload 功能 |
storage.tsdb.no-lockfile | k8s deployment 管理时 开启 |
- 设置开机启动
systemctl daemon-reload
systemctl enable prometheus
systemctl start prometheus - 验证
ss -tunlp |grep prometheus
tcp LISTEN 0 128 :::9090 :::* users:(("prometheus",pid=9703,fd=9))
此时可以访问 9090端口 访问prometheus web页面
安装grafana
- 下载而精致安装包并解压
wget https://dl.grafana.com/oss/release/grafana-7.3.1.linux-amd64.tar.gz
tar zxvf grafana-7.3.1.linux-amd64.tar.gz
mv grafana-7.3.1 /data/grafana
- 封装service
cat << EOF > /usr/lib/systemd/system/grafana-server.service
[Unit]
Description=Grafana
After=network.target
[Service]
Type=notify
ExecStart=/data/grafana/bin/grafana-server -homepath /data/grafana
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
- 设置开机启动
systemctl daemon-reload
systemctl enable grafana-server
systemctl start grafana-server - 验证
ss -tunpl |grep grafana
tcp LISTEN 0 128 [::]:3000 [::]:* users:(("grafana-server",pid=33629,fd=9))
安装alertmanager
- 下载二进制安装包 并解压
wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
tar zxf alertmanager-0.21.0.linux-amd64.tar.gz
mv alertmanager-0.21.0.linux-amd64 /data/alertmanager
- 封装service
cat << EOF > /etc/systemd/system/alertmanager.service
[Unit]
Description=alertmanager
Documentation=https://prometheus.io/
After=network.target
[Service]
Restart=on-failure
ExecStart=/data/alertmanager/alertmanager --config.file=/data/alertmanager/alertmanager.yml --web.listen-address=:9093
[Install]
WantedBy=multi-user.target
EOF
- 设置开机启动
systemctl daemon-reload
systemctl enable alertmanager
systemctl start alertmanager - 验证
ss -tunpl |grep alertmanager
tcp LISTEN 0 128 :::9093 :::* users:(("alertmanager",pid=10059,fd=8))
此时可以访问 9093 端口 访问alertmanager web页面
安装完毕
优点:
- 分组 当太多的告警 到来可以分组发送
- 抑制 如果一个报警规则出发以后后面相同的触发会被抑制
- 高可用 可以组成alertmanager集群
数据类型
访问 本地 的 prometheus 端口 /metrics 查看 prometheus 监控项
Prometheus 数据格式
例如
< --metric-- > < --value-- >
prometheus_http_requests_total{code=“200”,handler="/alerts"} 2
一般metric 格式为 应用名称_监测对象_数值类型_单位
{} 内为标签 可以进行 识别
grafana 数据库连接Prometheus
-
登录grafana localhost:3000
设置默认密码admin admin123 登录后 重新设置密码
-
添加 prometheus 库
-
查看Prometheus 默认报表