自己开发网站要多少钱,市场体系建设司在官方网站,wordpress docker中文,网页传奇私监控搭建-Prometheus 1、背景2、目标3、选型4、Prometheus4.1、介绍4.2、架构4.3、构件4.4、运行机制4.5、环境介绍4.6、数据准备4.7、网络策略4.7.1、主机端口放行4.7.2、设备端口放行 4.8、部署4.9、验证4.10、配置 1、背景
随着项目信息化进程的推进#xff0c;操作系统、… 监控搭建-Prometheus 1、背景2、目标3、选型4、Prometheus4.1、介绍4.2、架构4.3、构件4.4、运行机制4.5、环境介绍4.6、数据准备4.7、网络策略4.7.1、主机端口放行4.7.2、设备端口放行 4.8、部署4.9、验证4.10、配置 1、背景
随着项目信息化进程的推进操作系统、中间件、数据库的运维随着系统规模的扩大而指数级别提升信息数据的监控在这个阶段显得尤为重要。俗话说无监控、不运维监控系统地位不言而喻。
2、目标
搭建一套监控系统对云服务器、数据库、中间件进行性能指标的有效话监控。
3、选型 本着选新不选旧的原则Prometheus
4、Prometheus
4.1、介绍
Prometheus 是一款基于时序数据库的开源监控告警系统非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。Promethus有以下特点
支持多维数据模型由度量名和键值对组成的时间序列数据内置时间序列数据库TSDB支持PromQL查询语言可以完成非常复杂的查询和分析对图表展示和告警非常有意义支持HTTP的Pull方式采集时间序列数据支持PushGateway采集瞬时任务的数据支持服务发现和静态配置两种方式发现目标支持接入Grafana
4.2、架构 4.3、构件
prometheus server 是 Prometheus 组件中的核心部分负责实现对监控数据的获取存储以及查询。
exporter 简单说是采集端通过 http 服务的形式保留一个 url 地址prometheus server 通过 访问该 exporter 提供的 endpoint 端点即可获取到需要采集的监控数据 。
AlertManager 在 prometheus 中支持基于 PromQL 创建告警规则如果满足定义的规则则会产生一条 告警信息进入 AlertManager 进行处理。可以集成邮件微信或者通过 webhook 自定义报 警。
Pushgateway 由于 Prometheus 数据采集采用 pull 方式进行设置的 内置必须保证 prometheus server 和 对应的 exporter 必须通信当网络情况无法直接满足时可以使用 pushgateway 来进行中转 可以通过 pushgateway 将内部网络数据主动 push 到 gateway 里面去而 prometheus 采用 pull 方式拉取 pushgateway 中数据。
4.4、运行机制
prometheus 负责从 pushgateway 和 job 中采集数据 存储到后端 Storatge 中可以通过 PromQL 进行查询 推送 alerts 信息到 AlertManager。 AlertManager 根据不同的路由规则 进行报警通知。
4.5、环境介绍
序号项目版本备注1Architecturex86_64服务器架构2CentOS7.9.2009操作系统3Prometheus2.47.0监控平台4Grafana10.1.2图形化界面5Node_exporter1.6.1Linux系统采集模块6AlertManager0.26.0告警模块7consul_exporter0.9.0自动服务发现模块
4.6、数据准备
数据准备为需要部署的程序的安排包其中服务器架构和操作系统未提供安装包情况下载包获取路径主要为Promethues官网和Grafana官网下载获取。如果使用服务器直接下载太慢可以使用磁力或其他下载工具下载后上传至服务器。
监控平台Prometheus 下载图形化界面工具Ganfana 下载Linux系统采集模块 node_exporter 下载告警模块 alertmanager 下载自动服务发现 consul_exporter 下载自动服务consul 下载grafana 主机模板下载 部署之前将以上软件包下载至需要部署的服务器上。
4.7、网络策略
网络策略主要为需要为服务放行的端口策略分为服务器端口放行和安全设备端口放行
服务端口备注Prometheus9090监控平台node_exporter9100主机数据采集Grafana3000Grafana图形界面
4.7.1、主机端口放行
防火墙设置
# 查看防火墙状态
systemctl status firewalld
# 启动防火墙
systemctl start firewalld
# 关闭防火墙
systemctl stop firewalld
# 重启防火墙
systemctl restart firewalld
# 设置开机启动
systemctl enable firewalld
# 设置开机不启动
systemctl disable firewalld端口放行
firewall-cmd --zonepublic --add-port9090/tcp --permanent
# 说明
# -zone # 作用域
# -add-port9090/tcp # 添加端口格式为端口/通讯协议
# -permanent 永久生效没有此参数重启后失效# 生效配置
firewall-cmd --reload# 查看放行生效的端口
firewall-cmd --list-ports放行端口关闭(此处不需要了解即可)
firewall-cmd --zonepublic --remove-port9090/tcp --permanent4.7.2、设备端口放行
云主机安全产品一般在安全组内放行实体服务器一版在防火墙或者路由器设备进行放行。
4.8、部署
进入程序所在目录并解压软件包
cd /home
tar xf prometheus-2.47.0.linux-amd64.tar.gz部署
mv prometheus-2.47.0.linux-amd64 /usr/local/prometheus-2.47.0创建符号链接
ln -s /usr/local/prometheus-2.47.0 /usr/local/prometheus创建prometheus存储目录
mkdir /usr/local/prometheus/data创建服务文件 vi /usr/lib/systemd/system/prometheus.service [Unit]
Descriptionhttps://prometheus.io[Service]
Restarton-failure
ExecStart/usr/local/prometheus/prometheus \
--storage.tsdb.path/usr/local/prometheus/data \
--config.file/usr/local/prometheus/prometheus.yml[Install]
WantedBymulti-user.target启动prometheus服务
systemctl start prometheus查看prometheus服务
# systemctl status prometheus
● prometheus.service - https://prometheus.ioLoaded: loaded (/usr/lib/systemd/system/prometheus.service; disabled; vendor preset: disabled)Active: active (running) since Sat 2023-09-23 14:37:38 CST; 3h 35min agoMain PID: 4243 (prometheus)CGroup: /system.slice/prometheus.service└─4243 /usr/local/prometheus/prometheus --storage.tsdb.path/usr/local/prometheus/data --config....Sep 23 14:37:38 devops prometheus[4243]: ts2023-09-23T06:37:38.549Z callerhead.go:760 levelinfo comp...nt0
Sep 23 14:37:38 devops prometheus[4243]: ts2023-09-23T06:37:38.549Z callerhead.go:797 levelinfo comp…8827ms
Sep 23 14:37:38 devops prometheus[4243]: ts2023-09-23T06:37:38.551Z callermain.go:1045 levelinfo fs_...AGIC
Sep 23 14:37:38 devops prometheus[4243]: ts2023-09-23T06:37:38.551Z callermain.go:1048 levelinfo msg...ted
Sep 23 14:37:38 devops prometheus[4243]: ts2023-09-23T06:37:38.551Z callermain.go:1229 levelinfo msg....yml
Sep 23 14:37:43 devops prometheus[4243]: ts2023-09-23T06:37:43.603Z callermain.go:1266 levelinfo msgCo…µs
Sep 23 14:37:43 devops prometheus[4243]: ts2023-09-23T06:37:43.603Z callermain.go:1009 levelinfo msg...ts.
Sep 23 14:37:43 devops prometheus[4243]: ts2023-09-23T06:37:43.603Z callermanager.go:1009 levelinfo ......
Sep 23 17:38:09 devops prometheus[4243]: ts2023-09-23T09:38:09.607Z callercompact.go:523 levelinfo c...68ms
Sep 23 17:38:09 devops prometheus[4243]: ts2023-09-23T09:38:09.611Z callerhead.go:1298 levelinfo com...09ms
Hint: Some lines were ellipsized, use -l to show in full.查看服务端口
服务文件方式查看 cat /usr/local/prometheus/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 jobjob_name to any timeseries scraped from this config.- job_name: prometheus# metrics_path defaults to /metrics# scheme defaults to http.static_configs:- targets: [localhost:9090]其中targets: [“localhost:9090”]处为设置的prometheus服务使用的端口
进程占用端口查看
# netstat -nltp|grep prometheus
tcp6 0 0 :::9090 :::* LISTEN 4243/prometheus查看端口占用为9090
4.9、验证
浏览器中输入配置服务器的IP地址和9090
http://ip:9090 点击菜单Status—Targets 查看prometheus部署的目标服务的信息
4.10、配置
配置文件介绍 vi /usr/local/promethues/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 jobjob_name to any timeseries scraped from this config.- job_name: prometheus# metrics_path defaults to /metrics# scheme defaults to http.static_configs:- targets: [localhost:9090]配置文件查看
启动配置会加载配置文件启动之前使用如下命令查看配置文件的正确性
cd /usr/local/prometheus
./promtool check config prometheus.yml
Checking prometheus.ymlSUCCESS: prometheus.yml is valid prometheus config file syntax以上为prometheus平台的搭建后续会针对主机、数据库和中间件的监控进行进一步的设置和使用。