所需E币: 0
时间: 2024-2-22 17:05
大小: 3.06KB
一、Prometheus的概念和发展史Prometheus是一个开源的完整监控解决方案,本文将从指标抓取到查询及可视化展示,以及最后的监控告警,对Prometheus做一个基本的认识。Prometheus发展速度很快,12年开发完成,16年加入CNCF,成为继K8s之后第二个CNCF托管的项目,目前Github42k的,而且社区很活跃,维护频率很高,基本稳定在1个月1个小版本的迭代速度。二、Prometheus的特点多维数据模型:由度量名称和键值对标识的时间序列数据时序数据,是在一段时间内通过重复测量(measurement)而获得的观测值的集合;将这些观测值绘制于图形之上,它会有一个数据轴和一个时间轴;服务器指标数据、应用程序性能监控数据、网络数据等也都是时序数据;1.内置时间序列(pimeseries)数据库: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可以快速让应用程序纳入到监控系统中,同时还支持与其它的监控系统集成。可视化:PrometheusServer自带一个UI,通过这个UI可以方便对数据进行查询和图形化展示;同时还可以对接Grafana可视化工具展示精美监控指标。四、服务注册被监控服务在Prometheus中是一个Job存在,被监控服务的所有实例在Prometheus中是一个target的存在,所以被监控服务的注册就是在Prometheus中注册一个Job和其所有的target,这个注册分为:静态注册动态注册静态注册:静态的将服务的IP和抓取指标的端口号配置在Prometheusyaml文件的scrape_configs配置下scrape_configs: -job_name:"prometheus" static_configs: -targets:["localhost:9090"]以上就是注册了一个名为prometheus的服务,这个服务下有一个实例,暴露的抓取地址是localhost:9090 动态注册:动态注册就是在Prometheusyaml文件的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安装包到指定目录下,并创建dataetctmplog目录tar-zxvfmysql-5.7.31.tar.gzcdmysql-5.7.31mkdirdataetctmplog上传my.cnf,修改本地路径后、端口号等,进行保存[mysqld]server_id=2binlog_format=Mixedread_rnd_buffer_size=128Mfederatedbasedir=/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='SETcollation_connection=utf8_general_ci'init_connect='SETNAMESutf8'character-set-server=utf8collation-server=utf8_general_ciskip-character-set-client-handshakelower_case_table_names=1max_connections=1000wait_timeout=180sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESport=5308 #######################重要!按实际目录配置#skip-grant-tables#default_authentication_plugin=mysql_native_passwordtmp_table_size=512Mevent_scheduler=1join_buffer_size=512Mlog_bin_trust_function_creators=1read_rnd_buffer_size=32Msort_buffer_size=64Minnodb_buffer_pool_size=2048Minnodb_log_file_size=64Minnodb_file_per_table=1innodb_flush_log_at_trx_commit=1innodb_log_buffer_size=256Mkey_buffer_size=256Mread_buffer_size=32Mmax_allowed_packet=100Mmax_heap_table_size=256M#binlog_expire_logs_seconds=432#query_cache_size=512M`[client]default-character-set=utf8port=5308 #################################根据实际修改[mysql]default-character-set=utf8[mysql.server]user=mysql #############################在哪个用户下安装就是哪个log-err#loglog-slow-querieslog-update