Prometheus入门与进阶实践教程2024

kaudmands · · 432 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

Prometheus入门与进阶实践教程2024 参考资料1:https://pan.baidu.com/s/1FLteIxtDx3hEiokPn2A0vw 提取码: v1nn 参考资料2:https://share.weiyun.com/7hok43wM 密码:qkrm48 一、Prometheus的概念和发展史 Prometheus是一个开源的完整监控解决方案,本文将从指标抓取到查询及可视化展示,以及最后的监控告警,对Prometheus做一个基本的认识。 Prometheus发展速度很快,12年开发完成,16年加入CNCF,成为继K8s之后第二个CNCF托管的项目,目前Github 42k的 ,而且社区很活跃,维护频率很高,基本稳定在 1个月1个小版本的迭代速度。 二、Prometheus的特点 多维数据模型:由度量名称和键值对标识的时间序列数据 时序数据,是在一段时间内通过重复测量(measurement)而获得的观测值的集合;将这些观测值绘制于图形之上,它会有一个数据轴和一个时间轴; 服务器指标数据、应用程序性能监控数据、网络数据等也都是时序数据; 1.内置时间序列(pime series)数据库:Prometheus;外置的远端存储通常会用:InfluxDB、openTsDB等 2.promQL一种灵活的查询语言,可以利用多维数据完成复杂查询 3.基于HTTP的pull(拉取)方式采集时间序列数据 4.同时支持PushGateway组件收集数据 5.通过服务发现或者静态配置,来发现目标服务对象 6.支持作为数据源接入Grafana 三、Prometheus 优势 易于管理: Prometheus核心部分只有一个单独的二进制文件,不存在任何的第三方依赖(数据库,缓存等等); 唯一需要的就是本地磁盘,因此不会有潜在级联故障的风险。 强大的查询语言 PromQL: Prometheus 内置一个强大的数据查询语言 PromQL,通过 PromQL 可以实现对监控数据的查询、聚合。 同时 PromQL 也被应用于数据可视化(如 Grafana)以及告警中。 高效: 对于监控系统而言,大量的监控任务必然导致有大量的数据产生。而 Prometheus 可以高效的处理这些数据。 可扩展: Prometheus 支持联邦集群,可以让多个 Prometheus 实例产生一个逻辑集群; 当单实例 Prometheus 处理的任务量过大时,通过使用功能分区(sharding)+ 联邦集群(federation)可以对其进行扩展。 易于集成: 目前官网提供了多种语言的客户端 SDK,基于这些 SDK 可以快速让应用程序纳入到监控系统中,同时还支持与其它的监控系统集成。 可视化: Prometheus Server 自带一个 UI,通过这个 UI 可以方便对数据进行查询和图形化展示; 同时还可以对接 Grafana 可视化工具展示精美监控指标。 四、服务注册 被监控服务在Prometheus中是一个Job存在,被监控服务的所有实例在Prometheus中是一个target的存在,所以被监控服务的注册就是在Prometheus中注册一个Job和其所有的target,这个注册分为: 静态注册 动态注册 静态注册:静态的将服务的IP和抓取指标的端口号配置在Prometheus yaml文件的scrape_configs配置下 scrape_configs: - job_name: "prometheus" static_configs: - targets: ["localhost:9090"] 以上就是注册了一个名为prometheus的服务,这个服务下有一个实例,暴露的抓取地址是localhost:9090 动态注册:动态注册就是在Prometheus yaml文件的scrape_configs配置下配置服务发现的地址和服务名,Prometheus会去该地址,根据你提供的服务名动态发现实例列表,在Prometheus中,支持consul,DNS,文件,K8s等多种服务发现机制。 基于consul的服务发现: - job_name: "node_export_consul" metrics_path: /node_metrics scheme: http consul_sd_configs: - server: localhost:8500 services: - node_exporter 我们consul的地址就是:localhost:8500,服务名是node_exporter,在这个服务下有一个exporter实例: localhost:9600 五、Prometheus实战教程:监控mysql数据库 安装mysql数据库 上传mysql安装包到指定目录下,并创建data etc tmp log目录 tar -zxvf mysql-5.7.31.tar.gz cd mysql-5.7.31 mkdir data etc tmp log 上传my.cnf,修改本地路径后、端口号等,进行保存 [mysqld] server_id = 2 binlog_format=Mixed read_rnd_buffer_size = 128M federated basedir = /app/mysql/mysql-5.7.31 ###################### 重要 !按实际目录配置 datadir = /app/mysql/mysql-5.7.31/data ####################### 重要 !按实际目录配置 socket = /app/mysql/mysql-5.7.31/tmp/mysql-5308.sock ################## 按安装目录名+sock,统一放置于/tmp下 init_connect='SET collation_connection = utf8_general_ci' init_connect='SET NAMES utf8' character-set-server=utf8 collation-server=utf8_general_ci skip-character-set-client-handshake lower_case_table_names=1 max_connections = 1000 wait_timeout=180 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES port = 5308 ####################### 重要 !按实际目录配置 #skip-grant-tables #default_authentication_plugin=mysql_native_password tmp_table_size = 512M event_scheduler=1 join_buffer_size = 512M log_bin_trust_function_creators=1 read_rnd_buffer_size = 32M sort_buffer_size = 64M innodb_buffer_pool_size = 2048M innodb_log_file_size = 64M innodb_file_per_table=1 innodb_flush_log_at_trx_commit = 1 innodb_log_buffer_size = 256M key_buffer_size = 256M read_buffer_size = 32M max_allowed_packet = 100M max_heap_table_size= 256M #binlog_expire_logs_seconds=432 #query_cache_size = 512M` [client] default-character-set=utf8 port = 5308 ################################# 根据实际修改 [mysql] default-character-set=utf8 [mysql.server] user=mysql ############################# 在哪个用户下安装就是哪个 log-err #log log-slow-queries log-update

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

432 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传