禁掉Rsyslog的dns解析

网管检查流量图的时候发现,udp的流量很多 看了看日志: Jun 28 00:39:28 172.16.0.1 %ASA-6-305011: Built dynamic UDP translation from inside:172.16.36.2/2160 to outside:124.243.230.6/2160 Jun 28 00:39:28 172.16.0.1 %ASA-6-302015: Built outbound UDP connection 1369422617 for outside:223.5.5.5/53 (223.5.5.5/53) to inside:172.1... 发现一大堆是查询dns 53的 杀了无关进程,继续,还有是那么多的udp 53 dns查询 查了半天才发现,是rsyslog记录日志的时候反查ip的域名导致的,由于是内网域名都不对,所以ip查不到,就不停的往公网dns发查询,导致udp流量激增。 知道原因就知道如何解决了 Centos下,rsyslog增加-x -Q禁止解析的参数: vi /etc/sysconfig/rsyslog # Options for rsyslogd # Syslogd options are deprecated since rsyslog v3. # If you want to use them, switch to compatibility mode 2 by "-c 2" # See rsyslogd(8) for more details SYSLOGD_OPTIONS="-c 5 -x -Q" Ubuntu下,方法一样,文件不一样 ...

2024年01月21日 · 1 分钟 · 84 字 · 八戒

Java业务上kubernetes的注意点

java业务上k8s的话,看到一篇比较好的文章,要注意的地方: apiVersion: apps/v1 kind: Deployment metadata: name: java-web namespace: ops labels: app: java-web spec: selector: matchLabels: app: java-web replicas: 2 strategy: type: RollingUpdate template: metadata: name: java-web annotations: # 第一点:新增注解 loki.io/scrape: 'true' # 抓取直接输出的日志到loki里 prometheus.io/path: /metrics #采集的监控地址 prometheus.io/port: '2112' #采集暴露的监控端口 prometheus.io/scrape: 'true' #打开采集开关 labels: app: java-web spec: imagePullSecrets: # 第二点:添加权限 - name: my-docker #只有该用户才有pull镜像的权限 containers: - name: java-web image: hb.ops.top/ops/java-web:5917f92c imagePullPolicy: IfNotPresent readinessProbe: # 第三点:新增存活检测,当前是针对监控端口进行存活检测,也就是说只有当监控端口起来了,程序才算完全启动 httpGet: port: 2112 path: /metrics/prometheus initialDelaySeconds: 60 successThreshold: 1 failureThreshold: 3 timeoutSeconds: 5 startupProbe: httpGet: port: 2112 path: /metrics/prometheus initialDelaySeconds: 60 successThreshold: 1 failureThreshold: 3 timeoutSeconds: 5 livenessProbe: httpGet: port: 2112 path: /metrics/prometheus initialDelaySeconds: 60 successThreshold: 1 failureThreshold: 3 timeoutSeconds: 5 resources: # 第四点:设置资源限制,如果是java程序,建议limit比request大,这样可以合理分配堆内存和非堆内存 requests: memory: 1024Mi limits: memory: 2048Mi ports: - name: web-port containerPort: 8889 env: # 第五点:设置环境变量,可以设置时区,指定EVN环境,添加JAVA参数等 - name: JVM_OPTS value: -javaagent:/opt/skywalking/skywalking-agent.jar -Xmx1G -Xms1G - name: TZ value: Asia/Shanghai - name: APOLLO_LABEL value: gray - name: SW_AGENT_NAME value: 'k8s-java-web' - name: SW_AGENT_COLLECTOR_BACKEND_SERVICES value: '10.0.0.123:11800' - name: ENV value: prod --- apiVersion: v1 kind: Service metadata: labels: app: java-web name: java-web namespace: ops spec: ports: - name: java-web-port port: 8889 protocol: TCP targetPort: 8889 nodePort: 30009 selector: app: java-web sessionAffinity: None type: NodePort status: loadBalancer: {} 上面忽略了启动命令,其实容器内的启动命令也是很有学问的。 ...

2024年01月19日 · 1 分钟 · 193 字 · 八戒

kubernetes中Pod资源清单和解释

