Linux日志终极指南-天天速递
首先我们会演示,你应该如何使用不同的工具在命令行进行日志分析;然后,演示一个日志管理工具,它能够让大多数乏味的工作变得自动化和高效。
Linux 日志分析
(相关资料图)
虽然提取的时候,不总是和你想的一样简单,但是日志中有大量信息在等着你。在这部分,我们会讲一些基本分析示例,你可以马上拿来处理你的日志(只是搜索里面有什么)。我们还会讲一些高级分析方法,开始的时候可能要花时间来做配置,但会为以后省很多时间。你可以把高级分析的示例用在待解析的数据上,比如生成摘要计数,过滤字段值等。
首先我们会演示,你应该如何使用不同的工具在命令行进行日志分析;然后,演示一个日志管理工具,它能够让大多数乏味的工作变得自动化和高效。
使用 Grep 搜索
搜索文本是找到你想要的信息的最基本方法。搜索文本最常用的工具是 grep 。这个命令行工具,大多数 Linux 发行版上都有,它支持你用正则表达式来搜索日志。正则表达式是一种用专门语言写成的语句,可用来识别匹配文本。最简单的正则表达式是把你搜索的字符串加上引号。
正则表达式
这里有个例子,它在 Ubuntu 的认证日志里搜索 “user hoover”:
$GREP"USERHOOVER"/VAR/LOG/AUTH.LOGACCEPTEDPASSWORDFORHOOVERFROM10.0.2.2PORT4792SSH2PAM_UNIX(SSHD:SESSION):SESSIONOPENEDFORUSERHOOVERBY(UID=0)PAM_UNIX(SSHD:SESSION):SESSIONCLOSEDFORUSERHOOVER
构造精确的正则表达式很难。例如,假设我们搜索一个数字,比如端口号“4792” ,它也可以匹配时间戳,URLs和其他不需要的数据。在下面针对 Ubuntu 的例子里,它匹配了 Apache 日志,但这并不是我们想要的。
$grep"4792"/var/log/auth.logAcceptedpasswordforhooverfrom10.0.2.2port4792ssh274.91.21.46--[31/Mar/2015:19:44:32+0000]"GET/scripts/samples/search?q=4972HTTP/1.0"404545"-""-”
延伸搜索
另一个有用的技巧是你可以用grep 做延伸搜索。它会输出匹配项的前几行和后几行内容。它可以帮你调试是什么导致了错误或问题。B 选项指定显示匹配项前面的行数,A 选项指定显示匹配项后面的行数。如下所示,我们看到,当有人以 admin 身份登陆失败后, 反向映射也会失败,这说明他们可能没有有效的域名。这很可疑!
$grep-B3-A2"Invaliduser"/var/log/auth.logApr2817:06:20ip-172-31-11-241sshd[12545]:reversemappingcheckinggetaddrinfofor216-19-2-8.commspeed.net[216.19.2.8]failed-POSSIBLEBREAK-INATTEMPT!Apr2817:06:20ip-172-31-11-241sshd[12545]:Receiveddisconnectfrom216.19.2.8:11:ByeBye[preauth]Apr2817:06:20ip-172-31-11-241sshd[12547]:Invaliduser;adminfrom216.19.2.8Apr2817:06:20ip-172-31-11-241sshd[12547]:input_userauth_request:invaliduseradmin[preauth]Apr2817:06:20ip-172-31-11-241sshd[12547]:Receiveddisconnectfrom216.19.2.8:11:ByeBye[preauth]
Tail命令
你也可以将 tail 和 grep 搭配起来使用,以获取文件***几行,或者跟踪日志并实时打印。当你在进行交互式更改比如架设服务器或测试代码更改的时候,非常有用。
$tail-f/var/log/auth.log|grep"Invaliduser"Apr3019:49:48ip-172-31-11-241sshd[6512]:Invaliduserubntfrom219.140.64.136Apr3019:49:49ip-172-31-11-241sshd[6514]:Invaliduser;adminfrom219.140.64.136
全面介绍 grep 和正则表达式超出了本文的范围,Ryan 的教程里有更深入的介绍。
日志管理系统中有更高效更强大的搜索工具。它们通常对数据建立索引和并行查询,因此你可以在数秒之内快速查询高达 G 字节或 T 字节的日志。相比之下,用 grep ,可能要花几分钟,极端情况下会花费数小时。日志管理系统也像 Lucene (译注:一个开源的全文检索引擎工具包)一样使用查询语言 ,它为数字,字段等的搜索提供了简单的语法。
用Cut,AWK 和 Grok 解析日志
命令行工具
Linux 提供了几种文本解析和分析的命令行工具。如果你想快速解析少量的数据,它们很强大,但是处理大量数据要花很长时间。
Cut 命令
cut 命令可以从带分隔符的日志中解析字段。分隔符是类似等号或逗号的字符,用来划分字段或键值对。
比如说,我们想从这个日志中提取用户名:
pam_unix(su:auth):authenticationfailure;logname=hooveruid=1000euid=0tty=/dev/pts/0ruser=hooverrhost=user=root
我们可以和下面一样使用 cut 命令,获取第八个等号后边的文本。这是 Ubuntu 上的例子:
$grep"authenticationfailure"/var/log/auth.log|cut-d"="-f8roothooverrootnagiosnagios
AWK 命令
此外,你还可以用 awk,它拥有更强的解析字段的功能。它提供了一个脚本语言,让你几乎可以过滤出任何毫不相关的信息。
举个例子,假设我们在 Ubuntu 上有如下的日志,我们想提取登陆失败的用户名:
Mar2408:28:18ip-172-31-11-241sshd[32701]:input_userauth_request:invaliduserguest[preauth]
下面是使用 awk 的例子。首先,用一个正则表达式 /sshd.*invalid user/ 匹配 sshd 无效用户的那一行。然后使用 { print $9 } 打印第九个字段(默认的分隔符是空格)。这样就输出了用户名。
$awk"/sshd.*invaliduser/{print$9}"/var/log/auth.logguestadmininfotestubnt
你可以从 Awk 用户指南中获取更多关于如何使用正则表达式和打印字段的信息。
日志管理系统
日志管理系统让解析更容易并且让用户可以快速分析大量日志文件。它们可以自动解析标准日志格式,比如公共 Linux 日志或 web 服务日志。这会节省很多时间,因为你在定位系统问题的时候不用去想如何写你的解析逻辑。
这里你可以看一个来自 sshd 的日志信息,解析出了远程主机和用户字段。这个截图来自 Loggly,一个基于云计算的日志管理服务。
对非标准格式的日志,你也可以自定义解析规则。最常用的工具是 Grok,它用通用正则表达式库把纯文本解析成 JSON 格式。这是 Grok 的配置示例,用来解析 Logstash 的内核日志 :
filter{grok{match=>{"message"=>"%{CISCOTIMESTAMP:timestamp}%{HOST:host}%{WORD:program}%{NOTSPACE}%{NOTSPACE}%{NUMBER:duration}%{NOTSPACE}%{GREEDYDATA:kernel_logs}"}}
这是用 Grok 解析后输出的结果:
使用 Rsyslog 和 AWK 过滤
过滤是搜索特定的字段,而不是全部文本。这让你的日志分析更精确,因为它会忽略其他不需要的日志信息。为了搜索一个字段值,你需要先解析你的日志或者至少有一种基于事件结构的搜索方法。
如何筛选出同一个应用的日志
通常,你只想看来自同一个应用的日志。如果你的应用总是把日志记录在单个文件中,这样很容易分析。如果你要从聚合或集中起来的日志里筛选出和某个程序相关的日志,会很复杂。这里有几种解决的办法。
用 Rsyslog 服务解析和过滤日志。这个例子是将 sshd 应用程序的日志写入名为 sshd-messages 的文件中,然后丢弃事件,所以它不会在其他日志里重复出现。你可以把它加到你的 Rsyslog.conf 文件里试一下。
:programname,isequal,“sshd”/var/log/sshd-messages&~
使用命令行工具比如 awk ,提取特定字段的值,比如取 sshd 用户名。这是 Ubuntu 上的例子。
$awk"/sshd.*invaliduser/{print$9}"/var/log/auth.logguestadmininfotestubnt
使用日志管理系统自动解析你的日志,然后点击目标应用的名字进行过滤。这个截图显示了 syslog 的各个字段,在一个叫做 Loggly 的日志管理服务中。如图中文氏图所示,当前正在过滤 sshd 这个应用。
如何筛选出错误信息
最常见的事情是,人们想看到日志中的错误。不巧的是,默认的 syslog 配置不会直接输出错误的级别,这使得错误信息很难被筛选。
这里有两种方案来解决这个问题。首先,你可以修改 rsyslog 配置,让它输出级别到日志文件中,使得错误信息容易被读取和搜索。在你的 Rsyslog 配置中你可以加一个pri-text 模版,如下所示:
"<%pri-text%>:%timegenerated%,%HOSTNAME%,%syslogtag%,%msg%n"
这个例子的输出如下,可以看到级别是 err。
:Mar1118:18:00,hoover-VirtualBox,su[5026]:,pam_authenticate:Authenticationfailure
你可以用 awk 或grep 筛选出错误信息。这是 Ubuntu 下的例子,我们加了开始结束标志 . 和 > ,这样它就只匹配这个字段。
$grep".err>"/var/log/auth.log:Mar1118:18:00,hoover-VirtualBox,su[5026]:,pam_authenticate:Authenticationfailure
第二种选择是使用日志管理系统。好的日志管理系统会自动解析 syslog 消息并提取出级别字段。只需点一下,就会按指定的级别筛选日志。
这是 Loggly 的截图。显示了 syslog 各个字段, Error 级别高亮显示了,说明正在按级别 Error 过滤
标签:
- 黄山提升政府采购透明度 助力实体经济持续健康稳定发展
- 1-2月黄山新签“双招双引”项目103个 总投资额139.7亿元
- 池州海关共签发RCEP原产地证书22份 签证金额92.7万美元
- 宿州泗县深入推进文旅融合发展 擦亮城市品牌
- 河北工业生产平稳开局 固定资产投资较快增长
- 昆明西山区深入实施人才强区战略 建立健全招商招才引资并轨新模式
- 2月唐山新建商品住宅销售价格与上月持平 同比下降0.8%
- 去年河北电子信息产业实现主营业务收入2367.7亿元 同比增长22.4%
- 绥化望奎以工业化思维为引领 推动肉类加工制造产业腾飞
- 绥化市监局推出多项举措 大力促进有机产品产业发展
- 半路出家无心插柳 杭州西湖区“菌菇宝宝”变废为宝
- 温州鹿城区藤桥主打藤桥熏鸡 近两年销售额年均增长20%以上
- 1-2月安徽限额以上消费品零售额1030.4亿元 同比增长10.4%
- 2021年合肥市茶园面积13.6万亩 产值176350万元
- 淡季不忘引流 京郊民宿市场将很快迎来回暖
- 郴州安仁文旅项目集中开工 总投资1000万元
- 江苏服务业继续保持发展强劲势头 为高质量发展提供有力支撑
- 黄山休宁经开区摸排基础设施项目17个 计划总投资29709万元
- 前两个月宣城出口31亿元 增长34.4%
- 滁州凤阳2021年共接待游客225万人次 旅游综合收入20.25亿元
- 1-2月宿州市民间投资同比增长19.2% 居全省第3位
- 宿州严格审核把关 抢抓发行地方政府专项债券政策机遇
- 1-2月亳州市进出口总值5.5亿元 同比下降17.4%
- 合肥:弘扬茶文化 初步形成一条生态发展之路
- 合肥:建成“数字中国”领先城市 推进城市数字化转型
- 甘肃再续“艾黎情”:探职业教育德技并修
- 【城市守望者】致敬抗“疫”一线的“拆弹专家”
- 浙江绍兴越城区核酸检测结果公布 除1例阳性外其余均为阴性
- 内地首例奥密克戎变异株感染者身体状况如何?来自哪里?专家解读→
- 对变异病毒已有准备!关于中国新冠药物,钟南山发声→
- 江苏睢宁小网格大担当 织就乡村振兴“幸福网”
- 改造老旧小区 共享幸福生活
- 天津静海:群众在哪里,文明实践就延伸到哪里
- 齐齐哈尔:初步判断疫情感染来源为接触新冠病毒污染环境和物品
- 重庆大竹林派出所副所长因对群众态度简单粗暴被停职
- 黑龙江讷河病例感染源初步判断为新冠病毒污染的环境和物品
- 致敬2021
- 浙江瑞安民警捐献造血干细胞:14年前的心愿终将如愿
- “考研房”涨价离谱 律师:借机宰客有违市场伦理
- 广州白云机场:14天内有东莞旅居史的旅客须凭48小时核酸阴性证明乘机
- 浙江绍兴本轮疫情已报告确诊病例145例 无症状感染者1例
- 福建龙岩一男子和前妻斗气 扛着126斤硬币到法院“还钱”
- 重庆这座立交酷似“悟空” 走红 设计师揭秘(图)
- 青海警方破获特大电诈案 涉案流水高达1.7亿
- 云南新增境外输入确诊病例3例
- 黑龙江讷河市5名核酸阳性人员流调溯源:接触被新冠病毒污染的环境和物品
- 男子爱上女主播 假扮女主播闺蜜教其他男粉丝刷单
- 广西三市警方联手破获毒品案 全链条摧毁跨境贩毒团伙
- 广东东莞发现2例无症状感染者,部分镇今起全员筛查
- 从百二秦关到闻道凯旋 一个殉职医生最后的朋友圈
- 浙江发补充说明:三地铁路出行政策随风险等级同步调整
- 内蒙古新增本土确诊病例5例 均在呼伦贝尔满洲里市
- 陕西新增本土确诊病例1例 系隔离酒店工作人员
- 31省份新增新冠肺炎确诊病例76例 其中本土51例
- 浙江新增新冠肺炎确诊病例45例 其中本土44例
- 技能就是财富 技工也是人才
- 黑龙江新增本土确诊病例1例、本土无症状感染者4例
- 冷空气“调休”!我国大部陆续迎回暖 中东部雨雪稀少
- 华北黄淮等地大气扩散条件转差 冷空气将影响中东部
- 别误读了野猪或将不再是“三有”动物
- 您的ETC已到期?当心这个诈骗短信!
- 对回家的“宝贝”少一些关注,也是一种帮助
- 升温!北京今日阳光在线 最高气温将升至8℃
- 那年今日 | 一张漫画涨知识之12月14日
- 40岁男子一觉醒来突然听不见了 原因是……
- 本年度星空压轴大赏上演 双子座流星雨观赏地图来了
- 广东东莞大朗镇报告2例新冠肺炎无症状感染者
- 商丘4885份被盗出生证去哪了?10年“悬案”引关注
- 浙江海宁警方通报国家公祭日女子穿和服逛街
- 厨艺不精调料凑?懒人调料:年轻人的“下厨神器”
- “您的ETC已到期?”警方提醒:当心这个诈骗短信
- “网红”局长的热度 自述:走红后我就没有周末了
- 寻回被拐10年的儿子后又送走 儿子:害我没家了
- 小城里的三张面孔和警号301137
- 倡导“就地过年”,需因地制宜科学防疫
- 别用“入乡随俗”为星巴克找借口
- 北京地铁14号线年底全线贯通运营
- 天津市从入境人员中检出奥密克戎变异株
- “外滩活地图”黄俊:一个不想出圈的段子手交警
- 寻找一双儿女的25年
- 无锡市场监管部门责成星巴克涉事门店停业整改
- 海岛警事:为了一座岛和2900平方公里的海
- 北京民警宏福苑抗疫26天:“今夜我和雪花一起出发”
- 星巴克的“金标准”缘何败给了“潜规则”
- 患者被低价药“惊呆”的场面应该更多些
- 影视剧“超前点评”不止是“低级错误”
- “南昌鹦鹉案”下发不起诉决定书 网店上架费氏牡丹鹦鹉被拒
- 河南商丘4885份出生医学证明被盗始末追踪
- 绍兴市病例62-109活动轨迹公布
- 12月7日以来,杭州累计报告新冠肺炎确诊病例19例
- 浙江绍兴新增确诊病例37例 上虞区占36例
- 河南高院对张成功案作出死刑判决
- 四川一滑雪场停电游客被困索道 官方回应
- 浙江绍兴越城区新增1例新冠肺炎确诊病例 当地对防控区域划分进行调整
- 中国内地首次检出新冠病毒奥密克戎变异株
- 知网除了涉及著作权纠纷,是否涉嫌违反《反垄断法》?
- 浙江绍兴越城区新增1例新冠肺炎确诊病例
- 四川眉山千箱柑橘送往呼和浩特市抗疫一线
- 两名青年男女探险三亚落笔洞遗址被困沼泽 消防成功救援
- 中国地理学大会在福州发布《中国地理学界碳中和科技行动福州宣言》
广告
广告
- 各地高考分数线最新汇总!填报志愿,这些问题要注意-全球快看点
- 深圳龙华:文化润城成为一抹亮丽的民生底色_热头条
- 动态:双缴存人公积金贷款最高100万元,房贷利率最低降至3.7%,7月1日起扬州施行最新楼市政策
- 天水小陇山:林区生态保护改善
- 钛镁合金门图片(钛镁合金)|环球热讯
- 环球观热点:每个液化石油气瓶都要排查到位 四川省全面开展燃气安全专项排查整治
- 适合无聊打发时间的pk游戏分享 随便打打就能赢的竞技类手游推荐|最新
- 异界矿工txt(异界矿工)|全球热资讯
- 大美中国夏日潋滟无限好 湖光山色展风韵
- 迷路老人操闽北口音沟通难,民警多番找“翻译”助她找到家
- 建业地产:公司正常运营,未收到任何加快境外还款通知 即时
- 不知天上宫阙今夕是何年歌曲(不知天上宫阙今夕是何年)
- 环球看点!2023蚂蚁庄园6月25日答案2
- 桥梁倒塌致美国一火车脱轨,石油燃料泄漏至河中-全球通讯
- 慈禧太后电影完整版国语(慈禧太后电影完整版)|环球热推荐
- 谷草转氨酶偏低谷草谷丙比值偏高_谷草转氨酶偏低有事吗-每日视点
- 苹果充值退款网址链接入口_苹果充值退款网址
- 热推荐:华硕a8t是哪一年产的_华硕a8j是哪一年生产的
- 吊环图片情趣_吊环图片cad
- 全球微头条丨越南多乐省警局遇袭案中75人因涉嫌参与恐袭接受调查