Prometheus普罗米修斯监控系统

  • 一、普罗米修斯监控概述
    • 1.1 什么是普罗米修斯监控
  • 二、时间序列数据
    • 2.1 什么是序列数据
    • 2.2 时间序列数据特点
    • 2.3 普罗米修斯特征
  • 三、普罗米修斯原理架构图
  • 四、普罗米修斯监控系统的部署
    • 4.1 环境准备工作
    • 4.2 普罗米修斯的部署
    • 4.3 普罗米修斯的 web 页面操作
    • 4.4 监控远程 Linux 主机
    • 4.5 远程监控 MySQL 数据库
  • 五、Grafana可视化图形工具
    • 5.1 什么是Grafana
    • 5.2 使用Grafana连接Prometheus
    • 5.3 Grafana图形显示MySQL监控数据
  • 六、 Grafana+onealert报警
    • 6.1 注册账号并获取key
    • 6.2 配置通知策略
    • 6.3 将配置的Webhook Notification Channel添加到Grafana Alert中
    • 6.4 CPU告警测试
  • 七、总结报警不成功的可能原因

一、普罗米修斯监控概述

1.1 什么是普罗米修斯监控

Prometheus(由go语言(golang)开发)是一开源的监控&报警&时间序列数据库的组合。 适合监控docker容器。因为kubernetes(俗称k8s)的流行带动了 prometheus的发展。

官方网站:https://prometheus.io/


二、时间序列数据

2.1 什么是序列数据

时间序列数据(TimeSeries Data):按照时间顺序记录系统,设备状态变化的数据被称为时序数据。

应用的场景很多,如:

  • 无人驾驶车辆运行中要记录的经度,纬度,速度,方向,旁边物体的距离等等。每时每刻都要将数据记录下来做分析。
  • 某一个地区的各车辆的行驶轨迹数据
  • 传统证券行业实时交易数据
  • 实时运维监控数据等

2.2 时间序列数据特点

● 性能好
关系型数据库对于大规模数据的处理性能糟糕。NOSQL 可以比较好的处理大规模数据,让依然比不上时间序列数据库。

● 存储成本低
高效的压缩算法,节省存储空间,有效降低I0

Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列, 30秒间隔,保留60天,大概花了200多G (来自官方数据)


2.3 普罗米修斯特征

  • 多维度数据模型
  • 灵活的查询语言
  • 不依赖分布式存储,单个服务器节点是自主的
  • 以HTTP方式,通过pull模型拉去时间序列数据
  • 也可以通过中间网关支持push模型
  • 通过服务发现或者静态配置,来发现目标服务对象
  • 支持多种多样的图表和界面展示

三、普罗米修斯原理架构图


____Prometheus 直接或通过中介推送网关从检测的作业中抓取指标,用于短期作业。它将所有抓取的样本存储在本地,并对这些数据运行规则,以从现有数据聚合和记录新的时间序列或生成警报。Grafana或其他 API 使用者可用于可视化收集的数据。


四、普罗米修斯监控系统的部署

4.1 环境准备工作

服务器准备

服务器类型 系统和IP地址 备注
Prometheus服务器 CentOS7.4(64 位) 192.168.80.10 Prometheus
grafana服务器 CentOS7.4(64 位) 192.168.80.20 mariadb、node_exporter
被监控服务器 CentOS7.4(64 位) 192.168.80.30 Grafana

所有服务器关闭防火墙和SElinux

systemctl stop firewalld
setenforce 0

修改/etc/hosts

192.168.80.10 prometheus
192.168.80.20 grafana
192.168.80.30 client

4.2 普罗米修斯的部署

1.设置时间同步
① 所有服务器安装ntpdate

yum install ntpdate -y


② 进行时间同步

ntpdate cn.ntp.org.cn
date


2.安装普罗米修斯
下载地址:https://prometheus.io/download/ 。我这边之前下载过,直接传入就可以了。
① 传入安装包并解压

cd /opt/
rz -E               ##传入安装包
tar zxvf prometheus-2.29.1.linux-amd64.tar.gz


② 移动并修改名

mv prometheus-2.29.1.linux-amd64 /usr/local/promethues
cd /usr/local/promethues/


③ 后台启动普罗米修斯

cd /usr/local/promethues/
./prometheus --config.file="/usr/local/promethues/prometheus.yml" &netstat -napt | grep prometheus           #查看服务是否启动 端口为9090
或
lsof -i:9090


