Grafana监控java应用以及vCenter的方法


背景

  1. 最开始弄过vCenter的监控.
  2. 但是发现很多地方已经不合适了.
  3. 今天看了下jmx监控 java的应用. 顺便监控了下vCenter.
  4. 这里简单记录一下, 以便备忘.
  5. 需要注意的是 这里其实并不优秀 因为使用了agent 可能对产品有负面影响.

jmx监控

  1. 思路:
  2. 利用 javaagent的方式暴露一个端口出来.
  3. 然后通过prometheus 收集暴露出来的数据
  4. 通过grafana进行展示.
  5. 需要下载的文件主要有:
  6. jmx_prometheus_javaagent-0.17.2.jar
  7. prometheus-2.39.0-rc.0.linux-amd64.tar.gz
  8. grafana-enterprise-9.1.6-1.x86_64.rpm

jmx监控准备

  • 添加一个配置文件:
  1. cat >simple-config.yml <<-EOF
  2. lowercaseOutputLabelNames: true
  3. lowercaseOutputName: true
  4. whitelistObjectNames: ["java.lang:type=OperatingSystem"]
  5. blacklistObjectNames: []
  6. rules:
  7. - pattern: 'java.lang<type=OperatingSystem><>(committed_virtual_memory|free_physical_memory|free_swap_space|total_physical_memory|total_swap_space)_size:'
  8. name: os_$1_bytes
  9. type: GAUGE
  10. attrNameSnakeCase: true
  11. - pattern: 'java.lang<type=OperatingSystem><>((?!process_cpu_time)\w+):'
  12. name: os_$1
  13. type: GAUGE
  14. attrNameSnakeCase: true
  15. EOF

启动脚本修改

  1. 在启动脚本的地方增加如下配置.
  2. -javaagent:./jmx_prometheus_javaagent-0.17.2.jar=8080:simple-config.yml
  3. 添加之后启动服务就可以了.

修改prometheus

  1. 安装prometheus. 然后进行相应的配置
  2. tar包安装非常简单, 建议直接在 /prometheus 目录下进行解压缩.
  3. 然后修改 prometheus.yaml 文件, 添加对应就可以了.
  4. 我这边的配置文件如下:
  5. 注意1: 需要记住 job_name. grafana里面需要进行设置.
  6. 注意2: instance: grafana里面可以进行区分.
  7. scrape_configs:
  8. - job_name: jmx
  9. static_configs:
  10. - targets: ['localhost:8080']
  11. labels:
  12. instance: xxx-server
  13. - targets: ['10.110.83.113:8080']
  14. labels:
  15. instance: xxx-dm

安装Grafana

  1. rpm包安装grafana就可以了.
  2. 安装成功后:
  3. systemctl enable grafana-server.service
  4. systemctl restart grafana-server.service
  5. 注意需要设置一下密码
  6. 默认密码是 admin/admin

配置Grafana

  1. 第一步: 增加数据源
  2. 点击左下角的齿轮状配置按钮.
  3. add data source
  4. 选择prometheus就可以了.
  5. 注意可以讲本地IP地址设为白名单.
  6. 然后将本地IP地址添加进去.
  7. 第二步: 导入dashboard
  8. 点击左上角 四个正方形的按钮.
  9. browse 然后点击new 的下拉列表. 选择import
  10. 输入: 8563
  11. 就可以导入 JVM dashboard

效果图

vCenter的展示

  1. 跟之前写的一样, 这里面用到了influxdb以及telegraf
  2. 需要的文件主要有:
  3. influxdb-1.8.9.x86_64.rpm
  4. telegraf-1.19.2-1.x86_64.rpm
  5. 注意安装方式有是本地安装就可以.
  6. 这里吐槽一下OpenEuler:
  7. 第一: ESXi使用 6.7 More的兼容配置,无法读取安装介质.无法安装
  8. 第二: influxdb 安装完没有形成 influxdb 的配置文件的步骤.

