Prometheus监控系统概述
类似zabbix的proxy这个中间人
可以通过ansible批量consul来监控主机
pushgateway就是用来采集短周期的数据,不是持续进行的,比如定时任务
常规任务,exporter去采集
服务发现,原生支持对k8s的服务发现
服务端
告警,微信告警,webhook,钉钉告警都能支持,支持告警收敛,防止告警信息轰炸
可以用grafana、来进行展示
两个概念,实例可以认为是被监控端,作业就是实例的集合(一堆被监控端服务器可以进行分组)
Prometheus监控Docker主机
准备好两台安装好docker的,前提是有一个主配置文件
采集周期和评估周期
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration 告警是由独立组件来完成的,需要指定组件在什么位置
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.下面是监控配置
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
- job_name: "docker"
static_configs:
- targets: ['192.168.31.62:8080']
- job_name: "Linux"
static_configs:
- targets: ['192.168.31.62:9100']
docker run起来就可以了
现在就可以访问了
有自己的数据模型,度量指标名,里面有多个标签,为了让这个指标存入多维度的数据模型
监控docker主机,要先运行一个容器
可以用states内置命令查看容器内的情况
现在是交互式一直在变动
可以加上no-stream
可以通过shell的awk把值取出来
直接取利用率百分比
Prometheus的都要按照这个来,度量指标名称+依赖
google开源了容器指标采集的系统cadvisor,内置在了K8S里,也是收集k8s里pod相关的指标的
cadvisor通过docke安装
挂载一个根
挂载/var/run目录里面会有一些pid
系统启动的一些信息,当前统计的一些信息
挂载docker工作目录,通过这个目录可以获取运行的容器,要监控哪些容器
硬盘信息
8080访问看看,cadvisor只负责采集数据,不负责存储
cadvisor暴露了一个metrics指标,每一行都是监控指标,度量名称和标签,后面是对应的值,prometheus拿到这些数据放到tsdb时序数据库里
修改普罗米修斯的配置文件,采集监控端,指定连接协议 http,连接接口默认metrics
重启下容器就好
container开头的都是cadvisor发过来的数据
Prometheus+Grafana可视化展示
安装grafana,增加一个数据源,创建仪表盘,创建用户,安装插件
增加数据源,就把普罗米修斯的访问地址9090即可
这样就完成了添加数据源
建议先去grafana的仪表盘库里去找,监控docker有一个不错的,id号是193
苦于直接选择导入仪表盘
输入193
选择数据源
这样数据就出来了,起来的两个容器都采集到了
上面是对容器的监控,还可以对主机的监控,需要下载exporter
跑一下脚本,node_exporter.sh
#!/bin/bash
wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz
tar zxf node_exporter-0.17.0.linux-amd64.tar.gz
mv node_exporter-0.17.0.linux-amd64 /usr/local/node_exporter
cat <<EOF >/usr/lib/systemd/system/node_exporter.service
[Unit]
Description=https://prometheus.io
[Service]
Restart=on-failure
ExecStart=/usr/local/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable node_exporter
systemctl restart node_exporter
这样就起来了
node_exporter监控地址是9100
Prometheus配置文件修改
可以重读配置也可以直接重启容器
现在都好了
grafana有个9276模板
如果遇到不出图,可能遇到很多原因,没数据(编辑的时候把公式复制到prometheus里执行看看),时间不对(选择7天这种,看能否出图,能出图多半是时间不对),promsql语句不对