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 3 sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum .repos.d /docker-ce .repo # Step 4: 更新并安装Docker-CE sudo yum makecache fast sudo yum -y install docker-ce # Step 4: 开启Docker服务 sudo service docker start #02 设置镜像加速 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon .json <<- 'EOF' { } EOF sudo systemctl daemon-reload sudo systemctl restart docker #03 安装 docker-compose sudo curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose |
二. 安装prometheus
2.1 编辑配置文件
#01 编辑配置文件 邮件相关 1) alertmanager.yaml [root@iZ2ze9nv7e19wvoseb2sl1Z prometheus] # cat alertmanager.yaml global: 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-monitoring receivers: - name: 'live-monitoring' email_configs: - to: 'z15119911990@163.com' 2) node_down.yml 自定义的告警规则文件 [root@iZ2ze9nv7e19wvoseb2sl1Z prometheus] # cat node_down.yml groups : - 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.yml 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). alerting: alertmanagers: - static_configs: - targets: [ '172.17.24.204:9093' ] # - alertmanager:9093 rule_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.yaml version: '2' networks: mynet: driver: bridge services: 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:3000 user: admin passwd : admin #02 使用node 模版 |
四 添加监控节点
- 选择对应的 exporter
#01 安装exporter docker pull prom /node-exporter docker 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.yml lowercaseOutputLabelNames: true lowercaseOutputName: true whitelistObjectNames: [ "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 & # 04 书写启动脚本 /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/bash source /etc/profile PORT= 4000 kill - 9 $(lsof -i:$PORT | grep LISTEN | awk '{print $2}' ) sleep 5s echo "$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 > |
- 启动类
@SpringBootApplication public 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把产生的 ...
随机推荐
- Unity2019使用Gradle命令行(编译)出安卓包
在我所经历的项目组中有这几种方法来生成APK 直接在Unity生成APK,可以接入SDK 使用Unity导出Android Studio工程手动生成APK 使用Unity导出Android Studi ...
- 手撕Vuex-实现共享数据
经过上一篇章介绍,完成了添加全局 $store,接下来就是实现共享数据的功能. 在 Vuex 中,共享数据是通过 state 来实现的,所以我们需要在 Nuex.js 文件中实现 state 的功能. ...
- 解决问题:ACM-Reference-Format使用这个style后,文献引用顺序和正文不一致
解决问题:latex中bib引用顺序不正确,引用顺序和正文不一致_丨汀.的博客-CSDN博客问题:生成pdf时文献应用会乱序引用bib格式的参考文献时,会这么写:\bibliographystyle{ ...
- 顺颂秋冬<一>
起名字真难. 原来想给这个合集起个积极的名字,记录鄙人浅薄的认知和内心的荒芜. 以及所遇见的温暖. 想来想去,不过是 浮生旧茶 西楼残月之类的 难堪大用. 后来想起来一句, 即,顺颂时祺,秋绥冬禧, ...
- 该换Linux版本了!
提起开发,程序员们更青睐于不同版本的Linux操作系统而不是Windows.为什么?因为Linux操作起来更安全.快捷,最重要的是,它的发行版本众多.你可以根据需要挑选最适合的那一款.那么,问题来了, ...
- Delphi Vista,Win7,Win8 的 Uac,管理员身份运行
要用就用下面我自己总结的官方的做法: 1.首先搜到delphi 自带的manifest,然后在其基础上改一个单词 2.将里面的asInvoker改为requireAdministrator 3.修改为 ...
- Flink-启动后无法访问WebUI界面(Flink1.16)
问题描述 通过./bin/start-cluster.sh启动Flink程序,正常启动后无法通过浏览器访问web UI界面,http://192.168.80.133:8081. 问题原因 Flink ...
- [Java] 详细解说final关键字
final final 可以修饰变量.方法和类,表示所修饰的内容一旦赋值之后就不会再被改变.例如String类就是一个final类型的类. 1.具体使用场景 1.1 变量 1.1.1 成员变量 每个类 ...
- JS Leetcode 198. 打家劫舍 题解分析,再次感受动态规划的魅力
壹 ❀ 引 本题来自LeetCode198. 打家劫舍,难度中等,也很有意思,是一道教小偷如何偷窃最大金额的题,题目描述如下: 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你 ...
- NC51178 没有上司的舞会
题目链接 题目 题目描述 Ural大学有N名职员,编号为1~N. 他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司. 每个职员有一个快乐指数,用整数 \(Hi\) 给出,其中 \(1\le ...