【云原生】Prometheus 监控系统的初步了解与系统搭建

这篇具有很好参考价值的文章主要介绍了【云原生】Prometheus 监控系统的初步了解与系统搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言


promethues是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。
 

 1. Prometheus的相关知识

 1.1 Prometheus的认识与了解

Prometheus 是一个开源的服务监控系统和时序数据库,其提供了通用的数据模型和快捷数据采集、存储和查询接口。它的核心组件 Prometheus server 会定期从静态配置的监控目标或者基于服务发现自动配置的目标中进行拉取数据新拉取到的数据会持久化到存储设备当中。

每个被监控的主机都可以通过专用的 exporter 程序提供输出监控数据的接口,它会在目标处收集监控数据,并暴露出一个 HTTP 接口供 Prometheus server 查询,Prometheus 通过基于 HTTP 的 pull 的方式来周期性的采集数据。 


如果存在告警规则,则抓取到数据之后会根据规则进行计算,满足告警条件则会生成告警,并发送到 Alertmanager 完成告警的汇总和分发


当被监控的目标有主动推送数据的需求时,可以以 Pushgateway 组件进行接收并临时存储数据,然后等待 Prometheus server 完成数据的采集。

任何被监控的目标都需要事先纳入到监控系统中才能进行时序数据采集、存储、告警和展示,监控目标可以通过配置信息以静态形式指定,也可以让 Prometheus 通过服务发现的机制进行动态管理。


Prometheus 能够直接把 API Server 作为服务发现系统使用,进而动态发现和监控集群中的所有可被监控的对象
 

1.2 Prometheus的特点 


● 多维数据模型:由度量名称和键值对标识的时间序列数据
   时间序列数据:按照时间顺序记录系统、设备状态变化的数据,每个数据称为一个样本;服务器     指标数据、应用程序性能监控数据、网络数据等都是时序数据

●  内置时间序列(Time Series)数据库:Prometheus ;外置的远端存储通常会用:                         InfluxDB、   OpenTSDB 等

● promQL 一种灵活的查询语言,可以利用多维数据完成复杂查询

● 基于 HTTP 的 pull(拉取)方式采集时间序列数据

● 同时支持 PushGateway 组件收集数据

● 通过静态配置或服务发现发现目标

● 支持作为数据源接入 Grafana    
 

1.3 Prometheus存储引擎TSDB 的特点优势

 TSDB 作为 Prometheus 的存储引擎完美契合了监控数据的应用场景


● 存储的数据量级十分庞大
● 大部分时间都是写入操作
● 写入操作几乎是顺序添加,大多数时候数据都以时间排序
● 很少更新数据,大多数情况在数据被采集到数秒或者数分钟后就会被写入数据库
● 删除操作一般为区块删除,选定开始的历史时间并指定后续的区块。很少单独删除某个时间或        者 分开的随机时间的数据
● 基本数据大,一般超过内存大小。一般选取的只是其一小部分且没有规律,缓存几乎不起任何        作 用
● 读操作是十分典型的升序或者降序的顺序读
● 高并发的读操作十分常见

1.4 Prometheus 的生态组件 

 Prometheus 负责时序型指标数据的采集及存储,但数据的分析、聚合及直观展示以及告警等功能并非由 Prometheus Server 所负责。Prometheus 生态圈中包含了多个组件,其中部分组件可选:

prometheus搭建,云原生,prometheus

(1)Prometheus server
服务核心组件,采用 pull 方式采集监控数据,通过 http 协议传输;存储时间序列数据;基于“告警规则”生成告警通知。
 Prometheus server 由三个部分组成:Retrieval,Storage,PromQL

Retrieval:负责在活跃的 target 主机上抓取监控指标数据。
 Storage:存储,主要是把采集到的数据存储到磁盘中。默认为 15 天。
 PromQL:是 Prometheus 提供的查询语言模块。    
(2)Client Library 
 客户端库,目的在于为那些期望原生提供 Instrumentation 功能的应用程序提供便捷的开发途径,用于基于应用程序内建的测量系统。

