运维体系~指标监控~Prometheus监控告警

一 Prometheus 入门

1.1 入门介绍

运维体系~指标监控
先来一张图,说明一下Prometheus监控相关的软件和知识点。
1: 首先要安装:Prometheus, 负责收集各种监控指标,也包括自己定监控
2:  接着安装Grafana全面瓦解,负责展示监控指标
3:接着安装各种收集插件(导出器)exporter
4: 安装告警工具 alarmManager

Prometheus 监控告警原理
新增指标步骤:
安装配置exporter、到premetheus中进行配置、grafana新增图表

1.2 相关软件、端口说明

1.2.1 端口说明

软件端口作用安装形式地位核心
Prometheus9090收集器,负责收集导出器exportor的数据二进制、docker、rancher应用商店安装,下载地址: Prometheus.io, 有官方导出器,也有第三方只要按照 Prometheus的格式 暴露对应的指标 即可Prometheus、alertmanager、node_exporter、mysqld_exporter 都在一个官网上面配置文件持久化, prometheus.yml
Grafana3000展示Prometheus的数据专业展示数据,数据源可以是:Prometheus,Elasticsearch、Mysql、PostgreSql、InfluxDB(时序数据库)、json自定义 等各种插件支持;可以界面配置数据源,https://grafana.com/可视化工具Grafana:简介及安装专业展示
Alertmanager9093负责对告警信息进行分组、处理、抑制、发送二进制、docker、rancher配套Prometheus

1.2.2 导出器exporter说明

