美文网首页自留地
多台机器集群日志查找方法

多台机器集群日志查找方法

作者: 定金喜 | 来源:发表于2020-06-14 21:12 被阅读0次

1.多机器查看日志存在的问题

为了保持服务高可用和速度,现代的服务器一般都是2台或者以上形成的服务器集群,如果服务器出现故障,运维需要查看线上日志去定位问题,一般有很多方式,一般的公司有日志收集系统,会将所有的日志上传到日志收集系统中,我们可以在这个系统中查找,如果没有这种系统,我们就要去每台服务器上面去定位日志,如果服务器数量较多,则需要每台服务器去查找,非常耗费时间还容易出错,所以我们申请一台单独的日志集群服务器,用这台服务器配置好所有的线上服务器的ip,通过这台服务器就可以一次性查询出所有的日志。

2.预先工作

免登
与免登相关的几个文件
1)id_rsa:私钥
2)id_rsa.pub:公钥,和私钥配对生成
3)authorized_key:记录来访的其他服务器公钥,只有成对生成的私钥才能解密公钥加密的内容,例如A机器可以免登B服务器,则在B服务器这个文件中写入A服务器生成的公钥,公钥存放在A机器的id_rsa.pub文件
4)known_hosts:记录来访的其他服务器的信息,一般通过ssh,scp和ssh-copy-id命令会记录,例如A机器免登B机器,则A机器的此文件中会记录B机器的信息
以A->B免登为例,操作顺序如下:
1) 在A机器执行指令 ssh-keygen -t rsa生成本机的公钥和私钥(已有的跳过这一步),生成文件id_rsa和id_rsa.pub;
2) A机器使用 ssh-copy-id userid@B服务器ip地址,使用此命令后会将当前机器A的公钥发送到对方B,并保存在对方~/.ssh的authorized_key文件中,这样A就可以免密登录B,初次登录会有提示你确认要访问吗,当第一次连接后,A服务器上会生成known_hosts文件,保存B机器的信息,这样下次A免密登录B就不再提示;
3)A机器执行指令 userid@B服务器ip地址 来校验免密登录是否生效
所以我们要使用ssh-copy-id指令拷贝集群服务器的公钥到各个应用服务器,有几个执行几次

ip配置文件
新建文件存放所有应用服务器的ip地址,每个ip之间换行,格式如下:
127.0.0.1
127.0.0.2
127.0.0.3
127.0.0.4

3.编写执行脚本

新建sh文件user.sh,脚本内容如下:

#!/bin/bash
do_command()
{
        hosts=`sed -n '/^[^#]/p' ip_hostlist.txt`
        for host in $hosts
                do
                        echo ""
                        echo HOST $host
                        ssh log@$host "$@"
                done
        return 0
}

if [ $# != 1 ]
then
        echo "=========================================="
        echo "功能:批量在多台服务器上执行命令"
        echo "方法:$0 \"<cmd_to_exec\"  eg:./salarylog.sh \"grep --color 'exception' ~/logs/error.log\" "
        echo "返回:各服务器执行命令返回的结果列表"
        echo "前提:在待执行命令的各个服务器上设置了免密登录"
        echo "警告:禁止执行删除、格式化等这样的可能造成严重后果的命令"
        echo "=========================================="
        exit 1
fi


echo "确定要执行命令?[yes/no]:$@ "
read to_run

if [ $to_run = "yes" -o $to_run = "YES" -o $to_run = "y" -o $to_run = "Y" ]
then
        echo ""
        echo -e "\033[31m执行命令 : $@ \033[0m"
        do_command "$@"
else
        echo "取消执行命令!"
fi

echo ""
echo "=========================================="

备注说明:
ip_hostlist.txt 应用服务器的ip地址列表,例如我们的应用服务器ip列表为:
10.5.46.110
10.5.46.111
10.5.46.112
10.5.46.113
10.5.46.114
10.5.46.115
10.4.46.116
10.4.46.117

ssh log@host "@" 能执行的前提是集群服务器已经配置好ip_hostlist.txt文件ip地址所有的免登信息

测试执行情况
如果需要查找所有机器中/home/admin/user.log目录文件中含有'error'字符的日志,则指令如下:
./user.sh "cat /home/admin/user.log | grep 'error' "
执行后会提示确认命令:
确定要执行命令?[yes/no]:cat /home/admin/user.log | grep 'error'
输入no后结果:
取消执行命令!
**输入yes结果: **
执行命令 : cat /home/admin/user.log | grep 'error'

HOST 10.5.46.110

HOST 10.5.46.111

HOST 10.5.46.112

HOST 10.5.46.113

HOST 10.5.46.114

HOST 10.5.46.115

HOST 10.4.46.116

HOST 10.4.46.117

很显然文件中没有该字符

参考文章:
https://www.cnblogs.com/youngchaolin/p/11706692.html

相关文章

  • 多台机器集群日志查找方法

    1.多机器查看日志存在的问题 为了保持服务高可用和速度,现代的服务器一般都是2台或者以上形成的服务器集群,如果服务...

  • MongoDB学习笔记(二)

    分片集群(Sharded Cluster) 分片(sharding)是一种跨多台机器分布数据的方法, MongoD...

  • 分布式与集群的区别

    集群强调高可用,分布式强调多业务协作 物理与逻辑 集群倾向于物理概念,即多台机器组成一个集群。这多台机器是否有合作...

  • Spark学习笔记

    内容来自《Spark快速大数据分析》一本很好的书 分布式和集群 集群:多台机器处理相同工作。 分布式:多台机器处理...

  • Rsyslog集中日志管理

    需求 前端几台机器是负载均衡分布在多台机器上,每次查看日志要登录每台机器查看很麻烦,如果能把多台机器tomcat日...

  • Hadoop初步学习

    大数据部门组织结构 分布式VS集群的区别分布式是多台不同的机器组成的系统集群是多态相同的机器组成的系统 Hadoo...

  • zookeeper 安装配置

    zookeeper概念简介: ZooKeeper集群是由多台机器组成的,每台机器都充当了特定的角色,各种角色在协作...

  • 记一次线程池资源泄露问题分析

    1 现象 项目组有一个应用由多台机器组成一个集群向外提供服务,但是集群上线后大约两个星期发生了master机器宕机...

  • 分布式概念思考

    多台机器上的多个系统合作就是分布式系统。 完成相同任务的系统被部署在一台或者多台机器上组成集群。 分布式的目的是为...

  • 分享四个Shell脚本实例

    多台服务器日志查询 服务器跳转脚本 日志自动清理脚本(日志需有滚动切割) ERROR日志巡逻(企业微信机器人报警)

网友评论

    本文标题:多台机器集群日志查找方法

    本文链接:https://www.haomeiwen.com/subject/wbptxktx.html