首页 > 编程语言 >一次解决Docker内java变量原因导致执行Kafka查询消费报错经历

一次解决Docker内java变量原因导致执行Kafka查询消费报错经历

时间:2024-03-11 15:12:38浏览次数:28  
标签:java 47 echo 报错 033 Kafka 两秒 sleep 0m

  引言

  企业内对某设备小集群进行状态巡检(包括内存、磁盘、CPU、集群状态、集群Docker内接口状态、服务状态、Kafka消费情况监控)。

  由于需要将状态的结果通过命令展示在命令行中,且查询命令较多,于是打算脚本解决。在写脚本时,查询内容包括了宿主机和docker内的服务都需要查询,脚本是通过内外联动的方式,前面查询都正常,在执行到Kafka消费时报错。以下是脚本内容:

  宿主机:

#!/bin/bash
#制作人QQ:763342488
#查询系统状态
echo -e  "\033[1;5;4;47;32m 查询系统状态 \033[0m"
sleep 5 #休眠五秒
echo -e  "\033[1;5;4;47;31m 磁盘状态 \033[0m"
df -h
sleep 2 #休眠两秒
echo -e  "\033[1;5;4;47;31m 内存状态 \033[0m"
free -h
sleep 2 #休眠两秒
echo -e  "\033[1;5;4;47;31m 系统活动报告 \033[0m"
sar -u 1 2
sleep 2 #休眠两秒

#查询*集群健康值及集群关系
echo -e  "\033[1;5;4;47;32m 查询* \033[0m"
sleep 2 #休眠两秒
echo -e  "\033[1;5;4;47;31m 节点与主机 \033[0m"
curl 0.0.0.0:9200/_cat/nodes
sleep 2 #休眠两秒
echo -e  "\033[1;5;4;47;31m 健康状态 \033[0m"
curl 0.0.0.0:9200/_cluster/health?pretty
sleep 2 #休眠两秒

  Docker内:(服务以及路劲保密,使用星号代替了)

#!/bin/bash
#查询接口状态用脚本
#制作人QQ:763342488
echo -e  "\033[1;5;4;47;32m 查询接口状态用脚本,开始运行!!! \033[0m"
sleep 5 #休眠五秒

echo -e  "\033[1;5;4;47;31m * \033[0m"
tail -n 30  /*/`date +"%Y-%m-%d"`.log |grep ftp
sleep 2 #休眠两秒

echo -e  "\033[1;5;4;47;31m * \033[0m"
tail  -n 30 /*/`date +"%Y-%m-%d"`.log |grep sftp
sleep 2 #休眠两秒

echo -e  "\033[1;5;4;47;31m * \033[0m"
tail  -n 30 /*/`date +"%Y-%m-%d"`.log |grep https
sleep 2 #休眠两秒

echo -e  "\033[1;5;4;47;31m * \033[0m"
tail  -n 30  /*/`date +"%Y-%m-%d"`.log |grep sftp

#查询服务状态用脚本
echo -e  "\033[1;5;4;47;32m 查询服务状态用脚本,开始运行!!! \033[0m"
sleep 5 #休眠五秒

echo -e  "\033[1;5;4;47;31m * \033[0m"
systemctl status *.service #*
sleep 2 #休眠两秒

echo -e  "\033[1;5;4;47;31m * \033[0m"
systemctl status *.service #*
sleep 2 #休眠两秒

echo -e  "\033[1;5;4;47;31m * \033[0m"
systemctl status *.service #*
sleep 2 #休眠两秒

echo -e  "\033[1;5;4;47;31m * \033[0m"
systemctl status *.service #*
sleep 2 #休眠两秒

echo -e  "\033[1;5;4;47;31m * \033[0m"
systemctl status * #*
sleep 2 #休眠两秒

echo -e  "\033[1;5;4;47;31m * \033[0m"
systemctl status * #*
sleep 2 #休眠两秒

echo -e  "\033[1;5;4;47;31m * \033[0m"
systemctl status *.service #*
sleep 2 #休眠两秒

echo -e "\033[1;5;4;47;32m kafka消费情况 \033[0m"
echo -e "\033[1;5;4;47;31m `date +"%Y-%m-%d"` \033[0m"
sleep 2 #休眠两秒
/usr/local/kafka/bin/kafka-consumer-groups.sh --describe --bootstrap-server localhost:9092 --group toptcm-syslog-es

echo -e "\033[1;5;4;47;32m * \033[0m"
sleep 2 #休眠两秒
echo -e "\033[1;5;4;47;31m `date +"%Y-%m-%d"` \033[0m"
ls /*/`date +"%Y%m%d"`/*/

echo -e  "\033[1;5;4;47;32m 脚本运行完成,感谢使用~~~ \033[0m"

  效率:  

  在写脚本的时候,无非就是将大量查询命令堆积一起,并且设置格式和字体,让巡检的时候能提高工作效率(摸鱼)而已。两个脚本单独放在宿主机和docker内执行都是正常的,但是里面执行一次,外面执行一次多麻烦啊,想着把内外联动下,只输入一次执行脚本的命令就能内外都查询。于是就在宿主机脚本最下面加了一行。

