Linux系统环境下快速实现便捷查看服务日志

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

日志系统

  • linux系统如何查看日志?
查看日志命令有常用的tail、more、less、grep、cat等都能查看日志,各有千秋
1、tail命令带参数-f logfile  默认输出10行,可以指定输出行,同时可以使用|管道grep过滤日志
2、more/less用于分页查找日志
3、cat 不建议使用,假使日志文件过于庞大,则会出现卡死
4、grep多与上面的命令组合使用,过滤关键字日志信息
    -n  查询并输出关键字的信息的行号
    -i  忽略大小写
    -A  n:显示匹配到的字符串所在的行及其后n行,after
  -B  n:显示匹配到的字符串所在的行及其前n行,before
  -C  n:显示匹配到的字符串所在的行及其前后各n行,context
复制代码
  • 如何解决快速选择查看应用服务日志?
我们知道查看服务日志,一条命令:tailf logfile,
那要是一台服务器上部署了多个服务,该怎么办呢?
1、先别说搭建日志收集集成系统这些个大东西;
2、如果是利用工具,如xshell,将命令写好设置成快捷键亦不失为一种办法;
3、还可以在linux中使用alias设置别名,即将查看日志命令用一个简短明了的别名代替;
4、再还有就是我目前使用的方法,编写成shell脚本来进行选择查看应用服务日志。

#!/usr/bin/sh
echo "*******************************************"
echo "****    XXX后台服务日志查看系统     ****"
echo "*******************************************"
echo "****    目前可查看日志的服务有:        ****
****		1、基础服务            ****
****		2、用户服务            ****
****		3、XX服务  	       ****
****		4、XX服务	           ****
****		5、XX中心  	       ****
****		6、XX服务  	       ****
****		7、XX中心  	       ****
****输入非1-7之间的值,即可退出当前脚本****
*******************************************"
read -p "****请输入选择查看日志的服务序号,不输入行数(默认显示10行):" no line

# -z 判断string类型是否为空,空即真,进行赋值,非空为假
if [ -z $line ];then
   line=10
fi

while :
do
case $no in 
  1)echo "这是基础服务日志"
    tailf  yourfilenamepath.log
  ;;
  2)echo "这是用户服务日志"
    tailf  yourfilenamepath.log
  ;;
  3)echo "这是XX服务日志"
    tailf yourfilenamepath.log
  ;;
  4)echo "这是XX服务日志"
    tailf yourfilenamepath.log
  ;;
  5)echo "这是XX服务日志"
    tailf yourfilenamepath.log
  ;;
  6)echo "这是**服务日志"
    tailf yourfilenamepath.log
  ;;
  7)echo "这是**服务日志"
    tailf yourfilenamepath.log
  ;;
  *)echo "$no,服务编号不存在,请重新输入1-7之间正确的服务编号!"
   break 
  ;;
esac
done

复制代码
  • 为什么要有日志收集器?
以上办法总归不是大道,灵活性还需要二次开发
所以就需要资源解决方案:日志收集器(这里推荐elk)
可以一个平台收集多台多个服务的日志展现,并且进行分析
复制代码
  • 主流的日志系统有哪些?
业界解决方案ELK,其他的无非就是拼装,L换成FileBeat

其中ELasticsearch负责日志保存和搜索,Logstash负责收集日志,Kibana 负责界面
缺点:
• 运维成本高,每增加一个日志收集,都需要手动修改配置
• 监控缺失,无法准确获取logstash的状态
• 无法做定制化开发以及维护
换成F:
• 侵入低,无需修改程序目前任何代码和配置
• 相对于Logstash来说性能高,Logstash对于IO占用很大
复制代码
  • 自主系统集成日志系统?
优点:
• 定制化的开发和维护
• 运维成本低
• 能够监控本身的运行状态
相对于前两种系统开销最低
缺点:
• 成熟度相对前两种低,可拓展性差
• 需要额外的开发时间
复制代码
  • 那么为什么还要选择有缺点日志集成系统呢?没有答案,因为只在运维身上!