• 部署grafana+prometheus监控


    一:简介

    1.Prometheus 的介绍

    Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社区也十分活跃,他们便将它独立成开源项目,并且有公司来运作。google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在 最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。

    2.Prometheus 的优点:

    (1)配置灵活

    使用过zabbix的同学应该都体验过安装时候的安装依赖包的痛苦,而premetheus核心部分只有一个单独的二进制文件,下载解压安装即可, 没有依赖的第三方库

    (2)监控的多样性

    prometheus支持多种语言的的客户端,我们通过客户端方便对核心业务进行埋点,比如下单,添加购物车等流程。

    而且prometheus已经有非常多的系统集成

    比如:

    应用层面的监控:nginx,haproxy,mysql ,docker等

    系统层面如:SNMP协议监控,主机监控,进程监控

    容器云监控:docker,k8s openstack私有云

    (3)非常高效的存储

    平均一个采样数据占 ~3.5 bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G

    二:prometheus的架构

    对照图中的每一部分进行介绍:
    ·prometheus server
    主要负责数据的采集和存储,提供PromQL查询语言支持
    Retrieval:采样模块,prometheus的服务器在哪里拉取数据,检索拉取到的数据分发给 TSDB进行存储
    TSDB:存储模块默认本地存储为TSDB
    HTTP server : 提供http接口查询和面板,默认端口为9090
    ·short-lived jobs:
    存在时间不足以被删除的短暂或批量业务,无法通过pull的方式拉取,需要使用push的方式,与pushgeteway结合使用
    ·Service Discovery:
    服务发现,prometheus支持多种服务发现机制:文件,DNS,k8s,openstack,等,基于服务发现的过程,通过第三方接口,prometheus查询到需要监控的target列表,然后轮询这些target获取监控数据
    ·客户端SDK
    官方提供的客户端类库有go,java,python,ruby
    ·pushgateway
    支持临时性的job主动推送指标的中间网关,prometheus默认通过pull方式从exporters拉取,但有些情况我们是不允许promethes与exporters直接进行通信的,这时候我们可以使用pushgateway由客户端主动push数据到pushgateway,在由prometheus拉取。很多时候我们需要自定义一些组件来采集
    ·proDash
    使用rails开发的dashboard,用于可视化指标数据
    ·exporters
    支持其他数据源的指标导入到prometheus,支持数据库,硬件,消息中间件,存储系统,http服务器,jmx等
    负责收集目标对象的性能数据,并通过http接口供prometheus server获取
    只要符合接口格式,就可以被采集
    ·alertmanager
    实验性组件,用来进行报警
    ·prometheus_cli
    命令行工具

    三:prometheus的工作流程

    1.prometheus server 定期从配置好的jobs或者exporters中拉metrics.或者接受来自pushgateway发过来的metrics,或者从其他的prometheus server中拉取metrics
    2.prometheus server 在本地存储收集到的metrics,并运行已经定义好的arlt.rules,记录新的时间序列或者向alertmanager推送报警
    3.Alertmanager根据配置文件,对接受的警报进行处理,发出告警
    4.在图形界面中,可视化采集数据,可以使用别人写好的grafana模板。

    部署前说明

    prometheus        服务端一台主机

    grafana              服务端一台主机

    prometheus和grafana可以安装在同一主机上

    node_exporter和mysqld_exporter   被监控的主机插件一台主机

    我是在做演示,所以全部安装在同一台主机上

    四:prometheus 部署

    1.安装前准备

    安装前先检查一下时间是不是同步,不同步的话会导致数据收集不到,会报错

    [root@localhost ~]# date
    2020年 08月 31日 星期一 12:19:18 CST

    我是还原快照,所以时间并不同步

    解决办法:

    命令如下:

    # yum -y install ntp

    # ntpdate time1.aliyun.com        #同步阿里云时间
    # hwclock -w                              #将系统时间赋值给硬件时间,有些时候 硬件时间会比系统时间快8个小时

    关闭防火墙和selinux

    # systemctl stop firewalld && setenforce 0 && iptables -F

    准备安装包

    prometheus-2.6.1.linux-amd64.tar

    grafana-7.1.5-1.x86_64

    node_exporter-0.17.0.linux-amd64.tar

    mysqld_exporter-0.12.1.linux-amd64.tar

    官网下载地址https://prometheus.io/download/

    2.开始安装部署

    命令如下:

    # tar -zvxf prometheus-2.6.1.linux-amd64.tar.gz

    # mv prometheus-2.6.1.linux-amd64 /usr/local/prometheus

    # cd /usr/local/prometheus/

    # ./prometheus &           #后台启动

    然后通过浏览器访问:http://192.168.20.100:9090

    web网页介绍

    http://IP:9090

    查看监控目标

    可以看到系统默认监控了自己的主机信息,监控接口通过http://IP:9090/metrics 可以直接看到监控数据,如下图:

    prometheus默认监控图像,如下图:

    在图2的位置输入process_cpu_seconds_total ,可以查看到cpu的使用情况

    3.实例:监控linux主机

    需要在被监控的主机安装node_exporter插件,是prometheus来收集数据

    在官网上下载node_exporter-0.17.0.linux-amd64.tar安装包

    命令如下:

    # tar -zvxf node_exporter-0.17.0.linux-amd64.tar.gz

    # mv node_exporter-0.17.0.linux-amd64 node_exporter

    # cd node_exporter

    # nohup ./node_exporter &

    nohup 是 Linux 的一个常用命令,当你想要在退出账户或者关闭终端 后进程仍在运行时,就可以使用 nohup 命令。nohup 就是不挂断的意思(no hang up)

    在浏览器上查看监控信息 http://IP:9100/metrics

    配置prometheus server端文件 prometheus.yml 可以拉取node信息

    # vim /usr/local/prometheus/prometheus.yml

    将以下内容添加到文件最后

      - job_name: 'agent'

        static_configs:
        - targets: ['192.168.20.100:9100']

    注意:一定格式正确,否则服务重启不了      IP应该填写的是被监控主机的IP,我是把服务端客户端做在同一主机上了

    添加完成后重新启动prometheus

    命令如下:

    # pkill prometheus

    # cd /usr/local/prometheus/

    # ./prometheus &

    然后通过web可以看见两台,如下两张图

    监控mysql需要在被监控机器安装mysql_exporter

    mysql_exporter下载地址:https://prometheus.io/download/mysqld_exporter-0.12.1.linux-amd64.tar.gz

    命令如下:

    # tar -zvxf mysqld_exporter-0.12.1.linux-amd64.tar.gz

    # mv mysqld_exporter-0.12.1.linux-amd64 /usr/local/mysqld_exporter

    # cd /usr/local/mysqld_exporter/

    # yum -y install mariadb*      (这里mariadb数据库为参考)

    # systemctl start mariadb && systemctl enable  mariadb              启动并设置开机自启

    在数据库里创建mysql账号用户收集数据

    # mysql

    MariaDB [(none)]> grant select,replication client,process ON *.* to 'mysql_monitor'@'localhost' identified by '12345678';

    MariaDB [(none)]> flush privileges;

    注意:此处是prometheus服务器来找mysql_exporter,然后mysql_exporter 在找mariadb,所以这里用的是localhost,指的是mysql_exporter的ip 

    在mysql_exporter中设置mysql配置信息

    命令如下:

    # cd /usr/local/mysqld_exporter

    # vim .my.cnf         (手工创建)

    [client]
    user=mysql_monitor
    password=12345678

    启动mysql_exporter
    # nohup ./mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/.my.cnf &

    配置prometheus拉取mysql节点信息

    在prometheus的server端进行修改

    # vim /usr/local/prometheus/prometheus.yml

      - job_name: 'mariadb'
        
        static_configs:
        - targets: ['192.168.20.100:9104']

     重启prometheus服务

    命令如下:

    # pkill prometheus

    # cd /usr/local/prometheus/

    # ./prometheus &

    然后在web网页中刷新一下,会出现三台

    知识扩展:

    prometheus.yml配置文件详解
    global:
    # 全局配置
      scrape_interval:     15s # 多久收集一次数据

      evaluation_interval: 15s # 多久评估一次规则
      scrape_timeout:  10s  # 每次收集数据的超时时间
    # Alertmanager configuration #告警设置
    alerting:
      alertmanagers:
      - static_configs:  #告警规则,也可以基于动态方式进行告警
        - targets:
    rule_files:  #规则文件
    #收集数据配置列表
    scrape_configs:
      - job_name: 'prometheus'

    五:Grafana介绍
    Grafana是开源的度量分析和可视化工具,,可以通过将采集的数据查询然后可视化的展示,并实现报警。它主要有以下六大特点:
    (1)展示方式:快速灵活的客户端图表,面板插件有许多不同方式的可视化指标和日志,官方库中具有丰富的仪表盘插件,比如热图、折线图、图表等多种展示方式;
    (2)数据源:Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;
    (3)通知提醒:以可视方式定义最重要指标的警报规则,Grafana将不断计算并发送通知,在数据达到阈值时通过Slack、PagerDuty等获得通知;
    (4)混合展示:在同一图表中混合使用不同的数据源,可以基于每个查询指定数据源,甚至自定义数据源;
    (5)注释:使用来自不同数据源的丰富事件注释图表,将鼠标悬停在事件上会显示完整的事件元数据和标记;
    (6)过滤器:Ad-hoc过滤器允许动态创建新的键/值过滤器,这些过滤器会自动应用于使用该数据源的所有查询。

    1.安装grafana

    下载地址:grafana官网下载
    # wget https://dl.grafana.com/oss/release/grafana-7.1.5-1.x86_64.rpm

    # yum -y install grafana-7.1.5-1.x86_64.rpm

    启动服务并设置开机自启

    # systemctl start grafana-server &&  systemctl enable grafana-server

    在浏览器上访问http://IP:3000    用户名和密码默认是admin

    2.添加数据源(prometheus的数据源)

     点击齿轮的图标,可以看到刚才添加的prometheus的数据源信息信息

    3. 现成模板添加版
    先要找到模板的添加码:
    模板网址: https://grafana.com/grafana/dashboards 

    4.点击“+”里面的import选项

    点击后就会看到当前服务器监控信息:
    可以看到已经添加了相关的模板之后,图表就非常漂亮,省去了我们人工的一些操作,当然grafana还有一些比较高级的功能,官网上也有介绍,比如定制变量,定制图形模板等。

  • 相关阅读:
    H264关于RTP协议的实现
    RTSP交互命令简介及过程参数描述
    RTSP协议详解
    TCP 协议中MSS的理解
    RTSP 协议分析
    Linux下/etc/resolv.conf 配置DNS客户
    371. Sum of Two Integers
    python StringIO
    高效的两段式循环缓冲区──BipBuffer
    JavaScript Lib Interface (JavaScript系统定义的接口一览表)
  • 原文地址:https://www.cnblogs.com/zgqbky/p/13672343.html
Copyright © 2020-2023  润新知