云原生监控系统Prometheus:基于Prometheus构建智能化监控告警系统

news2025/1/15 6:51:07

目录

一、理论

1.Promethues简介

2.监控告警系统设计思路

3.Prometheus监控体系

4.Prometheus时间序列数据

5.Prometheus的生态组件

6.Prometheus工作原理

7.Prometheus监控内容

8.部署Prometheus

9.部署Exporters

10.部署Grafana进行展示

二、实验

1.部署Prometheus

2.部署Exporters

2.监控远程MySQL

3.部署Grafana进行展示

三、问题

1.Prometheus和Zabbix区别

2.如何防止告警信息轰炸

3.监控服务有哪4个黄金指标

4.访问prometheus服务器被监控端agent服务器状态报错

5.mysqld_exporter如何指定启动参数

四、总结


一、理论

1.Promethues简介

(1)概念

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

每个被监控的主机都可以通过专用的exporter 程序提供输出监控数据的接口,它会在目标处收集监控数据,并暴露出一个HTTP接口供Prometheus server查询,Prometheus通过基于HTTP的pull的方式来周期性的采集数据。
任何被监控的目标都需要事先纳入到监控系统中才能进行时序数据采集、存储、告警和展示,监控目标可以通过配置信息以静态形式指定,也可以让Prometheus通过服务发现的机制进行动态管理。
Prometheus 能够直接把API Server作为服务发现系统使用,进而动态发现和监控集群中的所有可被监控的对象
Prometheus 官网地址:https://prometheus.io
 
Prometheus github 地址:https://github.com/prometheus

(2)特点

多维数据模型:由度量名称和键值对标识的时间序列数据
时序数据,是在一段时间内通过重复测量(measurement)而获得的观测值的集合;将这些观测值绘制于图形之上,它会有一个数据轴和一个时间轴;

服务器指标数据、应用程序性能监控数据、网络数据等也都是时序数据;

1)内置时间序列(pime series)数据库:Prometheus;外置的远端存储通常会用:InfluxDB、openTsDB等
2)promQL一种灵活的查询语言,可以利用多维数据完成复杂查询
3)基于HTTP的pull(拉取)方式采集时间序列数据
4)同时支持PushGateway组件收集数据
5)通过服务发现或者静态配置,来发现目标服务对象
6)支持作为数据源接入Grafana

2.监控告警系统设计思路

(1)模块组成

① 数据收集模块
② 数据提取模块(prometheus-TSDB,查询语言是promQL)
③ 监控告警模块(布尔值表达式判断是否需要告警,不成立是健康状态)

(2)层次

 
第一层:数据收集层       多渠道监控数据(网络,硬件,应用,数据,物理环境)

第二层:数据展示层       数据生成曲线图展示(对时序数据的动态展示)

第三层:数据提取层       定时采集数据到监控模块

第四层:告警规则配置层   告警规则设置、告警伐值设置(定义布尔值表达式,筛选异常状态)

第五层:告警事件生成层   实时记录告警事件、形成分析图表(趋势分析、可视化)

第六层:用户展示管理层   同一用户管理、集中监控、集中维护

3.Prometheus监控体系

(1)系统层监控(需要监控的数据)

1)CPU、Load、Memory、swap、disk、I/O、process等
2)网络监控:网络设备、工作负载、网络延迟、丢包率等

(2)中间件及基础设施类监控

1)消息中间件:kafka、RocketMQ、等消息代理(redis 中间件)
2)WEB服务容器:tomcat、weblogic、apache、php、spring系列
3)数据库/缓存数据库:Mysql、Postgresql、MongoDB、es、redis

redis监控内容:

redis的服务状态
redis所在服务器的系统层监控
RDB和AOF日志监控

日志--->如果是哨兵模式--->哨兵共享集群信息,产生的日志
--->直接包含的其他节点哨兵信息及redis信息

key的数量
key被命中的数据/次数
最大连接数--->redis和系统
redis:redis-cli登录--->config get maxclients查看最大连接

(3)应用层监控

它用于衡量应用程序代码状态和性能。

监控的分类:

1)白盒监控:自省指标,等待被下载(cadvisor)
2)黑盒监控:基于探针(snmp)的监控方式,不会主动干预、影响数据

(4)业务层监控

用于衡量应用程序的价值。如电商业务的销售量,ops、dau日活、转化等。

业务接口:登入数量,注册数、订单量、搜索量和支付量。

4.Prometheus时间序列数据

(1)序列数据

时间序列数据(TimeSeries Data):按照时间顺序记录系统、设备状态变化的数据被称为时序数据。

应用场景很多,如:

1)人驾驶车辆运行中要记录的经度,纬度,速度,方向,旁边物体的距离等等。每时每刻都要将数据记录下来做分析。

2)某一个地区的各车辆的行驶轨迹数据

3)传统证券行业实时交易数据

4)实时运维监控数据等

(2)时间序列数据特点

Prometheus 有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用 3.5byte 左右空间,上百万条时间序列,30 秒间隔,保留 60 天,大概花了 200 多 G(来自官方数据)。

1)性能好:关系型数据库对于大规模数据的处理性能糟糕。NOSQL 可以比较好的处理大规模数据,让依然比不上时间序列数据库。
2)存储成本低:高效的压缩算法,节省存储空间,有效降低 IO。

(3)数据来源

Prometheus基于HTTP call (http/https请求),从配置文件中指定的网络端点(endpoint/IP:端口)上周期性获取指标数据。很多环境、被监控对象,本身是没有直接响应/处理http请求的功能,prometheus-exporter则可以在被监控端收集所需的数据,收集过来之后,还会做标准化,把这些数据转化为prometheus可识别,可使用的数据(兼容格式)。
 

(4)收集数据

1)监控概念:白盒监控、黑盒监控

2)白盒监控:自省方式,被监控端内部,可以生成指标,只要等待监控系统来采集时提供出去即可。

3)黑盒监控:对于被监控系统没有侵入性,对其没有直接‘影响",这种类似于基于探针机制进行监控(snmp协议)