Exporter是Prometheus的一类数据采集组件的总称。
它负责从目标处搜集数据,并将其转化为Prometheus支持的格式。
与传统的数据采集组件不同的是,它并不向中央服务器发送数据,而是等待中央服务器主动前来抓取,
默认的抓取地址为http://CURRENT_IP:9100/metrics
导出器名称作用安装方式下载地址安装形式暴露端点prometheus推荐模板id
Node exporter类似zabbix-agent收集服务器自身的mem、cpu、network等服务器本身的数据prometheus官方提供、维护官网直接搜索:node_exporter 、参考地址 容器监控实践—node-exporter二进制安装、docker安装、k8s安装;需要在每台主机上面都安装host:9100/metrics,如果服务器端口不开发,可以映射到项目根路径,eg: https://ngniot.bgysmartcity.com/metrics1个Prometheus仪表板的节点导出器CN v20200628 [8919]
-cAdvisor(Container Advisor )收集docker容器的指标和性能google开源 GO开发docker、二进制都行host:8080/metricsDocker and system monitoring 893
mysql_exporter收集数据库的docker、二进制都行[host:9104/metricsMySQL Overview 7362
mongodb_exporter收集docker、二进制都行host:9001/metricsmongo 2583
rancher收集docker、二进制都行K8s Rancherv2 8721rancher1 1674

1.3 简单介绍

由于安装牵扯的软件和导出器比较多,
prometheus、Grafana、alertmanager、node_exporter、mysqld_exporter 等等,
我们先使用 rancher1 应用商店自带的 prometheus
默认操作,开发3000和9090里面就可以访问了

1.3.1 Grafana 使用事项

  1. 默认登录需要密码,没有密码,随便输入的账号和密码,就是初始化账号密码
  2. 设置数据源,默认已经添加了数据源 http://prometheus:9090,可以添加新的数据源,可以跨服务器
  3. 默认不用做啥配置,就可以看到 node-exporter【服务器主机信息】、prometheus-rancher-exporter【rancher简要信息】
  4. 每个图标需要自定义 promSQL 来展示数据
  5. 官方有很多模板,可以导入导入模板
    6: 上官网搜索自己需要的展示模板Grafna Dashboard 模板

1.3.2 prometheus 使用说明

prometheus数据来源说明
1:基于 http pull 方式采集, 被采集端只要 暴露http metrics 接口, prometheus主动定时来采集
2:对于非常规数据,比如定时器的结果数据,定时来去可能取不到,这里 借助:pushGateway 收集采集数据
3:通过服务发现或者静态配置发现目标: 比如要监控10个服务就可以静态配置,如果要监控1000个服务,就只能 把服务器注册到 注册中心(如:Consul), prometheus 从注册中心动态取。

服务发现的类型
prometheus收集到的数据的endpoint

1.3.3 PromSQL (prometheus) 的使用

PromSQL可以类似sql一样对收集到的相关指标数据进行统计分析和处理

PromSQL示例
PromSQL示例

CPU使用率、内存使用率、磁盘使用率

 #按照每台服务器,查看最近5分钟的cpu空率
100 - avg(irate(node_cpu_seconds_total{mode="idle"}[5m]))  by  (instance) * 100 
 #内存使用
100 - (node_memory_MemFree_bytes + node_memory_Cached_bytes + node_memory_Buffers_bytes ) / node_memory_MemTotal_bytes * 100
 #监控磁盘占用率,如果没有数据,可以去掉 mountpoint 参数或者修改该参数
100 - ( node_filesystem_free_bytes{mountpoint="/.r", fstype =~ "ext4|xfs"} / node_filesystem_size_bytes{mountpoint = "/.r", fstype =~ "ext4|xfs"} * 100)

1.3.4 prometheus 配置文件说明

当新增了 exporter 都要在     prometheus 里面进行配置,新增配置之后service-discovery 和 	targets 里面就能看到新增的保留点。
job: 是一一类指标
targets:是一类指标下面的多台机器
直接使用rancher 应用商店的 好处,prometheus 配置文件就不用关心了基本上都配置完美了

配置文件实例,可以对照http://ityun.ltd:9090/config 对着看差异
prometheus配置文件说明
mysql prometheus配置
参考:Prometheus 配置文件详解

  1. 编辑 prometheus.yml配置文件
  2. 检查配置文件:./promtool check config promethues.yml
  3. 配置检查没有问题,重载配置kill -hup 4100
  4. 重载完成,可以进入到 prometheus管理界面查看配置和监控数据
  5. 服务发现,当需要监控的机器是动态扩容或者所容的时候,服务发现就非常有用,支持的方式有:
    promethues 服务发现,支持来源
    promethues 监控收集的数据

1.4 安装promethues

1.4.1 二进制安装部署

  1. 官网进行下载,prometheus download, 下载:wget https://github.com/prometheus/prometheus/releases/download/v2.20.0-rc.1/prometheus-2.20.0-rc.1.linux-386.tar.gz、解压到**/usr/local/promethues/promethues**:tar zxvf *.gz
  2. 最好是参见最新的官方文档:prometheus docs getting_started
  3. 重要的启动选项,./prometheus --help, 一个是:配置文件指定--config.file="prometheus.yml"、监控端口--web.listen-address=" 0.0.0.0:9090"、数据存储目录 --storeage.tsdb.path=" data/"、数据存储保留时间默认15D=--storage.tsdb.retention=15d
  4. 配置为系统服务
#1: systemd,先copy一个模板进行修改
	cd /usr/lib/systemd/system
# 2: copy一个配置文件 service
cp sshd.service prometheus.service
# 3:  修改配置文件
[Unit]
Description=prometheus.io
After=network.target

[Service]
Restart=on-failure
ExecStart=/usr/local/prometheus/promethues/promethues --config.file=/usr/local/prometheus/promethues/promethues/promethues.yml  //自已的tomcat目录
ExecReload=/bin/kill -s HUP $MAINPID
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

#4: #在命令执行,重新加载service配置
systemctl daemon-reload
#5 启动测试
systemctl start prometheus
#6 查看进程执行情况
ps -ef |grep prometheus

1.4.2 rancher部署

rancher1 prometheus默认安装截图
映射配置文件:/usr/local/docker_volume/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
rancher  prometheus 配置 修改

1.4.3 docer 部署

看官网文档: prometheus installation 搜索 Using Docker

  1. 执行docker运行命令
#执行启动命令,挂载卷地址,/usr/local/docker_volume/prometheus/prometheus.yml
docker run -d \
    -p 9090:9090 \
    -v /usr/local/docker_volume/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  \
    -v /usr/local/docker_volume/prometheus/data:/prometheus\
    prom/prometheus

二 导出器和可视化图表

2.1 node exporter 服务器资源导出器

node导出器,负责导出 服务器自身的cpu、内存、网络、平均负载等。
使用展示模板,特别方便不用自己写PromSQL

1 Node Exporter for Prometheus Dashboard CN v20200628
官方Grafana模板地址:1 Node Exporter for Prometheus Dashboard CN v20200628

node exporter 服务器主机监控 图标示例
node 表格的一个bug

2.2 cadvisor 容器导出器

cadvisor是谷歌开发的容器导出器,可以监控容器的各项指标,可以手工安装

Grafana的显示cadvisor数据模板
Docker and system monitoring 893 - 推荐使用
cAdisor 容器 contanier 监控

2.3 Rancher 导出器

我们监听rancher 的指标,这个 rancher promethues自身就有的exporter
  1. 导出器名称prometheus-rancher-exporterinfinityworks/prometheus-rancher-exporter:v0.22.52
  2. 可视化模板 Rancher的 promethues数据源模板 1674
  3. 可视化模板 Ranche2 - 8721

2.4 mysql_exporter 导出器

mysql_exporter,下载安装到自己需要监控的mysql主机,
创建用户授权一个账号,具体查看github; 可以自己配置采集信息,具体查看:
./mysql_exporter --help
eg: mysql最大连接数、当前连接数、innodb利用率、读写流量、查询速度
  1. 导出器 mysql_exporter 下载地址:prometheus mysqld_exporter
  2. grafan图表模板 mysql grafana 的 promethues数据源模板 - 7362

rancher1 监控指标查看
rancher2 图标查看

2.4.1 mysql_exporter详细安装步骤

  1. 下载 包到本机 /usrl/local/promethues/exporter/mysql_exporter, 最新版本到官网下载,见:【mysql_exporter 】download
    wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-386.tar.gz,官网:下载特别慢,可以从第三方下载,见grafana-prometheus-mysqld-node_exporter.rar
  2. 解压:tar -zxvf *.gz
  3. 查看启动选项:``
  4. 进入mysql里面创建一个mysql用户&授权,具体搜索:Required Grantsgithub mysqld_exporter
CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'exporter123pwdxx.' WITH MAX_USER_CONNECTIONS 3; #创建一个新用户,只允许localhost有权限,也可以变成%; & 限制最大连接数是3; 如果报错,删除 用户连接数限制。
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost'; #授权
  1. 在当前目录创建一个my.cnf文件,通过该文件,就可以每次免密使用。touch my.cnf,查看设置选项:./mysqld_exporter --help
[client]
user=exporter
password=exporter123pwdxx.
  1. centos主机上面启动&指定配置文件:./mysqld_exporter --config.my-cnf="./my.cnf",启动完成验证:http://localhost:9104/metrics, 后台运行:nohup ./mysqld_exporter --config.my-cnf="./my.cnf" &
  2. 配置完毕,我们回到promethes配置文件中进行配置,vi prometheus.yml
  3. 如果9104端口无法对外开放,可以进行映射,nginx配置如下:
   location /metrics { #Node exporter metrics 监控
      proxy_pass http://localhost:9104;
    }
  1. 高阶配置,配置开机就启动 mysqld_exporter,添加启动命令:echo "nohup ./mysqld_exporter --config.my-cnf="./my.cnf" &" >> /etc/rc.d/rc.local、然后添加可执行权限:chmod +x /etc/rc.d/rc.local

2.4.2 MySQL 监控指标

promethues 指标 MySQL Overview [7362]
mysql 监控指标效果图

2.5 mongodb_exporter 导出器

mongodb_exporter,下载安装到自己需要监控的MongoDB主
这个插件手工安装还有点麻烦,需要手工安装go、安装glide,然后才能安装exporter。

参考,文档非常详细、或者直接看github:prometheus监控mongo

  1. 使用的插件是:dcu/mongodb_exporter
  2. 使用的展示json是 2583 :https://grafana.com/dashboards/2583
  3. 使用的dcu/mongodb_exporter 对应的docker 镜像是:targetprocess/mongodb_exporter
  4. 需要给指定MongoDB账号,监控的权限

	# E0727 04:19:12.553163       1 oplog_status.go:127] Failed to get local.oplog_rs collection stats.
	# E0727 04:19:42.490771       1 server_status.go:173] Failed to get server status.
	# E0727 04:19:42.522262       1 replset_status.go:231] Failed to get replSet status.
# Prometheus Mongodb Exporter - Correct DB User Permissions
#When you see the error Failed to get local.oplog_rs collection stats. in your mongodb exporter logs, make sure the DB user account you use has the right permissions.

db.getSiblingDB("admin").createUser({
    user: "mongodb_exporter",
    pwd: "mongodb_exporter_pwd.",
    roles: [
        { role: "clusterMonitor", db: "admin" },
        { role: "read", db: "local" }
    ]
})
docker run -d \
    -p 9001:9001 \
    --mongodb.uri="mongodb://iotMongoUserX:.123aB.iotMongoUserXpWD@39.198.173.142:37071" \
    targetprocess/mongodb_exporter

启动参数:--mongodb.uri=mongodb://iotMongoUserX:.123aB.iotMongoUserXpWD@39.198.173.142:37071
在这里插入图片描述
如何查看启动参数,进入容器内部find / -name '*exporter*'查找安装目录, 执行cd /bin , ./mongodb_exporter --help
MongoDB 监控示意图

三 告警alartmanager

前面我们讲解了监控数据的可视化,但是数据量很多,指标很多,我们不可能一直盯着屏幕。因此我们需要对数据进行巡检和告警处理。
告警也有一些高级使用步骤:分组、抑制、静默等

3.1 使用步骤

3.1.1 . 安装部署 alartmanager, 通过官网或者github,官网同:promethues

alartmanager安装通过二进制或者doker都可以

参考:【集群监控】Docker上部署Prometheus+Alertmanager+Grafana实现集群监控
参考:prometheus alerting官网
参考:prometheus alerting gtihub

3.1.2 配置通信 Promethues和alertmanager的通信,在prometheus.yml到prometheus.yml指定alertmanagers的ip

3.1.3 配置告警规则-1在promethues中promethues.yml配置规则目录

配置完成进行检查配置文件:promtool check config /etc/prometheus/prometheus.yml

3.1.4 配置告警规则-2

promethues 和 alartmanager 通信

告警规则

3.1.5 配置接收者在alertmanager

在alartmanager中 【告警状态、告警分配、告警收敛(分组、抑制、静默)】以及接收者
配置alartmanager.yml

检查配置文件是否正确:./amtool check-config alertmanager.yml,其中位置是:/bin/amtool/etc/alertmanager/alertmanager.yml

3.1.6 查看alart列表在promethues

promethues里面配置了alerts,就可以看到了,告警列表了

告警规则-配置完成

参考,官方的rule格式:prometheus - alerting_rules告警规则
告警状态

3.1.7 告警邮件查看

==等一会查看告警邮件把

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dazer007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值