(3)Exporters 
 指标暴露器,负责收集不支持内建 Instrumentation 的应用程序或服务的性能指标数据,并通过 HTTP 接口供 Prometheus Server 获取。
换句话说,Exporter 负责从目标应用程序上采集和聚合原始格式的数据,并转换或聚合为 Prometheus 格式的指标向外暴露。

常用的 Exporters: 

Node-Exporter:用于收集服务器节点的物理指标状态数据,如平均负载、CPU、内存、磁盘、网络等资源信息的指标数据,需要部署到所有运算节点。指标详细介绍:https://github.com/prometheus/node_exporter
mysqld-exporter/nginx-exporter
Kube-State-Metrics:为 Prometheus 采集 K8S 资源数据的 exporter,通过监听 APIServer 收集 kubernetes 集群内资源对象的状态指标数据,例如 pod、deployment、service 等等。同时它也提供自己的数据,主要是资源采集个数和采集发生的异常次数统计。需要注意的是 kube-state-metrics 只是简单的提供一个 metrics 数据,并不会存储这些指标数据,所以可以使用 Prometheus 来抓取这些数据然后存储, 主要关注的是业务相关的一些元数据,比如 Deployment、Pod、副本状态等;调度了多少个 replicas ?现在可用的有几个?多少个 Pod 是 running/stopped/terminated 状态?Pod 重启了多少次?有多少 job 在运行中。
cAdvisor:用来监控容器内部使用资源的信息,比如 CPU、内存、网络I/O、磁盘I/O 。
blackbox-exporter:监控业务容器存活性。
 
(4)Service Discovery 
服务发现,用于动态发现待监控的 Target,Prometheus 支持多种服务发现机制:文件、DNS、Consul、Kubernetes 等等。 服务发现可通过第三方提供的接口,Prometheus 查询到需要监控的 Target 列表,然后轮询这些 Target 获取监控数据。该组件目前由 Prometheus Server 内建支持 

 
(5)Alertmanager

是一个独立的告警模块,从 Prometheus server 端接收到 “告警通知” 后,会进行去重、分组,并路由到相应的接收方,发出报警, 常见的接收方式有:电子邮件、钉钉、企业微信等。
Prometheus Server 仅负责生成告警指示,具体的告警行为由另一个独立的应用程序 AlertManager 负责;告警指示由 Prometheus Server 基于用户提供的告警规则周期性计算生成,Alertmanager 接收到 Prometheus Server 发来的告警指示后,基于用户定义的告警路由向告警接收人发送告警信息。

 

(6)Pushgateway 
类似一个中转站,Prometheus 的 server 端只会使用 pull 方式拉取数据,但是某些节点因为某些原因只能使用 push 方式推送数据, 那么它就是用来接收 push 而来的数据并暴露给 Prometheus 的 server 拉取的中转站。
可以理解成目标主机可以上报短期任务的数据到 Pushgateway,然后 Prometheus server 统一从 Pushgateway 拉取数据。

 

(7)Grafana 
是一个跨平台的开源的度量分析和可视化工具,可以将采集的数据可视化的展示,并及时通知给告警接收方。其官方库中具有丰富的仪表盘插件。 

 

1.5 Prometheus 的工作模式 

Prometheus Server 基于服务发现(Service Discovery)机制或静态配置获取要监视的目标(Target),并通过每个目标上的指标 exporter 来采集(Scrape)指标数据;


Prometheus Server 内置了一个基于文件的时间序列存储来持久存储指标数据,用户可使用 PromQL 接口来检索数据,也能够按需将告警需求发往 Alertmanager 完成告警内容发送;


一些短期运行的作业的生命周期过短,难以有效地将必要的指标数据供给到 Server 端,它们一般会采用推送(Push)方式输出指标数据, Prometheus 借助于 Pushgateway 接收这些推送的数据,进而由 Server 端进行抓取
 

1.6 Prometheus的工作流程 


 (1)Prometheus 以 Prometheus Server 为核心,用于收集和存储时间序列数据。                              PrometheusServer 从监控目标中通过 pull 方式拉取指标数据,或通过 pushgateway 把              采集的数据拉取 到 Prometheus server 中。
