如何了解Linux服务器的作用?

如何了解Linux服务器的作用?

我被赋予了一项任务,即创建一个 Excel 表,其中包含我们 AWS EC2 环境中的所有 Linux 服务器,因为主要目的是将所有服务器从 AWS 中移除并迁移到我们的虚拟环境中。这些是感兴趣的行标题:服务器名称、角色、CPU、内存、磁盘、应用程序组件及其版本。

提取服务器名称和服务器规范没有问题,但找到服务器角色的最佳方法是什么?我心中有一些想法,但我很想听听你的想法……以下是我的:

  1. 运行rpm -qa --queryformat "%{NAME}\n"以将所有包名称提取到列表中,这可以帮助我了解服务器的作用。
  2. 运行chkconfig --list |grep on以查看哪些守护进程已启用。
  3. 运行top以查看哪些进程正在运行。

答案1

您可以采取一些措施来尝试确定系统上运行的程序。虽然不能保证,但很可能任何正在运行的生产服务都已在本地子网上或通过 NAT 提供给网络。考虑到这一点,您可以检查服务器正在监听哪些端口,以了解那里的情况。一个好的命令是:

alex:~/ $ sudo netstat -tulpn

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN      945/smbd        
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1746/nginx      
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1437/dnsmasq    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1310/sshd       
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      3746/cupsd  

从上面的示例输出可以看出,它向您显示了协议版本(tcp 或 udp)、正在监听的地址、打开的端口和正在监听的程序。

在上面的截断示例中(台式机),您可以看到 tcp 端口 139、80、53、22 和 631 正在监听。这些端口分别解析为 samba、http、dns、ssh 和 ipp,当您检查监听该端口的程序时,可以确认这一点。

此外,大多数基于 Debian 和 Red Hat 的 Linux 发行版都使用系统 V 并具有 services 命令。您可以使用它来提供服务及其状态的列表:

alex:~/ $ sudo service --status-all

 [ + ]  acpid
 [ - ]  anacron
 [ + ]  apparmor
 [ ? ]  apport
 [ ? ]  atieventsd
 [ + ]  avahi-daemon
 [ ? ]  binfmt-support
 [ + ]  bluetooth
 [ - ]  brltty
 [ ? ]  console-setup
 [ + ]  cron
 [ ? ]  cryptdisks
 [ ? ]  cryptdisks-early
 [ + ]  cups
 [ + ]  cups-browsed
 [ - ]  dbus
 [ ? ]  dns-clean
 [ + ]  dnsmasq
 [ + ]  ebtables
 [ + ]  friendly-recovery
 [ - ]  grub-common
 [ ? ]  irqbalance
 [ + ]  kerneloops
 [ ? ]  killprocs
 [ ? ]  kmod
 [ + ]  libvirt-bin
 [ ? ]  lightdm
 [ ? ]  networking
 [ + ]  nginx
 [ + ]  nmbd
 [ ? ]  ondemand
 [ + ]  openvpn
 [ ? ]  pppd-dns
 [ - ]  procps
 [ - ]  pulseaudio
 [ ? ]  rc.local
 [ + ]  resolvconf
 [ - ]  rsync
 [ + ]  rsyslog
 [ + ]  samba
 [ - ]  samba-ad-dc
 [ + ]  saned
 [ ? ]  sendsigs
 [ - ]  smartmontools
 [ + ]  smbd
 [ ? ]  speech-dispatcher
 [ - ]  ssh
 [ - ]  sudo
 [ + ]  udev
 [ ? ]  umountfs
 [ ? ]  umountnfs.sh
 [ ? ]  umountroot
 [ - ]  unattended-upgrades
 [ - ]  urandom
 [ ? ]  vboxautostart-service
 [ + ]  vboxballoonctrl-service
 [ + ]  vboxdrv
 [ + ]  vboxweb-service
 [ + ]  winbind
 [ - ]  x11-common

这为您提供了系统 v 服务的概览 - 如果您有手动启动的自定义应用程序或自定义启动脚本,它们可能不在这里,但这仍然有用。 + 表示正在运行的服务, - 表示已停止的服务, ? 表示未知。 请确保以提升用户身份运行上述两个命令,否则您的结果将不完整。

上述命令将让您了解服务器上正在运行的内容,但无法了解其配置方式或用途。开放端口 80 表示 Web 服务器,但这可能意味着面向公众、内部呈现的 API、意外安装的 httpd 或任何此类配置。理想情况下,您需要与架构师讨论以更好地了解每台服务器的用途。

答案2

您需要澄清“角色”的含义。

如果您看到服务器上正在运行数据库,您可以直接输入“数据库服务器”,但它在您的组织中起什么作用?它确实是数据库服务器,但它是“猫图片存储库”吗?“客户数据库”?“主要目标列表”?

除非“角色”仅仅意味着在服务器上运行的主要应用程序,否则您需要了解它在您的组织中的位置才能给出合理的答案。

相关内容