prometheus 监控系统
一. 安装docker环境
#01 安装docker# step 1: 安装必要的一些系统工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2# Step 2: 添加软件源信息sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# Step 3sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo# Step 4: 更新并安装Docker-CEsudo yum makecache fastsudo yum -y install docker-ce# Step 4: 开启Docker服务sudo service docker start#02 设置镜像加速sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{}EOFsudo systemctl daemon-reloadsudo systemctl restart docker#03 安装 docker-composesudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose |
二. 安装prometheus
2.1 编辑配置文件
#01 编辑配置文件 邮件相关1) alertmanager.yaml[root@iZ2ze9nv7e19wvoseb2sl1Z prometheus]# cat alertmanager.yamlglobal: smtp_smarthost: 'z15119911990@163.com:25' #163服务器 smtp_from: '522308001@qq.com' #发邮件的邮箱 smtp_auth_username: 'z15119911990' #发邮件的邮箱用户名,也就是你的邮箱 smtp_auth_password: 'RVDDRXWLPQHVYNOB'#发邮件的邮箱密码 smtp_require_tls: false #不进行tls验证route: group_by: ['alertname'] group_wait: 10s group_interval: 10s repeat_interval: 10m receiver: live-monitoringreceivers:- name: 'live-monitoring' email_configs: - to: 'z15119911990@163.com'2) node_down.yml 自定义的告警规则文件[root@iZ2ze9nv7e19wvoseb2sl1Z prometheus]# cat node_down.ymlgroups:- name: node_down rules: - alert: InstanceDown expr: up == 0 for: 1m labels: user: test annotations: summary: "Instance {{ $labels.instance }} down" description: "{{ $labels.instance }} of job {{ $labels.job }} has been down for more than 1 minutes."3)主配置文件[root@iZ2ze9nv7e19wvoseb2sl1Z prometheus]# grep -Ev '^#|^$' prometheus.ymlglobal: 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).alerting: alertmanagers: - static_configs: - targets: ['172.17.24.204:9093'] # - alertmanager:9093rule_files: - "node_down.yml" # - "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' static_configs: - targets: ['172.17.24.204:9090'] - job_name: 'cadvisor' static_configs: - targets: ['172.17.24.204:8080'] - job_name: 'node' scrape_interval: 8s static_configs: - targets: ['172.17.24.204:9100','172.17.24.203:9100'] #抓取被监控主机IP |
2.2 编辑docker-compose
#01 书写docker-compose[root@iZ2ze9nv7e19wvoseb2sl1Z prometheus]# cat docker-compose.yamlversion: '2'networks: mynet: driver: bridgeservices: prometheus: image: prom/prometheus container_name: prometheus hostname: prometheus restart: always volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml - ./node_down.yml:/etc/prometheus/node_down.yml ports: - "9090:9090" networks: - mynet alertmanager: image: prom/alertmanager container_name: alertmanager hostname: alertmanager restart: always volumes: - ./alertmanager.yaml:/etc/alertmanager/alertmanager.yaml ports: - "9093:9093" networks: - mynet grafana: image: grafana/grafana container_name: grafana hostname: grafana restart: always ports: - "3000:3000" networks: - mynet node-exporter: image: prom/node-exporter #image: quay.io/prometheus/node-exporter container_name: node-exporter hostname: node-exporter restart: always ports: - "9100:9100" networks: - mynet cadvisor: image: google/cadvisor:latest container_name: cadvisor hostname: cadvisor restart: always volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro ports: - "8080:8080" networks: - mynet#02 启动 docker-compose up -d#03 web验证http://172.17.24.204:9090/ |

三. grafana 展示
#01 登入地址172.17.24.204:3000user: adminpasswd: admin#02 使用node 模版 |