influxdb的设置.

  1. 这里还是用的1.x
  2. 本着够用就好的方针..
  3. 安装完成之后 命令行输入 influx 就可以登录数据库
  4. 需要注意的是 需要先启动服务
  5. systemctl restart influxdb
  6. 添加用户以及修改密码的命令:
  7. CREATE USER "influxdb" WITH PASSWORD 'Test@xxxxxxx'
  8. GRANT ALL PRIVILEGES TO influxdb

Telegraf 的设置

  1. 注意 Telegraf里面添加了配置之后会自动创建数据库.
  2. 另外需要注意的是 要监控vCenter 可能需要两个Telegraf来运行
  3. 但是可以导入到一个influxdb的数据库里面.
  4. 配置文件举例为:
  5. /etc/telegraf/{telegraf01.conf,telegraf02.conf}
  6. 注意两个配置文件唯一不同的可能就是 vcenter的用户以及密码.
  7. 需要注意 主要有inputoutput 两处设置.
  8. 模板就是如下:

Telegraf模板配置文件

  1. [global_tags]
  2. [agent]
  3. interval = "10s"
  4. round_interval = true
  5. metric_batch_size = 1000
  6. metric_buffer_limit = 10000
  7. collection_jitter = "0s"
  8. flush_interval = "10s"
  9. flush_jitter = "0s"
  10. precision = ""
  11. hostname = ""
  12. omit_hostname = false
  13. [[outputs.influxdb]]
  14. #这里需要修改。
  15. urls = ["http://127.0.0.1:8086"]
  16. database = "vm187"
  17. timeout = "0s"
  18. username = "zhaobsh"
  19. password = "Test@xxxx"
  20. [[inputs.vsphere]]
  21. # 这里需要设置为密码
  22. vcenters = [ "https://10.110.xx.xx/sdk" ]
  23. username = "administrator@vsphere.local"
  24. password = "somepassword"
  25. vm_metric_include = [
  26. "cpu.demand.average",
  27. "cpu.idle.summation",
  28. "cpu.latency.average",
  29. "cpu.readiness.average",
  30. "cpu.ready.summation",
  31. "cpu.run.summation",
  32. "cpu.usagemhz.average",
  33. "cpu.used.summation",
  34. "cpu.wait.summation",
  35. "mem.active.average",
  36. "mem.granted.average",
  37. "mem.latency.average",
  38. "mem.swapin.average",
  39. "mem.swapinRate.average",
  40. "mem.swapout.average",
  41. "mem.swapoutRate.average",
  42. "mem.usage.average",
  43. "mem.vmmemctl.average",
  44. "net.bytesRx.average",
  45. "net.bytesTx.average",
  46. "net.droppedRx.summation",
  47. "net.droppedTx.summation",
  48. "net.usage.average",
  49. "power.power.average",
  50. "virtualDisk.numberReadAveraged.average",
  51. "virtualDisk.numberWriteAveraged.average",
  52. "virtualDisk.read.average",
  53. "virtualDisk.readOIO.latest",
  54. "virtualDisk.throughput.usage.average",
  55. "virtualDisk.totalReadLatency.average",
  56. "virtualDisk.totalWriteLatency.average",
  57. "virtualDisk.write.average",
  58. "virtualDisk.writeOIO.latest",
  59. "sys.uptime.latest",
  60. ]
  61. host_metric_include = [
  62. "cpu.coreUtilization.average",
  63. "cpu.costop.summation",
  64. "cpu.demand.average",
  65. "cpu.idle.summation",
  66. "cpu.latency.average",
  67. "cpu.readiness.average",
  68. "cpu.ready.summation",
  69. "cpu.swapwait.summation",
  70. "cpu.usage.average",
  71. "cpu.usagemhz.average",
  72. "cpu.used.summation",
  73. "cpu.utilization.average",
  74. "cpu.wait.summation",
  75. "disk.deviceReadLatency.average",
  76. "disk.deviceWriteLatency.average",
  77. "disk.kernelReadLatency.average",
  78. "disk.kernelWriteLatency.average",
  79. "disk.numberReadAveraged.average",
  80. "disk.numberWriteAveraged.average",
  81. "disk.read.average",
  82. "disk.totalReadLatency.average",
  83. "disk.totalWriteLatency.average",
  84. "disk.write.average",
  85. "mem.active.average",
  86. "mem.latency.average",
  87. "mem.state.latest",
  88. "mem.swapin.average",
  89. "mem.swapinRate.average",
  90. "mem.swapout.average",
  91. "mem.swapoutRate.average",
  92. "mem.totalCapacity.average",
  93. "mem.usage.average",
  94. "mem.vmmemctl.average",
  95. "net.bytesRx.average",
  96. "net.bytesTx.average",
  97. "net.droppedRx.summation",
  98. "net.droppedTx.summation",
  99. "net.errorsRx.summation",
  100. "net.errorsTx.summation",
  101. "net.usage.average",
  102. "power.power.average",
  103. "storageAdapter.numberReadAveraged.average",
  104. "storageAdapter.numberWriteAveraged.average",
  105. "storageAdapter.read.average",
  106. "storageAdapter.write.average",
  107. "sys.uptime.latest",
  108. ]
  109. cluster_metric_include = []
  110. datastore_metric_include = []
  111. datacenter_metric_include = []
  112. datacenter_metric_exclude = [ "*" ]
  113. insecure_skip_verify = true

