常规服务器配置:Prometheus+Grafana监控

摘要:
准备两台测试环境:主:192.168.28.130备:192.168.28.131博文大纲:一、prometheus简介二、Prometheus组成及架构三、部署prometheus1)环境准备2)部署prometheus3)配置Peometheus监控实现报警一、prometheus简介Prometheus是一套开源的系统监控报警框架。如需报警,则由prometheus向Alertmanager组件发送信息!运行Prometheusserver容器(只需在dockerA主机上执行即可!)Prometheus是普罗米修斯的主服务器!在部署Prometheus之前,需要对它的配置文件进行修改,所以首先运行一个Prometheus容器将其配置文件复制到本地,便于进行修改。

准备两台测试环境:

主:192.168.28.130

备:192.168.28.131

博文大纲:
一、prometheus简介
二、Prometheus组成及架构
三、部署prometheus
1)环境准备
2)部署prometheus
3)配置Peometheus监控实现报警

一、prometheus简介

Prometheus是一套开源的系统监控报警框架。它以给定的时间间隔从已配置的目标收集指标,评估规则表达式,显示结果,并在发现某些情况为真时触发警报。

作为新一代的监控框架,Prometheus具有以下特点 :

  • 强大的多维度数据模型:
    (1)时间序列数据通过metric名和键值对来区分;
    (2)所有的metrics都可以设置任意的多维标签;
    (3)数据模型更随意,,不需要刻意设置为以点分隔的字符串;
    (4)可以对数据模型进行聚合、切割和切片操作;
    (5)支持双精度浮点类型,标签可以设为全unicode(统一码);

  • 灵活、强大的查询语句:在同一个查询语句,可以对多个 metrics 进行乘法、加法、连接、取分数位等操作;

  • 易于管理:不依赖于分布式存储;

  • 使用 pull 模式采集时间序列数据;

  • 可以采用 push gateway 的方式把时间序列数据推送至 Prometheus server 端;

  • 可以通过服务发现或者静态配置去获取监控的 targets;

  • 有多种可视化图形界面;

  • 易于伸缩。;

二、Prometheus组成及架构

Prometheus包含了许多组件,其中许多组件都是可选的,常用的组件有:

  • Prometheus Server:用于收集和存储时间序列数据;

  • Client Library:客户端库,为需要监控的服务生成相应的 metrics 并暴露给 Prometheus server;

  • Push Gateway:主要用于短期的 jobs。由于这类 jobs 存在时间较短,可能在 Prometheus 来 pull 之前就消失了。为此,这次 jobs 可以直接向 Prometheus server 端推送它们的 metrics;

  • Exporters:用于暴露已有的第三方服务的 metrics 给 Prometheus;

  • Alertmanager:从 Prometheus server 端接收到 alerts 后,会进行去除重复数据,分组,并路由到对端的接受方式,发出报警;
    …………等等,还有好多,这里就列出几个常用的组件!

Prometheus官方文档中的架构图:

常规服务器配置:Prometheus+Grafana监控第1张

官方的架构图中,主要模块块包括:Prometheus server, exporters, Pushgateway, PromQL, Alertmanager 以及图形界面;

大致的工作流程是:
(1)Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 metrics,或者接收来自 Pushgateway 发过来的 metrics,或者从其他的 Prometheus server 中拉 metrics;
(2)Prometheus server 在本地存储收集到的 metrics,并运行已定义好的 alert.rules,记录新的时间序列或者向 Alertmanager 推送警报;
(3)Alertmanager 根据配置文件,对接收到的警报进行处理,发出告警;
(4)在图形界面中,可视化采集数据;

三、部署prometheus

上述环境所需组件的作用如下:

  • Prometheus server:普罗米修斯的主服务器(端口:9090);

  • NodeEXporter:负责收集Host硬件信息和操作系统信息,(端口:9100);

  • cAdvisor:负责收集Host上运行的容器信息(端口:8080);

  • Grafana:负责展示普罗米修斯监控界面(3000);

  • Alertmanager:用来接收Prometheus发送的报警信息,并且执行设置好的报警方式,报警内容(同样也是在dockerA主机上部署,端口:9093);

各组件的关系:NodeEXporter、cAdvisor负责收集信息发送给 Prometheus server,在由 Prometheus server交给Grafana进行图形化的显示。如需报警,则由prometheus向Alertmanager组件发送信息!

2)部署prometheus

(1)运行node-exporter容器

NodeEXporter主要负责收集Host硬件信息和操作系统信息!

