一、前提

1、tomcat作为java项目首选的部署容器。但是,在做测试,或者是在运维管理生产服务器的时候,想要监控tomcat的实时运行情况,却不是那么容易的

2、grafana(已安装和prometheus在同一台)-->前端数据展示

3、prometheus(已安装)-->实时数据库存储数据

二、获取jvm_exporter

(1)浏览器访问:

https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/

(2)页面中显示了多个版本,可以根据自己需要选择版本,找到你需要的jar包下载地址:

https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.14.0/jmx_prometheus_javaagent-0.14.0.jar

(3)进入tomcat服务器,执行下面命令,下载jvm_exporter:

wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.14.0/jmx_prometheus_javaagent-0.14.0.jar

(4)拷贝下载的jar包,到tomcat的bin文件夹中

三、配置tomcat.yaml文件

在tomcat的bin文件夹下,新建tomcat.yaml文件,黏贴

---
lowercaseOutputLabelNames: true
lowercaseOutputName: true
rules:
- pattern: 'Catalina<type=GlobalRequestProcessor, name=\"(\w+-\w+)-(\d+)\"><>(\w+):'
name: tomcat_$3_total
labels:
port: "$2"
protocol: "$1"
help: Tomcat global $3
type: COUNTER
- pattern: 'Catalina<j2eeType=Servlet, WebModule=//([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), name=([-a-zA-Z0-9+/$%~_-|!.]*), J2EEApplication=none, J2EEServer=none><>(requestCount|maxTime|processingTime|errorCount):'
name: tomcat_servlet_$3_total
labels:
module: "$1"
servlet: "$2"
help: Tomcat servlet $3 total
type: COUNTER
- pattern: 'Catalina<type=ThreadPool, name="(\w+-\w+)-(\d+)"><>(currentThreadCount|currentThreadsBusy|keepAliveCount|pollerThreadCount|connectionCount):'
name: tomcat_threadpool_$3
labels:
port: "$2"
protocol: "$1"
help: Tomcat threadpool $3
type: GAUGE
- pattern: 'Catalina<type=Manager, host=([-a-zA-Z0-9+&@#/%?=~_|!:.,;]*[-a-zA-Z0-9+&@#/%=~_|]), context=([-a-zA-Z0-9+/$%~_-|!.]*)><>(processingTime|sessionCounter|rejectedSessions|expiredSessions):'
name: tomcat_session_$3_total
labels:
context: "$2"
host: "$1"
help: Tomcat session $3 total
type: COUNTER
- pattern: ".*"

四、修改catalina.sh文件

进入tomcat的bin文件夹,编辑catalina.sh文件,增加如下:

JAVA_OPTS="-javaagent:./jmx_prometheus_javaagent-0.14.0.jar=3088:./tomcat.yaml"

# jmx_prometheus_javaagent-0.14.0.jar 这个根据你自己下载的jvm_export修改
# 30188 监控的端口,自行设置

五、验证tomcat监控

执行./startup.sh 看能否正常启动, 如果没有报错,可以执行

curl -s http://localhost:3088

能正常返回信息,就说明监控正常

六、修改prometheus.yml文件

在prometheus解压后的文件夹中,找到prometheus.yml文件,编辑,在最后面添加

vim prometheus.yml

- job_name: 'tomcat_export'
static_configs:
- targets: ['被监控机器ip:3088']

# 30188是前面在tomcat中配置的监控端口

注意:如果被监控的服务器和 安装了prometheus的机器不是同一台,还需要保证机器间网络和防火墙通畅

七、启动prometheus

1、在prometheus解压的文件夹中,执行:./prometheus

2、验证prometheus

在浏览器中访问:http://prometheus机器ip:9090

注意:prometheus机器的防火墙要开放9090端口,浏览器才能正常访问

想查看prometheus监控jvm信息,可以在界面中执行,jvm_info

八、启动grafana

1、在安装了grafana的机器上,执行:systemctl restart grafana-server

2、配置grafana+prometheus

浏览器访问 http://grafana机器ip:3000, 用admin\admin登录

添加datasource,选择prometheus,配置信息,保存

引入模板

可以输入:8563

或者可以用:3457

