资讯专栏INFORMATION COLUMN

Prometheus+grafana监控配置经验分享

IT那活儿 / 1241人阅读
Prometheus+grafana监控配置经验分享


一、监控目标


  1. 基础监控;服务器基础指标(cpu load、内存、用户线程数、端口连接数、存储)

    语言相关比如jvm以及go、php等

  2. 基础中间件监控;redis、mysql、rabbitmq

  3. 应用监控;应用接口调用频率、应用接口响应时间、应用接口异常次数

  4. 根据监控指标可配置定制化的阈值告警


二、prometheus概述


Prometheus(普罗米修斯)是一个prometheus是一个最初在SoundCloud上构建的开源系统监控和警报工具包 。从2012年开始,许多公司和组织开始使用Prometheus,该项目拥有非常活跃的开发人员和用户社区。目前它是一个独立的开源项目,并且不依赖与任何公司为了强调这一点,并澄清项目的治理结构,Prometheus在2016年加入Cloud Native Computing Foundation,作为kubernetes之后的第二个托管项目。

特点:

1、多维数据模型(时序列数据有metric和一组key/value组成)

2、在多维度上灵活的查询语言(PromQl)

3、不依赖分布式存储(内置数据库),单主节点工作.

4、基于HHTP的pull方式采集时间序列数据

5、可以通过pushgateway进行时序列数据推送(pushing)

6、可以通过服务发现或者静态配置去获取要采集的目标服务器

7、多种可视化图表及仪表盘支持(grafana)

数据采集:

Prometheus通过HTTP接口的方式从各种客户端获取数据,这些客户端必须符合Prometheus监控数据格式;

通常有两种方式:

1、侵入式埋点监控(直接采集),通过在客户端集成,如果Kubernetes API直接通过引入Prometheus go client,提供/metrics接口查询kubernetes API各种指标;这一类Exporter直接内置了对Prometheus监控的支持,比如cAdvisor,Kubernetes,Etcd,Gokit等,都直接内置了用于向Prometheus暴露监控数据的端点。

2、通过exporter方式(间接采集),在外部将原来各种中间件的监控支持转化为Prometheus的监控数据格式,如redis exporter将Reids指标转化为Prometheus能够识别的HTTP请求;间接采集,原有监控目标并不直接支持Prometheus,因此我们需要通过Prometheus提供的Client Library编写该监控目标的监控采集程序。例如:Mysql Exporter,JMX Exporter,Consul Exporter等。

HTTP返回Header和Body如上图所示,指标前面两行#是注释,标识指标的含义和类型。指标和指标的值通过空格分割,开发者通常不需要自己拼接这种个数的数据, Prometheus提供了各种语言的SDK支持。

Prometheus并没有采用json的数据格式,而是采用text/plain纯文本的方式,这是它的特殊之处。

主要组件:

prometheus生态系统由多个组件组成,其中许多组件是可选的。

prometheus server:主要获取和存储时间序列数据

exporters:主要是作为agent收集数据发送到prometheus server,不同的数据收集由不同的exporters实现,如监控主机有node-exporters,mysql有MySQL server exporters。

pushgateway:允许短暂和批处理的jobs推送它们的数据到prometheus;由于这类工作的存在时间不够长,所以需要他们主动将数据推送到pushgateway,然后由pushgateway将数据发送的prometheus。

alertmanager:实现prometheus的告警功能。

架构:




prometheus直接或通过pushgateway抓取数据。(短周期任务数据)

将数据存储在本地,并对这些数据运行规则,以便从现有数据聚合和记录新时间序列,或者生成警报。

Prometheus targets:采集mysql数据,


三、Prometheus安装


1. 下载最新版的Prometheus 2.17.1 

wget -P /usr/local/src https://github.com/prometheus/prometheus/releases/download/v2.17.1/prometheus-2.17.1.linux-amd64.tar.gz


2. 直接解压并建立软连接


tar -zxvf /usr/local/src/prometheus-2.17.1.linux-amd64.tar.gz -C /usr/local
     ln -s /usr/local/src/prometheus-2.17.1.linux-amd64 /usr/local/prometheus


3. 创建用于运行Prometheus的组和用户

group add prometheus
useradd -g prometheus -s /sbin/nologinprometheus


4. 给Prometheus主目录赋用户Prometheus权限

chown -R prometheus:prometheus /usr/local/prometheus/


5. 将Prometheus加入到系统管理程序中

cat >/etc/systemd/system/prometheus.service<[Unit]
Description=Prometheus
Documentation=https://prometheus.io/ After=network.target
[Service] Type=simple User=prometheus
ExecStart=/usr/local/prometheus/prometheus
config.file=/usr/local/prometheus/prometheus.yml
storage.tsdb.path=/var/lib/prometheus
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF


6.将客户端加入到Prometheus监控中

注意:将配置文件中的ip地址改成你的被监控客户端的ip,(node_exporter的)端口号默认是9100。


7.  启动Prometheus服务

./prometheus --config.file=prometheus.yml

查看日志


8. 验证prometheus的Web页面

prometheus默认的端口号是9090,

浏览器输入http://192.168.**.***:9090/