#docker内
docker exec -it *-server /bin/bash /opt/system.sh

  报错: 

  让宿主机的内容执行完了之后,直接进docker执行里面的脚本,执行到kafka的时候报错如下:

   检查了宿主机与Docker内的java环境变量,都是一样的,但在宿主机执行docker内脚本的时候,并不会正确调用java。

.......跳过繁琐的排查过程直接说结果,执行kafka命令前读取一下docker内的环境变量再执行就行了,这条这么写:

  结果:

echo -e "\033[1;5;4;47;32m kafka消费情况 \033[0m"
echo -e "\033[1;5;4;47;31m `date +"%Y-%m-%d"` \033[0m"
sleep 2 #休眠两秒
source /etc/profile
/usr/local/kafka/bin/kafka-consumer-groups.sh --describe --bootstrap-server localhost:9092 --group toptcm-syslog-es

/etc/profile内有java的路劲,source一下路劲再执行查询内容即可。

 

标签:java,47,echo,报错,033,Kafka,两秒,sleep,0m
From: https://www.cnblogs.com/lichouluoyu/p/18066123

相关文章

  • Java 遍历文件夹内每个文件夹的文件
    在Java中,你可以使用java.nio.file包中的Files和DirectoryStream类来遍历文件夹内的所有文件,包括子文件夹中的文件。以下是一个示例代码,展示了如何实现这个功能:importjava.nio.file.DirectoryStream;importjava.nio.file.Files;importjava.nio.file.Path;importjava.nio.f......
  • JavaScript逆向之有道翻译加解密全过程解析
    本篇文章用于解析有道翻译中的加解密全过程url:https://fanyi.youdao.com/index.html#/加密访问网址,输入框中随便输入一个英文单词,查看触发流量包,只看Fetch/XHR类型的。这里主要关注webtranslate的这条,请求参数和响应数据都是有加密的,主要了解其的加解密逻辑。根据url定位......
  • kylin v10报错:/usr/lib64/security/pam_console.so: cannot open
    报错如下:PAMunabletodlopen(/usr/lib64/security/pam_console.so):/usr/lib64/security/pam_console.so:cannotopenshaaredobjectfile:No>PAMaddmingfaultymodule:/usr/lib64/security/pam_console.so原因分析:麒麟V10环境没有“pam_console.so”动态库。pam_......
  • 技术笔记(6)SourceTree Push到github时报错
    技术笔记(6)SourceTreePush到github时报错remote:SupportforpasswordauthenticationwasremovedonAugust13,2021.Pleaseuseapersonalaccesstokeninstead.​即无法通过输入账号密码的方式来验证,需要使用个人token来验证。昨晚搜到了很多无效方法,搞得有点头痛了,记......
  • Java诊断工具Arthas:开篇之watch实战
    Arthas是阿里开源的线上监控诊断产品,用于问题的排查和诊断。它的出现大大提高线上排查问题的效率,这篇只讲它一个非常牛逼的功能,其它功能往后篇章会在展开详细说。一、Arthas能为你做什么?1、遇到问题无法在线上debug,难道只能通过加日志再重新发布吗?2、我改的代码为什么没有执......
  • Java基础输入输出
    好久不写普通Java,一上手发现简单的部分都忘记怎么写了……趁着这次练习,赶紧记一下packageorg.example;importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){//System.out.println("Helloworld!");Scannerscanner=ne......
  • ubuntu20.04-通过docker安装jenkins并自动化发布java
    前言jenkins需要git、maven和node,其中maven和node手动添加,git和git环境是jenkins镜像自带了的。如果删除了docker对应的jenkins容器后(删除前一定备份jenkins_home整个文件夹,否则怕前功尽弃:tar-czvfjenkins_home.tar.gz/var/jenkins_home)如果删除了容器,需要重新安装并配置m......
  • java: 程序包com.sun.org.slf4j.internal不存在
    java:程序包com.sun.org.slf4j.internal不存在事件之由来问题之分析处理之方案收工事件之由来拉完别人的项目后,启动不了了,报错提示:java:程序包com.sun.org.slf4j.internal不存在1问题之分析就是别人用lombok了同时使用slf4j和lombok的时候会出现这个问题原因是slf4j和lombok自......
  • Java Http Get Post 请求工具类
    importcom.alibaba.fastjson.JSONObject;importorg.apache.http.NameValuePair;importorg.apache.http.client.config.RequestConfig;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.CloseableHttpResponse;importorg......
  • default在java中的用法 java里default
    介绍default是在java8中引入的关键字,也可称为Virtualextensionmethods——虚拟扩展方法。是指,在接口内部包含了一些默认的方法实现(也就是接口中可以包含方法体,这打破了Java之前版本对接口的语法限制),从而使得接口在进行扩展的时候,不会破坏与接口相关的实现类代码。为什么需要这......