Pod的yaml文件的资源清单和解释,备查 apiVersion: v1 #必选,版本号,例如v1 kind: Pod #必选,资源类型,例如 Pod metadata: #必选,元数据 name: string #必选,Pod名称 namespace: string #Pod所属的命名空间,默认为"default" labels: #自定义标签列表 - name: string spec: #必选,Pod中容器的详细定义 containers: #必选,Pod中容器列表 - name: string #必选,容器名称 image: string #必选,容器的镜像名称 imagePullPolicy: [ Always|Never|IfNotPresent ] #获取镜像的策略 command: [string] #容器的启动命令列表,如不指定,使用打包时使用的启动命令 args: [string] #容器的启动命令参数列表 workingDir: string #容器的工作目录 volumeMounts: #挂载到容器内部的存储卷配置 - name: string #引用pod定义的共享存储卷的名称,需用volumes[]部分定义的的卷名 mountPath: string #存储卷在容器内mount的绝对路径,应少于512字符 readOnly: boolean #是否为只读模式 ports: #需要暴露的端口库号列表 - name: string #端口的名称 containerPort: int #容器需要监听的端口号 hostPort: int #容器所在主机需要监听的端口号,默认与Container相同 protocol: string #端口协议,支持TCP和UDP,默认TCP env: #容器运行前需设置的环境变量列表 - name: string #环境变量名称 value: string #环境变量的值 resources: #资源限制和请求的设置 limits: #资源限制的设置 cpu: string #Cpu的限制,单位为core数,将用于docker run --cpu-shares参数 memory: string #内存限制,单位可以为Mib/Gib,将用于docker run --memory参数 requests: #资源请求的设置 cpu: string #Cpu请求,容器启动的初始可用数量 memory: string #内存请求,容器启动的初始可用数量 lifecycle: #生命周期钩子 postStart: #容器启动后立即执行此钩子,如果执行失败,会根据重启策略进行重启 preStop: #容器终止前执行此钩子,无论结果如何,容器都会终止 livenessProbe: #对Pod内各容器健康检查的设置,当探测无响应几次后将自动重启该容器 exec: #对Pod容器内检查方式设置为exec方式 command: [string] #exec方式需要制定的命令或脚本 httpGet: #对Pod内个容器健康检查方法设置为HttpGet,需要制定Path、port path: string port: number host: string scheme: string HttpHeaders: - name: string value: string tcpSocket: #对Pod内个容器健康检查方式设置为tcpSocket方式 port: number initialDelaySeconds: 0 #容器启动完成后首次探测的时间,单位为秒 timeoutSeconds: 0 #对容器健康检查探测等待响应的超时时间,单位秒,默认1秒 periodSeconds: 0 #对容器监控检查的定期探测时间设置,单位秒,默认10秒一次 successThreshold: 0 failureThreshold: 0 securityContext: privileged: false restartPolicy: [Always | Never | OnFailure] #Pod的重启策略 nodeName: <string> #设置NodeName表示将该Pod调度到指定到名称的node节点上 nodeSelector: obeject #设置NodeSelector表示将该Pod调度到包含这个label的node上 imagePullSecrets: #Pull镜像时使用的secret名称,以key:secretkey格式指定 - name: string hostNetwork: false #是否使用主机网络模式,默认为false,如果设置为true,表示使用宿主机网络 volumes: #在该pod上定义共享存储卷列表 - name: string #共享存储卷名称 (volumes类型有很多种) emptyDir: {} #类型为emtyDir的存储卷,与Pod同生命周期的一个临时目录。为空值 hostPath: string #类型为hostPath的存储卷,表示挂载Pod所在宿主机的目录 path: string #Pod所在宿主机的目录,将被用于同期中mount的目录 secret: #类型为secret的存储卷,挂载集群与定义的secret对象到容器内部 scretname: string items: - key: string path: string configMap: #类型为configMap的存储卷,挂载预定义的configMap对象到容器内部 name: string items: - key: string path: string 在kubernetes中基本所有资源的一级属性都是一样的,主要包含5部分: ...

2024年01月19日 · 2 分钟 · 244 字 · 八戒

url中的字符转义

遇到个怪问题,设置http_proxy的时候有用户密码,命令如下: export http_proxy=http://user\2016:PmnQ 2016@192.168.0.1:3128 结果不生效,仔细观察上面的命令: 用户名其实是:“user\2016”,里面有个反斜杠\ 而密码是:“PmnQ 2016”,里面有个空格 这下麻烦了,命令过不去啊。 反复搜索找到了字符转义表,第一个图是可以安全转义的: 下面这张是不安全的: 转一下吧: \ 的16进制HEX是%5C,空格的16进制HEX是%20 最后的语法: export http_proxy=http://user%5C2016:PmnQ%202016@192.168.0.1:3128 搞定收工。

2024年01月19日 · 1 分钟 · 18 字 · 八戒

如何通过extundelete恢复删除文件

考古篇,记录下来,现在都是xfs了,但是方法不能忘啊! 恢复过程如下: 1、安装extundelete yum -y install e2fsprogs e2fsprogs-libs e2fsprogs-devel wget http://jaist.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 tar -jxvf extundelete-0.2.4.tar.bz2 cd extundelete-0.2.4 ./configure make make install 2、卸载要恢复的分区 如果你误删除的分区是/dev/sda2,那么首先需要umount 这个分区的挂载点 3、开始恢复 首先df -lh查看分区的使用情况,选择一个剩余空间足够容纳要恢复的文件大小的分区,例如你的/home分区剩余100G,你需要恢复的文件小于100G,那么你可以cd /home 然后进行恢复操作 cd /home 恢复单个文件或文件夹 extundelete /dev/mapper/vg_localhost-lv_home –restore-files 文件名 我是直接恢复整个分区 extundelete /dev/mapper/vg_localhost-lv_home –restore-all 然后会在当前目录生成一个恢复文件夹,进去找你要的文件就可以了