④ 浏览器中进行访问测试

http://192.168.80.10:9090

⑤ 查看 Status 中的 Targets 项。可以看到默认监控的 localhost 也就是本机。



⑥ 监控接口:通过http://服务器IP:9090/metrics可以查看监控的数据

4.3 普罗米修斯的 web 页面操作

① 查看cpu的运行状态(首页搜索栏中输入process_cpu_seconds_total)

② 点击 Graph 选项

4.4 监控远程 Linux 主机

① 在远程linux主机(被监控端agent1)上安装 node_exporter 组件,我这边直接上传。
官网下载地址为:https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz

cd /opt/
tar zxvf node_exporter-1.2.2.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/
mv node_exporter-1.2.2.linux-amd64/ node_exporter


② 启动 node_exporter 程序

cd node_exporter/
nohup /usr/local/node_exporter/node_exporter &      #永久运行并在后台运行
netstat -natp | grep :9100                          #查看端口占用情况

扩展: nohup命令:如果把启动node_exporter的终端给关闭,那么进程也会随之关闭。nohup命令会帮你解决这个问题。


③ 使用http协议+9100端口收集Linux主机信息
通过浏览器访问:http://192.168.80.30:9100/metrics 就可以看到 node_exporter 在被监控端手机的监控信息

④ 在 Prometheus 服务器的配置文件中添加被监控机器的配置段

vim /usr/local/promethues/prometheus.yml##添加以下配置项- job_name: "agent1"static_configs:- targets: ["192.168.80.30:9100"]


⑤ 重新启动prometheus监控系统

pkill prometheus
lsof -i:9090
cd /usr/local/promethues/
./prometheus --config.file="/usr/local/promethues/prometheus.yml" &
lsof -i:9090

⑥ 重新回到普罗米修斯web端查看 Status 中的 Targets 项,可以看到被监控端 node_exporter 了,并且状态为 up。

4.5 远程监控 MySQL 数据库

① 在被监控端服务器上安装 mysqld_exporter 组件,我这边直接上传。
官方下载地址为:https://github.com/prometheus/mysqld_exporter/releases/download/v0.13.0/mysqld_exporter-0.13.0.linux-amd64.tar.gz

cd /opt/
tar zxvf mysqld_exporter-0.13.0.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/
mv mysqld_exporter-0.13.0.linux-amd64/ mysqld_exporter


② 节省时间安装 mariadb 数据库

yum install mariadb\* -y


③ 开启并设置为开机自启,然后登录 mysql

④ 创建 mysql 账号帮刷新权限用于收集数据

grant select,replication client,process ON *.* to 'mysql_monitor'@'localhost' identified by 'abc123';
账号为:mysql_monitor
密码为:abc123flush privileges;
exit

⑤ 在mysql_exporter 组件中创建配置文件,配置 mysql 信息

vim /usr/local/mysqld_exporter/.my.cnf[client]
user=mysql_monitor
password=abc123


⑥ 启动 mysql_exporter 组件

cd mysqld_exporter/
./mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf &


⑦ 回到 prometheus 服务器的配置文件里添加被监控的 mariadb 的配置段

vim /usr/local/promethues/prometheus.yml
## 添加下面三行- job_name: 'agent1_mariadb'static_configs:- targets: ['192.168.80.30:9104']

⑧ 改完配置文件后,重启服务

pkill prometheus
lsof -i:9090
./prometheus --config.file="/usr/local/promethues/prometheus.yml" &
lsof -i:9090


⑨ 回到web管理界面 --》点Status --》点Targets --》可以看到监控mariadb了

⑩ 查看 mysql 线程连接
搜索栏中输入:mysql_global_status_threads_connected 进行查看


五、Grafana可视化图形工具

5.1 什么是Grafana

Grafana是一个开源的度量分析和可视化工具,可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。

5.2 使用Grafana连接Prometheus

① 在grafana服务器上安装 grafana,我这边之前下载过,直接上传
官方下载地址:https://grafana.com/grafana/download

cd /opt/
rz -E
rpm -ivh grafana-5.3.4-1.x86_64.rpm
systemctl start grafana-server
systemctl enable grafana-server
lsof -i:3000


② 通过浏览器访问 http:// grafana服务器IP:3000就到了登录界面,使用默认的admin用户,admin密码就可以登陆了

