5.8/5.9 监控Linux系统状态
- 查看网络状况:
netstat:
用于列出系统上所有的网络套接字连接情况,包括tcp,udp以及unix套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。如果想确认系统上的服务有没有起来,可以查看相应的端口有没有打开。
状态说明:
LISTEN:侦听来自远方的TCP端口的连接请求
SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)
SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)
ESTABLISHED:代表一个打开的连接
FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2:从远程TCP等待连接中断请求
CLOSE-WAIT:等待从本地用户发来的连接中断请求
CLOSING:等待远程TCP对连接中断的确认
LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)
TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确
CLOSED:没有任何连接状态
常用选项:
-a
:列出所有当前的连接
-t
:列出 TCP 协议的连接
-u
:列出 UDP 协议的连接
-n
:默认情况下netstat会通过反向域名解析技术查找每个IP地址对应的主机名。这会降低查找速度。如果觉得IP地址已经足够,而没有必要知道主机名,就使用-n选项禁用域名解析功能
-l
:任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。这些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来,使用-l
列出正在监听的套接字
-p
:查看进程信息,使用-p
选项时,netstat必须运行在root权限之下,不然它就不能得到运行在root权限下的进程名,而很多服务包括http和ftp都运行在root权限之下
ss:
ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp
,执行速度都会很慢。ss之所以快,是因为它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux内核中第一手的信息,这就确保了ss的快捷高效。它的命令选项和netstat类似。
- 抓包工具:
tcpdump:
tcpdump是一个用于截取网络分组,并输出分组内容的工具。tcpdump支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来去掉无用的信息。
选项:
-c
:在收到指定的数量的分组后,tcpdump就会停止,例如-c 100
-i
:指定监听的网络接口
-nn
:不进行端口名称的转换
-r
:从指定的文件中读取包(这些包一般通过-w选项产生)
-w
:直接将分组写入文件中,而不是不分析并打印出来
例:tcpdump -i ens33 -nn -c 100 -w test.cap
——抓取100条网口ens33的数据包并写入test.cap,如果要读取该文件内容,则执行tcpdump -nn -r test.cap
wireshark:
Wireshark是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。
wireshark命令的选项和tcpdump类似,可以根据实际情况来分别使用:
tshark -i ens33 -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"
5.10 监控介绍
为什么要做监控?——可以提前发现潜在故障隐患,第一时间解决掉。把影响降低。
监控的对象——简单的说,监控的对象就是一切你想知道的状态的一个集合。通常情况下,我们可以将监控对象这么来分:
- 服务器监控:CPU 负载、内存使用率、磁盘使用率、登陆用户数、进程状态、网卡状态等。
- 应用程序监控:应用程序的服务状态、吞吐率和响应时间等,不同应用需要监控的对象也不同。
- 数据库监控:数据库状态、数据库表或者表空间的使用情况、是否有死锁、错误日志、性能信息等等。
- 网络监控:网络状况,网络流量等。
监控工具:针对不同的行业,针对不同的应用,针对不同的服务都有很多监控工具,有客户端的监控和浏览器的监控。 Linux 平台下的监控方法基本上可以分为两种,第一种是通过外部检测命令或者代理程序获得被监控主机的相关状态;第二种是通过SNMP协议来实现对服务器和网络设备的监控工作。
5.11/5.12 安装zabbix
- zabbix的安装及配置
[root@rice01 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm // 安装zabbix的yum配置文件和数据库配置包,
[root@rice01 ~]# yum clean all // 清理yum缓存
[root@rice01 ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web-mysql zabbix-web
[root@rice01 ~]# mysql -uroot -p111111
MariaDB [(none)]> create database zabbix;
MariaDB [(none)]> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '111111';
MariaDB [(none)]> Bye
[root@rice01 ~]# vi /etc/zabbix/zabbix_server.conf
DBHost=127.0.0.1 // 定义数据库IP
DBPassword=111111 // 定义数据库密码
[root@rice01 ~]# cd /usr/share/doc/zabbix-server-mysql-4.0.5/
[root@rice01 zabbix-server-mysql-4.0.5]# gzip -d create.sql.gz
[root@rice01 zabbix-server-mysql-4.0.5]# mysql -uroot -p111111 zabbix < create.sql // 导入初始架构和数据
[root@rice01 zabbix-server-mysql-4.0.5]# systemctl start zabbix-server
[root@rice01 zabbix-server-mysql-4.0.5]# systemctl enable zabbix-server
[root@rice01 zabbix-server-mysql-4.0.5]# vi /etc/zabbix/zabbix_agentd.conf
// 定义Server=127.0.0.1和ServerActive=127.0.0.1
[root@rice01 zabbix-server-mysql-4.0.5]# systemctl start zabbix-agent
[root@rice01 zabbix-server-mysql-4.0.5]# systemctl enable zabbix-agent
[root@rice01 zabbix-server-mysql-4.0.5]# systemctl stop nginx // 如果系统开启了nginx服务,需要先关闭nginx
[root@rice01 zabbix-server-mysql-4.0.5]# systemctl start httpd
- 浏览器界面设置zabbix
打开浏览器访问ip/zabbix,进入zabbix设置界面,首先需要设置时区:
vi /etc/php.ini
,将date.timezone
定义为Asia/Shanghai
,保存退出后重启httpd服务,再刷新浏览器继续进行设置,设置完成后使用默认管理员账号admin和密码zabbix登陆管理界面。