四 添加监控节点
- 选择对应的 exporter
#01 安装exporterdocker pull prom/node-exporterdocker run -d -p 9100:9100 --restart=always prom/node-exporter#02 访问验证http://localhost:9100/#03 修改服务端 prometheus配置文件 - job_name: 'node' scrape_interval: 8s static_configs: - targets: ['172.17.24.204:9100','172.17.24.203:9100'] #抓取被监控主机IP |
五. 监控 java进程
#01 下载wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.17.0/jmx_prometheus_javaagent-0.17.0.jar#02 书写配置文件[root@iZ2ze9nv7e19wvoseb2skzZ prometheus]# cat simple-config.ymllowercaseOutputLabelNames: truelowercaseOutputName: truewhitelistObjectNames: ["java.lang:type=OperatingSystem"]blacklistObjectNames: []rules: - pattern: 'java.lang<type=OperatingSystem><>(committed_virtual_memory|free_physical_memory|free_swap_space|total_physical_memory|total_swap_space)_size:' name: os_$1_bytes type: GAUGE attrNameSnakeCase: true - pattern: 'java.lang<type=OperatingSystem><>((?!process_cpu_time)w+):' name: os_$1 type: GAUGE attrNameSnakeCase: true#03 启动服务java -javaagent:./jmx_prometheus_javaagent-0.17.0.jar=9400:simple-config.yaml -jar <你的jar>nohup java -javaagent:./jmx_prometheus_javaagent-0.17.0.jar=9400:simple-config.yml -jar /data/project/pigx-upms-biz/pigx-upms-biz.jar -java.tmp.dir=/data/upload_tmp  书写启动脚本/opt/prometheus/jmx_prometheus_javaagent-0.17.0.jar/opt/prometheus/simple-config.yml-javaagent:/opt/prometheus/jmx_prometheus_javaagent-0.17.0.jar=9400:/opt/prometheus/simple-config.yml[root@iZ2ze9nv7e19wvoseb2skzZ prometheus]# cat /root/sh/pigx-upms-biz.sh#!/bin/bashsource /etc/profilePORT=4000kill -9 $(lsof -i:$PORT | grep LISTEN | awk '{print $2}')sleep 5secho "$name kill"name_tmp=${0%\.*}name=${name_tmp##*/}LOG_PATH=${name%%.jar}Promtheus="-javaagent:/opt/prometheus/jmx_prometheus_javaagent-0.17.0.jar=9400:/opt/prometheus/simple-config.yml "echo $name#nohup java -jar -Dfile.encoding=UTF-8 -Xms128m -Xmx1g -Dlog.path=/pigx/$LOG_PATH /data/project/$name/$name.jar -java.tmp.dir=/data/upload_tmp >> /data/project/$name/$name.log 2>&1 &nohup java ${Promtheus} -jar -Dfile.encoding=UTF-8 -Xms128m -Xmx1g -Dlog.path=/pigx/$LOG_PATH /data/project/$name/$name.jar -java.tmp.dir=/data/upload_tmp >> /data/project/$name/$name.log 2>&1 & |

