• Grafana+Zabbix+Prometheus 监控系统


    环境说明

    软件

    版本

    操作系统

    IP地址

    Grafana

    5.4.3-1

    Centos7.5

    192.168.18.231

    Prometheus

    2.6.1 

    Centos7.5

    192.168.18.232

    Zabbix

    4.0.4

    Centos7.5

    192.168.18.233

    一、部署Grafana

    Grafana是一个开源的指标量监测和可视化工具,官方网站为:https://grafana.com/。Grafana的安装非常简单,官方就有软件仓库可以直接使用,也可以通过docker镜像等方式直接本地启动。还可以直接下载rpm包、二进制包进行安装。大家可以从 https://grafana.com/grafana/download 下载rpm安装包。

    1.1 安装

    cd /usr/local/src/

    wget https://dl.grafana.com/oss/release/grafana-5.4.3-1.x86_64.rpm

    yum localinstall grafana-5.4.3-1.x86_64.rpm

     #默认情况下,grafana的配置存储于sqlite3中,如果你想使用其他存储后端,如mysql,postgresql等,请参考官方文档配置: http://docs.grafana.org/installation/configuration/ 

    1.2 启动

    #启动服务

    systemctl start grafana-server

    #查看服务是否正常启动

    systemctl status grafana-server

    #自启动

    systemctl enable grafana-server

    1.3 防火墙

    systemctl stop firewalld.service

    systemctl disable firewalld.service

    yum install -y iptables-services

    vim /etc/sysconfig/iptables

    -A INPUT -p tcp -m state --state NEW -m tcp --dport 3000 -j ACCEPT

    #重启

    systemctl restart iptables.service

    systemctl enable iptables.service

    #后续添加先重启再保存

    service iptables restart

    service iptables save

    1.4 访问

    访问 http://192.168.18.231:3000 就可以看到登录界面了。默认的用户名和密码都是admin。Grafana的配置文件位于/etc/grafana/grafana.ini,一般情况下无需修改配置文件。

    二、部署zabbix

    2.1 部署LNMP环境

    2.1.1 安装Nginx

    这里使用nginx最新稳定版本 nginx-1.14.2,安装过程如下:

    yum -y install gcc gcc-c++ make zlib pcre pcre-devel openssl openssl-devel

    useradd -s /sbin/nologin www

    cd /usr/local/src/

    wget http://nginx.org/download/nginx-1.14.2.tar.gz

    tar zxvf nginx-1.14.2.tar.gz

    cd nginx-1.14.2

    ./configure 
    --user=www 
    --group=www 
    --prefix=/usr/local/nginx 
    --sbin-path=/usr/local/nginx/sbin/nginx 
    --conf-path=/usr/local/nginx/conf/nginx.conf 
    --error-log-path=/usr/local/nginx/logs/error.log 
    --http-log-path=/usr/local/nginx/logs/access.log 
    --pid-path=/var/run/nginx.pid 
    --lock-path=/var/lock/subsys/nginx 
    --with-http_stub_status_module 
    --with-http_ssl_module 
    --with-http_gzip_static_module 
    --with-pcre

    make

    make install

    #设置自启

    vim /etc/rc.local

    /usr/local/nginx/sbin/nginx

    2.1.2 安装MySQL

    1、安装

    安装mysql5.7版本,这里使用mysql官方的yum源进行安装

    cd /usr/local/src/

    wget https://repo.mysql.com/mysql57-community-release-el7.rpm

    rpm -ivh mysql57-community-release-el7.rpm

    yum install -y mysql-server mysql mysql-devel

    2、启动mysql

    systemctl start mysqld

    3、修改密码

    mysql启动后,系统会自动为root用户设置一个临时密码,获取MySQL的临时密码:

    grep "password" /var/log/mysqld.log

    mysql5.7版本后,对密码安全性加强了很多,临时密码只能用于登录,登录后需要马上修改密码,不然无法执行任何sql操作,同时,对密码长度和密码强度有了更高要求,必须符合长度8,且必须含有数字,小写或大写字母,特殊字符。重置mysql的root密码了,执行如下命令:

    mysql -uroot -p

    set password=password('Admin@123');
    flush privileges;

    2.1.3 安装PHP

    1、安装依赖库

    yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel openldap openldap-devel

    2、安装PHP7

    PHP官方下载地址:http://www.php.net/downloads.php

    cd /usr/local/src/

    wget http://cn2.php.net/distributions/php-7.2.15.tar.gz

    tar zxvf php-7.2.15.tar.gz

    cd php-7.2.15

    cp -frp /usr/lib64/libldap* /usr/lib/

    ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --enable-fpm --with-fpm-user=www --with-fpm-group=www --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-zlib --with-curl --with-gd --with-gettext --enable-bcmath --enable-sockets --with-ldap --with-jpeg-dir --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring --enable-xml --enable-session --enable-ftp --enable-pdo -enable-tokenizer --enable-zip

    vim Makefile

    找到 /^EXTRA_LIBS 开头行,行尾加上 “-llber”

    #编译安装

    make

    make install

    cp php.ini-production /usr/local/php7/etc/php.ini

    cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/

    3、PHP配置优化

    vim /usr/local/php7/etc/php.ini

    post_max_size = 16M
    max_execution_time = 300
    memory_limit = 128M
    max_input_time = 300
    date.timezone = Asia/Shanghai

    如果修改了参数不生效,参考文章:https://blog.51cto.com/msiyuetian/2355134

    2.1.4 配置lnmp环境

    1、修改nginx配置文件nginx.conf,在server下添加php-fpm的整合配置,内容如下:

    vim /usr/local/nginx/conf/nginx.conf

    location ~ .php$ {
    root html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
    include fastcgi_params;
    }

    2、修改php-fpm配置文件,启用php-fpm默认配置

    cd /usr/local/php7/etc
    cp php-fpm.conf.default php-fpm.conf
    cp php-fpm.d/www.conf.default php-fpm.d/www.conf

    2.1.5 启动lnmp服务

    systemctl start php-fpm
    /usr/local/nginx/sbin/nginx

    2.2 安装zabbix

    2.2.1 准备工作

    1、安装依赖库

    yum -y install net-snmp net-snmp-devel curl curl-devel libxml2 libevent libevent-devel

    2、创建用户

    groupadd zabbix

    useradd -g zabbix zabbix

    2.2.2 安装zabbix server

    1、编译安装

    cd /usr/local/src/

    wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.4/zabbix-4.0.4.tar.gz

    tar zxvf zabbix-4.0.4.tar.gz

    cd zabbix-4.0.4

    ./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --with-libxml2

    make

    make install

    说明:configure配置参数含义:

    1)--with-mysql:表示启用MySQL作为后端存储,如果MySQL客户端类库不再默认的位置(rpm包方式安装的MySQL,MySQL客户端类库在默认位置,因此只需指定“--with-mysql”即可,无需指定具体路径),需要在MySQL的配置文件中指定路径,指定方法是指定mysql_config的路径,例如,如果是源码安装的mysql,安装路径为/usr/local/mysql,就可以这么指定:“--with-mysql=/usr/local/mysql/bin/mysql_config”。

    2)--with-net-snmp:用于支持SNMP监控所需要的组件。

    3)--with-libcurl:用于支持WEB监控,VMware监控及SMTP认证所需要的组件,对于SMTP认证,需要7.20.0或以上版本。

    4)--with-libxml2:用于支持VMware监控所需要的组件。

    5)--enable-server、 --enable-agent、和--enable-proxy分别表示启用zabbix的server、agent和proxy组件。

    2、创建软连接

    由于zabbix启动脚本路径默认指向的是/usr/local/sbin路径,而我们zabbix的安装路径是/usr/local/zabbix,因此,需要提前创建如下软链接:

    ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/

    ln -s /usr/local/zabbix/bin/* /usr/local/bin/

    2.2.3 创建数据库和初始化表

    1、登录数据库,创建一个zabbix数据库和zabbix用户,操作如下:

    mysql -uroot -p

    create database zabbix character set utf8 collate utf8_bin;
    grant all privileges on zabbix.* to zabbix@localhost identified by 'Admin@123';
    flush privileges;

    2、开始导入zabbix的表信息,需要执行三个sql文件,sql文件在zabbix源码包中database/mysql/目录下。先进入这个mysql目录,然后进入sql命令行,按照如下SQL语句执行顺序导入SQL,执行如下操作:

    cd database/mysql/

    mysql -uroot -p

    use zabbix;
    source schema.sql;
    source images.sql;
    source data.sql;

    2.2.4 配置zabbix server端

    vim /usr/local/zabbix/etc/zabbix_server.conf

    ListenPort=10051
    LogFile=/tmp/zabbix_server.log
    DBHost=localhost
    DBName=zabbix
    DBUser=zabbix
    DBPassword=zabbix
    ListenIP=0.0.0.0
    StartPollers=5
    StartTrappers=10
    StartDiscoverers=10
    AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts

    参数说明:

    1)ListenPort是zabbix server默认监听端口

    2)LogFile用来指定zabbix server日志输出路径

    3)DBHost为数据库的地址,如果数据库在本机,可不做修改

    4)DBName为数据库名称

    5)DBUser为连接数据库的用户名

    6)DBPassword为连接数据量对应的用户密码

    7)ListenIP为zabbix server监听的IP地址,也就是zabbix server启动的监听端口对哪些ip开放,Agentd为主动模式时,这个值建议设置为0.0.0.0。

    8)StartPollers用于设置zabbix serve服务启动时启动Pollers(主动收集数据进程)的数量,数量越多,则服务端吞吐能力越强,同时对系统资源消耗越大。

    9)StartTrappers用于设置zabbix server服务启动时启动Trappers(负责处理Agentd推送过来的数据的进程)的数量。Agentd为主动模式时,zabbix server需要设置这个值大一些。

    10)StartDiscoverers用于设置zabbix server服务启动时启动Discoverers进程的数量,如果zabbix监控报Discoverers进程忙时,需要提高该值。

    11)AlertScriptsPath用来配置zabbix server运行脚本存放目录,一些供zabbix server使用的脚本,都可以放在这里。

    2.2.5 启动zabbix_server服务

    1、复制启动脚本

    cp /usr/local/src/zabbix-4.0.4/misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server

    cp /usr/local/src/zabbix-4.0.4/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentd

    chmod +x /etc/init.d/zabbix_server

    chmod +x /etc/init.d/zabbix_agentd

    2、开启自启

    chkconfig zabbix_server on

    chkconfig zabbix_agentd on

    3、启动zabbix server

    /etc/init.d/zabbix_server start

      

    2.2.6 安装与配置zabbix agent

    1、zabbix agent端的安装

    zabbix agent端的安装建议采用rpm包方式安装,可从http://repo.zabbix.com/zabbix/下载zabbix的agent端rpm包,版本与zabbix server端保持一致,安装如下:

    cd /usr/local/src/

    wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.4-1.el7.x86_64.rpm

    rpm -ivh zabbix-agent-4.0.4-1.el7.x86_64.rpm

      

    2、zabbix agent端的配置

    vim /etc/zabbix/zabbix_agentd.conf,需要修改的内容为如下:

    LogFile=/var/log/zabbix/zabbix_agentd.log
    Server=192.168.18.233
    StartAgents=3
    ServerActive=192.168.18.233
    Hostname=agent233
    Include=/etc/zabbix/zabbix_agentd.d/
    UnsafeUserParameters=1

    参数说明:

    1)LogFile:#zabbix agentd日志文件路径

    2)Server:#指定zabbix server端IP地址

    3)StartAgents:#指定启动agentd进程的数量,默认是3个,设置为0,表示关闭agentd的被动模式(zabbix server主动来agent拉取数据)。

    4)ServerActive:#启用agentd的主动模式(zabbix agent主动推送数据到zabbix server),启动主动模式后,agentd将主动将收集到的数据发送到zabbix server端,ServerActive后面指定的ip就是zabbix server端IP。

    5)Hostname:#需要监控服务器的主机名或者IP地址,此选择的设置一定要和zabbix web端主机配置中对应的主机名一致。

    6)Include:#相关配置都可以放到此目录下,自动生效。

    7)UnsafeUserParameters:#启用agent端自定义item功能,设置此参数为1后,就可以使用UserParameter指令了。UserParameter用于自定义itme。

    3、启动zabbix_agent

    systemctl start zabbix-agent

    2.3 安装zabbix gui

    2.3.1 部署zabbix web

    Zabbix web是php代码编写的,将zabbix web安装到/usr/loca/nginx/html目录下,因此,只需将Zabbix web的代码放到此目录即可。Zabbix web的代码在Zabbix 源码包中的frontends/php目录下,将这个php目录拷贝到/usr/loca/nginx/html目录下并改名为zabbix即可完成Zabbix web端的安装。

    cp -a /usr/local/src/zabbix-4.0.4/frontends/php/ /usr/local/nginx/html/

    cd /usr/local/nginx/html/

    mv php/ zabbix

    2.3.2 防火墙开启

    vim /etc/sysconfig/iptables

    -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

    systemctl restart iptables.service

    systemctl enable iptables.service

    关闭selinux

    setenforce 0

      

    2.3.3 访问web

    在浏览器输入http://192.168.18.233/zabbix/setup.php,然后会检查zabbix web运行环境是否满足,

    下一步检测PHP环境参数,如下图:

    配置数据库连接,如下图:

    默认的zabbix平台登录用户名为Admin,密码为zabbix。(注意账号首字母大写)

    到此部署zabbix完成,登入后界面后如下:

    三、Grafana与zabbix整合

    3.1 安装grafana-zabbix 插件

    grafana和zabbix的集成是通过插件方式实现的,因此,需要先安装grafana-zabbix插件,grafana官方已经包含了这个插件,直接使用即可。

    3.1.1 查询插件

    grafana-cli plugins list-remote|grep zabbix

    id: alexanderzobnin-zabbix-app version: 3.10.0

    3.1.2 安装插件

    grafana-cli plugins install alexanderzobnin-zabbix-app

    安装成功之后会提示我们需要重启grafana 服务,以使插件生效,稍后重启。

    3.1.3 安装时钟插件

    安装一个clock-panel插件,这个插件是个时钟插件,可以在dashboard上显示时间用。

    grafana-cli plugins install grafana-clock-panel

    3.1.4 重启grafana

    所有需要的插件安装完成后,执行如下命令重启grafana服务:

    systemctl restart grafana-server

    3.2 配置zabbix数据源

    所有准备工作完成后,下面就可以进入Grafana的web界面配置数据源,点击这个“Add data source”

    进入如下界面,显示的是默认Grafana自带的数据源:

    我们要添加zabbix,那么zabbix默认是以插件形式存在的,所以点击上图Plugins标签,然后搜索zabbix,如下图所示:

    可以看到,这个显示的zabbix插件,就是我们刚刚安装好的。点击这个插件,进入如下界面:

    这里点击“Enable”,启用这个插件。启用zabbix插件之后,再次选择“Data Source”标签,如下图所示:

    可以看到,基于zabbix的数据源已经出来了,点击这个数据源,进入如下界面:

    http://192.168.18.233/zabbix/api_jsonrpc.php

    配置完成之后,点击最下面的“Save &Test”,如果配置有问题会报错提示,如果没有问题会提示成功。

    这样zabbix数据源就配置完成了。最后,点击左侧导航中的zabbix图标,选择“Zabbix Server Dashboard”,如下图所示: 

    可以看到,默认Dashboard已经有数据了,这个数据就是通过上面配置的数据源而来。这只是一个初步配置,后续还有很多可以细化的东西。

    如果没有数据,可以修改相关配置,例如对上面CPU这个Panel进行修改,可以这样操作,如下图所示: 

    此界面是调试出图是否正常的方法,非常重要,首先,图中“$datasource”用来指定数据源,“Query Mode”指定查询模式,有“Metrics、text”等可选项,还有四个选项“Group”、 “Host”、“ Application”、“ Item”,分别对应zabbix中的主机组、主机、应用集和监控项。正常情况下选择“Group”后,会在“Host”中看到此“Group”下的所有主机,“ Application”和“ Item”也是类似的。

    3.3 自定义Dashboard

    除了zabbix插件自带的Dashboard,我们还可以自定义需要的Dashboard,点击Grafana左侧导航,选择创建一个Dashboard,如下图所示:

    从此图可以看出,默认已经存在一些Panel,可以选择添加,但是在添加之前,需要先做几个变量配置,点击右上角的齿轮按钮,如下图所示:

    此界面是对Dashboard进行配置,这里我们修改Dashboard名称为“ Zabbix Template Linux Server”,其它保存不变,接着,点击上图左侧的“Variables”,然后添加一个Variables,如下图所示:

    3.3.1自定义主机组

    这里我们添加了一个group变量,类型为“Query”,对应的标签为主机组,到时候要使用这个变量名就用$group来调用即可。 接着在“Query Options”中的Query方法,这里是一个星号,代表所有组。就设置这么多,最后,点击add,group这个变量就创建好了。

    下面解释一下各个参数的作用:

     1、General部分

    Ø name:变量的名字,比如我这里取名为group,到时候要使用这个变量名就用$group来调用。

    Ø type: 变量类型,变量类型有多种,其中query表示这个变量是一个查询语句,type也可以是datasource,datasource就表示该变量代表一个数据源,如果是datasource你可以用该变量修改整个DashBoard的数据源,变量类型还可以是时间间隔Interval等等。这里我们选择query。

    Ø label: 是对应下拉框的名称,默认就是变量名,选择修改为“主机组”。

    Ø hide: 有三个值,分别为空,label,variable。选择label,表示不显示下拉框的名字。选择variable表示隐藏该变量,该变量不会在DashBoard上方显示出来。默认选择为空,这里也选默认。

    2、Query options部分

    Ø Data source: 数据源,不用多说。

    Ø Refresh: 何时去更新变量的值,变量的值是通过查询数据源获取到的,但是数据源本身也会发生变化,所以要时不时的去更新变量的值,这样数据源的改变才会在变量对应的下拉框中显示出来。Refresh有三个值可以选择,Never:永不更新。On Dashboard Load:在DashBoard加载时更新。On Time Range Change:在一个时间范围内更新。可根据情况进行选项。

    Ø Query:查询表达式,不同的数据源查询表达式都不同(这些可以到官网上查询),这里由于是要查询zabbix的groups信息,所以表达式为“*”,代表所有。

    Ø Regex:正则表达式,用来对抓取到的数据进行过滤,这里默认不过滤。

    Ø Sort:排序,对下拉框中的变量值做排序,排序的方式挺多的,默认是disable,表示查询结果是怎样下拉框就怎样显示。此处选disable。

    3、Selection Options部分

    Ø Multi-value:启用这个功能,变量的值就可以选择多个,具体表现在变量对应的下拉框中可以选多个值的组合。

    Ø Include All option:启用这个功能,变量下拉框中就多了一个all选项。

    3.3.2自定义主机、item、application

    按照这个方式可以创建多个变量(host,application,item、Network)。创建方法和group基本一样,除了name,query不一样之外其它都一样。

    1、创建变量host

    Name:host

    Query:$group.*

     

    2、创建变量application

    Name:application

    Query:$group.$host.*

      

    3、创建变量item

    Name:item

    Query:$group.$host.$application.*

    变量创建完成后,保存,如下图:

    3.3.3创建Graph

    返回刚刚创建好的“Zabbix Template Linux Server”,点击右上角的添加panel按钮,选择左边的“Graph”,如下图所示:

    点击编辑这个panel,进入下图:

    这里选择数据源为zabbix-213,然后选择Query Mode为Metrics,由于Grafana已经可以连接到zabbix数据库,所以,Group一项会列出zabbix所以的主机组,接着在Host一项中会列出对应主机组下的所有主机,同理,Application和Item项都会自动列出所有的对应内容,选择一个需要图形展示的监控项即可。

    3.3.4安装饼图

    grafana-cli plugins install grafana-piechart-panel

    所有需要的插件安装完成后,执行如下命令重启grafana服务:

    systemctl restart grafana-server

    刷新界面就可以看到如下

    配置CPU采用饼图

    四、部署Prometheus

    4.1 Prometheus介绍

    4.1.1 Prometheus特点

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

    1)强大的多维度数据模型

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

    3)易于管理: Prometheus server 是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。

    4)高效:一个 Prometheus server 可以处理数百万的 metrics。

    5)使用pull模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的metrics。

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

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

    8)支持多种绘图和仪表盘模式。

    9)监控目标可以通过服务发现或静态配置

    4.1.2 Prometheus 适合做什么?

    Prometheus非常适合记录纯数字的时间序列,既可以是以主机为中心的监控,也可以是以服务为导向的动态架构。在微服务的世界,它支持多维度的数据集合,查询功能非常强大。

    Prometheus 是为可用性而设计,利用它你可以快速定位问题。每一个 Prometheus Server 都是独立的,不依赖于网络存储或其他的第三方服务。可以在部分基础设施出现问题时仍然使用它。

    4.1.3 Prometheus 不适合做什么?

    Prometheus 用于评估可用性。如果你想要100%的精准度,比如每个请求的账单,Prometheus就不是一个好的选择,因为收集上来的数据可能没这么细致、完整。对于这样的需求,你最好用其他的大数据系统对数据做分析。

      

    4.2 Prometheus 的组件与架构

    4.2.1 Prometheus 生态圈组件

    Prometheus 的生态系统包括多个组件,大部分的组件都是用Go语言编写的,因此部署非常方便,而这些组件大部分都是可选的,主要组件介绍如下:

    1、Prometheus Server

    Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。

    Prometheus Server可以通过静态配置管理监控目标,也可以配合使用Service Discovery的方式动态管理监控目标,并从这些监控目标中获取数据。

    其次Prometheus Server需要对采集到的监控数据进行存储,Prometheus Server本身就是一个时序数据库,将采集到的监控数据按照时间序列的方式存储在本地磁盘当中。

    最后Prometheus Server对外提供了自定义的PromQL语言,实现对数据的查询以及分析。

    Prometheus Server内置的Express Browser UI,通过这个UI可以直接通过PromQL实现数据的查询以及可视化。

    2、推送网关(push gateway)

    主要是实现接收由Client push过来的指标数据,在指定的时间间隔,由主程序来抓取。

    由于Prometheus数据采集基于Pull模型进行设计,因此在网络环境的配置上必须要让Prometheus Server能够直接与Exporter进行通信。

    当这种网络需求无法直接满足时,就可以利用PushGateway来进行中转。

    可以通过PushGateway将内部网络的监控数据主动Push到Gateway当中。

    而Prometheus Server则可以采用同样Pull的方式从PushGateway中获取到监控数据。

    3、Exporter

    主要用来采集数据,并通过HTTP服务的形式暴露给Prometheus Server,Prometheus Server通过访问该Exporter提供的接口,即可获取到需要采集的监控数据。

    常见的Exporter有很多,例如node_exporter、mysqld_exporter、statsd_exporter、blackbox_exporter、haproxy_exporter等,支持如 HAProxy,StatsD,Graphite,Redis 此类的服务监控;

    4、告警管理器(Alertmanager)

    管理告警,主要是负责实现报警功能。

    在Prometheus Server中支持基于PromQL创建告警规则,如果满足PromQL定义的规则,则会产生一条告警,而告警的后续处理流程则由AlertManager进行管理。

    在AlertManager中我们可以与邮件,Slack等等内置的通知方式进行集成,也可以通过Webhook自定义告警处理方式。AlertManager即Prometheus体系中的告警处理中心。

    4.2.2 Prometheus 的架构

    下图展示了Prometheus的基本架构:

     

    从架构图中可以看出其大概的工作流程:

    1)Prometheus Server 以服务发现(如 Kubernetes 等)的方式自动发现或者静态配置添加监控目标;

    2)Prometheus Server 定期从监控目标(Jobs/exporters)或 Pushgateway 中拉取数据(metrics),将时间序列数据保存到其自身的时间序列数据库(TSDB)中;

    3)Prometheus Server 通过 HTTP Server 对外开放接口,可以给可视化工具(如 Prometheus web UI、Grafana 或自己开发的工具)用PromQL查询/导出数据;

    4)当有告警产生时,Prometheus Server 将告警信息推送到Alertmanager ,由 Alertmanager 根据配置的策略发送告警信息到对应的接收方;

    5)Pushgateway 接收 “Short-lived” 类型的 Jobs 推送过来的 metrics 并缓存,等待 Prometheus Server 抓取。

  • 相关阅读:
    文字超出2行显示省略号
    js调试工具console方法详解
    下厨如有神
    画地为牢——广州经济困局
    数字桩和记忆术
    想象力提高记忆能力的重要能力
    三元色
    轻松自我介绍三步走——曼陀罗思考法
    英语单词_巩固方法草稿A
    http、TCP/IP协议与socket之间的区别
  • 原文地址:https://www.cnblogs.com/shixiuxian/p/11422714.html
Copyright © 2020-2023  润新知