prometheus支持通过三种类型的途径从目标上抓取/采集(scrape)指标数据(基于白盒监控):

1)exporter--->工作在被监控端,周期性的抓取数据并 转换为prometheus来收集,自己并不推送
2)Instrumentation--->指被监控对象内部自身有数据收集、监控的功能,只需要prometheus直接去获取
3)Pushgateway--->短周期5s-10s的数据收集

(5)常见的时间序列数据库

(6)时间序列数据库引擎排行

DB-Engines Ranking - die Rangliste der populärsten Time Series DBMS

(7)prometheus获取方式

Prometheus同其他TSDB相比有一个非常典型的特性:主动从各Target上拉取(pull)数据,非等待被监控端的推送(push)

两个获取方式各有优劣,其中,Pull模型的优势在于:

1)集中控制:有利于将配置集在Prometheus server上完成,包括指标及采取速率等;
2)Prometheus的根本目标在于收集在target上预先完成聚合的聚合型数据,而非一款由事件驱动的存储系统通过targets(标识的是具体的被监控端)
3)比如配置文件中的targets : [ ‘localhost:9090’]

5.Prometheus的生态组件

Prometheus 负责时序型指标数据的采集及存储,但数据的分析、聚合及直观展示以及告警等功能并非由Prometheus Server所负责。

(1)Prometheus server

Prometheus server:服务核心组件,采用pull方式收集监控数据,通过http协议传输。并存储时间序列数据。Prometheus server 由三个部分组成:Retrival,Storage,PromQL

1)Retrieval:负责在活跃的target 主机上抓取监控指标数据。
2)Storage:存储,主要是把采集到的数据存储到磁盘中。默认为15天(可修改)。
3)PromQL:是Prometheus提供的查询语言模块。

(2)pushgateway

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

(3)exporters

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

常用的Exporters:

1)Node-Exporter:用于收集服务器节点(例如k8s)的物理指标状态数据,如平均负载、CPU、内存、磁盘、网络等资源信息的指标数据,需要部署到所有运算节点。指标详细介绍:https://github.com/prometheus/node_exporter
2)mysqld-exporter/nginx-exporter
3)Kube-state-Metrics:为prometheus 采集k8s资源数据的exporter,通过监听APIServer 收集kubernetes集群内资源对象的状态指标数据,例如pod、deployment、service 等等。同时它也提供自己的数据,主要是资源采集个数和采集发生的异常次数统计。
4)cAdvisor:用来监控容器内部使用资源的信息,比如CPU、内存、网络I/0、磁盘I/0。
5)blackbox-exporter:监控业务容器存活性。
需要注意的是kube-state-metrics 只是简单的提供一个metrics 数据,并不会存储这些指标数据,
所以可以使用prometheus来抓取这些数据然后存储,主要关注的是业务相关的一些元数据,
比如Deployment、Pod、副本状态等;调度了多少个replicas?现在可用的有几个?
多少个Pod是running/stopped/terminated 状态?Pod 重启了多少次?有多少job在运行中。

(4)Service Discovery

Service Discovery:服务发现,用于动态发现待监控的Target,Prometheus支持多种服务发现机制:文件、DNS、Consul、Kubernetes等等。

服务发现可通过第三方提供的接口,Prometheus查询到需要监控的Target列表,然后轮询这些Target 获取监控数据。该组件目前由Prometheus Server内建支持。
 

(5)Alertmanager

Alertmanager:是一个独立的告警模块,从Prometheus server端接收到“告警通知”后,会进行去重、分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件、钉钉、企业微信等。

1)Prometheus Server 仅负责生成告警指示,具体的告警行为由另一个独立的应用程序AlertManager负责;
2)告警指示由 Prometheus Server基于用户提供的告警规则周期性计算生成,Alertmanager 接收到Prometheus Server发来的告警指示后,基于用户定义的告警路由向告警接收人发送告警信息。

(6)client Library

client Library:客户端库,目的在于为那些期望原生提供Instrumentation功能的应用程序提供便捷的开发途径,用于基于应用程序内建的测量系统。

(7)grafana

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

6.Prometheus工作原理

(1)Prometheus数据流向:

1)Prometheus server定期从配置好的jobs或者exporters中拉取metrics,或者接收来自 Pushgateway发送过来的metrics,或者从其它的Prometheus server中拉metrics。
2)Prometheus server在本地存储收集到的metrics,并运行定义好的alerts.rules,记录新的时间序列或者向Alert manager推送警报。
3)Alertmanager根据配置文件,对接收到的警报进行处理,发出告警。
4)在图形界面中,可视化采集数据。

(2)Prometheus工作模式

1)Prometheus Server 基于服务发现(Service Discovery)机制或静态配置获取要监视的目标(Target),并通过每个目标上的指标exporter来采集(Scrape)指标数据;
2)Prometheus Server 内置了一个基于文件的时间序列存储来持久存储指标数据,用户可使用PromQL接口来检索数据,也能够按需将告警需求发往A1ertmanager完成告警内容发送;
3)一些短期运行的作业的生命周期过短,难以有效地将必要的指标数据供给到Server端,它们一般会采用推送(Push)方式输出指标数据,Prometheus借助于Pushgateway 接收这些推送的数据,进而由server端进行抓取

(3)Prometheus工作流程

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

注意:告警数据采集、告警信息提取、告警通知
 
1)首先,需要采集监控数据,pro会周期性的pull或被push指标数据,数据采集的方式主要包括exporters、instrumentation、pushgateway 3种方式,前两者为pull方式获取,pushgateway借助于push方式推送给prometheus。
 
2)根据prometheus配置文件中(K8S-configmap的配置中),获取被监控端的数据之后,保存在TSDB中,我们可以借助Grafana或者告警平台来展示数据,grafana的展示是通过PromQL来获取数据。
 
3)prometheus通过rule配置来借助于PromQL来定义布尔值表达式,产生告警信息
 