③ 重新修改密码为:abc123

④ 把 prometheus 服务器收集的数据做为一个数据源添加到 grafana,让 grafana 可以得到 prometheus 的数据

部分选项解释
Auth项:公网传输数据加密与验证用的,我们这边暂时不需要设置
Advanced HTTP Settings项:15秒获取一次数据,GET方式


⑤ 为添加好的数据源做图形显示(查看被监控端1分钟、5分钟和15分钟的负载情况)






⑥ 匹配条件显示(根据IP或普罗米修斯里面设置的job)

5.3 Grafana图形显示MySQL监控数据

① 在 grafana 上修改配置文件,并下载安装mysql监控的 dashboard(包含相关json文件,这些json文件可以看作是开发人员开发的一个监控模板),我这边直接上传。
官方下载网址: https://github.com/percona/grafana-dashboards

vim /etc/grafana/grafana.ini[dashboards.json]
enabled = true
path = /var/lib/grafana/dashboardsgit clone https://github.com/percona/grafana-dashboards.git

② 下载json模板并上传到 grafana 服务器后解压缩
参考网址: https://github.com/percona/grafana-dashboards

unzip grafana-dashboards-main.zip

③ 复制到/var/lib/grafana目录下并改名,然后重启服务

cp -r grafana-dashboards-1.17.4/ /usr/lib/grafana/
systemctl restart grafana-server.service


④ 把下载压缩包在本地解压

⑤ 在grafana图形界面导入相关json文件

⑥ 点import导入后,报prometheus数据源找不到,因为这些json文件里默认要找的就是叫Prometheus的数据源,但我们前面建立的数据源却是叫 prometheus_data ,修改之前数据源的名称即可。


⑦ 修改完数据源名称后再次查看


⑧ 数据展示完成(过段时间再看,加载完成就会数据显示了)

六、 Grafana+onealert报警

prometheus报警需要使用alertmanager这个组件,而且报警规则需要手动编写(对运维来说不友好)。所以我这里选用grafana+onealert报警。
注意: 实现报警前把所有机器时间同步再检查一遍.

再次所有服务器同步时间

6.1 注册账号并获取key

② 先在onealert里添加grafana应用,需要先申请onealert账号。
官方网站:https://caweb.aiops.com/#/

③ 在新建应用中找到 grafana 应用 ,填好名字后保存获取应用key


然后可以看到配置步骤

6.2 配置通知策略

① 在 Grafana 中创建 Notification channel,选择类型为 Webhook;
a. 将第一步中生成的Webhook URL填入Webhook settings Url;

URL格式:
http://api.aiops.com/alert/api/event/grafana/v1/4065f3ce446841ca859d41c675286833/

b. Http Method选择POST;
c. Send Test&Save;


6.3 将配置的Webhook Notification Channel添加到Grafana Alert中

① 选择我们之前创建的cpu监控,点击Edit进行编辑

② 填写name 和 IS above

③ 现在发送的对象和发送的信息

④ 保存并自定义个名字

6.4 CPU告警测试

⑤ 现在可以去设置一个报警来测试了(这里以我们前面加的cpu负载监控来做测试)
在被监控端的agent执行测试命令cat /dev/urandom | md5sum

⑥ 等待一会,可以看到grafana监控页面CPU负载超过0.5了

⑦ 这个时候会收到邮件提示

七、总结报警不成功的可能原因

  1. 各服务器之间时间不同步,这样时序数据会出问题,也会造成报警出问题
  2. 必须写通知内容,留空内容是不会发报警的
  3. 修改完报警配置后,记得要点右上角的保存
  4. 保存配置后,需要由OK状态变为alerting状态才会报警(也就是说,你配置保存后,就已经是alerting状态是不会报警的)
  5. grafana与onealert通信有问题