四. node_exporter  客户端部署


  1. 下载并解压node_exporter

  2. wget -P /usr/local/srchttps://github.com/prometheus/node_exporter/releases/download/v1.0.0-rc.0/node_exporter-1.0.0-rc.0.linux-amd64.tar.gz

    tar -zxvf /usr/local/src/node_exporter-1.0.0-rc.0.linux-amd64.tar.gz -C /usr/local

  3. 建立软连接

    ln -s /usr/local/node_exporter-1.0.0-rc.0.linux-amd64/ /usr/local/node_exporter

  4. 添加用户名和用户组

    group add prometheus

    useradd -g prometheus -s /sbin/nologinprometheus

  5. 给node_exporter主目录赋权限

    chown -R prometheus:prometheus /usr/local/node_exporter/

  6. 启动并设置开机自启

    systemctl start node_exporter

    systemctl enable node_exporter

  7. 检查node_exporter是否已启动node_exporter默认的端口是9100

    systemctl status node_exporter

    ss -ntl |grep 9100

  8. 直接关闭防火墙

    systemctl stop firewalld

    systemctl disable firewalld

  9. 在prometheus的web上检查是否监控到了本机


五. Prometheus配置文件

默认使用的配置文件是prometheus.yml

global:

scrape_interval: 15s //全局配置,多久搜集一次
evaluation_interval: 15s //全局配置,多久搜集一次
rule_files: //规则文件
# - "first.rules"
# - "second.rules"
scrape_configs: //搜集的配置
- job_name: prometheus //监控的服务名称
static_configs:
- targets: [localhost:9090] //监控入口

多个地址依次添加即可。


六. Prometheus+Grafana 打造监控系统


  1. 下载Grafana的rpm包

    wgethttps://dl.grafana.com/oss/release/grafana-6.7.2-1.x86_64.rpm

  2. 安装Grafana

    yum install grafana-6.7.2-1.x86_64.rpm

  3. 启动grafana,并设置其开机自启

    systemctl restart grafana-server

    systemctl enable grafana-server

  4. 浏览器打开Grafana主页 http://192.168.48.150:3000/

  5. 配置数据源类型Prometheus,并设置相关参数


总结:上文提到 Prometheus 是一款基于时序数据库的监控系统,时序数据库常简写为 TSDB(Time Series Database)。很多流行的监控系统都在使用时序数据库来保存数据,这是因为时序数据库的特点和监控系统不谋而合。本次分享到此结束,如有错误之处,还请多多指出。


END


更多精彩干货分享

点击下方名片关注

IT那活儿

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129925.html

相关文章

  • 容器监控实践—Prometheus数据可视化

    摘要:二可视化是一个开源的图表可视化系统,简单说图表配置比较方便生成的图表比较漂亮。 一. 概述 Prometheus自带了一个web服务,包括一个默认的dashboard,可以使用表达式查询并进行图表可视化,默认服务的地址为:http://prometheus_ip:9090 如下图: showImg(https://segmentfault.com/img/remote/14600000...

    URLOS 评论0 收藏0
  • 容器监控实践—Prometheus数据可视化

    摘要:二可视化是一个开源的图表可视化系统,简单说图表配置比较方便生成的图表比较漂亮。 一. 概述 Prometheus自带了一个web服务,包括一个默认的dashboard,可以使用表达式查询并进行图表可视化,默认服务的地址为:http://prometheus_ip:9090 如下图: showImg(https://segmentfault.com/img/remote/14600000...

    赵连江 评论0 收藏0
  • 容器监控实践—Prometheus数据可视化

    摘要:二可视化是一个开源的图表可视化系统,简单说图表配置比较方便生成的图表比较漂亮。 一. 概述 Prometheus自带了一个web服务,包括一个默认的dashboard,可以使用表达式查询并进行图表可视化,默认服务的地址为:http://prometheus_ip:9090 如下图: showImg(https://segmentfault.com/img/remote/14600000...

    dayday_up 评论0 收藏0
  • 一些小团队的自动化运维实践经验

    摘要:行业内各巨头的自动化运维架构都各种功能各种酷炫,如下图,让人可望不可及。面对这么多问题,我就想啊,如何在低成本情况下实现自动化运维。自动扩缩容通过配置告警规则,调用相应就可以实现实战以上就是笔者关于自动化运维的一些实践。 行业内各巨头的自动化运维架构都各种功能各种酷炫,如下图,让人可望不可及。现在最终的样子大家都知道了,但问题是如何根据自己团队当前的情况一步步向那个目标演进?笔者所在团队,三...

    princekin 评论0 收藏0
  • 监控类服务管理 智能大数据平台 USDP

    摘要:其他监控类服务管理其他监控类服务管理其他监控类服务管理其他监控类服务还包括等,对这些监控服务的管理方式,均与本篇指南中服务管理的管理方式类似,此处不再过多赘述。 监控类服务管理本篇目录Prometheus服务管理Grafana服务管理其他监控类服务管理在USDP1.0.0.0版本中,集群监控类服务组件主要有AlterManager、Grafana、InfluxDB、NodeExporter、...

    ernest.wang 评论0 收藏2270
  • grafana+prometheus快速搭建MySql监控系统实践

    摘要:在和未普及之前,要实现的搭建确实要费一番工夫的,不过现在则很简单就可以实现的监控了。下载镜像使用方式下载极为方便,只需要执行如下命令即可,当然前提是需要安装了。 一、背景 对于LNMP环境下的开发者来说,mysql是非常重要的一环,同时mysql的性能监控也是开发者所需要关注的一环;如果大家使用阿里云的RDS会感觉到其监控功能非常好用,但如果开发者使用的是自建数据库,该怎么去搭建则需则...

    AdolphLWQ 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<