Linux体系日志管理服务和配置

瑞星  金牌会员 | 2025-2-19 08:33:32 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 954|帖子 954|积分 2862

Linux体系日志服务

虽然运行在Linux体系上的各个服务都有本身的日志体系 ,如redis,nginx,mysql等,它们各自的日志都只是单独记录了它们自身服务的运行状况。假如这些服务自身宕掉了或起不来了该去查看什么日志呢?此时就需要去看Linux的体系日志了。


Linux体系日志记录着Linux本身和运行在Linux体系上各种应用服务的事件和运行信息,它就是Linux体系的公用日志服务。
  1. 日志记录的内容包括:
  2.   1.历史事件: 时间,地点,人物,事件
  3.   2.日志级别: 事件的关键性程度,Loglevel
复制代码
rsyslog

rsyslog是CentOS6版本以后的体系管理服务,它提供了高性能,精彩的安全性和模块化计划。尽管rsyslog最初是常规的syslogd,但已发展成为一种瑞士军刀式的记录工具,能够接受来自各种来源的输入,并将其转换,然后输出到不同的目标地。
当应用有限的处置惩罚时,rsyslog每秒可以将超过一百万的消息传递到本地目标地。纵然在远程目标地和更精致的处置惩罚中,性能通常也被以为是“惊人的"。
官方网站:https://www.rsyslog.com/
rsyslog是linux的标配,linux体系一装好就有。

  1. rsyslog特性
  2.   1.多线程
  3.   2.UDP,TCP,SSL,TLS,RELP
  4.   3.MySQL, PGSQL, Oracle实现日志存储
  5.   4.强大的过滤器,可实现过滤记录日志信息中任意部分
  6.   5.自定义输出格式
  7.   6.适用于企业级中继链
复制代码
rsyslog是单机日志,假如未来涉及到分布式集群等日志分析时,就需要使用到ELK架构了。
ELK: 是由Elasticsearch, Logstash, Kibana三个软件构成的非关系型分布式数据库。
  1. ELK
  2.   1.基于apache软件基金会jakarta项目组的项目lucene;
  3.   2.Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能;
  4.   3.Logstash对日志进行收集、分析,过滤,并将其存储供以后使用Kibana可以提供的日志分析友好的Web界面。
复制代码
CentOS中rsyslog的详细信息
  1. [root@centos8 ~]# rpm -qi rsyslog
  2. Name        : rsyslog
  3. Version     : 8.1911.0
  4. Release     : 7.el8
  5. Architecture: x86_64
  6. Install Date: Sun 12 Nov 2023 10:29:14 AM CST
  7. Group       : System Environment/Daemons
  8. Size        : 2431186
  9. License     : (GPLv3+ and ASL 2.0)
  10. Signature   : RSA/SHA256, Fri 11 Dec 2020 11:38:51 PM CST, Key ID 05b555b38483c65d
  11. Source RPM  : rsyslog-8.1911.0-7.el8.src.rpm
  12. Build Date  : Thu 10 Dec 2020 11:01:43 AM CST
  13. Build Host  : x86-02.mbox.centos.org
  14. Relocations : (not relocatable)
  15. Packager    : CentOS Buildsys <bugs@centos.org>
  16. Vendor      : CentOS
  17. URL         : http://www.rsyslog.com/
  18. Summary     : Enhanced system logging and kernel message trapping daemon
  19. Description :
  20. Rsyslog is an enhanced, multi-threaded syslog daemon. It supports MySQL,
  21. syslog/TCP, RFC 3195, permitted sender lists, filtering on any message part,
  22. and fine grain output format control. It is compatible with stock sysklogd
  23. and can be used as a drop-in replacement. Rsyslog is simple to set up, with
  24. advanced features suitable for enterprise-class, encryption-protected syslog
  25. relay chains.
复制代码
ubuntu中rsyslog软件包的详细信息
  1. root@ubuntu:~# dpkg -s rsyslog
  2. Package: rsyslog
  3. Status: install ok installed
  4. Priority: important
  5. Section: admin
  6. Installed-Size: 1655
  7. Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
  8. Architecture: amd64
  9. Version: 8.2001.0-1ubuntu1.3
  10. Provides: linux-kernel-log-daemon, system-log-daemon
  11. Depends: libc6 (>= 2.27), libestr0 (>= 0.1.4), libfastjson4 (>= 0.99.7), libsystemd0 (>= 209), libuuid1 (>= 2.16), zlib1g (>= 1:1.1.4), adduser, ucf
  12. Pre-Depends: init-system-helpers (>= 1.54~)
  13. Recommends: logrotate
  14. Suggests: rsyslog-mysql | rsyslog-pgsql, rsyslog-mongodb, rsyslog-doc, rsyslog-openssl | rsyslog-gnutls, rsyslog-gssapi, rsyslog-relp, apparmor (>= 2.8.96~2541-0ubuntu4~)
  15. Conflicts: linux-kernel-log-daemon, system-log-daemon
  16. Conffiles:
  17. /etc/apparmor.d/usr.sbin.rsyslogd 88fe4a6a37a5cbb88fcadf1e564874c2
  18. /etc/init.d/rsyslog bd41a0654a192d74dfb9c551b06fa855
  19. /etc/logcheck/ignore.d.server/rsyslog 80e9fc074b97751dd4de99855bb8d0e0
  20. /etc/logrotate.d/rsyslog 8159203bf98416c898849057f585e31f
  21. /etc/rsyslog.conf 8f03326e3d7284ef50ac6777ef8a4fb8
  22. Description: reliable system and kernel logging daemon
  23. Rsyslog is a multi-threaded implementation of syslogd (a system utility
  24. providing support for message logging), with features that include:
  25.   * reliable syslog over TCP, SSL/TLS and RELP
  26.   * on-demand disk buffering
  27.   * email alerting
  28.   * writing to MySQL or PostgreSQL databases (via separate output plugins)
  29.   * permitted sender lists
  30.   * filtering on any part of the syslog message
  31.   * on-the-wire message compression
  32.   * fine-grained output format control
  33.   * failover to backup destinations
  34.   * enterprise-class encrypted syslog relaying
  35. .
  36. It is the default syslogd on Debian systems.
  37. Homepage: http://www.rsyslog.com/
  38. Original-Maintainer: Michael Biebl <biebl@debian.org>