2024年01月19日 · 1 分钟 · 40 字 · 八戒

netcat的一些远程用法

一、远程传输文件压缩包 tar zcvf - /export/A0 | nc 192.168.86.5 8732 nc -l 8732 > A0.tar.gz 方向倒过来也是可以的,在服务端压缩文件 tar zcvf - /export/A0 | nc -l -p8732 nc 192.168.86.5 8732 > A0.tar.gz 二、远程传输整个目录 tar cvf - /export/A0 | nc 192.168.86.5 8732 nc -l 8732 | tar xvf - 三、远程备份分区到一个文件 dd if=/dev/sdb | gzip -c | nc 192.168.86.5 8732 nc -lp 8732 | dd of=/backup/sdb.img.gz 四、将远程分区备份文件拉到本地并恢复分区 cat /backup/sdb.img.gz | nc 192.168.86.5 8732 nc -lp 8732 | gunzip -c | sudo dd of=/dev/sdb

2024年01月19日 · 1 分钟 · 77 字 · 八戒

Linux下Screen乱码

很烦躁的问题,Terminal 终端是UTF8,显示无问题。 可是运行 screen 后就乱码,screen 后的 env 环境跟之前一样,完全无问题 解决方法如下: 在自己用户的.screenrc中加两句 defencoding utf-8 encoding utf-8 utf-8 得把环境变量带到screen中,才行。

2024年01月19日 · 1 分钟 · 16 字 · 八戒

jenkins中execute shell的注意事项

缺省jenkins的execute shell的方式是如下带着参数的: sh -xe hudsonxxx.sh 说明一下: -e 打开开关 表示一旦脚本中有命令的返回值为非0,则脚本立即退出,后续命令不再执行; +e 关上开关 -x 打开开关 表示执行指令后,会先显示该指令及所下的参数。 +x 关上开关 详细解释一下: set -e 表示一旦脚本中有命令的返回值为非0,则脚本立即退出,后续命令不再执行; set -x 表示执行指令后,会先显示该指令及所下的参数。 set -o pipefail 表示在管道连接的命令序列中,只要有任何一个命令返回非0值,则整个管道返回非0值,即使最后一个命令返回0. 注意在引用nvm以及meteor的环境中,要设置set +e 否则source nvm.sh的过程容易出错!

2024年01月19日 · 1 分钟 · 31 字 · 八戒

linux下如何在命令行下解析处理json文件

最近调试Elasticsearch比较多,老用curl来查看数据,pretty=on固然是好,可是如果要具体看传回来的json数据,还是不方便,另外如果想在shell里处理json格式,就不知道如何是好了。就被迫改用python了,有没有在shell下调试json的工具呢? 有,就是jq,安装so easy: wget http://stedolan.github.io/jq/download/linux32/jq (32-bit system) wget http://stedolan.github.io/jq/download/linux64/jq (64-bit system) chmod +x ./jq mv jq /usr/local/bin 给个json样本文件 cat google.json { "name": "Google", "location": { "street": "1600 Amphitheatre Parkway", "city": "Mountain View", "state": "California", "country": "US" }, "employees": [ { "name": "Michael", "division": "Engineering" }, { "name": "Laura", "division": "HR" }, { "name": "Elise", "division": "Marketing" } ] } 看上面,{}括起来的是对象,如果是[]括起来的就是数组了,nodejs要注意这一点,其实json是js的Object的子集。 获取对象: cat google.json | jq '.name' "Google" 获取嵌套对象: cat google.json | jq '.location.city' "Mountain View" 获取一个数组的值: cat google.json | jq '.employees[0].name' "Michael" 获取对象的多个字段: cat google.json | jq '.location | {street, city}' { "city": "Mountain View", "street": "1600 Amphitheatre Parkway" } 很简单吧,和curl结合起来,就可以在shell进行编程处理json文件了。 ...

2024年01月19日 · 1 分钟 · 139 字 · 八戒

linu下如何让mount显示的很整齐

如果单独执行mount命令,显示的会很杂乱: mount /dev/sda3 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) You have mail in /var/spool/mail/root 乱作一团,那么怎么让这些显示整齐一些呢? mount |column -t /dev/sda3 on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) 整齐多了,对吧。 ...

2024年01月19日 · 1 分钟 · 110 字 · 八戒