4)一旦出现告警,prometheus产生告警信息,发送给alertmanager,alertmanager根据自定义的告警路由,来进行告警通知,对接第三方平台,例如告警平台、邮件、钉钉。

(4)Prometheus的局限性

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

7.Prometheus监控内容

(1)监控级别及内容

表1 监控级别及内容

级别监控内容exporter
网络

网络协议:http、dns、tcp、icmp;

网路硬件:路由器、交换机等

BlockBox Exporter;SNMP Exporter
主机资源用量node exporter
容器资源用量cadvisor
应用(包括Library)延迟、错误,QPS,内部状态代码集中集成Prometheus Client
中间件状态资源用量,以及服务状态代码集中集成Prometheus Client
编排工具集群资源用量,调度等Kubernetes Components

(2)网络监控

1)网络性能监控:主要涉及网络监测,网络实时流量监控(网络延迟、访问量、成功率)和历史数据统计、汇总和历史数据分析等功能。

2)网络***检测:主要针对内网或者外网的网络***。如DDoS***的。通过分析异常流量来确定网络***行为。

3)设备监控:主要针对数据中心内的多种网络设备进行监控。包括路由器,防火墙和交换机等硬件设备,可以通过snmp等协议收集数据。

(3)存储监控

1)存储性能监控方面:存储通常监控块的读写速率,IOPS。读写延迟,磁盘用量等;文件存储通常监控文件系统inode。读写速度、目录权限等。

2)存储系统监控方面:不同的存储系统有不同的指标,例如,对于ceph存储需要监控OSD, MON的运行状态,各种状态pg的数量以及集群IOPS等信息。

3)存储设备监控方面:对于构建在x86服务器上的存储设备,设备监控通过每个存储节点上的采集器统一收集磁盘、SSD、网卡等设备信息;存储厂商以黑盒方式提供商业存储设备,通常自带监控功能,可监控设备的运行状态,性能和容量的。

(4)服务器监控

1)CPU:涉及整个 CPU 的使用量、用户态百分比、内核态百分比,每个 CPU 的使用量、等待队列长度、I/O 等待百分比、CPU 消耗最多的进程、上下文切换次数、缓存命中率等。

2)内存:涉及内存的使用量、剩余量、内存占用最高的进程、交换分区大小、缺页异常等。

3)网络 I/O:涉及每个网卡的上行流量、下行流量、网络延迟、丢包率等。

4)磁盘 I/O:涉及硬盘的读写速率、IOPS、磁盘用量、读写延迟等。

(5)中间件监控

1)消息中间件: RabbitMQ Exporter、Kafka Exporter

2)Web 服务中间件:Apache Exporter、Nginx Exporter

3)数据库中间件:MySQL Exporter、PostgreSQL Exporter、Redis Exporter
 

8.部署Prometheus

(1)环境准备

服务器类型IP地址组件
Prometheus服务器192.168.204.18Prometheus、node_exporter
grafana服务器192.168.204.19Grafana
agent服务器192.168.204.20node_exporter

关闭安全机制