(2)Prometheus server 把采集到的监控指标数据通过 TSDB 存储到本地 HDD/SSD 中。
(3)Prometheus 采集的监控指标数据按时间序列存储,通过配置报警规则,把触发的告警通知            发送到 Alertmanager。
(4)Alertmanager 通过配置报警接收方,发送报警到邮件、钉钉或者企业微信等。
(5)Prometheus 自带的 Web UI 界面提供 PromQL 查询语言,可查询监控数据。
(6)Grafana 可接入 Prometheus 数据源,把监控数据以图形化形式展示出

 

1.7 Prometheus 的局限性 


Prometheus 是一款指标监控系统,不适合存储事件及日志等;它更多地展示的是趋势性的监控,而非精准数据;
Prometheus 认为只有最近的监控数据才有查询的需要,其本地存储的设计初衷只是保存短期(例如一个月)数据,因而不支持针对大量的历史数据进行存储;若需要存储长期的历史数据,建议基于远端存储机制将数据保存于 InfluxDB 或 OpenTSDB 等系统中;
Prometheus 的集群机制成熟度不高,可基于 Thanos 实现 Prometheus 集群的高可用及联邦集群。

 

 2.promethues与zabbix二者该如何选择

2.1 首先了解两款监控系统的产生背景 


(1)zabbix的开发背景 
Zabbix是一款企业级的开源监控产品,基于C语言开发。它可以用于服务器、操作系统、网络、应用程序等目标对象监控。在监控和数据收集的方式上,可支持zabbix agent、SNMP、ping、端口监控等多种方式

Zabbix属于大而全的系统,具有完善的Web界面,并且集成了可视化、告警等功能。用户可在界面上完成绝大部分的操作,这使得其上手难度低,可以被快速掌握。但与此同时,高度集成带来的缺点则是定制化的难度很大,无法很好地进行扩展

(2)Prometheus的开发背景 
Promehteus是一款近年来非常火热的监控系统,它使用go语言开发,设计思路来源于Google的Borgmom(一个监控容器平台的系统)。在监控上除了支持传统的服务器、网络、操作系统等对象外,还天然具有对Kubernetes和Docker等云原生产品的支持,这使得其可以在云原生时代大放异彩

相比于Zabbix大而全的理念,Prometheus则要简单得多,产品只专注于监控的功能并提供简单Web界面供用户查询,而将可视化和告警这些功能交由Grafana和Alertmanager等第三方产品来实现。功能上的简洁使得Prometheus变得小巧而灵活,可以非常方便地进行部署与升级,并与第三方开源产品搭配实现定制化。

Prometheus的操作需要通过修改配置文件来实现,还必须掌握自带的PromQL 语言,在学习门槛会较高,上手难度比较大
 

2.2 二者的功能比较 


(1)指标采集方式 
Zabbix

Zabbix分为两大部分,server端和agent端。agent用于部署在目标机器上,并提供数据指标给到server,它们之间基于TCP协议进行通信。

agent支持被动轮询与主动推送模式,被动模式下由server定时向agent端发起请求,agent会处理请求并将值返回给到server端。而在主动推送下,则是由agent定时向server端发送结果。

Prometheus

Prometheus基于客户端进行数据的收集,Server端会定时与客户端进行交互,并通过pull方式获取相关的监控指标。

Prometheus 基于HTTP进行通信,这使得与其他工具的集成变得简单,任何组件只要提供对应的HTTP接口就可以接入监控。目前已有许多开源产品提供了对Prometheus的支持,可以按照其支持的格式提供指标,如Kubernetes、Harbor等。如果无法做到这一点,那么还有许多库可以帮忙导出现有指标,这些库被称为exporter,常用的有node exporter、mysql exporter、redis exporter等。

(2) 数据存储 
Zabbix

Zabbix使用外部数据库来存储数据,目前支持的数据库有MySQL、PostgreSQL、Oracle等。在存储的数据类型上,Zabbix除key-value格式外,还支持文本、日志等格式。

Prometheus

Prometheus将数据存储在内置的时间序列数据库(TSDB)中,该数据库相比关系型数据库可以较大的节省存储空间,并且拥有更高的处理效率,能够快速搜索出复杂的结果。