复制代码
  1. root@ubuntu:~# dpkg -L rsyslog
  2. /etc
  3. /etc/apparmor.d
  4. ...
  5. /etc/init.d
  6. /etc/init.d/rsyslog
  7. /etc/logcheck
  8. ....
  9. /etc/logrotate.d
  10. /etc/logrotate.d/rsyslog
  11. /etc/rsyslog.conf
  12. /etc/rsyslog.d
  13. /lib
  14. /lib/systemd
  15. /lib/systemd/system
  16. /lib/systemd/system/dmesg.service
  17. /lib/systemd/system/rsyslog.service
  18. /usr
  19. /usr/lib
  20. /usr/lib/rsyslog
  21. ....
  22. /usr/sbin
  23. /usr/sbin/rsyslogd
  24. /usr/share
  25. /usr/share/doc
  26. /usr/share/doc/rsyslog
  27. ....
  28. /usr/share/man
  29. /usr/share/man/man1
  30. ....
  31. /usr/share/rsyslog
  32. /usr/share/rsyslog/50-default.conf
  33. /var
  34. /var/spool
  35. /var/spool/rsyslog
复制代码
日志分类facility

facility:设施,从功能或步伐上对日志进行归类
  1. #内置分类
  2. auth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security(auth), user, uucp, syslog
  3. #自定义的分类
  4. local0-local7
复制代码
Priority 优先级别,从低到高排序
  1. debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)
复制代码
参看资助: man 3 syslog,man logger
  1. [root@centos8 ~]#yum -y install man-pages
  2. [root@centos8 ~]#man 3 syslog
复制代码
man syslog

rsyslog相关文件


vim /etc/rsyslog.conf
  1. # Log anything (except mail) of level info or higher.
  2. # Don't log private authentication messages!
  3. *.info;mail.none;authpriv.none;cron.none                /var/log/messages
  4. # The authpriv file has restricted access.
  5. authpriv.*                                              /var/log/secure
  6. # Log all the mail messages in one place.
  7. mail.*                                                  -/var/log/maillog
  8. # Log cron stuff
  9. cron.*                                                  /var/log/cron
  10. # Everybody gets emergency messages
  11. *.emerg                                                 :omusrmsg:*
  12. # Save news errors of level crit and higher in a special file.
  13. uucp,news.crit                                          /var/log/spooler
  14. # Save boot messages also to boot.log
  15. local7.*                                                /var/log/boot.log
复制代码

/var/log/message

由配置文件,我们可以看出体系的主要日志是记录在“/var/log/messages”里的
  1. *.info;mail.none;authpriv.none;cron.none                /var/log/messages
复制代码
当我开启httpd服务时,/var/log/message日志里也会有httpd服务的相关信息记录

重启失败分析


那我们就去45行找错误
  1. vim +45 /etc/httpd/conf/httpd.conf
复制代码


/var/log/secure

/var/log/secure里记录着远程登录信息,又记录着用户授权信息auth和privilege

1.远程登录信息

2.用户授权信息

/var/log/secure是个需要经常关注的日志文件,它记录者远程登录的ip,是否有人不停在尝试登录密码。
自定义日志输出路径

1.修改sshd_config配置文件

SyslogFacility

2.修改rsyslog.conf

主配置文件中可包罗子配置文件,于是我们单独自定义一个子配置文件sshd.config

  1. [root@rocky ~]# vim /etc/rsyslog.d/sshd.config
  2. local6.*     /var/log/ssh.log
复制代码
3.重启服务

  1. systemctl restart sshd rsyslog
复制代码

此时/var/log/secure文件中没有了详细远程登录的ip地址信息了

