学习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"

浙公网安备 33010602011771号