不过,原生的TSDB对于大数据量的存储支持不太友好,所以默认情况下Pormetheus只会保存15天的数据。如果需要更长时间的数据存储,可以配置远程存储模式,使用第三方存储介质保存数据指标。

需要注意的是,Prometheus只支持存储时间序列的值

(3)查询的性能
Zabbix

zabbix在查询方面功能较弱,只能通过Web界面做一些有限度的操作,或者直接到数据库使用SQL进行查询。

Prometheus

Prometheus在查询方面要比Zabbix强大得多。Prometheus提供了自带的查询语言PromQL,该语言非常灵活、简洁且功能强大,可以与函数和运算符配合,进行计算、过滤、分组等操作,同时支持正则表达式。

在Prometheus的Web界面可以执行表达式的查询,查询结果以图形或表格数据的形式展现。

(4)告警功能 
Zabbix

与可视化情况一样,Zabbix内置了告警功能,并支持多种介质的发送。Zabbix 警报系统允许以不同的方式管理事件:发送消息、执行远程命令、根据服务级别升级问题等。

Promtheus

在告警上,Prometehus需要与Alertmanager结合使用。因为Prometheus的告警分为两部分,在Prometheus Server端定义告警规则,当触发规则时则会发送到Alertmanager,并由其发送给对应的接收人。

Alertmanager可对告警信息进行管理 ,具有静默、分组、聚合等功能,同时支持Email、IM等多种介质发送。
 

2.3 总结 


首先可以肯定zabbix和Prometheus都是非常优秀的监控系统,但从选择上,可以根据实际需求来确定合适的监控系统。

zabbix产生时间更为长,基于c语言开发,Zabbix上手难度要低很多,对于传统的服务器、系统、网络等都有优秀的监控能力,并且可以根据自定义模板监控加上告警监控机制,,适合对于监控方面要求不高、整体技术能力较弱的传统企业使用。但是zabbix在云原生的部署上发展时间已经适配程度都不如Prometheus,对于云原生的来讲,zabbix的运用和效率都没那么理想

Prometheus是CNCF基金的第二款产品,可以说和k8s是亲兄弟一般的存在,对于Kubernetes等容器产品的支持非常友好,且定制化程度高。但是上手难度也会更大,因此更适合具有较好技术能力、监控需求复杂的互联网企业使用。 想运用好Prometheus,promQL数据语言的掌握是必不可少的。
 

 3. prometheus的部署搭建

 (1)上传 prometheus-2.35.0.linux-amd64.tar.gz,并解压

mkdir -p /opt/prometheus
cd /opt/prometheus
tar xf prometheus-2.35.0.linux-amd64.tar.gz
mv prometheus-2.35.0.linux-amd64 /usr/local/prometheus
 
cat /usr/local/prometheus/prometheus.yml | grep -v "^#"
global:                    #用于prometheus的全局配置,比如采集间隔,抓取超时时间等
  scrape_interval: 15s            #采集目标主机监控数据的时间间隔,默认为1m
  evaluation_interval: 15s         #触发告警生成alert的时间间隔,默认是1m
  # scrape_timeout is set to the global default (10s).
  scrape_timeout: 10s            #数据采集超时时间,默认10s
 
alerting:                #用于alertmanager实例的配置,支持静态配置和动态服务发现的机制
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093
 
rule_files:                #用于加载告警规则相关的文件路径的配置,可以使用文件名通配机制
  # - "first_rules.yml"
  # - "second_rules.yml"
 
scrape_configs:            #用于采集时序数据源的配置
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"        #每个被监控实例的集合用job_name命名,支持静态配置(static_configs)和动态服务发现的机制(*_sd_configs)
 
    # metrics_path defaults to '/metrics'
    metrics_path: '/metrics'    #指标数据采集路径,默认为 /metrics
    # scheme defaults to 'http'.
 
    static_configs:                #静态目标配置,固定从某个target拉取数据
      - targets: ["localhost:9090"]
 
 

(2) 将Prometheus加入到系统服务 

