/doc/shipped-plugins/proc.java.heap.rst

https://github.com/leancloud/satori · ReStructuredText · 64 lines · 47 code · 17 blank · 0 comment · 0 complexity · 23e5c79d219a2adbfa6c6d023aa68bad MD5 · raw file

  1. .. _proc-java-heap:
  2. Java 进程 OldGen 占用
  3. =====================
  4. 收集指定 Java 进程的 OldGen 老代堆占用
  5. 插件文件地址
  6. proc.java.cpu
  7. 插件类型
  8. 接受参数重复执行
  9. .. warning::
  10. 如果你的 Java 进程是在容器内运行的那么你必须在容器内进行收集
  11. 插件是通过 ``jstat -gccause <pid>`` 命令收集的这个命令需要读取 :file:`/tmp/hsperfdata_*` 文件中的信息
  12. 插件参数
  13. --------
  14. +---------+------------------------------------+
  15. | 参数 | 功能 |
  16. +=========+====================================+
  17. | cmdline | 被监控进程的命令行正则表达式 [#]_ |
  18. +---------+------------------------------------+
  19. | name | 这个监控的名字用来区分其他的监控 |
  20. +---------+------------------------------------+
  21. .. [#] 命令行是从 /proc/ ``pid`` /cmdline 读取并且将其中的 ``\x00`` 替换成空格后进行匹配
  22. 匹配是任意位置的需要限定从一开始匹配的话请在正则前面加上 ``^``
  23. 上报的监控值
  24. ------------
  25. proc.java.heap
  26. :意义: 指定的 Java 进程的 OldGen 占用百分比
  27. :取值: 0 - 100
  28. :Tags: {"pid": " ``指定进程的 pid`` ", "name": " ``指定的监控名字`` "}
  29. 监控规则样例
  30. ------------
  31. .. code-block:: clojure
  32. (def infra-es-rules
  33. (sdo
  34. (where (host #"^es\d$")
  35. (plugin "proc.java.heap" 30
  36. {:name "elasticsearch", :cmdline "org.elasticsearch.bootstrap.Elasticsearch"})
  37. (where (and (service "proc.java.heap")
  38. (= (:name event) "elasticsearch"))
  39. (by [:host :region]
  40. (judge-gapped (> 99.8) (< 95)
  41. (runs 3 :state
  42. (alarm-every 2 :min
  43. (! {:note "ElasticSearch OldGen 满了!"
  44. :level 1
  45. :expected true
  46. :outstanding-tags [:host :name]
  47. :groups [:operation :api]})))))))))