手动启动telegraf

  1. nohup telegraf -config /etc/telegraf/telegraf01.conf >/dev/null 2>1.txt &
  2. nohup telegraf -config /etc/telegraf/telegraf02.conf >/dev/null 2>2.txt &
  3. 注意 手动启动就可以. 重启机器后需要重新启动.

Grafana监控vCenter

  1. 第一步: 添加数据源:
  2. 注意选择influxdb
  3. 地址可以输入ip地址比如我这个:
  4. http://10.110.136.70:8086
  5. influxdb数据库选择 telegraf里面定义的那个
  6. 用户密码输入 创建的有权限的用户和密码就可以了.

Grafana监控vCenter

  1. 导入grafana的配置项目主要有如下三个:
  2. 其他的好像需要更高的版本
  3. 名称 编号
  4. vSphere - Overview 12786
  5. vSphere - Host details 12852
  6. vSphere - VM details 12874

Grafana监控vCenter的简要效果

  • 概览信息


  • 宿主机的信息


  • 虚拟机的信息

Grafana监控java应用以及vCenter的方法的更多相关文章

  1. 在Docker中监控Java应用程序的5个方法

    译者注:Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化.通常情况下,监控的主要目的在于:减少宕机 ...

  2. 快速接入业务监控体系,grafana监控的艺术

    做一个系统,如果不做监控,是不完善的. 如果为做一个快速系统,花力气去做监控,是不值得的. 因为,我们有必要具备一个能够快速建立监控体系的能力.即使你只是一个普通开发人员! 个人觉得,做监控有三个核心 ...

  3. [转帖]使用Grafana和Telegraf监视VMware ESXi的方法

    使用Grafana和Telegraf监视VMware ESXi的方法 2019-04-03 15:28:30作者:曾秀珠稿源:云网牛站 https://ywnz.com/linuxyffq/4660. ...

  4. Prometheus+Grafana监控SpringBoot

    Prometheus+Grafana监控SpringBoot 一.Prometheus监控SpringBoot 1.1 pom.xml添加依赖 1.2 修改application.yml配置文件 1. ...

  5. Spark-StructuredStreaming 下的checkpointLocation分析以及对接 Grafana 监控和提交Kafka Lag 监控

    一.Spark-StructuredStreaming checkpointLocation 介绍 Structured Streaming 在 Spark 2.0 版本于 2016 年引入, 是基于 ...

  6. Spring Boot 使用 Micrometer 集成 Prometheus 监控 Java 应用性能

    转载自:https://cloud.tencent.com/developer/article/1508319 文章目录1.Micrometer 介绍2.环境.软件准备3.Spring Boot 工程 ...

  7. 利用JConsole工具监控java程序内存和JVM

    一.找到java应用程序对应的进程PI 性能测试应用程序访问地址:http://192.168.29.218:7070/training/ 部署的应用服务器为tomcat6.028 启动tomcat服 ...

  8. 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)

    编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...

  9. (转)利用JConsole工具监控java程序内存和JVM

    转自:http://www.cnblogs.com/luihengk/p/5446279.html 一.找到java应用程序对应的进程PI 性能测试应用程序访问地址:http://192.168.29 ...

  10. 利用VisualVm和JMX远程监控Java进程

    自Java 6开始,Java程序启动时都会在JVM内部启动一个JMX agent,JMX agent会启动一个MBean server组件,把MBeans(Java平台标准的MBean + 你自己创建 ...

随机推荐

  1. 理论+实例,带你掌握Linux的页目录和页表

    摘要:操作系统在加载用户程序的时候,不仅仅需要分配物理内存,来存放程序的内容:而且还需要分配物理内存,用来保存程序的页目录和页表. 本文分享自华为云社区<Linux从头学15:[页目录和页表]- ...

  2. 看FusionInsight Spark如何支持JDBCServer的多实例特性

    摘要:采用多主实例模式的HA方案,不仅可以规避主备切换服务中断的问题,实现服务不中断或少中断,还可以通过横向扩展集群来提高并发能力. 本文分享自华为云社区<FusionInsight Spark ...

  3. DataLeap的全链路智能监控报警实践(一):常见问题

    随着字节跳动业务的快速发展,大数据开发场景下需要运维管理的任务越来越多,然而普通的监控系统只支持配置相应任务的监控规则,已经不能完全满足当前需求,在日常运维中开发者经常会面临以下几个问题: 任务多,依 ...

  4. SQL Server 项目中 SQL 脚本更新、升级方式,防止多次重复执行

    MySQL 项目中 SQL 脚本更新.升级方式,防止多次重复执行 Oracle 项目中 SQL 脚本更新方式 一套代码,多家部署时,在SQL脚本升级时,通过一个SQL文件给运维,避免出现SQL执行序顺 ...

  5. Appium介绍及第一个例子

    Appium介绍 appium是开源的移动端自动化测试框架 appium可以测试原生的,混合的,以及移动端的项目 appium可以测试ios,android应用 appium是跨平台的,可以用在osx ...

  6. Spring Cloud 和 Dubbo 哪个会被淘汰?

    今天在知乎上看到了这样一个问题:Spring Cloud 和 Dubbo哪个会被淘汰?看了几个回答,都觉得不在点子上,所以要么就干脆写篇小文瞎逼叨一下. 简单说说个人观点 我认为这两个框架大概率会长期 ...

  7. vi / vim 键盘图(清晰打印版,桌面背景好图)

    PDF File https://files.cnblogs.com/files/RioTian/vivim-graphical.zip?t=1704439837&download=true ...

  8. 如何使用阿里云 CDN 对部署在函数计算上的静态网站进行缓存

    前言 为了进一步提升网站的访问速度,我们会使用 CDN 对网站进行加速,但是最近在调试阿里云的函数计算和 CDN 的配合使用时发现了一个需要额外注意的地方,下面带大家一起看一下. 如何使用 CDN 对 ...

  9. kafka集群六、java操作kafka(没有密码验证)

    系列导航 一.kafka搭建-单机版 二.kafka搭建-集群搭建 三.kafka集群增加密码验证 四.kafka集群权限增加ACL 五.kafka集群__consumer_offsets副本数修改 ...

  10. freeswitch设置最大呼叫时长

    概述 freeswitch 作为开源VOIP软交换,对经过fs的每一通电话都要有足够的控制. 在一通电话呼叫中,通话时长是一个重要的数据,客户在实际使用过程中,会有各种针对呼叫时长的场景需求. 本篇文 ...