cat > /usr/lib/systemd/system/prometheus.service <<'EOF'
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/prometheus/prometheus \
--config.file=/usr/local/prometheus/prometheus.yml \
--storage.tsdb.path=/usr/local/prometheus/data/ \
--storage.tsdb.retention=15d \
--web.enable-lifecycle
  
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF
 
 
systemctl start prometheus
systemctl enable prometheus
 
netstat -natp | grep :9090

prometheus搭建,云原生,prometheus

(3)进行界面访问

http://192.168.73.108:9090(主机IP) ,访问到 Prometheus 的 Web UI 界面 

prometheus搭建,云原生,prometheus

 prometheus搭建,云原生,prometheus

访问:http://192.168.50.20:9090/metrics,查看prometheus的数据采集信息

prometheus搭建,云原生,prometheus

4.部署 Exporters ,添加监控主机

下面我们以常见的服务运用,k8s中noode节点(以我们前面使用kubeadmin部署好的一master两worker node为例子),nginx和mysql为例,添加进Prometheus的监控中 

4.1  部署 Node Exporter 监控系统级指标(对每一个node节点)

(1)上传 node_exporter-1.3.1.linux-amd64.tar.gz 进行解压

mkdir -p /opt/prometheus
cd /opt/prometheus
tar xf node_exporter-1.3.1.linux-amd64.tar.gz
mv node_exporter-1.3.1.linux-amd64/node_exporter /usr/local/bin

prometheus搭建,云原生,prometheus

(2)将 node_exporter添加到系统服务中

cat > /usr/lib/systemd/system/node_exporter.service <<'EOF'
[Unit]
Description=node_exporter
Documentation=https://prometheus.io/
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter \
--collector.ntp \
--collector.mountstats \
--collector.systemd \
--collector.tcpstat
 
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF
 
(3)启动 
systemctl start node_exporter
systemctl enable node_exporter
 
netstat -natp | grep :9100

prometheus搭建,云原生,prometheus

prometheus搭建,云原生,prometheus

 (3)修改 prometheus 配置文件,加入到 prometheus 监控中

vim /usr/local/prometheus/prometheus.yml
#在尾部增加如下内容
  - job_name: nodes
    metrics_path: "/metrics"
    static_configs:
    - targets:
      - 192.168.50.20:9100
      - 192.168.50.21:9100
      - 192.168.73:50.22:9100
      labels:
        service: kubernetes
        
(5)重新载入配置
curl -X POST http://192.168.50.20:9090/-/reload    或    systemctl reload prometheus
浏览器查看 Prometheus 页面的 Status -> Targets

prometheus搭建,云原生,prometheus

 prometheus搭建,云原生,prometheus

prometheus搭建,云原生,prometheus

4.2 监控 MySQL 配置示例 

在 MySQL 服务器上操作

(1)上传 mysqld_exporter-0.14.0.linux-amd64.tar.gz,并解压

mkdir /opt/prometheus
cd /opt/prometheus
tar xf mysqld_exporter-0.14.0.linux-amd64.tar.gz
mv mysqld_exporter-0.14.0.linux-amd64/mysqld_exporter /usr/local/bin/

(2)添加系统服务 

cat > /usr/lib/systemd/system/mysqld_exporter.service <<'EOF'
[Unit]
Description=mysqld_exporter
Documentation=https://prometheus.io/
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/bin/mysqld_exporter --config.my-cnf=/etc/my.cnf
 
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF

prometheus搭建,云原生,prometheus

 (3)修改 MySQL 配置文件,并且 授权exporter 用户

vim /etc/my.cnf
[client]
......
host=localhost
user=exporter
password=abc123
 
########授权 exporter 用户
mysql -uroot -pabc123
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost' IDENTIFIED BY 'abc123';

(4)对mysqld服务和exporter服务进行重启 

systemctl restart mysqld
systemctl start mysqld_exporter
systemctl enable mysqld_exporte

prometheus搭建,云原生,prometheus

 (5)在Prometheus主机上添加mysqld的监控项 

vim /usr/local/prometheus/prometheus.yml
#在尾部增加如下内容
  - job_name: mysqld
    metrics_path: "/metrics"
    static_configs:
    - targets:
          - 192.168.73.109:9104
      labels:
        service: mysqld
 
