Prometheus服务器+Grafana -监控(节点主机、 数据库)

Prometheus
特点
强大的数据模型,监控数据以metric{labels}的方式存储在内置的时间序列数据库中
监控数据的精细程度高,可以精确到1~5秒的采集程度
灵活的查询语句(PromQL)
采用HTTP pull/push两种数据采集传输方式
支持本地和远程存储
良好的可视化,自带Prometheus UI,可以直接输入PromQL查询监控指标,自动成图,并且支持用grafana进行数据呈现
支持大量的客户端库(exporter),像nginx,tomcat等,使prometheus可轻易获取服务监控指标
易扩展,当prometheus处理数据量过大时,可以进行联邦集群和功能分区,让多个prometheus产生一个逻辑集群
支持自动发现,动态发现监控目标
• 也是一款监控软件,也是一个时序数据库。
• 主要用在容器监控方面,也可以用于常规的主机监控。
• 使用google公司开发的go语言编写。
• Prometheus是一个框架,可以与其他组件完美结合。
在这里插入图片描述
prometheus server: 负责定时轮询采集数据、存储、对外提供数据查询、告警规则检测
exporter:以http的方式,暴露收集的metric,然后Prometheus server会定期来拉取数据,可安装在被监控主机
AlertManager:Prometheus server会将通过规则匹配的告警发送到alertmanager,然后alertmanager会对告警发送到邮箱、企业微信等,期间会对告警进行分组、静默或抑制
PushGateway:出于网络或安全问题,有时数据无法直接暴露给prometheus采集,这时需要pushgateway完成中转工作。用户把数据推送到pushgateway,然后由prometheus采用拉取pull的方式采集数据
数据存储

  1. 存储到本地
    Prometheus的本地时间序列库以自定义格式存储时间序列数据(格式:时间9监控指标{标签} 值)
    Prometheus每隔两个小时,生成一个block,并将最新数据保存进去。block存储在data,是一个目录,该目录包含一个或多个chunk文件(存储时间序列数据)、一个metadata文件和一个index文件。在index文件中可以通过metric(指标名)、label(标签)查找数据在哪个chunk。
    最新写入的数据会保存在内存中,达到两小时才会落盘,同时为了防止服务崩溃,造成数据丢失,采用了预写日志(WAL write-ahead-log),会在写入新数据的时候进行,当服务出现崩溃时,重启prometheus就可以通过wal重放日志,恢复数据。
  2. 存储到远端
    采用本地存储在可伸缩性和持久性方面会受到单个节点的限制。因此Prometheus提供了一组允许与远程存储系统集成的接口。可以将获取的样本数据以标准格式写入远程URL,以标准格式从远程URL获取数据。例如,可以接入influxdb
    部署Prometheus服务器
    • prometheus:192.168.4.10
    • 被控端node1:192.168.4.11

prometheus是经过编译后的go语言程序,相当于绿色软件,解压即用

   [root@prometheus ~]# wget    https://github.com/prometheus/prometheus/releases/download/v2.20.1/prometheus-2.20.1.linux-amd64.tar.gz
   [root@prometheus ~]# tar xf prometheus-2.20.1.linux-amd64.tar.gz
   [root@prometheus ~]# mv prometheus-2.20.1.linux-amd64 /usr/local/prometheus

