
linux
linux系统和shell
运维打怪晋级之路
2011毕业以后就从事运维工作的,从一名职场新手通过自己的学习和工作中的总结慢慢提升自己的专业技能,目前在一家互联网公司做运维架构师,主要负责公司阿里云的服务器和服务的运维工作,之前在亚信科技从事过业务维护工程师、自动化运维工程师、报表稽核开发工程师,2016年转为报表开发工程师,2018年跳槽到一家互联网公司做高级运维工程师,主要负责公司系统的运维架构以及系统安全,目前我在一家国企任职高级运维工程师。我在工作中有耐心,抗压力、爱折腾,喜欢研究自动化工具,喜欢写一些博客技术分享。擅长linux系统、shell脚本、python脚本、ELK系统、JAVA系统调优、docker、k8s等。
展开
-
解析阿里运维P7岗位面试的一道题
解析阿里运维P7岗位面试的一道题今年有幸同事推荐到阿里面试,岗位是流量事业部运维开始3面都很顺利评价也很高,到第四面交叉面的时候是一位P9的前辈,技术不用说了,直接是碾压我的那种,面试的时候问了一些方法论的问题,我答的不怎么样,最后他为了缓和气氛给我出了一道shell方面的题,第一个问题是如何查询文本中重复的记录,这个我答出来了,另个问题是直接给我一串字符串;例如str='ieuwugfuwgfugugfujdfjh’让我统计那个字符出现次数最多的字符,使用shell,当时一看感觉很容易不就是行转列吗,但原创 2020-06-07 07:47:12 · 2471 阅读 · 4 评论 -
docker安装jiacrontab可视化任务管理工具
简介:jiacrontab提供可视化界面的定时任务管理工具。允许设置每个脚本的超时时间,超时操作可选择邮件通知管理者,或强杀脚本进程。允许设置脚本的最大并发数。一台server管理多个client。每个脚本都可在server端灵活配置,如测试脚本运行,查看日志,强杀进程,停止定时…。允许添加脚本依赖(支持跨服务器),依赖脚本提供同步和异步的执行模式。友好的web界面,方便用户操作。脚本出错时可选择邮箱通知多人。原创 2023-03-21 17:18:26 · 1110 阅读 · 0 评论 -
如何实现自动化部署node-exporter监控主机
都会自动携带。今天我们来讨论一下node-exporter如何实现自动化安装,如果大家有更好的方案可以留言讨论。这里主要看一下shell脚本这块,脚本使用Jenkins+Ansible分发执行。2、使用Jenkins+Ansible+Shell自动化部署。3、使用Shenll半自动化部署。原创 2023-01-11 17:57:13 · 573 阅读 · 1 评论 -
linux命令将多行结果或者文件转换为一行
inux shell 将多行文件转换为一行如下三种方法:1. 采用awkawk BEGIN{RS=EOF}'{gsub(/\n/," ");print}' file说明:awk默认将记录分隔符(record separator即RS)设置为\n,此行代码将RS设置为EOF(文件结束),也就是把文件视为一个记录,然后通过gsub函数将\n替换成空格,最后输出。...原创 2016-02-11 21:35:55 · 4272 阅读 · 1 评论 -
在linux环境中将Excel转换成文本
在运维自动化过程中有这样的需求,有公司使用公共文档Excel维护信息,这些信息需要运维及时获取实现自动化任务,这些自动化任务以shell为例,shell不能直接操作Excel文档,需要将Excel转换成文本然后在解析和分析,我使用GO语言开发编译成二进制命令(之前的go编译文章可以参考 https://blog.youkuaiyun.com/qq_31555951/article/details/122177160),上传到服务器当命令使用。原创 2023-01-08 09:50:09 · 2280 阅读 · 2 评论 -
如何使用Prometheus监控主机node_exporter中删除9100只保留IP
在使用Prometheus监控主机时,使用node_exporter默认instance的值是主机IP地址和端口,我们在告警的时候使用instance时候有端口,很不方便,我在处理这个问题时是添加了一个主机IP字段。原创 2022-12-30 15:51:37 · 1260 阅读 · 0 评论 -
使用prometheus监控zookeeper集群
使用prometheus监控zookeeper集群1、踩过的坑1.1、部署docker监控其中一个节点[root@gtcq-gtmed-wm-public-02 local]# docker run -it -p 9141:9141 --name=zookeeper_exporter_m -d -v /etc/localtime:/etc/localtime carlpett/zookeeper_exporter -zookeeper 10.153.23.2:2181依次部署其它节点后发现.原创 2021-07-15 19:17:53 · 5092 阅读 · 4 评论 -
Grafana如何导出自己做的报表数据
Grafana如何导出自己做的报表数据原创 2021-09-02 11:04:08 · 13486 阅读 · 15 评论 -
kibana可视化统计_用户访问统计PV-IP-UV数据
kibana可视化统计_用户访问统计PV-IP-UV数据准备点击可视化->点击添加新建一个可视化New Visualization->选择Data Table选择索引如图:默认有个总数就是PV数:设置UV数:设置IP数:...原创 2020-03-26 15:17:50 · 9203 阅读 · 1 评论 -
golang程序打包成脚本部署到Linux系统
golang程序打包成脚本部署到Linux系统一、本地编译Golang程序本地代码://变量的作用域package mainimport "fmt"//单行注释//包级变量var packageVar string = "pachage var"func main(){ //函数级别的变量 var funVar string = "func var" fmt.Println(packageVar,funVar) /* 这是多行注释 以下是使用代码块功能 */..原创 2021-12-27 17:45:09 · 4521 阅读 · 0 评论 -
K8S容器缓存查看利器hcache的使用
缓存查看利器hcache的使用最近监控K8S的容器内存使用,发现有个容器一直在告警,此时说一下容器内存的监控,container_memory_working_set_bytes 容器使用内存 更能体现出mem usage,也是oom killer指标(建议使用),其实际组成为 RSS + Cache(最近访问的内存、脏内存和内核内存)。经查询是Cache使用的比较多,那么如何确认是那个缓存的导致的呢?使用容器缓存查看利器hcache完美解决。上传hcachehcache下载地址修改权限.原创 2021-09-13 18:02:32 · 2146 阅读 · 2 评论 -
linux文件已删除,但空间没有释放
linux文件系统问题问题原因一般说来不会出现删除文件后空间不释放的情况,但是也存在例外,比如文件被进程锁定,或者有进程一直在向这个文件写数据等等,要理解这个问题,就需要知道Linux下文件的存储机制和存储结构。一个文件在文件系统中的存放分为两个部分:数据部分和指针部分,指针位于文件系统的meta-data中,数据被删除后,这个指针就从meta-data中清除了,而数据部分存储在磁盘中,数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容,之所以出现删除文.原创 2021-08-31 08:44:04 · 1127 阅读 · 0 评论 -
crontab没有正常执行一次
异常情况磁盘告警,发现crontab没有正常执行一次,查询异常日志如下:[root@gtcq-gt-resource2-07 shell_script]# tailf /var/log/cronFeb 3 09:35:01 gtcq-gt-resource2-07 crond[86726]: (root) FAILED to open PAM security session (Permission denied)Feb 3 09:35:05 gtcq-gt-resource2-07 cront原创 2021-08-19 17:22:01 · 608 阅读 · 0 评论 -
Centos7升级OpenSSH到OpenSSH_8.0p1版本
Centos7升级OpenSSH到OpenSSH_8.0p1版本1、升级要求升级至openssl 1.1.1版本升级至openssh 8.0版本ssh -V 当前查看版本2、安装telnet (以防升级失败,连不上服务器,建议弄) 4 2020-11-01 16:34:22 rpm -qa | grep telnet 5 2020-11-01 16:34:24 rpm -qa | grep xinetd 6 2020-11-01 16:34:34.原创 2021-08-19 17:21:07 · 792 阅读 · 0 评论 -
Linux下删除乱码文件和目录的方法
方法1使用ls -i命令找到文件或目录的inode(i节点号)[root@gtcq-gt-monitor-prometheus-01 /]# ls -i 43012 " 64 boot 134217793 etc 402654488 home 82 lib64 134223423 mnt 1 proc 9767 run 402654489 srv 134217800 tmp 402653249.原创 2021-04-09 11:16:17 · 1375 阅读 · 1 评论 -
Grafana可视化工具-之仪表盘开发
Grafana可视化工具-之仪表盘如何开发1、仪表盘的一般配置2、仪表盘的变量设置使用正则处理获取的值3、仪表盘的曲线图一般配置指标配置定义坐标轴用于坐标轴和网格的显示方式,包括单位,比例,标签等图形设置Legend:查询结果美化勾选show则会显示右边的values勾选as table则会如图所示按table形式分别展示结果显示样式告警见之前的文档https://www.showdoc.com.cn/1086716137363617?page_id.原创 2021-03-25 15:55:25 · 3639 阅读 · 1 评论 -
Grafana可视化工具-之修改主题
Grafana可视化工具-之修改主题Grafana默认主题是黑色,将它修改成白色,其它需要第三方支撑修改配置文件[root@showdocserver opt]# vim /etc/grafana/grafana.ini\# Default UI theme ("dark" or "light");default_theme = dark在页面修改...原创 2021-03-24 14:53:57 · 7427 阅读 · 0 评论 -
Grafana可视化工具-之变量介绍
Grafana是很好的数据可视化工具,下面这篇文章是介绍Grafana变量知识点 Grafana变量说明:Grafana变量分四个部分General (常用)Query Options (查询选项)Selection Options(选择项)Value groups/tags (Experimental feature),Grafana还处在验证性的特征参考如下视图:分析这四部分的使用General (常用)Name(定义变量名称)Label(标签),在仪表盘上显示标.原创 2021-03-24 10:31:36 · 5074 阅读 · 2 评论 -
prometheus使用pushgateway监控网路丢包
监控网路丢包脚本[root@gtcq-gt-monitor-prometheus-01 ~]# timeout 50 ping -q -A -s 500 -W 1000 -c 1000 10.1.32.95|grep transmitted|awk '{print $6}'[root@gtcq-gt-monitor-prometheus-01 shell_script]# more icmp_gpu_monitor.sh #!/bin/bash####################.原创 2021-03-23 18:37:06 · 3127 阅读 · 3 评论 -
程序员如何读懂火焰图
#####1、 白话火焰图让我们回想一下我们一般是如何调试程序的,通常是在没有数据的情况下依靠主观臆断来瞎蒙,而不是考虑问题到底是什么引起的!毫无疑问,调优程序性能问题的时候,同样需要对症下药。好消息是 Linux 内核调优大师发明了火焰图,可以一针见血的指出程序的性能瓶颈,可以快速、准确地识别出最频繁的代码路径,但是很少人在使用火焰图。常见的火焰图类型有 On-CPU,Off-CPU,还有 Memory,Hot/Cold,Differential 等等。关于火焰图整个图形看起来就像一团跳动的火焰,这也原创 2021-03-19 18:15:06 · 4334 阅读 · 1 评论 -
C使用火焰图(FlameGraph)分析性能
安装yum install gityum -y install gccyum install perfgit clone git://github.com/brendangregg/FlameGraphecho 1 > /proc/sys/kernel/perf_event_paranoidecho 0 > /proc/sys/kernel/kptr_restrict编译C程序[root@localhost ~]# more test.c#include <stdio原创 2021-03-19 17:46:20 · 788 阅读 · 0 评论 -
java性能火焰图的生成
序言如果你经常遇到 Java 线上性能问题束手无策,看着线上服务 CPU 飙升一筹莫展,发现内存不断泄露满脸茫然。别慌,这里有一款低开销、自带火焰图、让你大呼好用的 Java 性能分析工具 - async-profiler。1、准备程序[root@localhost ~]# git clone git://github.com/jvm-profiling-tools/async-profiler[root@localhost async-profiler]# yum -y install gcc+原创 2021-03-19 17:44:59 · 1691 阅读 · 0 评论 -
Arthas-Java 问题定位的终极利器-快速入门
1、序言在使用 Arthas 之前,当遇到 Java 线上问题时,如 CPU 飙升、负载突高、内存溢出等问题,你需要查命令,查网络,然后 jps、jstack、jmap、jhat、jstat、hprof 等一通操作。最终焦头烂额,还不一定能查出问题所在。而现在,大多数的常见问题你都可以使用 Arthas 轻松定位,迅速解决,及时止战。2、Arthas 介绍Arthas 是 Alibaba 在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6+, 采用命令行交互模式,提供 Tab 自动不全原创 2021-03-18 18:18:43 · 258 阅读 · 0 评论 -
Linux通用性shell日志压缩脚本
1、说明通用性日志压缩脚本使用:需要专4个参数 第一个是处理那个目录 例如:/app/logs 、第二个是处理说明样的日志 例如:log 、第三个是处理几天之前的日志、第四个是处理压缩文件处理删除前几天的[root@gtcq-gt-resource2-01 app]# more /usr/local/shell_script/logs_compression.sh #!/bin/bash#######################################@brief 功能:1、日志压原创 2021-03-09 20:16:57 · 961 阅读 · 0 评论 -
Prometheus-监控主机基础指标配置及告警
1、监控主机指标这是一篇介绍主机使用Prometheus监控基础数据的文章,目前生产可用,使用的是node_exporter-0.18.1版本,操作系统是centos7.X版本,使用之前请修改job="gt-dwz-node-exporter"的值对应自己在Prometheus配置的job名称。2、Prometheus配置项在prometheus.yml配置文件中添加如下配置:############gt-dwz################# - job_name: "gt-dwz-node原创 2021-03-04 15:09:19 · 3502 阅读 · 4 评论 -
2020再见!2021我来了!
在繁忙的工作中不知不觉又迎来了新的一年,2020年这一年是有意义的、有价值的、有收获的。回顾这一年的工作历程,我要感谢身边的所有人,2020我的成绩原创 2021-02-11 23:33:38 · 349 阅读 · 0 评论 -
运维监控体系
原创:https://www.processon.com/view/link/5f49dad3e401fd14b2242a06 密码367300原创 2021-01-27 17:09:08 · 1107 阅读 · 1 评论 -
云上添加虚拟机磁盘挂载
添加虚拟机磁盘挂载添加虚拟机磁盘挂载,需要注意虚拟重启后磁盘挂载不丢失;df -h发现没有提供的1T的磁盘fdisk -l查看那块磁盘没有挂载说明:以上可以发现是/dev/vdb磁盘格式化[root@gt-devops-codeversion-git ~]# mkfs -t ext4 /dev/vdbmke2fs 1.42.9 (28-Dec-2013)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment原创 2020-07-28 09:59:47 · 535 阅读 · 0 评论 -
centos7安装简易的单机版open-falcon
1、centos7安装单机版open-falconyum安装redisip 10.36.39.2yum install -y redis #yum安装vi /etc/redis.conf #修改配置文件添加 bind 0.0.0.0redis-server & #后台启动redisyum安装mysql5.7wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpmrpm -ivh mysql-com原创 2020-07-27 14:22:17 · 403 阅读 · 0 评论 -
linux命令find 语法
1、find 语法find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示find(选项)(参数)根据文件或者正则表达式进行匹配在/home目录下查找以.txt结尾的文件名find /home -name “*.txt”同上,但忽略大小写find /home -iname “*.txt”当前目录及子目录下查找所有以.txt和.pdf结尾的文件原创 2020-07-06 10:25:57 · 667 阅读 · 0 评论 -
CentOS7上MySQL返回 Too many connections
CentOS7上MySQL5.7返回 Too many connectionscentos7系统中数据库连接报Too many connections,查了网上一些文章,直接改/etc/my.cnf加入max-connections=3000,无果。在mysql里输入set GLOBAL max-connections=3000,数值是变了但没有用。最后发现是CentOS7的systemd限制了服务进程的NOFILE,导致每次启动mysql服务后,查询max-connections一直是214,这个数原创 2020-07-02 17:30:21 · 1358 阅读 · 2 评论 -
如何正确理解CPU使用率和平均负载的关系
序言CPU是计算机系统的运算和控制核心是信息处理、程序运行的最终执行单元,相当于系统的“大脑”。当 CPU 过于繁忙,就像“人脑”并发处理过多的事情,会降低做事的效率,严重时甚至会导致崩溃“宕机”。因此,理解 CPU 的工作原理,合理控制负载,是保障系统稳定持续运行的重要手段。CPU 的物理核与逻辑核一台机器可能包含多块 CPU 芯片,多个 CPU 之间通过系统总线通信。超线程(Hype...原创 2020-03-25 17:52:04 · 799 阅读 · 0 评论 -
linux shell中,单引号、 双引号,反引号(``),$()的区别
一、单引号和双引号 首先,单引号和双引号,都是为了解决中间有空格的问题。 空格在linux中时作为一个很典型的分隔符,比如string1=this is a string,这样执行会报错。为了避免这个问题,因此就产生了单引号和双引号。他们的区别在于,单引号将剥夺其中的所有字符的特殊含义,而双引号中的'$'(参数替换)和'`'(命令替换)是例外。所以...原创 2016-10-08 16:09:52 · 121 阅读 · 0 评论 -
docker技术谁主沉浮
作者:京哥 docker技术介绍1、docker改变了什么?环境 192.168.29.157面向产品:产品交互面向开发:简化环境配置面向测试:多版本测试面向运维:环境一致性面向架构:自动化扩容缩容(微服务)2、docker的安装安装yum源 由于自带 yum 没有 Docker-CE 所以我们需要先增加 docker repo:yum-config-manager --add-repo https://download.docker.com/linux/centos/.原创 2020-06-15 10:51:22 · 1893 阅读 · 1 评论 -
linux如何让vim编辑器永久显示行号
在Linux环境下的编辑器有vi、vim、gedit等等。进入这些编辑器之后,为了方便我们需要编辑器显示出当前的行号,可偏偏编辑器默认是不会显示行号的。我们有二种办法可以解决: 第一种是,手动显示:在vim命令行模式下输入 :set nu 取消显示:在vim命令行模式下输入: set non...原创 2017-06-05 17:03:14 · 469 阅读 · 0 评论 -
把shell参数传递给sqlplus
把shell参数传递给sqlplus如下:[lcecs@BJ-ECS-XHM-3F02-LCHT-06 ftpphone]$ step_one=`sqlplus -S UCRXX/fXXXX@ECXX<> set heading off ...原创 2017-10-26 16:58:30 · 514 阅读 · 1 评论 -
linux下tar.gz、tar、bz2、zip等解压缩、压缩命令自己总结
Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩了,所以首先就来讲讲tar命令的基本用法: tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面来举例说明一下: # tar -cf all.tar *....原创 2018-03-02 17:01:56 · 150 阅读 · 0 评论 -
shell 判断文件、目录是否存在
1. shell判断文件,目录是否存在或者具有权限2. #!/bin/sh3.4. myPath="/var/log/httpd/"5. myFile="/var /log/httpd/access.log"6.7. # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限8. if [ ! -x "$myPath"]; t...原创 2018-03-02 17:09:13 · 312 阅读 · 0 评论 -
shell重定向输出说明
*/3 * * * * root /usr/local/ping.sh 1> /dev/null 2>&11>标准输出2>错误输出其中1>/dev/null就是输出到空设备(即不输出,1>可以省略为>)这里2>后面的&1就是2>与1>相同写成1> /dev/null 2&g...原创 2018-03-02 17:09:30 · 159 阅读 · 0 评论 -
crontab启动shell脚本的环境变量问题
问题描述:crontab中启动的shell脚本不能正常运行,但是使用手动执行没有问题,在$home/.profile中设定了脚本所需要的环境变量。cron命令的默认shell是/bin/sh,如果要在cron启动的脚本中使用ksh,就必须在脚本中的第一行添加“!/bin/sh”的声明。如果cron进程启动的shell脚本设置了用户登录时的环境变量,就必须在cron启动...原创 2018-03-02 17:16:49 · 715 阅读 · 0 评论