学习K8S之路.11---使用Prometheus监控Tomcat服务

在《学习K8S之路.7》中,讲述了构建tomcat底包的方法,但在做监控的时候发现了问题,无法进行监控Tomcat,经过百度找到一种方法,仅供参考

1:先制作Tomcat底包

1:下载监控tomcat所需要用到的war包和jar
     下载地址:https://pan.baidu.com/s/1xQlfz1ViwRy8bkKy4ZE5hg
      提取码:kp0l

2:从公网pull jre底包
[root@k8s-6-96 ~]# docker pull docker.io/stanleyws/jre8:8u112
[root@k8s-6-96 ~]# docker images |grep jre
stanleyws/jre8                     8u112                      fa3a085d6ef1        2 years ago         363MB
[root@k8s-6-96 ~]# docker tag fa3a085d6ef1 harbor.auth.com/public/jre:8u112

3:准备java-agent的jar包
    // java agent 收集jvm的信息,用于普罗米修斯监控
[root@k8s-6-96 ~]# wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.1/jmx_prometheus_javaagent-0.3.1.jar -O jmx_javaagent-0.3.1.jar

4:准备config.yml和entrypoint.sh
    //config.yml 普罗米修斯的监控匹配规则
    // docker运行的默认启动脚本entrypoint.sh
[root@k8s-6-96 ~]# vi config.yml
---
rules:
  - pattern: '.*'

5:创建目录 
[root@k8s-6-96 src]# mkdir -p /data/dockerfile/tomcat_monitor 
[root@k8s-6-96 src]# tar zxf apache-tomcat-8.5.51.tar.gz -C /data/dockerfile/tomcat_monitor [root@k8s-6-96 src]# cd /data/dockerfile/tomcat_monitor [root@k8s-6-96 tomcat_monitor]# rm -fr apache-tomcat-8.5.51/webapps/* 6:把所需的文件移到相应的目录下 [root@k8s-6-96 tomcat_monitor]# mv /root/config.yml . [root@k8s-6-96 tomcat_monitor]# mv /root/jmx_javaagent-0.3.1.jar . [root@k8s-6-96 tomcat_monitor]# mv /root/metrics.war . [root@k8s-6-96 tomcat_monitor]# mv /root/simpleclient-0.8.0.jar . [root@k8s-6-96 tomcat_monitor]# mv /root/simpleclient_common-0.8.0.jar . [root@k8s-6-96 tomcat_monitor]# mv /root/simpleclient_hotspot-0.8.0.jar . [root@k8s-6-96 tomcat_monitor]# mv /root/simpleclient_servlet-0.8.0.jar . [root@k8s-6-96 tomcat_monitor]# mv /root/tomcat_exporter_client-0.0.12.jar .

2:准备Dockfile

[root@k8s-6-96 ~]# cd /data/dockerfile/tomcat_monitor/
[root@k8s-6-96 tomcat_monitor]# vi Dockerfile 
From harbor.auth.com/public/jre8:8u112
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&\
    echo 'Asia/Shanghai' >/etc/timezone
ENV CATALINA_HOME /opt/tomcat
ENV LANG zh_CN.UTF-8
ADD apache-tomcat-8.5.51/ /opt/tomcat
ADD config.yml /opt/prom/config.yml
ADD jmx_javaagent-0.3.1.jar /opt/prom/jmx_javaagent-0.3.1.jar

ADD metrics.war /opt/tomcat/webapps/
ADD simpleclient-0.8.0.jar  /opt/tomcat/lib/
ADD simpleclient_common-0.8.0.jar /opt/tomcat/lib/
ADD simpleclient_hotspot-0.8.0.jar /opt/tomcat/lib/
ADD simpleclient_servlet-0.8.0.jar /opt/tomcat/lib/
ADD tomcat_exporter_client-0.0.12.jar /opt/tomcat/lib/

WORKDIR /opt/tomcat
ADD entrypoint.sh /entrypoint.sh
CMD ["/entrypoint.sh"]

3:准备entrypoint.sh脚本

[root@k8s-6-96 tomcat_monitor]# cat entrypoint.sh 
#!/bin/bash
M_OPTS="-Duser.timezone=Asia/Shanghai -javaagent:/opt/prom/jmx_javaagent-0.3.1.jar=$(hostname -i):${M_PORT:-"12346"}:/opt/prom/config.yml"
C_OPTS=${C_OPTS}
MIN_HEAP=${MIN_HEAP:-"512m"}
MAX_HEAP=${MAX_HEAP:-"512m"}
JAVA_OPTS=${JAVA_OPTS:-"-Xmn384m -Xss256k -Duser.timezone=GMT+08  -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram  -Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"}
CATALINA_OPTS="${CATALINA_OPTS}"
JAVA_OPTS="${M_OPTS} ${C_OPTS} -Xms${MIN_HEAP} -Xmx${MAX_HEAP} ${JAVA_OPTS}"
sed -i -e "1a\JAVA_OPTS=\"$JAVA_OPTS\"" -e "1a\CATALINA_OPTS=\"$CATALINA_OPTS\"" /opt/tomcat/bin/catalina.sh

cd /opt/tomcat && /opt/tomcat/bin/catalina.sh run

4:构建镜像并上传到harbor仓库

[root@k8s-6-96 tomcat_monitor]# chmod + x entrypoint.sh
[root@k8s-6-96 tomcat_monitor]# docker build -t harbor.auth.com/base/tomcat_monitor:v8.5.51 .
[root@k8s-6-96 tomcat_monitor]# docker push harbor.auth.com/base/tomcat_monitor:v8.5.51

5:tomcat服务接入prometheus监控

在pod控制器上加annotations,并重启pod,监控生效

java程序监控jvm 和 http
    "annotations": {
      "prometheus_io_scrape": "true",
      "prometheus_io_path": "/",
      "prometheus_io_port": "12346",
      "blackbox_path": "/metrics",
      "blackbox_port": "8080",
      "blackbox_scheme": "http"
    }
    删除pod,观察监控

注解:
# 监控jvm使用量:
"prometheus_io_scrape": "true",
"prometheus_io_path": "/",
"prometheus_io_port": "12346",

# 监控tomcat http服务:
"blackbox_path": "/metrics",
"blackbox_port": "8080",
"blackbox_scheme": "http"

 

posted @ 2020-09-24 23:16  为生活而努力  阅读(986)  评论(0)    收藏  举报