curl -X POST http://192.168.73.108:9090/-/reload    或    systemctl reload prometheus
浏览器查看 Prometheus 页面的 Status -> Targets

prometheus搭建,云原生,prometheus

4.3 监控 Nginx 配置示例 

在 Nginx 服务器上预先准备操作:

下载 nginx-exporter 地址:https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
下载 nginx 地址:http://nginx.org/download/
下载 nginx 插件地址:https://github.com/vozlt/nginx-module-vts/tags

(1)解压nginx的相关插件

cd /opt/prometheus
tar xf nginx-module-vts-0.1.18.tar.gz
mv nginx-module-vts-0.1.18 /usr/local/nginx-module-vts

prometheus搭建,云原生,prometheus

(2)源码编译安装nginx并设置暴露监控项 

yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
useradd -M -s /sbin/nologin nginx
 
cd /opt/prometheus
tar xf nginx-1.18.0.tar.gz
 
cd nginx-1.18.0/
./configure --prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module \
--add-module=/usr/local/nginx-module-vts
 
make -j 2 & make install
 
(3)修改 nginx 配置文件,启动 nginx
vim /usr/local/nginx/conf/nginx.conf
http {
    vhost_traffic_status_zone;                    #添加
    vhost_traffic_status_filter_by_host on;        #添加,开启此功能,在 Nginx 配置有多个 server_name 的情况下,会根据不同的 server_name 进行流量的统计,否则默认会把流量全部计算到第一个 server_name 上
    ......
    server {
    ......
    }
    
    server {
        vhost_traffic_status off;        #在不想统计流量的 server 区域,可禁用 vhost_traffic_status
        listen 8080;
        allow 127.0.0.1;
        allow 192.168.73.110;            #设置为 prometheus 的 ip 地址
 
        location /nginx-status {
            stub_status on;
            access_log off;
        }
 
        location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
    }
}
 
#假如 nginx 没有规范配置 server_name 或者无需进行监控的 server 上,那么建议在此 vhost 上禁用统计监控功能。否则会出现 127.0.0.1、hostname 等的域名监控信息。
 
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
nginx -t
 
cat > /lib/systemd/system/nginx.service <<'EOF'
[Unit]
Description=nginx
After=network.target
 
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target
EOF
 
systemctl start nginx
systemctl enable nginx
 
 
浏览器访问:http://192.168.73.110:8080/status ,可以看到 Nginx Vhost Traffic Status 的页面信息
 

prometheus搭建,云原生,prometheus

 (3)在nginx主机上安装exporter插件 

cd /opt/
tar -zxvf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
mv nginx-vts-exporter-0.10.3.linux-amd64/nginx-vts-exporter /usr/local/bin/
 
cat > /usr/lib/systemd/system/nginx-exporter.service <<'EOF'
[Unit]
Description=nginx-exporter
Documentation=https://prometheus.io/
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/bin/nginx-vts-exporter -nginx.scrape_uri=http://localhost:8080/status/format/json
 
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
EOF
 
systemctl start nginx-exporter
systemctl enable nginx-exporter
 
netstat -natp | grep :9913

prometheus搭建,云原生,prometheus

4)在Prometheus主机上添加nginx的监控项 

#########修改 prometheus 配置文件,加入到 prometheus 监控中
vim /usr/local/prometheus/prometheus.yml
#在尾部增加如下内容
  - job_name: nginx
    metrics_path: "/metrics"
    static_configs:
    - targets:
          - 192.168.73.110:9913
      labels:
        service: nginx
        
################重新载入配置
curl -X POST http://192.168.73.108:9090/-/reload    或    systemctl reload prometheus
浏览器查看 Prometheus 页面的 Status -> Targets

prometheus搭建,云原生,prometheus文章来源地址https://www.toymoban.com/news/detail-716382.html