一篇文章搞定Prometheus普罗米修斯监控系统的部署相关推荐

  1. 普罗米修斯监控系统_基于Prometheus和Grafana的监控平台 - 环境搭建

    导读 微服务中的监控分根据作用领域分为三大类,Logging,Tracing,Metrics. Logging - 用于记录离散的事件.例如,应用程序的调试信息或错误信息.它是我们诊断问题的依据.比如 ...

  2. 普罗米修斯监控系统_一步步教你用Prometheus搭建实时监控系统系列(二)——详细分析拉取和推送两种不同模式...

    前言 本系列着重介绍Prometheus以及如何用它和其周边的生态来搭建一套属于自己的实时监控告警平台. 本系列受众对象为初次接触Prometheus的用户,大神勿喷,偏重于操作和实战,但是重要的概念 ...

  3. 【监控】Prometheus(普罗米修斯)监控概述

    文章目录 一.监控系统概论 二.基础资源监控 2.1.网络监控 2.2.存储监控 2.3.服务器监控 2.4.中间件监控 2.5.应用程序监控(APM) 三.Prometheus 简介 3.1.什么是 ...

  4. Prometheus普罗米修斯监控+Alertmanager预警+钉钉预警

    简单实操,可直接拷贝命令执行 前提条件: centos7  10.11.7.95 关闭selinux vi /etc/sysconfig/selinuxSELINUX=disabled setenfo ...

  5. 普罗米修斯监控linux,Prometheus(普罗米修斯)搭建监控

    Prometheus(普罗米修斯) 实验环境:(各个主机,ip,所需服务) docker01 docker02 docker03 1.10 1.20 1.30 NodeEXporter NodeEXp ...

  6. Prometheus 普罗米修斯

    Prometheus 普罗米修斯 Prometheus由go语言开发,是一套开源的监控.报警.时间序列数据库的组合.适合监控docker容器.因为Kubernetes (K8S) 的流行带动了prom ...

  7. 普罗米修斯 监控_完美的分布式监控系统——普罗米修斯

    DevOps工程师或SRE工程师,可能都知道Prometheus普罗米修斯.Prometheus于2012年由SoundCloud创建,目前已经已发展为最热门的分布式监控系统.Prometheus完全 ...

  8. 普罗米修斯 监控_接近完美的监控系统—普罗米修斯

    普罗米修斯(Prometheus)是一个SoundCloud公司开源的监控系统.当年,由于SoundCloud公司生产了太多的服务,传统的监控已经无法满足监控需求,于是他们在2012年决定着手开发新的 ...

  9. 普罗米修斯监控docker 服务

    环境 192.168.254.127 (监控服务器) 192.168.254.128 (被监控机器) 首先在监控服务器安装: 1.安装Node Exporter 来收集硬件信息 所有节点运行以下命令安 ...

最新文章

  1. 如何快速创建程序组_如何快速开发小程序
  2. 计算机联锁仿真软件设计,一种基于LabVIEW的计算机联锁仿真系统的制作方法
  3. 进入软件开发行业必须要掌握的基础知识(2005-5-18)
  4. php中html富文本编辑器,php + wangEditor 富文本编辑器的配置
  5. boost_1_48_0 在VS2008下的安装 Boost.Asio安装
  6. 数十万应用结点全息监控,ARMS新上线的应用监控神器到底有多牛?
  7. gulp与webpack的对比
  8. vuejs页面跳转_【Vue 学习】 VueJS 生命周期
  9. List集合中对象的排序
  10. CSRankings 学术机构排行榜:“三巨头”不可撼动,清华大学突围 AI 榜单!
  11. CDH页面配置HA(高可用)
  12. 【数据结构】1、零碎知识点集合
  13. 安装HDFS过程中Browse Directory报错
  14. 芝士超人复活卡软件多线程版本
  15. 计算机基础和web相关知识点
  16. 牛客竞赛语法入门班选择结构习题【完结】
  17. 如何安装torch、Pytorch、torchversion
  18. 微信多订单合并付款_拼多多怎样合并付款?
  19. 爆火的红光光浴真不是智商税,科普一下#大健康#红光光浴#红光#种光光学
  20. 文献记录(part107)--Detecting Meaningful Clusters From High-Dimensional Data ...

热门文章

  1. 联通修改服务器密码是什么情况,联通的服务器咋设置密码
  2. Visual Studio中新建方案、项目目录设置、VC++目录、相对路径设置
  3. 按位与、或、异或运算以及其应用
  4. 【深度学习前沿应用】文本分类Fine-Tunning
  5. Python学习,python中参数传递的方法,你知道几种
  6. 【数字信息化智能化管理平台系统建设】
  7. 信创平台下构建FTP服务
  8. 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-936 砝码称重
  9. MATLAB GUI 停止运行程序,Matlab gui教程0x4-GUI程序打开、运行和发布
  10. 摄影测量实习空中三角测量_摄影测量入门:Photoscan