[root@dockerA~]#dockerrun-d--namenode-p9100:9100-v/proc:/host/proc-v/sys:/host/sys-v/:/rootfs--net=hostprom/node-exporter--path.procfs/host/proc--path.sysfs/host/sys--collector.filesystem.ignored-mount-points"^/(sys|proc|dev|host|etc)($|/)"
//使用prom/node-exporter镜像创建一个名为node的容器,用于收集硬件和系统信息;//--net=host表示Prometheusserver可以直接与node-exporter通信;//并映射9100端口
执行完成后,客户端使用浏览器进行访问,如图:

常规服务器配置:Prometheus+Grafana监控第2张

访问到以上页面表示node-exporter这个组件安装成功!

由于这个NodeEXporter组件需要在三台docker host主机上,所以以上命令就需要在另外两台主机上都执行。执行完成后,自行使用浏览器访问测试!

(2)运行cAdvisor容器

cAdvisor主要负责收集Host上运行的容器信息!

[root@dockerA~]#dockerrun-v/:/rootfs:ro-v/var/run:/var/run/:rw-v/sys:/sys:ro-v/var/lib/docker:/var/lib/docker:ro-p8080:8080--detach=true--name=cadvisor--net=hostgoogle/cadvisor

如果以上执行报错,请换成下面的执行:

docker run -v /:/rootfs:ro -v /var/run:/var/run/:rw -v /sys/fs/cgroup/cpu,cpuacct:/sys/fs/cgroup/cpuacct,cpu -v /var/lib/docker:/var/lib/docker:ro -p 8080:8080 --detach=true --name=cadvisor --net=host --privileged=true google/cadvisor

常规服务器配置:Prometheus+Grafana监控第3张

访问到上述页面则表示cAdvisor这个组件安装成功!

同样这个cAdvisor组件也是需要在三台docker host上全部安装的!所以以上命令也需在另外两台主机上执行,执行完成后,自行测试!

(3)运行Prometheus server容器(只需在dockerA主机上执行即可!)

Prometheus是普罗米修斯的主服务器!

在部署Prometheus之前,需要对它的配置文件进行修改,所以首先运行一个Prometheus容器将其配置文件复制到本地,便于进行修改。

[root@dockerA~]#dockerrun-d-p9090:9090--nameprometheus--net=hostprom/prometheus//运行一个Prometheus容器是为了将它的配置文件拿到本地[root@dockerA~]#dockercpprometheus:/etc/prometheus/prometheus.yml.//将Prometheus容器中的主配置文件复制到本地[root@dockerA~]#vimprometheus.yml//编辑主配置文件
- targets: ['localhost:9090','localhost:8080','localhost:9100','192.168.28.130:9100','192.168.28.130:9100']//这项原本是存在的,只需修改即可!
//用于指定监控本机的9090、8080、9100这三个端口,另外添加另外两台docker主机的8080、9100这两个端口。
//8080端口运行的是cAdvisor服务
//9100端口运行的是node-exporter服务
//9090端口运行的就是Prometheus服务[root@dockerA~]#dockerrmprometheus-f//将刚才运行的容器删除prometheus
[root@dockerA~]#dockerrun-d-p9090:9090--nameprometheus--net=host-v/root/prometheus.yml:/etc/prometheus/prometheus.ymlprom/prometheus//重新运行一个prometheus容器,将刚才修改完成的配置文件挂载到容器中
有可能上面的修改完之后就起不来了。我们通过下面的特权模式把它启动起来。
docker run -d -p 9090:9090 --name prometheus --net=host -v /root/docker/prometheus.yml:/etc/prometheus/prometheus.yml --privileged=true prom/prometheus

常规服务器配置:Prometheus+Grafana监控第4张

常规服务器配置:Prometheus+Grafana监控第5张

(4)运行grafana容器(同样只需在dockerA主机上运行即可!)

grafana主要负责展示普罗米修斯监控界面,给我们提供良好的图形化界面!

[root@dockerA~]#mkdirgrafana-storage[root@dockerA~]#chmod777-Rgrafana-storage//创建一个目录,赋予777的权限
[root@dockerA~]#dockerrun-d-p3000:3000--namegrafana-v/root/grafana-storage:/var/lib/grafana-e"GF_SECURITY_ADMIN_PASSWORD=123456"grafana/grafana//“-e”选项表示修改容器内部的环境变量,将admin用户的密码更改为123.com;

有可能上面的执行有错,起不来,可以把文件移动到根目录下面,并且进入特权模式可以启动