#prometheus节点
[root@prometheus ~]# systemctl stop firewalld
[root@prometheus ~]# setenforce 0
setenforce: SELinux is disabled
[root@prometheus ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

#grafana节点
[root@grafana ~]# systemctl stop firewalld
[root@grafana ~]# setenforce 0
setenforce: SELinux is disabled
[root@grafana ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config


#agent节点
[root@agent ~]# systemctl stop firewalld
[root@agent ~]# setenforce 0
setenforce: SELinux is disabled
[root@agent ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

修正地址映射

vim /etc/hosts

192.168.204.18 prometheus
192.168.204.19 grafana
192.168.204.20 agent

(2)Prometheus部署

prometheus下载地址:

https://prometheus.io/download/

上传 prometheus-2.37.0.linux-amd64.tar.gz 到 /opt 目录中,并解压

[root@prometheus ~]# cd /opt
[root@prometheus opt]# ls
cni  containerd  rh
[root@prometheus opt]# rz -E
rz waiting to receive.
[root@prometheus opt]# ls
cni  containerd  prometheus-2.37.0.linux-amd64.tar.gz  rh
[root@prometheus opt]# tar xf prometheus-2.37.0.linux-amd64.tar.gz 
[root@prometheus opt]# mv prometheus-2.37.0.linux-amd64 /usr/local/prometheus
[root@prometheus opt]# cd /usr/local/prometheus
[root@prometheus prometheus]# ls
console_libraries  consoles  LICENSE  NOTICE  prometheus  prometheus.yml  promtool

修改配置文件

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'
    # scheme defaults to 'http'.
 
    static_configs:				#静态目标配置,固定从某个target拉取数据
      - targets: ["localhost:9090"]

修改静态模板配置,固定从某个target拉取数据

 - targets: ["192.168.204.18:9090"]

配置系统启动文件,设置开机自启

Unit为服务单元,After为依赖关系,config.file为配置文件,storage.tsdb.path为数据目录,

storage.tsdb.retention为保存时间,ExecReload为重载

[root@prometheus prometheus]# vim /usr/lib/systemd/system/prometheus.service
 
[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

开启prometheus,并访问网页验证

systemctl start prometheus
systemctl enable prometheus
 
netstat -natp | grep :9090
 
浏览器访问:http://192.168.204.18:9090 ,访问到 Prometheus 的 Web UI 界面
点击页面的 Status -> Targets,如看到 Target 状态都为 UP,说明 Prometheus 能正常采集到数据
http://192.168.204.18:9090/metrics ,可以看到 Prometheus 采集到自己的指标数据

通过浏览器访问 http:// 服务器 IP:9090 就可以访问到 Prometheus 的主界面

默认只监控了本机一台,点 Status→点 Targets→可以看到只监控了本机

9.部署Exporters

(1)监控远程Linux主机(192.168.109.20)

在远程 linux 主机(被监控端 agent)上安装 node_exporter 组件。

下载地址:

https://prometheus.io/download/

上传 node_exporter-1.3.1.linux-amd64.tar.gz 到 /opt 目录中,并解压

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

配置启动文件,设置开机自启

vim /usr/lib/systemd/system/node_exporter.service

[Unit]   
Description=mysqld_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

启动node_exporter

systemctl start node_exporter
systemctl enable node_exporter
 
netstat -natp | grep :9100
 
浏览器访问:http://192.168.204.20:9100/metrics ,可以看到 Node Exporter 采集到的指标数据

 通过浏览器访问 http:// 被监控端 IP:9100/metrics 就可以查看到 node_exporter 在被监控端收集的监控信息

修改Prometheus服务器的配置文件

回到 Prometheus 服务器的配置文件里添加被监控机器的配置段:

vim /usr/local/prometheus/prometheus.yml
  - job_name: 'agent'
    static_configs:
    - targets: ['192.168.204.20:9100']

改完配置文件后,重启服务 

systemctl restart prometheus.service
systemctl status prometheus

访问prometheus服务器

回到 web 管理界面→点 Status→点 Targets→可以看到多了一台监控目标

192.168.204.18:9090

注:也可以在本机安装 node_exporter,使用上面的方式监控本机

(2)  监控远程MySQL

在被管理机 agent上安装 mysqld_exporter 组件

下载地址:

https://prometheus.io/download/

(1)   安装mariadb数据库,并授权

安装命令 yum -y install mariadb mariadb-server
安装完成MariaDB,首先启动MariaDB systemctl start mariadb
设置开机启动 systemctl enable mariadb
取消开机启动 systemctl disable mariadb

在当前数据库中增加授权

#进入数据库
mysql
 
授权IP为192.168.204.20,因为不是prometheus服务器直接来找mariadb获取数据,而是prometheus服务器找mysql_exporter,然后mysql_exporter再找mariadb.所以这个IP指的是mysql_exporter的IP.
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'192.168.204.20' IDENTIFIED BY 'exporter123' WITH MAX_USER_CONNECTIONS 3;

 
flush privileges;

(2) 下载mysqld_exporter组件 

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.0/mysqld_exporter-0.12.0.linux-amd64.tar.gz

(3)安装mysqld_exporter组件

进入目录 cd /usr/local/prometheus/
下载 wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
解压 tar xzvf mysqld_exporter-0.12.1.linux-amd64.tar.gz
修改目录名 mv mysqld_exporter-0.12.1.linux-amd64 mysqld_exporter
修改用户及组 chown -R root:root /usr/local/prometheus/mysqld_exporter/mysqld_exporter
修改权限 chmod 755 /usr/local/prometheus/mysqld_exporter/mysqld_exporter

(4)  添加mysqld_exporter为系统服务

# vim /usr/lib/systemd/system/mysqld_exporter.service
[Unit]
Description=mysqld_exporter
After=network.target
[Service]
Type=simple
User=mysql
# exporter对应授权账号,exporter123对应授权密码,localhost对应授权账号密码所在的地址
Environment=DATA_SOURCE_NAME=exporter:exporter123@(localhost:3306)/
ExecStart=/usr/local/prometheus/mysqld_exporter/mysqld_exporter --web.listen-address=0.0.0.0:9104 
  --config.my-cnf /etc/my.cnf \
  --collect.slave_status \
  --collect.slave_hosts \
  --log.level=error \
  --collect.info_schema.processlist \
  --collect.info_schema.innodb_metrics \
  --collect.info_schema.innodb_tablespaces \
  --collect.info_schema.innodb_cmp \
  --collect.info_schema.innodb_cmpmem 
Restart=on-failure
[Install]
WantedBy=multi-user.targe

(5)启动服务并监听端口

systemctl start mysqld_exporter
systemctl enable mysqld_exporter

netstat -antp | grep 9104

(6)  修改Prometheus服务器的配置文件

回到 Prometheus 服务器的配置文件里添加被监控的 mariadb 的配置段

vim /usr/local/prometheus/prometheus.yml
 35   - job_name: 'agent_mariadb'
 36     static_configs:
 37     - targets: ['192.168.204.20:9104']

改完配置文件之后,重启服务

systemctl restart prometheus.service

netstat -antp | grep 9090

(7)  访问prometheus服务器

回到 web 管理界面→点 Status→点 Targets→可以看到监控 mariadb 

192.168.204.18:9090/

10.部署Grafana进行展示

Grafana 是一个开源的度量分析和可视化工具,可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。

下载地址:

https://grafana.com/grafana/download/

(1)  下载安装Grafana

#使用yum解决依赖关系  我这边直接上传软件包到opt
yum install -y grafana-7.4.0-1.x86_64.rpm
或
rpm -ivh /opt/grafana-7.3.6-1.x86_64.rpm
 
systemctl start grafana-server
systemctl enable grafana-server
 
netstat -natp | grep :3000
 
浏览器访问:http://192.168.109.19:3000 ,默认账号和密码为 admin/admin

通过浏览器访问 http:// grafana 服务器 IP:3000 就到了登录界面,使用默认的 admin 用户,admin 密码就可以登陆了。

192.168.204.19:3000/login

(2)  配置数据源

下面把 Prometheus 服务器收集的数据做为一个数据源添加到 grafana,让 grafana 可以得到 Prometheus 的数据。

点击增加数据源

为此数据自定义一个名称

Prometheus_data

填写prometheus的IP和port

http://192.168.204.18:9090

Auth模块是公网传输数据加密与验证,为了保证安全

15s获取一次,GET方式

填完之后点击保存

点击设置,选择Data Source,可以查看到成功添加数据源

(3)导入模板

点击prometheus_data,选择Dashboards

点击仪表盘,全部导入

全部导入后,点击Manage

随便点击一个模板

192.168.204.19:3000/

(4) 为数据源做数据展示

创建Dashboard

数据源选择添加的Prometheus_data

写上查询的值,可以多个条件一起,都显示在同一张图上

(1分钟负载、5分钟负载、15分钟负载)

自定义名称,点击保存

最后在dashboard可以查看到 ,点击“agent_cpu_load”

注:有多条数据的时候,可以在查询的键值后面加个大括号,括号里的条件表示只匹配当前的监控项。

(5) 导入grafana监控面板

浏览器访问:https://grafana.com/grafana/dashboards ,在页面中搜索 node exporter ,选择适合的面板,点击 Copy ID 或者 Download JSON
 
在 grafana 页面中,+ Create -> Import ,输入面板 ID 号或者上传 JSON 文件,点击 Load,即可导入监控面板

(6) Grafana 图形显示 MySQL 监控数据

在 grafana 上修改配置文件,并下载安装 mysql 监控的 dashboard(包含相关 json 文件,这些 json 文件可以看作是开发人员开发的一个监控模板)。

vim /etc/grafana/grafana.ini 

[dashboards.json]
enabled = true
path = /var/lib/grafana/dashboards
cd /var/lib/grafana/

#克隆
yum install -y git
git clone git@github.com:percona/grafana-dashboards.git

cp -r grafana-dashboards/dashboards/ /var/lib/grafana/

#重启grafana
systemctl restart grafana-server.service

在 grafana 上修改配置文件,并下载安装 mysql 监控的 dashboard(包含相关 json 文件,这些 json 文件可以看作是开发人员开发的一个监控模板)。

点 import 导入后,报 prometheus 数据源找不到,因为这些 json 文件里默认要找的就是叫 Prometheus 的数据源,但我们前面建立的数据源却是叫 prometheus_data。

那么请自行把原来的 prometheus_data 源改名为 Prometheus 即可(注意:第一个字母 P 是大写)。然后再回去刷新一下,就有数据了。

(7) Grafana+onealert报警

Prometheus 报警需要使用 alertmanager 这个组件,而且报警规则需要手动编写(对运维来说不友好)。所以我这里选用 grafana+onealert 报警。注意:实现报警前把所有机器时间同步再检查一遍。

登陆http://www.onealert.com/→注册帐户→登入后台管理
 

(8) 在Grafana中配置Webhook URL

1、在Grafana中创建Notification channel,选择类型为Webhook;
2、推荐选中Send on all alerts和Include image,Cloud Alert体验更佳;
3、将第一步中生成的Webhook URL填入Webhook settings Url;
URL格式:
http://api.aiops.com/alert/api/event/grafana/v1/897dcd4c804140098a171d680bf6e26a/ (保存当前应用,即可获取完整webhook地址信息)
4、Http Method选择POST;
5、Send Test&Save;

 在grafana增加通知通道

增加通道

192.168.204.19:3000/
Name: onealert

Type: webhook

Url: (onelert那里产生)

(9) 测试CPU负载告警

现在可以去设置一个报警来测试了(这里用前面加的 cpu 负载监控来做测试)

保存后就可以测试了,如果 agent1上的 cpu 负载还没有到 0.3,你可以试试 0.1,或者运行一些程序把 agent1负载调大。

最终的邮件报警效果

二、实验

1.部署Prometheus

(1)环境准备

服务器类型IP地址组件
Prometheus服务器192.168.204.18Prometheus、node_exporter
grafana服务器192.168.204.19Grafana
agent服务器192.168.204.20node_exporter

修改主机名:

修改地址映射:

关闭安全机制

(2)Prometheus部署

prometheus下载地址:

https://prometheus.io/download/

上传 prometheus-2.37.0.linux-amd64.tar.gz 到 /opt 目录中,并解压

修改配置文件

修改静态模板配置,固定从某个target拉取数据

配置系统启动文件,设置开机自启

Unit为服务单元,After为依赖关系,config.file为配置文件,storage.tsdb.path为数据目录,

storage.tsdb.retention为保存时间,ExecReload为重载

开启prometheus,并访问网页验证

通过浏览器访问 http:// 服务器 IP:9090 就可以访问到 Prometheus 的主界面

默认只监控了本机一台,点 Status→点 Targets→可以看到只监控了本机

通过 http:// 服务器 IP:9090/metrics 可以查看到监控的数据:

2.部署Exporters

(1)监控远程Linux主机(192.168.204.20)

在远程 linux 主机(被监控端 agent)上安装 node_exporter 组件。

下载地址:

https://prometheus.io/download/

上传 node_exporter-1.3.1.linux-amd64.tar.gz 到 /opt 目录中,并解压

配置启动文件,设置开机自启

启动node_exporter

 通过浏览器访问 http:// 被监控端 IP:9100/metrics 就可以查看到 node_exporter 在被监控端收集的监控信息

修改Prometheus服务器的配置文件

回到 Prometheus 服务器的配置文件里添加被监控机器的配置段

在主配置文件后添加这三行,不能加在上面,否则重启会报错

取一个job名称来代表被监控的机器

targets这里改成被监控机器的IP,后面端口接9100

改完配置文件后,重启服务 

访问prometheus服务器

回到 web 管理界面→点 Status→点 Targets→可以看到多了一台监控目标

注:也可以在本机安装 node_exporter,使用上面的方式监控本机

(2)监控远程Linux主机(192.168.204.18)

也可以在远程 linux 主机(监控端 prometheus)上安装 node_exporter 组件,即监控本机。

下载地址:

https://prometheus.io/download/

上传 node_exporter-1.3.1.linux-amd64.tar.gz 到 /opt 目录中,并解压

配置启动文件,设置开机自启

启动node_exporter

浏览器访问,可以看到 Node Exporter 采集到的指标数据

 通过浏览器访问 http:// 被监控端 IP:9100/metrics 就可以查看到 node_exporter 在被监控端收集的监控信息

修改Prometheus服务器的配置文件

回到 Prometheus 服务器的配置文件里添加被监控机器的配置段

在主配置文件后添加这三行,不能加在上面,否则重启会报错

取一个job名称来代表被监控的机器

targets这里改成被监控机器的IP,后面端口接9100

改完配置文件后,重启服务 

访问prometheus服务器

回到 web 管理界面→点 Status→点 Targets→可以看到多了一台监控目标

2.监控远程MySQL

在被管理机 agent上安装 mysqld_exporter 组件

下载地址:

https://prometheus.io/download/

 (1)   安装mariadb数据库,并授权

在当前数据库中增加授权

(2) 下载mysqld_exporter组件 

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.0/mysqld_exporter-0.12.0.linux-amd64.tar.gz

(3)安装mysqld_exporter组件

(4)  添加mysqld_exporter为系统服务

(5)启动服务并监听端口

(6)  修改Prometheus服务器的配置文件

回到 Prometheus 服务器的配置文件里添加被监控的 mariadb 的配置段

改完配置文件之后,重启服务

(7)  访问prometheus服务器

回到 web 管理界面→点 Status→点 Targets→可以看到监控 mariadb 

3.部署Grafana进行展示

Grafana 是一个开源的度量分析和可视化工具,可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。

下载地址:

https://grafana.com/grafana/download/

(1)  下载安装Grafana

通过浏览器访问 http:// grafana 服务器 IP:3000 就到了登录界面,使用默认的 admin 用户,admin 密码就可以登陆了。

(2)  配置数据源

下面把 Prometheus 服务器收集的数据做为一个数据源添加到 grafana,让 grafana 可以得到 Prometheus 的数据。

点击增加数据源

为此数据自定义一个名称

填写prometheus的IP和port

http://192.168.204.18:9090

Auth模块是公网传输数据加密与验证,为了保证安全

15s获取一次,GET方式

填完之后点击保存

点击设置,选择Data Source,可以查看到成功添加数据源

(3)导入模板

点击prometheus_data,选择Dashboards

点击仪表盘,全部导入

全部导入后,点击Manage

随便点击一个模板

192.168.204.19:3000/

(4) 为数据源做数据展示

创建Dashboard

数据源选择添加的Prometheus_data

写上查询的值,可以多个条件一起,都显示在同一张图上

(1分钟负载、5分钟负载、15分钟负载)

自定义名称,点击保存

最后在dashboard可以查看到 ,点击“agent_cpu_load”

注:有多条数据的时候,可以在查询的键值后面加个大括号,括号里的条件表示只匹配当前的监控项。

(5) 导入grafana监控面板

浏览器访问:https://grafana.com/grafana/dashboards ,在页面中搜索 node exporter ,选择适合的面板,点击 Copy ID 或者 Download JSON
 
在 grafana 页面中,+ Create -> Import ,输入面板 ID 号或者上传 JSON 文件,点击 Load,即可导入监控面板

在页面中搜索 node exporter

选择适合的面板,点击 Copy ID 或者 Download JSON

在 grafana 页面中,+ Create -> Import

输入面板 ID 号,点击 Load

选择数据源并点击导入,即可导入监控面板

此时就可以监控到这台机子的信息了(192.168.204.20)

也可以切换查询(192.168.204.18)

点击编写

可以看到实际上都是通过PromQL语句来查询的

(6) Grafana 图形显示 MySQL 监控数据

在 grafana 上修改配置文件,并下载安装 mysql 监控的 dashboard(包含相关 json 文件,这些 json 文件可以看作是开发人员开发的一个监控模板)。

在 grafana 上修改配置文件,并下载安装 mysql 监控的 dashboard(包含相关 json 文件,这些 json 文件可以看作是开发人员开发的一个监控模板)。

点 import 导入后,报 prometheus 数据源找不到,因为这些 json 文件里默认要找的就是叫 Prometheus 的数据源,但我们前面建立的数据源却是叫 prometheus_data。

那么请自行把原来的 prometheus_data 源改名为Metrics 即可(注意:第一个字母 M 是大写)。然后再回去刷新一下,就有数据了。

修改前:

修改后:

保存提交

(7) Grafana+onealert报警

Prometheus 报警需要使用 alertmanager 这个组件,而且报警规则需要手动编写(对运维来说不友好)。所以我这里选用 grafana+onealert 报警。注意:实现报警前把所有机器时间同步再检查一遍。

登陆https://caweb.aiops.com/→注册帐户→登入后台管理

下拉选择Grafana,点击进行配置

自定义一个名称

保存之后获得key

(8) 在Grafana中配置Webhook URL

在Grafana中创建Notification channel,选择类型为Webhook

推荐选中Send on all alerts和Include image,Cloud Alert体验更佳

将第一步中生成的Webhook URL填入Webhook settings Url:

Http Method选择POST

 Send Test&Save

可以先“Test”测试一下报警媒介是否ok,然后再点击保存

测试成功(自动去重)

保存,创建成功

(9) 测试CPU负载告警

现在可以去设置一个报警来测试了(这里用前面加的 cpu 负载监控来做测试)

保存后就可以测试了,如果 agent1上的 cpu 负载还没有到 0.3,你可以试试 0.1,或者运行一些程序把 agent1负载调大。

最终的邮件报警效果

三、问题

1.Prometheus和Zabbix区别

(1)监控的维度

①监控的广度

②监控的深度

③ 监控选型

(2)区别

和Zabbix类似,Prometheus也是一个近年比较火的开源监控框架,和Zabbix不同之处在于Prometheus相对更灵活点,模块间比较解耦,比如告警模块、代理模块等等都可以选择性配置。服务端和客户端都是开箱即用,不需要进行安装。zabbix则是一套安装把所有东西都弄好,很庞大也很繁杂。
zabbix的客户端agent可以比较方便的通过脚本来读取机器内数据库、日志等文件来做上报。而Prometheus的上报客户端则分为不同语言的SDK和不同用途的exporter两种,比如如果你要监控机器状态、mysql性能等,有大量已经成熟的exporter来直接开箱使用,通过http通信来对服务端提供信息上报(server去pull信息);而如果你想要监控自己的业务状态,那么针对各种语言都有官方或其他人写好的sdk供你使用,都比较方便,不需要先把数据存入数据库或日志再供zabbix-agent采集。
zabbix的客户端更多是只做上报的事情,push模式。而Prometheus则是客户端本地也会存储监控数据,服务端定时来拉取想要的数据。
界面来说zabbix比较陈旧,而prometheus比较新且非常简洁,简洁到只能算一个测试和配置平台。要想获得良好的监控体验,搭配Grafana还是二者的必走之路。

2.如何防止告警信息轰炸

(1)解决方法

1)alertmanagr: prometheus可以生成告警信息,但是不能直接提供告警,需要使用一个外置的组件alertmanager来进行告警,emailetctif优势在于,收敛、支持静默、去重、可以防止告警信息的轰炸

2)把这条告警规则中的支持静默开启,让它必须,配置文件里直接改alertmanager改一个单词

3.监控服务有哪4个黄金指标

(1)指标

4个黄金指标可以在服务级别帮助衡量终端用户体验、服务中断、业务影响等层面的问题。主要关注与以下四种类型的指标:延迟,通讯量,错误以及饱和度:

(2)延迟:服务请求所需时间

记录用户所有请求所需的时间,重点是要区分成功请求的延迟时间和失败请求的延迟时间。 例如在数据库或者其他关键祸端服务异常触发HTTP 500的情况下,用户也可能会很快得到请求失败的响应内容,如果不加区分计算这些请求的延迟,可能导致计算结果与实际结果产生巨大的差异。除此以外,在微服务中通常提倡“快速失败”,开发人员需要特别注意这些延迟较大的错误,因为这些缓慢的错误会明显影响系统的性能,因此追踪这些错误的延迟也是非常重要的。

(3)通讯量:监控当前系统的流量,用于衡量服务的容量需求

流量对于不同类型的系统而言可能代表不同的含义。例如,在HTTP REST API中, 流量通常是每秒HTTP请求数;

(4)错误:监控当前系统所有发生的错误请求,衡量当前系统错误发生的速率

对于失败而言有些是显式的(比如, HTTP 500错误),而有些是隐式(比如,HTTP响应200,但实际业务流程依然是失败的)。
对于一些显式的错误如HTTP 500可以通过在负载均衡器(如Nginx)上进行捕获,而对于一些系统内部的异常,则可能需要直接从服务中添加钩子统计并进行获取。

(5)饱和度:衡量当前服务的饱和度

主要强调最能影响服务状态的受限制的资源。 例如,如果系统主要受内存影响,那就主要关注系统的内存状态,如果系统主要受限与磁盘I/O,那就主要观测磁盘I/O的状态。因为通常情况下,当这些资源达到饱和后,服务的性能会明显下降。同时还可以利用饱和度对系统做出预测,比如,“磁盘是否可能在4个小时候就满了”。

4.访问prometheus服务器被监控端agent服务器状态报错

(1)  报错

(2)原因分析

配置文件错误

(3)解决方法

修改配置文件被监控机器的IP

修改前:

修改后:

重启

成功:

5.mysqld_exporter如何指定启动参数

 (1 ) 参数

mysqld_exporter常用启动参数:

1) exporter版本>0.10.0时:
--collect.auto_increment.columns
--no-collect.auto_increment.columns

2)exporter版本<=0.10.0时:
-collect.auto_increment.columns
-collect.auto_increment.columns=[true|false]