六. 自动化监控服务
Java 项目集成的前提条件
需要是 springboot 的项目
需要启用 actuator
需要集成 micrometer
需要激活配置
- 参考链接:https://blog.csdn.net/chuanbo0429/article/details/100751862
#依赖项目 <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <version>2.2.0.RELEASE</version> </dependency> |
- 启动类
@SpringBootApplicationpublic class Springboot2PrometheusApplication { public static void main(String[] args) { SpringApplication.run(Springboot2PrometheusApplication.class, args); } @Bean MeterRegistryCustomizer<MeterRegistry> configurer( @Value("${spring.application.name}") String applicationName) { return (registry) -> registry.config().commonTags("application", applicationName); }} |
- 配置
management.endpoints.web.exposure.include=*
management.metrics.tags.application=${spring.application.name}
micrometer-registry-prometheus 指定版本可能会导致不兼容
management.endpoints.web.base-path=/admin
management.server.port=8090
- grafana id = 4701
prometheus 监控系统的更多相关文章
- Prometheus监控系统之入门篇(一)续
在上篇Prometheus监控系统之入门篇(一)中我们讲解了Prometheus的基本架构和工作流程, 并从0到1搭建了Prometheus服务,pushgateway以及告警系统. 本篇我们主要介绍 ...
- 容器编排系统K8s之Prometheus监控系统+Grafana部署
前文我们聊到了k8s的apiservice资源结合自定义apiserver扩展原生apiserver功能的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/ ...
- prometheus监控系统
关于Prometheus Prometheus是一套开源的监控系统,它将所有信息都存储为时间序列数据:因此实现一种Profiling监控方式,实时分析系统运行的状态.执行时间.调用次数等,以找到系统的 ...
- Prometheus监控系统之入门篇(一)
1. 简介 Prometheus: (简称Prom)是由SoundCloud开发的开源监控报警系统.是大名鼎鼎的CNCF云原生基金会下的第二大开源项目.具有如下特点: 使用Go语言开发 内置时序数据库 ...
- Grafana+Zabbix+Prometheus 监控系统
环境说明 软件 版本 操作系统 IP地址 Grafana 5.4.3-1 Centos7.5 192.168.18.231 Prometheus 2.6.1 Centos7.5 192.168.18. ...
- 使用Docker部署监控系统,Prometheus,Grafana,监控服务器信息及Mysql
使用Docker部署监控系统,Prometheus,Grafana,监控服务器信息及Mysql 一.docker部署prometheus监控系统 1.1 配置安装环境 1.1.1 安装promethe ...
- 使用docker方式构建prometheus监控的学习
一.背景:近期学习部署prometheus监控系统,经研究发现prometheus提供docker运行模式.根据我的经验,能够使用docker模式构建系统一定多快好省. 二.环境: 1.centos7 ...
- 图文详解Prometheus监控+Grafana+Alertmanager告警安装使用
一:前言 一个服务上线了后,你想知道这个服务是否可用,需要监控.假如线上出故障了,你要先于顾客感知错误,你需要监控.还有对数据库,服务器的监控,等等各层面的监控. 近年来,微服务架构的流行,服务数越来 ...
- Prometheus监控神器-Alertmanager篇(1)
本章节主要涵盖了Alertmanager的工作机制与配置文件的比较详细的知识内容,由浅入深的给大家讲解. 警报一直是整个监控系统中的重要组成部分,Prometheus监控系统中,采集与警报是分离的.警 ...
- Prometheus监控神器-Rules篇
本章主要对如何使用Prometheus与Alertmanager组件集成配置,以及对警报规则 Rules 的俩种类型及其模板内容进行讲解. 与Alertmanager集成 Prometheus把产生的 ...
随机推荐
- 5.2 Windows驱动开发:内核取KERNEL模块基址
模块是程序加载时被动态装载的,模块在装载后其存在于内存中同样存在一个内存基址,当我们需要操作这个模块时,通常第一步就是要得到该模块的内存基址,模块分为用户模块和内核模块,这里的用户模块指的是应用层进程 ...
- 2.3 CE修改器:浮点数扫描
本关需要使用 Cheat Engine 工具对浮点数进行扫描,完成修改任务.浮点数是一种带有小数点的数值,通过"浮点数"扫描方式进行修改.本关中,健康值为单精度浮点数,弹药值为双精 ...
- 5.12 汇编语言:仿写While循环语句
循环语句(While)一种基本控制结构,它允许程序在条件为真的情况下重复执行一段代码块,直到条件为假为止.循环语句在处理需要重复执行的任务时非常有用,它可以让程序更加高效地处理大量数据或者重复性操作. ...
- C/C++ 通用ShellCode的编写与调用
首先,我们的ShellCode代码需要自定位,因为我们的代码并不是一个完整的EXE可执行程序,他没有导入表无法定位到当前系统中每个函数的虚拟地址,所以我们直接获取到Kernel32.dll的基地址,里 ...
- 设计模式-2 简单工厂模式Factory Method
设计模式-2 简单工厂模式 1 意图: 定义一个用户创建对象的接口,让子类决定实例化那个类.Factory Method使一个类的实例化延迟到其子类 使用场景:将一个类的实例化延迟到其子类结构: 优缺 ...
- Tomcat8安装手记
Tomcat安装虽然简单,稍不注意,就会坠入万丈深渊,记录痛苦的安装经历. 首先先介绍一下安装条件和正确的安装方式. 安装条件 系统已经安装jdk(前提) tomcat8压缩包 (可以去官网下载 或者 ...
- 《ASP.ENT Core 与 RESTful API 开发实战》(第3章)-- 读书笔记(上)
第 3 章 ASP.NET Core 核心特性 3.1 启动与宿主 ASP.NET Core 应用程序启动时,它首先会配置并运行其宿主,宿主主要用来启动.初始化应用程序,并管理其生命周期 ASP.NE ...
- offline 2 online | Cal-QL:校准保守 offline 训出的 Q value,让它与真实 reward 尺度相当
论文标题:Cal-QL: Calibrated Offline RL Pre-Training for Efficient Online Fine-Tuning. NeurIPS 2023,5 5 6 ...
- 吉特日化MES & 日化制药工厂信息化系统架构图
作者:情缘 出处:http://www.cnblogs.com/qingyuan/ 关于作者:从事仓库,生产软件方面的开发,在项目管理以及企业经营方面寻求发展之路 版权声明:本文版权归作者和博客园 ...
- JS Leetcode 451. 根据字符出现频率排序题解分析
壹 ❀ 引 大前天做的一道题,昨天发版到11点,前天聚餐,一直没时间整理,今天下班闲来无事,还是做个简单思路整理.本题来自LeetCode 451. 根据字符出现频率排序,难度中等,其实整理下思路,其 ...