到了这里,关于【云原生】Prometheus 监控系统的初步了解与系统搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在k8s中快速搭建基于Prometheus监控系统

    公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享 K8s本身不包含内置的监控工具,所以市场上有不少这样监控工具来填补这一空白,但是没有一个监控工具有prometheus全家桶使用率高,因为它由 CNCF维护,已经成为了监控 k8s 集群的事实上的行

    2024年02月04日
    浏览(40)
  • 图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(下)

    本文环境,以及本文所采用数据库为 GreatSQL 8.0.32-24 在上篇[图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)]中介绍了如何搭建监控系统,本文将介绍如何使用Grafana平台以及AlertManager模块的告警功能 这里我们以邮件告警并使用QQ邮箱为例 登录QQ邮箱后,点击设置-账

    2024年02月08日
    浏览(45)
  • 图文结合丨Prometheus+Grafana+GreatSQL性能监控系统搭建指南(上)

    本文环境,以及本文所采用数据库为 GreatSQL 8.0.32-24 Prometheus Server : 用于收集和存储时间序列数据。 Client Library : 客户端库,为需要监控的服务生成相应的 metrics 并暴露给 Prometheus server。当Prometheus server 来 pull 时,直接返回实时状态的 metrics。 Push Gateway : 主要用于短期的 jobs。

    2024年02月08日
    浏览(42)
  • 监控系统 Prometheus 的说明

    ELK Stack 日志收集和检索平台想必大家应该比较熟悉,Elasticsearch + Filebeat + Logstash + Kibana。  而 Prometheus 就相当于一整个 ELK,但是它其实并不是适合存储大量日志,也不适合长期存储(默认存储 15 天)。它的优势是查看最近的趋势数据,以及告警机制。下图是 Prometheus 架构图

    2024年02月16日
    浏览(45)
  • 【监控系统】Prometheus监控组件Node-Exporter配置实战

    这一节,我们来配置一下Node-Exporter,那么我们先来了解一下什么是Prometheus的Exporter? 任何向Prometheus提供监控样本数据的程序都可以被称为一个Exporter,它是一种用于将不同数据源的指标提供给Prometheus进行收集和监控的工具。运行在应用程序、计算机、网络设备或者其他系统

    2024年02月15日
    浏览(50)
  • 【监控系统】Prometheus监控组件Mysql-Exporter配置实战

    Mysql-Exporter主要监控Mysql数据库的稳定性、吞吐量、连接情况、缓冲池使用情况、查询性能等各项指标,是我们压测时常常需要监控的一些指标。 目前,Exporter 支持高于5.6版本的 MySQL 和高于10.1版本的 MariaDB。在 MySQL/MariaDB 低于5.6版本时,部分监控指标可能无法被采集。 OK,下

    2024年02月16日
    浏览(43)
  • Prometheus实现系统监控报警邮件

    Prometheus将数据采集和报警分成了两个模块。报警规则配置在Prometheus Servers上, 然后发送报警信息到AlertManger,然后我们的AlertManager就来管理这些报警信息,聚合报警信息过后通过email、PagerDuty、HipChat、Slack 等方式发送消息提示。本文演示通过email发送告警信息。 中文技术文档

    2024年02月14日
    浏览(40)
  • K8S结合Prometheus构建监控系统

    一、Prometheus简介 1、Prometheus基本介绍 数据模型:Prometheus 使用时间序列数据模型来存储监控数据。时间序列由一个唯一的指标名称和一组键值对标签组成,代表了某个指标在特定时间点的数值。这种数据模型非常适合度量指标的变化和趋势。 数据采集:Prometheus 支持多种数据

    2024年02月03日
    浏览(56)
  • Prometheus监控添加监控mongodb+docker+MySQL8.0+服务器系统进程监控+域名过期时间监控

    环境: 192.168.1.144  Ubuntu系统已经部署好Prometheus监控部署教程请看本人前面的教程  192.168.1.140  centos7系统已安装docker+docker-compose 1、在被监控端以docker-compose方式安装mongodb mkdir /data/mangodb/ #创建mangodb的目录 cd /data/mangodb/ #进入目录下 2,写docker-compose.yaml文件 vim docker-compose.y

    2024年02月02日
    浏览(54)
  • linux系统监控prometheus关联Grafana展示数据

    前提 寻找插件 创建数据源 输入id,点击右边load 选择数据源 查看页面

    2024年02月22日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包