通过以下参数控制收集数据:

通用启动参数:

(2)SSL配置

如果MySQL服务器支持SSL,则需要指定一个CA信任库来验证服务器的信任链,并为SSL连接的客户端指定SSL密钥对。
要将mysqld_exporter配置为使用自定义CA证书,请将以下内容添加到.my.cnf的配置文件中:

ssl-ca=/path/to/ca/file

要指定客户端SSL密钥对,请将以下内容添加到cnf中。

ssl-key=/path/to/ssl/client/key
ssl-cert=/path/to/ssl/client/cert

仅在mysql cnf文件中支持自定义SSL配置,如果在环境变量DATA_SOURCE_NAME中设置mysql服务器的数据源名称,则不支持自定义SSL配置。

四、总结

Prometheus收集k8s/服务的三种方式

1)Exporters(指标暴露器):收集节点的信息、将数据格式化或转化为promtheus可识别的http这种转化方式/镜像拉取方式
2)Instrumentation (应用内置的指标暴露器): 收集有内置指标暴露器的信息
3)Pushgateway : 收集短周期的数据

报警不成功的可能原因:
 

各服务器之间时间不同步,这样时序数据会出问题,也会造成报警出问题

必须写通知内容,留空内容是不会发报警的

修改完报警配置后,记得要点右上角的保存