常见日志文件

  1. /var/log/secure:    系统安全日志,文本格式,应周期性分析
  2. /var/log/btmp:       当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行查看
  3. /var/log/wtmp:      当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看
  4. /var/log/lastlog:   每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看
  5. /var/log/dmesg:     CentOS7之前版本系统引导过程中的日志信息,文本格式,开机后的硬件变化将不再记录,
  6.                     也可以通过专用命令dmesg查看,可持续记录硬件变化的情况
  7. /var/log/boot.log   系统服务启动的相关信息,文本格式
  8. /var/log/messages:  系统中大部分的信息
  9. /var/log/anaconda:  anaconda的日志
复制代码
/var/log/btmp

例如我使用rocky8的呆板想猜master1呆板的ssh登录密码。那么在master1的/var/log/btmp上机记录了是谁在企图猜解我的ssh密码。

在master1主机上使用lastb可以看到192.168.200.201企图使用admin的账号登录。此时就可以使用iptables拒绝这个ip的恶意请求。

日志管理工具journalctl

CentOS7版本以后利用Systemd统一管理所有Unit的启动日志。如许可以只用journalctl—个命令就能查看所有日志(内核日志和应用日志)。
journalctl的配置文件
  1. /etc/systemd/journald.conf
复制代码
journalctl的命令格式
  1. journalctl [OPTIONS...] [MATCHES...]
复制代码
选项说明

  1. -e, --pager-end
  2.     在分页工具内立即跳转到日志的尾部。此选项隐含了-n1000
  3.     以确保分页工具不必缓存太多的日志行。不过这个隐含的行数可以被明确设置的 -n选项覆盖。
  4.     注意,此选项仅可用于less(1)分页器。
  5. -×, --catalog
  6.     在日志的输出中增加一些解释性的短文本,以帮助进一步说明日志的含义、问题的解决方案、支持论坛、开发文档、以及其他任何内容。
  7.     并非所有日志都有这些额外的帮助文本,详见 Message catalog DeveloperDocumentation[5]文档。
  8.     注意,如果要将日志输出用于bug报告,请不要使用此选项。
复制代码
journalctl用法示例

  1. #查看所有日志(默认情况下,只保存本次启动的日志)
  2. journalctl
  3. #查看内核日志(不显示应用日志)
  4. journalctl -k
  5. #查看系统本次启动的日志
  6. journalctl -b
  7. journalctl -b -0
  8. #查看上一次启动的日志(需更改设置)
  9. journalctl -b -1
  10. #查看指定时间的日志
  11. journalctl --since="2017-10-30 18:10: 30"
  12. journa1ctl --since "20 min ago"
  13. journalctl --since yesterday
  14. journalctl --since "2017-01-10"--until "2017-01-11 03:00"
  15. journalctl --since 09:00 --unti1 "1 hour ago"
  16. #显示尾部的最新10行日志
  17. journalctl -n
  18. #显示尾部指定行数的日志
  19. journalctl -n 20
  20. #实时滚动显示最新日志
  21. journalctl -f
  22. #查看指定服务的日志
  23. journalctl /usr/lib/systemd/systemd
  24. #查看指定进程的日志
  25. journalctl _PID=1
  26. #查看某个路径的脚本的日志
  27. journalctl /usr/bin/bash
  28. #查看指定用户的日志
  29. journalctl _UID=33 --since today
  30. #查看某个unit 的日志
  31. journalctl -u nginx.service
  32. journalctl -u nginx.service --since today
  33. #实时滚动显示某个unit 的最新日志
  34. journalctl -u nginx.service -f
  35. #合并显示多个unit 的日志
  36. journa1ctl -u nginx.service -u php-fpm. service --since today
  37. #查看指定优先级(及其以上级别)的日志,共有8级
  38. 0: emerg
  39. 1: alert
  40. 2: crit
  41. 3: err
  42. 4: warning
  43. 5: notice
  44. 6: info
  45. 7: debug
  46. journalctl -p err -b
  47. #日志默认分页输出,--no-pager 改为正常的标准输出
  48. journalctl --no-pager
  49. #日志管理journa1ct1
  50. #以JSON格式(单行)输出
  51. journalctl -b -u nginx.service -o json
  52. #以 SON格式(多行)输出,可读性更好
  53. journalctl -b -u nginx.service -o json-pretty
  54. #显示日志占据的硬盘空间
  55. journalctl --disk-usage
  56. #指定日志文件占据的最大空间
  57. journalctl --vacuum-size=1G
  58. #指定日志文件保存多久
  59. journalctl --vacuum-time=1years
复制代码
日志分析实战

host无法解析

1.查看日志报错详细内容


当我修改了DNS为114后就解析正常了,因为我本身的DNS服务确实有问题


Httpd启动失败分析

1.80端口占用


2.查找端口占用历程

netstat -tunlp 用于表现 tcp,udp 的端口和历程等相关环境。
  1. netstat -tunlp | grep 端口号
  2. -t (tcp) 仅显示tcp相关选项
  3. -u (udp)仅显示udp相关选项
  4. -n 拒绝显示别名,能显示数字的全部转化为数字
  5. -l 仅列出在Listen(监听)的服务状态
  6. -p 显示建立相关链接的程序名
复制代码

3.关掉端口占用历程

关掉nginx服务


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

瑞星

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表