docker run -d -p 3000:3000 --name grafana -v /grafana-storage:/var/lib/grafana -e "GF_SECURITY_ADMIN_PASSWORD=123456" --privileged=true grafana/grafana

默认账户:admin 缺省密码是:123456

常规服务器配置:Prometheus+Grafana监控第6张

常规服务器配置:Prometheus+Grafana监控第7张

常规服务器配置:Prometheus+Grafana监控第8张

常规服务器配置:Prometheus+Grafana监控第9张

常规服务器配置:Prometheus+Grafana监控第10张

上述配置完成后,我们就需要配置它以什么样的形式来给我们展示了,可以自定义,但是很麻烦,我选择直接去grafana官网寻找现成的模板。如图:

常规服务器配置:Prometheus+Grafana监控第11张

将grafana官方的模板导入到我们的grafana容器提供的web页面中,方法有两种方式:

1)第一种方式:

在grafana官网选择自己喜欢的模板,点击进入,如图:

常规服务器配置:Prometheus+Grafana监控第12张

下载后,回到自己搭建的grafana容器提供的web页面中,如图:

常规服务器配置:Prometheus+Grafana监控第13张

常规服务器配置:Prometheus+Grafana监控第14张

常规服务器配置:Prometheus+Grafana监控第15张

常规服务器配置:Prometheus+Grafana监控第16张

2)第二种方式:

选择合适的模板后,记录其ID号,如图:
常规服务器配置:Prometheus+Grafana监控第17张

记录下模板的ID号之后,同样回到自己搭建的grafana容器提供的web页面中,如图:
常规服务器配置:Prometheus+Grafana监控第18张

常规服务器配置:Prometheus+Grafana监控第19张

常规服务器配置:Prometheus+Grafana监控第20张

常规服务器配置:Prometheus+Grafana监控第21张

至此web界面的监控就部署完成了!

3)配置Peometheus监控实现报警

这一块后面陆续补充。

免责声明:文章转载自《常规服务器配置:Prometheus+Grafana监控》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C++学习笔记(3)Web挖掘技术下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ansible自动化运维详细教程及playbook详解

运维自动化工具( 配置管理 ),例如:Ansible、SaltStack、Puppet、Fabric 等。 Ansible简介 一种集成 IT 系统的配置管理、应用部署、执行特定任务的开源平台,是 AnsibleWorks 公司名下的项目,该公司由 Cobbler 及 Func 的作者于 2012 年创建成立。 Ansible 基于 Python 语言实现...

java使用awt包在生产环境docker部署时出现中文乱码的处理

描述:   有一个业务是需要后台生成图片,后台使用了Graphics2D类。在docker部署时,图片上的中文变成方块。 解决方案:   百度了一下,发现是生产上的docker容器下没有中文字体,需要在容器里面添加中文字体,但是这样的话要单独维护一个中文字体的镜像。后来直接在代码里面处理,字体文件放在resouces下面,代码直接根据这个文件生成字体。...

MySQL-快速入门(11)用户管理

1、权限表 存储用户权限信息表主要有:user、db、host、tables_priv、columns_priv、procs_priv。 1》user表: 记录允许连接到服务器的账号信息,里面的权限是全局级别的。user表有42个字段,这些字段可以分为4类,分别是用户列、权限列、安全列、资源控制列。 2》db和host表 3》tables_priv和col...

windows下docker无法进行端口映射的问题

之前一直是在服务器上玩docker的,最近由于业务需要,需要在windows电脑上安装docker测试一些东西。 我的操作系统是windows10 家庭版,因此无法直接安装docker,所以只能是通过docker toolbox来安装的。 其原理类似于在windows上安装了一个虚拟的linux环境。安装教程参考了这篇文章:https://www.cnbl...

prometheus学习笔记(1)-mac单机版环境搭建

注:以下所有环境均为mac笔记本 一、安装prometheus brew install prometheus 安装完后,默认的安装路径为: /usr/local/Cellar/prometheus/2.16.0/ 同时还会生成一个默认配置文件:/usr/local/etc/prometheus.yml global: scrape_interva...

UNIX网络编程——网络IPC:套接字

Contents 套接字接口 套接字描述符 寻址 字节序 地址格式 地址查询 绑定地址 建立连接 数据传输 套接字选项 带外数据 UNIX域套接字 使用套接字的示例 面向连接的ruptime 无连接的ruptime 套接字接口       套接字接口是一组用来结合UNIX I/O函数进行进程间通信的函数,大多数系统上都实现了它,包括各...