保存配置后,需要由 OK 状态变为 alerting 状态才会报警(也就是说,你配置保存后,就已经是 alerting 状态是不会报警的)

grafana 与 onealert 通信有问题

各组件默认端口:

node 默认端口:9100
mysql默认端口:9104
redis 默认端口:9121
process默认端口:9256
alertmanager默认端口:9093

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1065332.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电源升压模块dc/dc直流低压升高压隔离电压变换器5v12v24v48v转50v70v80v100v110v200v250v300v500v600v微功率

特点 效率高达 80%以上1*1英寸标准封装电源正负双输出稳压输出工作温度: -40℃~85℃阻燃封装&#xff0c;满足UL94-V0 要求温度特性好可直接焊在PCB 上 应用 HRA 0.2~8W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&#xff1a;4.5~9V、9~18V、及18~36V、36…

工信部教考中心:什么是《研发效能(DevOps)工程师》认证,拿到证书之后有什么作用!(下篇)丨IDCF

拿到证书有什么用&#xff1f; 提高职业竞争力&#xff1a;通过学习认证培训课程可以提升专业技能&#xff0c;了解项目或产品研发全生命周期的核心原则&#xff0c;掌握端到端的研发效能提升方法与实践&#xff0c;包括组织与协作、产品设计与运营、开发与交付、测试与安全、…

