网站做下载功能,网站短时间怎么做权重,WordPress判断设备,中小型企业网站优化推广一、Prometheus 的优点
1、非常少的外部依赖#xff0c;安装使用超简单#xff1b;
2、已经有非常多的系统集成 例如#xff1a;docker HAProxy Nginx JMX等等#xff1b;
3、服务自动化发现#xff1b;
4、直接集成到代码#xff1b;
5、设计思想是按照分布式、微服…一、Prometheus 的优点
1、非常少的外部依赖安装使用超简单
2、已经有非常多的系统集成 例如docker HAProxy Nginx JMX等等
3、服务自动化发现
4、直接集成到代码
5、设计思想是按照分布式、微服务架构来实现的
6、多维数据模型由度量名称和键值对标识的时间序列数据
7、支持多种exporter采集数据
8、PromQL一种灵活的查询语言可以利用多维数据完成复杂的查询
9、不依赖分布式存储单个服务器节点可直接工作不需要安装数据库直接使用即可内置集成了数据库不需要重新的部署
10、基于HTTP的pull方式采集时间序列数据
11、推送时间序列数据通过PushGateway组件支持目标主机上报数据到PushGateway普罗米修斯从PushGateway拉取数据这个是可以跨网段的
12、通过服务发现或静态配置发现目标
13、多种图形模式及仪表盘支持grafana
14、高效的存储每个采集数据占用3.5bytes左右300万的时间序列30s的时间间隔保留60天消耗磁盘大约200G
15、做高可用对数据进行异地备份。联邦集群部署多套普罗米修斯每套普罗米修斯可以在不同的机房然后将这些普罗米修斯汇总到一个普罗米修斯那么就可以将各个地方的数据整体收集上来了。
二、Prometheus 的组件与架构 Prometheus生态系统由多个组件组成其中许多组件是可选的
1、主要的Prometheus server用于存储时间序列数据。
2、用于检测应用程序代码的客户端库。
3、用于支持short-lived工作的推送网关(push gateway)。
4、针对HAProxyStatsDGraphite等服务的exporters。
5、一个alertmanager处理警报管理器。
6、各种支持工具。
大多数Prometheus组件都是用Go编写的因此很容易构建和部署为静态二进制文件。
三、prometheus的组件及其作用
1Prometheus Server收集指标和存储时间序列数据并提供查询接口采集存储查询
2ClientLibrary客户端库
3Push Gateway短期存储指标数据。主要用于临时性的任务各个目标主机可以上报数据到pushgateway,然后prometheus server统一从pushgateway拉取数据
4Exporters采集已有的第三方服务监控指标并暴露metrics类似于zabbix agent但是exporter有很多种针对不同的监控指标
5Alertmanager从prometheus server端收到alters之后会进行去重分组并且路由到接收方发出报警常见的接收方式有电子邮件微信钉钉
6 Web UI简单的Web控制台
普罗米修斯服务端是内置了TSDB的数据库是存储在本地的文件系统当中。存储了采集被监控端数据指标。获取指标有两种方式1一种直接是从pushgateway这里获取被监控指标这是一个独立的组件主要完成短周期任务暴露的指标比如定时任务。短周期任务不是每分钟都有的指标可能在运行任务的时候才会产生指标。所以可以将临时的指标汇总到pushgateway然后有pushgateway统一的暴露给服务端去采集
7另外一种就是主要使用持久性的应用比如nginxmysql还要微服务jar包这些都属于持久性运行任务的
使用这种任务的监控就是采用exporter方式了。会配置exporter这样一个组件主要是用来采集指标暴露给服务端。
Prometheus 根据配置的作业直接从数据源pull拉取或者通过中间推送网关(push gateway),获取度量值Metrics。它在本地存储所有获取的样本并在此数据上运行规则以从现有数据聚合和记录新的时间序列或者生成警报。Grafana或其他API使用者可用于可视化收集的数据。
服务端采集好之后就会存储在tsdb数据库当中可以通过其ui去查看因为其通过了http服务就可以访问其ui了。在ui上可以通过promql完成数据的查询。export---prometheus(TSDB)----promsql
告警是由altermanager提供的在普罗米修斯这里定义告警规则普罗米修斯这里会周期的评估当前采集的指标是否触发了告警规则如果触发了会将事件推送给altermanger。altermanger会根据自己相关的逻辑处理后发给接收人提供email
普罗米修斯实现了服务的发现也就是可以自动的找到被监控端这个需要在普罗米修斯的配置文件里面去配置。有了服务发现就不要一个一个的去配置了让被监控端自动纳入监控。
普罗米修斯从目标主机拉取数据的时候有两种方式一种是静态的也就是我们部署exporter静态的采集指标也可以配置服务发现自动的发现指标数据。通过服务发现和exporter采集到的数据的方式都是采用了默认的pull方式拉取指标的也可以使用pushgateway上报到prometheus当中。
四、监控指标数据模型
数据模型
1Prometheus将所有数据存储为时间序列存储的时候都会记录时间并且存储到时序的数据库里面也就是内置的TSDB
2具有相同度量名称以及标签属于同一个指标指标名称是一样但是标签是不一样的
3每个时间序列都由度量标准名称和一组键值对称为标签唯一标识
通过标签查询指定指标。
指标格式 指标名称加上多个标签
metric name{label namelabel value,...}
在配置被监控端这里要配置监控谁在配置被监控端必须要暴露指标出来这种指标以https的方式给暴露出来暴露出来之后在配置文件当中配置被监控端最后就会被普罗米修斯给采集到如果以上正确配置在普罗米修斯的图形界面targets可以看到被监控端也可以通过指标名称查看采集的数据了。这个就相当于数据库可以提供promql来查询数据并且通过图表绘制出来
五、实验
1、Prometheus监控安装部署1、环境及软件工具准备
1基础环境准备两台主机规划信息如下 2关闭selinux
vi编辑 /etc/selinux/config 文件修改SELINUX的值为disabled
#注意修改完毕之后需要重启linux服务
SELINUXdisabled
3关闭防火墙。
# 1 关闭firewalld服务
systemctl stop firewalld
systemctl disable firewalld
# 2 关闭iptables服务
systemctl stop iptables
systemctl disable iptables
4prometheus官网下载 通过以下链接下载最新版本
https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
5node_exporter下载地址 可以从prometheus官网下载 通过以下链接下载最新版本
https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
6grafana官网下载 :
可以从prometheus官网下载
这里下载最新版本 https://dl.grafana.com/enterprise/release/grafana-enterprise-10.0.2-1.x86_64.rpm
2、prometheus安装
1将下载的prometheus安装包上传到监控及其/opt目录下
[rootmaster opt]# ls -lh
总用量 87M
-rw-r--r--. 1 root root 87M 7月 19 17:21 prometheus-2.45.0.linux-amd64.tar.gz
[rootmaster opt]#
2解压安装prometheus
[rootmaster opt]# tar -xzvf prometheus-2.45.0.linux-amd64.tar.gz
[rootmaster opt]# mv prometheus-2.45.0.linux-amd64 prometheus
[rootmaster opt]# ls -lh
总用量 87M
drwxr-xr-x. 4 1001 123 132 6月 23 23:45 prometheus
-rw-r--r--. 1 root root 87M 7月 19 17:21 prometheus-2.45.0.linux-amd64.tar.gz
[rootmaster opt]#
3进入到 /opt/prometheus 目录启动prometheus
复制[rootmaster opt]# cd prometheus
[rootmaster prometheus]# ./prometheus
ts2023-07-19T09:32:03.885Z callermain.go:534 levelinfo msgNo time or size retention was set so using the default time retention duration15d
ts2023-07-19T09:32:03.886Z callermain.go:578 levelinfo msgStarting Prometheus Server modeserver version(version2.45.0, branchHEAD, revision8ef767e396bf8445f009f945b0162fd71827f445)
ts2023-07-19T09:32:03.887Z callermain.go:583 levelinfo build_context(gogo1.20.5, platformlinux/amd64, userroot920118f645b7, date20230623-1549, tagsnetgo,builtinassets,stringlabels)
ts2023-07-19T09:32:03.887Z callermain.go:584 levelinfo host_details(Linux 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 2332 UTC 2018 x86_64 master (none))
ts2023-07-19T09:32:03.887Z callermain.go:585 levelinfo fd_limits(soft4096, hard4096)
ts2023-07-19T09:32:03.887Z callermain.go:586 levelinfo vm_limits(softunlimited, hardunlimited)
ts2023-07-19T09:32:03.893Z callerweb.go:562 levelinfo componentweb msgStart listening for connections address0.0.0.0:9090
ts2023-07-19T09:32:03.896Z callermain.go:1019 levelinfo msgStarting TSDB ...
ts2023-07-19T09:32:03.901Z callertls_config.go:274 levelinfo componentweb msgListening on address[::]:9090
ts2023-07-19T09:32:03.901Z callertls_config.go:277 levelinfo componentweb msgTLS is disabled. http2false address[::]:9090
ts2023-07-19T09:32:03.913Z callerhead.go:595 levelinfo componenttsdb msgReplaying on-disk memory mappable chunks if any
ts2023-07-19T09:32:03.913Z callerhead.go:676 levelinfo componenttsdb msgOn-disk memory mappable chunks replay completed duration15.4µs
ts2023-07-19T09:32:03.913Z callerhead.go:684 levelinfo componenttsdb msgReplaying WAL, this may take a while
ts2023-07-19T09:32:03.914Z callerhead.go:755 levelinfo componenttsdb msgWAL segment loaded segment0 maxSegment0
ts2023-07-19T09:32:03.914Z callerhead.go:792 levelinfo componenttsdb msgWAL replay completed checkpoint_replay_duration41.9µs wal_replay_duration1.1234ms wbl_replay_duration11.2µs total_replay_duration1.3374ms
ts2023-07-19T09:32:03.916Z callermain.go:1040 levelinfo fs_typeXFS_SUPER_MAGIC
ts2023-07-19T09:32:03.916Z callermain.go:1043 levelinfo msgTSDB started
ts2023-07-19T09:32:03.916Z callermain.go:1224 levelinfo msgLoading configuration file filenameprometheus.yml
ts2023-07-19T09:32:03.928Z callermain.go:1261 levelinfo msgCompleted loading of configuration file filenameprometheus.yml totalDuration11.5929ms db_storage15.8µs remote_storage19.2µs web_handler10.7µs query_engine14µs scrape1.0045ms scrape_sd52.4µs notify42.7µs notify_sd29.6µs rules11.8µs tracing32.6µs
ts2023-07-19T09:32:03.928Z callermain.go:1004 levelinfo msgServer is ready to receive web requests.
ts2023-07-19T09:32:03.928Z callermanager.go:995 levelinfo componentrule manager msgStarting rule manager...
4待启动完成后用以下地址直接无密码登录
http://192.168.20.231:9090/
如下图所示 5为prometheus服务创建service并设置开机自动启动
vim /usr/lib/systemd/system/prometheus.service
编辑如下内容大家根据自己实际的安装目录进行编辑
[rootmaster ~]# cat /usr/lib/systemd/system/prometheus.service
[Unit]
Descriptionprometheus
Documentationhttps://prometheus.io/
Afternetwork.target
[Service]
Typesimple
Userroot
Grouproot
ExecStart/opt/prometheus/prometheus --config.file/opt/prometheus/prometheus.yml
Restarton-failure
[Install]
WantedBymulti-user.target
[rootmaster ~]#
使service生效并且设置开机自启动
systemctl daemon-reload
systemctl enable prometheus
6reboot重启系统查看服务状态是正常的
[rootmaster ~]# systemctl status prometheus
● prometheus.service - prometheusLoaded: loaded (/usr/lib/systemd/system/prometheus.service; enabled; vendor preset: disabled)Active: active (running) since 三 2023-07-19 0933 CST; 43s agoDocs: https://prometheus.io/Main PID: 5976 (prometheus)CGroup: /system.slice/prometheus.service└─5976 /opt/prometheus/prometheus --config.file/opt/prometheus/prometheus.yml7月 19 0934 master prometheus[5976]: ts2023-07-19T0134.433Z callerhead.go:676 levelinfo componenttsdb msgOn-disk memory mappable chunks replay completed duration55.101μs
7月 19 0934 master prometheus[5976]: ts2023-07-19T0134.433Z callerhead.go:684 levelinfo componenttsdb msgReplaying WAL, this may take a while
7月 19 0934 master prometheus[5976]: ts2023-07-19T0134.437Z callerhead.go:755 levelinfo componenttsdb msgWAL segment loaded segment0 maxSegment0
7月 19 0934 master prometheus[5976]: ts2023-07-19T0134.437Z callerhead.go:792 levelinfo componenttsdb msgWAL replay completed checkpoint_replay_duration1.016…ion3.831257ms
7月 19 0934 master prometheus[5976]: ts2023-07-19T0134.439Z callermain.go:1040 levelinfo fs_typeXFS_SUPER_MAGIC
7月 19 0934 master prometheus[5976]: ts2023-07-19T0134.439Z callermain.go:1043 levelinfo msgTSDB started
7月 19 0934 master prometheus[5976]: ts2023-07-19T0134.439Z callermain.go:1224 levelinfo msgLoading configuration file filename/opt/prometheus/prometheus.yml
7月 19 0934 master prometheus[5976]: ts2023-07-19T0134.444Z callermain.go:1261 levelinfo msgCompleted loading of configuration file filename/opt/prometheus/prometheus.yml…μs
7月 19 0934 master prometheus[5976]: ts2023-07-19T0134.444Z callermain.go:1004 levelinfo msgServer is ready to receive web requests.
7月 19 0934 master prometheus[5976]: ts2023-07-19T0134.444Z callermanager.go:995 levelinfo componentrule manager msgStarting rule manager...
Hint: Some lines were ellipsized, use -l to show in full.
[rootmaster ~]#
3、grafana安装
1将下载的granfa安装包上传的监控机器/opt目录下并对其解压安装
[rootmaster opt]# ll
总用量 174664
-rw-r--r--. 1 root root 87661825 7月 19 10:03 grafana-enterprise-10.0.2-1.x86_64.rpm
drwxr-xr-x. 5 1001 123 144 7月 19 2023 prometheus
-rw-r--r--. 1 root root 91189594 7月 19 2023 prometheus-2.45.0.linux-amd64.tar.gz
[rootmaster opt]# yum install grafana-enterprise-10.0.2-1.x86_64.rpm
2待安装完毕后启动grafana服务查看到服务状态如下正常。
[rootmaster ~]# systemctl daemon-reload
[rootmaster ~]# systemctl start grafana-server
[rootmaster ~]# systemctl status grafana-server
● grafana-server.service - Grafana instanceLoaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: disabled)Active: active (running) since 三 2023-07-19 1015 CST; 25s agoDocs: http://docs.grafana.orgMain PID: 6945 (grafana)CGroup: /system.slice/grafana-server.service└─6945 /usr/share/grafana/bin/grafana server --config/etc/grafana/grafana.ini --pidfile/var/run/grafana/grafana-server.pid --packagingrpm cfg:default.paths.logs/var/log/gr...7月 19 1015 master grafana[6945]: loggerngalert.state.manager t2023-07-19T1015.2434129108:00 levelinfo msgWarming state cache for startup
7月 19 1015 master grafana[6945]: loggercaching.service t2023-07-19T1015.2444586308:00 levelwarn msgCaching service is disabled
7月 19 1015 master grafana[6945]: loggerreport t2023-07-19T1015.24498014108:00 levelwarn msgScheduling and sending of reports disabled, SMTP is not configured ... to enable.
7月 19 1015 master grafana[6945]: loggerhttp.server t2023-07-19T1015.25025974508:00 levelinfo msgHTTP Server Listen address[::]:3000 protocolhttp subUrl socket
7月 19 1015 master grafana[6945]: loggersqlstore.transactions t2023-07-19T1015.26735068208:00 levelinfo msgDatabase locked, sleeping then retrying errordata...e is locked
7月 19 1015 master grafana[6945]: loggerngalert.state.manager t2023-07-19T1015.26860470708:00 levelinfo msgState cache has been initialized states0 duration25.191797ms
7月 19 1015 master grafana[6945]: loggerticker t2023-07-19T1015.26882811108:00 levelinfo msgstarting first_tick2023-07-19T102008:00
7月 19 1015 master grafana[6945]: loggerngalert.multiorg.alertmanager t2023-07-19T1015.26886001208:00 levelinfo msgstarting MultiOrg Alertmanager
7月 19 1016 master grafana[6945]: loggergrafana.update.checker t2023-07-19T1016.03523483908:00 levelinfo msgUpdate check succeeded duration795.319198ms
7月 19 1016 master grafana[6945]: loggerplugins.update.checker t2023-07-19T1016.11766366608:00 levelinfo msgUpdate check succeeded duration874.346258ms
Hint: Some lines were ellipsized, use -l to show in full.
[rootmaster ~]#
3将grafana-server服务设置为开机自启动
systemctl enable grafana-server
4通过以下地址访问garfana并且配置相应的数据源
http://192.168.20.231:3000/login
登录界面如下所示默认用户名及密码分别是adminadmin 5登录进入grafana系统后对数据源进行配置点击add your first data source进入添加数据源页面 6进入后点击Prometheus进入配置页面 7编辑HTTP下的URL这里是主机IP是192.168.20.231所以填http://192.68.20.231:9090 8拉到最底部进行保存如下所示即为保存成功。 4、监控主机中安装node_exporter
1在监控主机上安装最新的node_exporter版本
首先在监控主机192.168.20.231上进行安装该组件。
下载最新的node_exporter版本 wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gz
下载完成后如下图所示 2对软件压缩包进行解压并且将安装包放到自己系统安装目录下我自己放在/usr/local/目录中
[rootmaster ruanjianfile]# tar -xzf node_exporter-1.6.1.linux-amd64.tar.gz [rootmaster ruanjianfile]# mv node_exporter-1.6.1.linux-amd64 /usr/local/
3将安装包中的可执行文件node_exporter拷贝到/usr/local/bin目录中
mv /usr/local/node_exporter-1.6.1.linux-amd64/node_exporter /usr/local/bin/
4为node_exporter服务创建service服务
vim /usr/lib/systemd/system/node_exporter.service
大家根据自己实际安装目录写入cat命令相关内容到上述文件中。
[rootmaster ruanjianfile]# cat /usr/lib/systemd/system/node_exporter.service [Unit] Descriptionnode_exporter Documentationhttps://prometheus.io/ Afternetwork.target [Service] Typesimple Userroot Grouproot ExecStart/usr/local/bin/node_exporter Restarton-failure [Install] WantedBymulti-user.target
5为node_exporter设置自动启动并启动服务
systemctl daemon-reload
systemctl enable node_exporter
systemctl start node_exporter
6查看node_exporter服务状态如下服务状态为正常状态
[rootmaster ~]# systemctl status node_exporter
● node_exporter.service - node_exporterLoaded: loaded (/usr/lib/systemd/system/node_exporter.service; enabled; vendor preset: disabled)Active: active (running) since 三 2023-07-19 1407 CST; 3min 0s agoDocs: https://prometheus.io/Main PID: 7146 (node_exporter)CGroup: /system.slice/node_exporter.service└─7146 /usr/local/bin/node_exporter7月 19 14:25:07 master node_exporter[7146]: ts2023-07-19T06:25:07.181Z callernode_exporter.go:117 levelinfo collectorthermal_zone
7月 19 14:25:07 master node_exporter[7146]: ts2023-07-19T06:25:07.181Z callernode_exporter.go:117 levelinfo collectortime
7月 19 14:25:07 master node_exporter[7146]: ts2023-07-19T06:25:07.181Z callernode_exporter.go:117 levelinfo collectortimex
7月 19 14:25:07 master node_exporter[7146]: ts2023-07-19T06:25:07.181Z callernode_exporter.go:117 levelinfo collectorudp_queues
7月 19 14:25:07 master node_exporter[7146]: ts2023-07-19T06:25:07.181Z callernode_exporter.go:117 levelinfo collectoruname
7月 19 14:25:07 master node_exporter[7146]: ts2023-07-19T06:25:07.181Z callernode_exporter.go:117 levelinfo collectorvmstat
7月 19 14:25:07 master node_exporter[7146]: ts2023-07-19T06:25:07.181Z callernode_exporter.go:117 levelinfo collectorxfs
7月 19 14:25:07 master node_exporter[7146]: ts2023-07-19T06:25:07.181Z callernode_exporter.go:117 levelinfo collectorzfs
7月 19 14:25:07 master node_exporter[7146]: ts2023-07-19T06:25:07.182Z callertls_config.go:274 levelinfo msgListening on address[::]:9100
7月 19 14:25:07 master node_exporter[7146]: ts2023-07-19T06:25:07.182Z callertls_config.go:277 levelinfo msgTLS is disabled. http2f...::]:9100
Hint: Some lines were ellipsized, use -l to show in full.
[rootmaster ~]#
5、监控主机中进行监控相关参数配置
1vi编辑修改prometheus中相关配置文件
主要在对应该控件软件安装目录下/opt/prometheus/prometheus.yml这个文件中
在原文件的scrape_configs模块下增加如下配置内容 - job_name: master_prometheusstatic_configs:- targets: [192.168.20.231:9100]
修改后/opt/prometheus/prometheus.yml如下所示
复制[rootmaster prometheus]# cat prometheus.yml
# my global config
global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configuration
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093# Load rules once and periodically evaluate them according to the global evaluation_interval.
rule_files:# - first_rules.yml# - second_rules.yml# A scrape configuration containing exactly one endpoint to scrape:
# Here its Prometheus itself.
scrape_configs:# The job name is added as a label job to any timeseries scraped from this config.- job_name: prometheus# metrics_path defaults to /metrics# scheme defaults to http.static_configs:- targets: [localhost:9090]- job_name: master_prometheusstatic_configs:- targets: [192.168.20.231:9100] 2检查配置是否正确
养成好习惯每次修改配置文件完成用promtool检测配置文件是否正确。如下检查配置文件正确方可执行下一步。
[rootmaster prometheus]# /opt/prometheus/promtool check config /opt/prometheus/prometheus.yml
Checking /opt/prometheus/prometheus.ymlSUCCESS: /opt/prometheus/prometheus.yml is valid prometheus config file syntax[rootmaster prometheus]# 3重启prometheus服务进行相关测试
systemctl restart prometheus
打开如下测试地址
http://192.168.20.231:9090/targets 如下图所示可以看到targets已经增加了对监控主机master_prometheus的监控。 6、被监控主机中安装node_exporter及进行参数配置
首先在被监控主机192.168.20.232上进行安装该组件。
1安装步骤参考监控主机中node_exporter安装这个章节安装方法步骤一样。
2在监控主机192.168.20.231上修改对应配置文件
修改/opt/prometheus/prometheus.yml这个文件后面,添加如下内容 - job_name: node1-prometheusstatic_configs:- targets: [192.168.20.232:9100] 3检测配置文件正常后重启服务
[rootmaster prometheus]# /opt/prometheus/promtool check config /opt/prometheus/prometheus.yml
Checking /opt/prometheus/prometheus.ymlSUCCESS: /opt/prometheus/prometheus.yml is valid prometheus config file syntax[rootmaster prometheus]# systemctl restart prometheus
4待服务起来后打开下面地址进行测试
http://192.168.20.231:9090/targets
正常如下图所示,targets已经增加了对被监控主机node1的监控。 7、grafana中添加配置监控模板
1如图点击“”号后选择import dashboard 2如下图搜索系统默认模板8919然后点击Load 3点Load后稍等会grafana会直接从官方网站导入编号为8919的面板如下图所示 4选择数据源Prometheus-1点击“Import”显示master和node1监控界面显示如下图所示 六、总结
至此、整套Prometheus监控系统已经部署完毕并且已经可以正常监控。但是其展示的只是它本身最基本的功能其它组件及模块相关的功能配置要靠大家自行去研究学习那样方可发挥出它强大的监控系统功能。