修改配置文件

   [root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml
    29     - targets: ['192.168.4.10:9090']

注意:prometheus主机的时间需要与真机时间一致,如果不一致,修改时间

     [root@prometheus ~]# date -s "20220105 14:18:00"

检查语法

     [root@prometheus ~]# /usr/local/prometheus/promtool check config         /usr/local/prometheus/prometheus.yml 
     Checking /usr/local/prometheus/prometheus.yml
     SUCCESS: 0 rule files found

创建服务文件

    [root@prometheus ~]# vim /usr/lib/systemd/system/prometheus.service
    [Unit]
   Description=Prometheus Monitoring System
  After=network.target

    [Service]
    ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/usr/local/prometheus/data/

    [Install]
   WantedBy=multi-user.target

启服务

    [root@prometheus ~]# systemctl daemon-reload 
    [root@prometheus ~]# systemctl enable prometheus.service --now
    [root@prometheus ~]# ss -tlnp | grep :9090
     LISTEN     0      128         :::9090

查看监控页面
• 访问http://192.168.4.10:9090
在这里插入图片描述在这里插入图片描述
• 被监
在这里插入图片描述
被监控控的对象称为targets

在这里插入图片描述
prometheus已经在监控自己了

查看监控图像:
在这里插入图片描述

在这里插入图片描述
添加需要查看的监控项:
在这里插入图片描述
在这里插入图片描述
查看监控项的图形信息:

在这里插入图片描述
在这里插入图片描述
添加被监控端
• 监控方式:
– 拉取:pull。监控端联系被监控端,采集数据
– 推送:push。被监控端主动把数据发给监控端。在prometheus中,push的方式需要额外的组件pushgateway
• 被监控端根据自身运行的服务,可以运行不同的exporter(被监控端安装的、可以与Prometheus通信,实现数据传递的软件)
• exporter列表:https://prometheus.io/docs/instrumenting/exporters/
部署通用的监控exporter
node_exporter安装
在Prometheus中,不仅提供了丰富的exporter,用于监控基础指标、中间件、网络设备等
在这里,node_exporter用于收集机器基础的监控指标,像cpu、内存、磁盘可用空间等,常用exporter如下:
范围 常用Exporter
数据库 MySQL Exporter, Redis Exporter, MongoDB Exporter, MSSQL Exporter等
硬件 Apcupsd Exporter,IoT Edison Exporter, IPMI Exporter, Node Exporter等
消息队列 Beanstalkd Exporter, Kafka Exporter, NSQ Exporter, RabbitMQ Exporter等
存储 Ceph Exporter, Gluster Exporter, HDFS Exporter, ScaleIO Exporter等
HTTP服务 Apache Exporter, HAProxy Exporter, Nginx Exporter等
API服务 AWS ECS Exporter, Docker Cloud Exporter, Docker Hub Exporter, GitHub Exporter等
日志 Fluentd Exporter, Grok Exporter等
监控系统 Collectd Exporter, Graphite Exporter, InfluxDB Exporter, Nagios Exporter, SNMP Exporter等
其它 Blockbox Exporter, JIRA Exporter, Jenkins Exporter, Confluence Exporter等
• node-exporter用于监控硬件和系统的常用指标
• exporter运行于被监控端,以服务的形式存在。每个exporter所使用的端口号都不一样。
• 在node1[192.168.4.11]上部署node exporter

部署

   [r[root@node1 ~]# wget https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.0.linux-amd64.tar.gz
   【root@node1 ~]# tar xf node_exporter-1.0.0-rc.0.linux-amd64.tar.gz 
     [root@node1 ~]# mv node_exporter-1.0.0-rc.0.linux-amd64 /usr/local/node_exporter

    [root@node1 ~]# vim /usr/lib/systemd/system/node_exporter.service
               [Unit]
               Description=node_exporter
               After=network.target

               [Service]
               Type=simple
               ExecStart=/usr/local/node_exporter/node_exporter

               [Install]
               WantedBy=multi-user.target

      [root@node1 ~]# systemctl daemon-reload 
      [root@node1 ~]# systemctl enable node_exporter.service --now
      [root@node1 ~]# ss -tlnp | grep :9100
      LISTEN     0      128         :::9100

• 在Prometheus服务器上添加监控节点

在配置文件中追加以下内容。特别注意缩进

[root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml

  • job_name: ‘node1’
    static_configs:
    • targets: [‘192.168.4.11:9100’]
      [root@prometheus ~]# systemctl restart prometheus.service
      查看结果:
      在这里插入图片描述

• 查看node1节点的1分钟平均负载
在这里插入图片描述
在这里插入图片描述
grafana可视化
• grafana是一款开源的、跨平台的、基于web的可视化工具
• 展示方式:客户端图表、面板插件
• 数据源可以来自于各种源,如prometheus

装包、启服务

           [root@prometheus ~]# wget https://dl.grafana.com/oss/release/grafana-7.1.5-      1.x86_64.rpm
           [root@prometheus prometheus_soft]# yum install -y grafana-7.1.5-1.x86_64.rpm
           [root@prometheus ~]# systemctl enable grafana-server.service --now

• 修改配置,对接prometheus
访问http://192.168.4.10:3000。初始用户名和密码都是admin。第一次登陆时,要求改密码,我的密码改为jj123。

在这里插入图片描述
在这里插入图片描述

对接数据的步骤:

  1. 添加数据源
  2. 为数据展示选择展示方式(dashboard仪表盘)
  3. 查看结果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

选择展示方式。导入模板文件,展示不同主题风格。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
查看结果:
在这里插入图片描述

展示node1的监控信息
• grafana模板下载:https://grafana.com/grafana/dashboards/
• 导入主机监控模板
在这里插入图片描述

在这里插入图片描述
添加本地的模板
在这里插入图片描述

在这里插入图片描述

监控mariadb数据库

在node1节点上安装数据库

  [root@node1 ~]# yum install -y mariadb-server
  [root@node1 ~]# systemctl enable mariadb --now
在node1上安装mysql exporter
       mysql exporter需要访问数据库,所以需要在数据库中为exporter创建授权用户
      [root@node1 ~]# mysql
        MariaDB [(none)]> grant all on *.* to jj123@'localhost' identified by '123';    # 创建用户     jerry,密码是123
       MariaDB [(none)]> exit
配置mysql exporter
    [root@node1 ~]# tar xf mysqld_exporter-0.12.1.linux-amd64.tar.gz 
    [root@node1 ~]# mv mysqld_exporter-0.12.1.linux-amd64 /usr/local/mysqld_exporter

编写用于连接mysql服务的配置文件

  [root@node1 ~]# vim /usr/local/mysqld_exporter/.my.cnf
  [client]
  host=127.0.0.1
  port=3306
  user=jj123
  password=123

创建service文件

   [root@node1 ~]# vim /usr/lib/systemd/system/mysqld_exporter.service
    [Unit]
    Description=mysqld_exporter
    After=network.target

  [Service]
  ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-                        cnf=/usr/local/mysqld_exporter/.my.cnf

  [Install]
  WantedBy=multi-user.target

启服务

   [root@node1 ~]# systemctl daemon-reload
   [root@node1 ~]# systemctl enable mysqld_exporter.service --now
   [root@node1 ~]# ss -tlnp | grep :9104
  LISTEN     0      128         :::9104

配置prometheus监控mysql

修改配置文件,追加以下内容:

    [root@prometheus ~]# vim /usr/local/prometheus/prometheus.yml 
   - job_name: 'mysql'
       static_configs:
   - targets: ['192.168.4.11:9104']
 [root@prometheus ~]# 

查看状态:
在这里插入图片描述

在这里插入图片描述

在grafana中展示mysql exporter数据

在真机上导入数据库模板mysql-overview_rev5.json

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

模板切换

查看其模板
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值