220V转18V非隔离降压芯片:满足多种应用需求

220V转18V非隔离降压芯片&#xff1a;满足多种应用需求 现如今&#xff0c;随着无线通信技术的迅猛发展&#xff0c;越来越多的设备需要稳定的低压电源供应。为了满足这一需求&#xff0c;AH8696-220V转18V非隔离降压芯片应运而生。该芯片具备许多令人瞩目的特性&#xff0c;能…

『pnpm』多项目环境迁移指南

前言 博主在开发前端网站的时候&#xff0c;发现随着开发的项目的逐渐增多&#xff0c;安装的依赖包越来越臃肿&#xff0c;依赖包的安装速度也是非常越来越慢&#xff0c;多项目开发管理也是比较麻烦。之前我就了解过 pnpm&#xff0c;但是当时担心更换包管理环境可能会出现的…

探索JavaScript事件流:DOM中的神奇旅程

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 引言 1. 事件流的发展流程 1.1 传统的DOM0级事件 1.2 DOM2级事件和addEventListener方法 1.3 W3C DOM3级…

go语言和redis数据库

1通过go语言和redis数据库进行交互 安装命令 go get github.com/gomodule/redigo/redis安装完成后&#xff0c;回到家目录创建test.go,把下面代码复制到test.go里面&#xff0c;编译执行test.go&#xff0c;之后在redis中查找到键c1值为hello&#xff0c;说明安装成功 packa…