grafana+prometheus+tomcat 监控tomcat的更多相关文章

  1. Grafana+Prometheus系统监控之webhook

    概述 Webhook是一个API概念,并且变得越来越流行.我们能用事件描述的事物越多,webhook的作用范围也就越大.Webhook作为一个轻量的事件处理应用,正变得越来越有用. 准确的说webho ...

  2. Grafana Prometheus系统监控Redis服务

    Grafana Prometheus系统监控Redis服务 一.Grafana Prometheus系统监控Redis服务 1.1流程 1.2安装redis_exporter 1.3配置prometh ...

  3. Grafana+Telegraf+Influxdb监控Tomcat集群方案

    前言 前一段时间自家养的几只猫经常出问题,由于没有有效的监控预警手段,以至于问题出现或者许久一段时间才会被通知到.凌晨一点这个锅可谁都不想背,为此基于目前的情况搭建了以下这么一套监控预警系统. 相关软 ...

  4. Grafana+Prometheus系统监控之MySql

    架构 grafana和prometheus之前安装配置过,见:Grafana+Prometheus打造全方位立体监控系统 MySql安装 MySql的地位和重要性就不言而喻了,作为开源产品深受广大中小 ...

  5. Grafana+Prometheus+node_exporter监控,Grafana无法显示数据的问题

    环境搭建: 被测linux机器上部署了Grafana,Prometheus,node_exporter,并成功启动了它们. Grafana中已经创建了Prometheus数据源,并测试通过,并且导入了 ...

  6. Grafana+Prometheus系统监控之SpringBoot

    前言 前一段时间使用SpringBoot创建了一个webhook项目,由于近期项目中也使用了不少SpringBoot相关的项目,趁着周末,配置一下使用prometheus监控微服务Springboot ...

  7. 手动部署 Docker+Grafana+Prometheus系统监控之Redis

    监控规划图 使用Docker 创建两台Redis docker run -d --name redis1 redis docker run -d --name redis2 redis 查看redis ...

  8. Grafana+Prometheus系统监控之Redis

    REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言编写.遵守B ...

  9. windows下部署Grafana +prometheus平台监控

      1.Prometheus简介 Prometheus基于Golang编写,编译后的软件包,不依赖于任何的第三方依赖.用户只需要下载对应平台包,解压并且添加基本的配置即可正常启Prometheus S ...

  10. Grafana+Prometheus系统监控之钉钉报警功能

    介绍 钉钉,阿里巴巴出品,专为中国企业打造的免费智能移动办公平台,含PC版,Web版和手机版.智能办公电话,消息已读未读,DING消息任务管理,让沟通更高效:移动办公考勤,签到,审批,企业邮箱,企业网 ...

随机推荐

  1. ACWJ_00扫描器

    第一部分:词法扫描介绍 ​ 我们从一个简单的词汇扫描器开始我们的编译器编写之旅.正如我在之前部分所提到的,扫描器的任务是从输入语言中(用来编译的语句)识别词法元素或者是符号. ​ 我们将定义一个只有5 ...

  2. 02-Tcl输出、赋值与替换

    2 Tcl输出.赋值与替换 2.1 puts Tcl的输出命令是puts,将字符串标准输出channelled.语法中两个问号之间的参数为可选参数. # 例1 puts hello # 输出 hell ...

  3. 统一返回对象封装和统一异常捕获封装springboot starter

    好久没有更新文章了,高龄开发没什么技术,去了外包公司后没怎么更新文章了.今天分享下统一处理starter,相信开发web系统的时候都是会涉及到前后端的交互,而后端返回数据的时候一般都会统一封装一个返回 ...

  4. 洛谷 P1094纪念品分组 题解

    一道典型的贪心算法题. 题目内容不多说了,大致说一下代码的思路: 给定的所有纪念品中可以先用sort排一下顺序,然后从价格最高和最低的开始向中间靠拢(可以看做是指针),这样保证每组的搭配都是最优的. ...

  5. 同时打开多个.exe文件怎么解决

    同时打开多个.exe文件怎么解决 小黑最近遇到一个问题,就是Unity封装好用来直接打开.exe的函数不好用了!! 怎么解决? 于是发现了.bat文件!好用至极啊 前提 小黑是征求过客户同意之后才这么 ...

  6. elk引入redis

    1.引入日志依赖 <dependency> <groupId>com.cwbase</groupId> <artifactId>logback-redi ...

  7. Cpp 友元简述

    友元函数,友元类 使用友元,主要是易于直接访问数据,但友元本质是以破坏封装性为代价. 下例引用于: <C++程序设计(第2版)> 友元声明位置由程序设计者决定,且不受类中public.pr ...

  8. 记一次 .NET 某游戏网站 CPU爆高分析

    一:背景 1. 讲故事 这段时间经常有朋友微信上问我这个真实案例分析连载怎么不往下续了,关注我的朋友应该知道,我近二个月在研究 SQLSERVER,也写了十多篇文章,为什么要研究这东西呢? 是因为在 ...

  9. 5步带你入门GaussDB(DWS)的GDS导入导出

    摘要:本篇文档为使用GDS导入示例的具体简单步骤和示例. 本文分享自华为云社区<带你快速入门GDS导入导出,玩转PB级数仓GaussDB(DWS)>,作者: yd_220527686. 1 ...

  10. while循环补充、for循环、range关键字、内置方法之整型、内置方法之浮点型、内置方法之字符串

    目录 一.while循环补充 (1).while+continue (2).while+else(了解) (3).死循环 二.for循环 range关键字 for+break for+continue ...