SpringBoot整合POI实现Excel文件读写操作

1.环境准备 1、导入sql脚本&#xff1a; create database if not exists springboot default charset utf8mb4;use springboot;create table if not exists user (id bigint(20) primary key auto_increment comment 主键id,username varchar(255) not null comment 用…

你想去外包or外派岗?

外包/外派的本质 在H银行的经理口中&#xff0c;外包/外派员工们都被称为contractor。 为什么很多大公司招外包呢&#xff1f;原因有以下几个&#xff1a; 经济和技术都在发展&#xff0c;没有人能预测未来。很多新创公司&#xff0c;短期员工需求量更大&#xff0c;不跟自己…

地图资源下载工具数据在线、离线查询及数据激活功能

哨兵相关产品&#xff0c;工具提供了表示系统是否为归档离线的信息&#xff01;您可以利用下载[定时重试]功能激活并下载哨兵相关离线产品数据&#xff01;

LVS负载均衡集群和LVS负载均衡—DR模式

一.LVS集群基本介绍 1.1.群集的含义 Cluster&#xff0c;集群、群集 由多台主机构成&#xff0c;但对外只表现为一个整体&#xff0c;只提供一个访问入口&#xff08;域名或IP地址&#xff09;&#xff0c;相当于一台大型计算机。 1.2.群集的作用 对于企业服务的的性能提升…

Echarts 教程三

Echarts 教程三 经验总结折线图设置网格线在图表x/y轴添加描述文字饼图中间添加描述echarts中y轴坐标不为小数自定义tooltip 样式new echarts.graphic.LinearGradient 使用内置渐变器图例过多的时候&#xff0c;显示分页横向柱状图显示数字使用formatter让X轴文字竖直显示&…

K8S:配置资源管理 Secret和configMap

文章目录 一.Secret1.Secret概念2.Secret的类型①kubernetes.io/service-account-token②opaque③kubernetes.io/dockerconfigjson④kubernetes.io/tls 3.secret的三种参数①tls②docker-registry③generic 4.Pod 的3种方式来使用secret5.Secret创建及案例&#xff08;1&#x…

12.1 使用键盘鼠标监控钩子

本节将介绍如何使用Windows API中的SetWindowsHookEx和RegisterHotKey函数来实现键盘鼠标的监控。这些函数可以用来设置全局钩子&#xff0c;通过对特定热键挂钩实现监控的效果&#xff0c;两者的区别在于SetWindowsHookEx函数可以对所有线程进行监控&#xff0c;包括其他进程中…

【Spring笔记05】Spring的自动装配

这篇文章&#xff0c;主要介绍的内容是Spring的自动装配、五种自动装配的方式。 目录 一、自动装配 1.1、什么是自动装配 1.2、五种自动装配方式 &#xff08;1&#xff09;no &#xff08;2&#xff09;default &#xff08;3&#xff09;byType &#xff08;4&#xf…

e为底数的指数运算e^x,math.exp(x)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 e为底数的指数运算e^x math.exp(x) 选择题 关于以下代码的说法中正确的是&#xff1f; import math print("【执行】math.exp(0)") print(math.exp(0)) print("【执行】math.ex…

网络基础知识面试题1

VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)

js 事件参考

事件参考 事件介绍 触发事件是为了通知代码可能影响代码执行的“有趣变化”。这些可能来自用户交互&#xff0c;例如使用鼠标或调整窗口大小&#xff0c;底层环境状态的变化(例如&#xff0c;低电量或来自操作系统的媒体事件)以及其他原因。 每个事件都由一个基于Event接口的…

使用Plotly模拟远古博弈游戏_掷骰子

不乏投资大师、量化基金经理从着迷博弈游戏开始迈出步伐...... 开始学习使用python包Plotly模拟掷骰子。 安装Plotly 终端输入命令&#xff1a;python3 -m pip install --user plotly 创建骰子类 掷骰子 分析结果 绘制直方图 程序都正常运行&#xff0c;直方图也显示无误&…

老胡的周刊(第110期)

老胡的信息周刊[1]&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 &#x1f3af; 项目 bitwarden[2] 一个开源&#xff0c;免费&…

代码随想录算法训练营第23期day14|二叉树层序遍历、226.翻转二叉树、101. 对称二叉树

目录 一、二叉树层序遍历 非递归法 递归法 相关题目&#xff08;10题&#xff09; 二、&#xff08;leetcode 226&#xff09;翻转二叉树 递归法 层序遍历 深度优先遍历 1&#xff09;非统一写法——前序遍历 2&#xff09; 统一写法——前序遍历 三、&#xff08;le…