Linux云计算 |【第二阶段】SECURITY-DAY1

主要内容:

监控基础(系统监控命令、监控软件)、Zabbix监控服务端部署、Zabbix监控客户端部署、创建监控主机、调用监控模板、自定义key、创建模板、应用集、监控项、绑定模板;

一、监控概述

1)监控的目的

① 实时报告系统的运行情况

每一部分必须同时监控,内容包括吞吐量、反应时间、使用率等;

② 提前发现系统的问题

进行服务器性能调整前,知道调整方向,且找出系统的瓶颈;

2)监控的资源类别

① 公开数据(共有数据)

  • Web(HTTP)、FTP、SSH、数据库等应用服务;
  • TCP或UDP端口;

② 私有数据

  • CPU、内存、磁盘、网卡流量等使用信息;
  • 用户、进程等运行信息;

3)系统监控命令

  • ps //查看进程

  • uptime //查看系统登录时间、平均负载量

  • free //查看内存信息(剩余内存容量)

  • swapon -s //查看交换分区信息

  • df -h //查看磁盘信息和挂载(查看所有磁盘的使用率)

  • ifconfig //查看网卡信息

  • netstat 或ss //查看服务端口信息

  • ping //ping访问测试

  • traceroute //路由跟踪

  • iostat //查看进程IO请求下发的数量

4)自动化监控系统软件

  • Cacti,基于SNMP协议的监控软件,强大的绘图能力;
  • Nagios,基于Agent监控,强大的状态检查与报警机制,插件较多,可写监控脚本嵌入到Nagios非常方便;
  • Zabbix,基于多种监控机制,支持分布式监控;
  • Prometheus,可监控podman容器;

案例:常用系统监控命令

  • 查看内存信息(free)
  • 查看交换分区信息(swapon -s)
  • 查看磁盘信息(df -h)
  • 查看CPU信息(uptime)
  • 查看网卡信息(ifconfig)
  • 查看端口信息(netstat、ss)

例如1:使用命令查看计算机状态数据

1)查看内存与交换分区信息

bash 复制代码
[root@web1 ~]# free     //查看内存信息
              total        used        free      shared  buff/cache   available
Mem:        1446804       53280     1313996        8632       79528     1270840
Swap:             0           0           0
[root@web1 ~]# free | awk '/Mem/{print $4}'     //通过awk查看剩余内存容量
1313776
[root@web1 ~]# swapon -s    //查看交换分区信息
文件名                类型            大小        已用        权限
/dev/sda3             partition        4194300    218268    -1

例如2:查看磁盘与CPU利用率

1)查看磁盘信息

bash 复制代码
[root@web1 ~]# df -h    //查看所有磁盘的使用率
文件系统          容量  已用  可用 已用% 挂载点
/dev/vda1        30G  1.3G   29G    5% /
devtmpfs        697M     0  697M    0% /dev
tmpfs           707M     0  707M    0% /dev/shm
tmpfs           707M  8.5M  699M    2% /run
tmpfs           707M     0  707M    0% /sys/fs/cgroup
tmpfs           142M     0  142M    0% /run/user/0
[root@web1 ~]# df -h | awk '/\/$/{print $5}'   //查看根分区的利用率
5%

2)查看CPU平均负载

bash 复制代码
[root@web1 ~]# uptime     //查看CPU平均负载量(1,5,15分钟)
 10:40:52 up 41 min,  1 user,  load average: 0.00, 0.00, 0.00
[root@web1 ~]# uptime | awk '{print $NF}'   //仅查看CPU的15分钟平均负载
0.00

例如3:查看网卡信息、端口信息、网络连接信息

1)查看网卡信息(没有ifconfig命令则需安装net-tools软件包)

bash 复制代码
[root@web1 ~]# ifconfig eth0    //查看eth0网卡信息
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 52:54:00:c3:4d:20  txqueuelen 1000  (Ethernet)
        RX packets 3974  bytes 458236 (447.4 KiB)
        RX errors 0  dropped 1437  overruns 0  frame 0
        TX packets 298  bytes 26816 (26.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@web1 ~]# ifconfig eth1 | awk '/inet /{print $2}'    //查看IP地址信息
192.168.2.100
[root@web1 ~]# ifconfig eth1 | awk '/RX p/{print $5}'   //网卡接收数据包流量
515054
[root@web1 ~]# ifconfig eth1 | awk '/TX p/{print $5}'   //网卡发送数据包流量
73638

2)查看端口信息

bash 复制代码
[root@web1 ~]# ss -nlptu       //查看本机监听的所有端口
Netid  State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
udp    UNCONN     0      0      127.0.0.1:323                   *:*                   users:(("chronyd",pid=455,fd=1))
tcp    LISTEN     0      128       *:22                    *:*                   users:(("sshd",pid=466,fd=3))
 
[root@web1 ~]# ss -anptu     //查看所有的网络连接信息
Netid  State      Recv-Q Send-Q Local Address:Port               Peer Address:Port              
udp    UNCONN     0      0      127.0.0.1:323                   *:*                   users:(("chronyd",pid=455,fd=1))
tcp    LISTEN     0      128       *:22                    *:*                   users:(("sshd",pid=466,fd=3))
tcp    ESTAB      0      0      192.168.2.100:22                 192.168.2.254:45946               users:(("sshd",pid=620,fd=3))

解释说明:

-n以数字显示端口号

-t显示tcp连接

-u显示udp连接

-p显示监听端口对应的程序名称

-a查看所有连接状态信息

二、Zabbix概念

简介:zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,高度集成并监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题;

1)Zabbix的主要特点:

  • 开源:免费使用,社区支持活跃。
  • 灵活性:支持多种监控方式和协议,易于定制。
  • 可扩展性:可以轻松扩展以适应不断增长的监控需求。
  • 丰富的功能:提供全面的监控和告警功能。
  • 易于使用:用户友好的 Web 界面,便于管理和配置。

2)Zabbix主要功能:

数据收集

  • 支持多种数据收集方法,包括主动和被动监控。
  • 可以通过 SNMP、IPMI、JMX、SSH、Telnet 等多种协议收集数据。

灵活的监控项

  • 可以监控各种参数,如 CPU 负载、内存使用、磁盘空间、网络流量等。
  • 支持自定义监控项,可以根据需要监控特定的应用程序或服务。

告警和通知

  • 提供强大的告警机制,可以在检测到问题时发送通知。
  • 支持多种通知方式,包括电子邮件、短信、即时消息等。

可视化和报告

  • 提供丰富的图表和图形界面,便于用户查看监控数据。
  • 支持生成详细的报告,帮助分析性能趋势和问题。

分布式监控

  • 支持分布式监控架构,可以监控多个地理位置的系统和设备。
  • 可以通过代理服务器进行数据收集,减轻中央服务器的负担。

自动发现

  • 支持自动发现网络设备和服务,减少手动配置的工作量。
  • 可以自动添加新设备到监控系统中。

可扩展性

  • 设计灵活,易于扩展和定制。
  • 支持插件和模块,可以根据需要添加新功能。

3)Zabbix监控拓扑:

Zabbix 的架构主要包括以下组件:

  • Zabbix Server:核心组件,负责数据收集、处理和存储,以及告警和通知。
  • Zabbix Proxy:可选组件,用于分布式监控,可以收集数据并转发到 Zabbix Server。
  • Zabbix Agent:安装在被监控设备上的代理程序,负责收集本地数据并发送给 Zabbix Server 或 Proxy。
  • Web 界面:基于 Web 的管理界面,用于配置、查看监控数据和生成报告。
  • 数据库:存储配置信息、历史数据和事件。

4)Zabbix基于的两种架构模式:

① 通过C/S模式(Client / Server),采集监控数据;

补充:S:监控服务器 (1个Zabbixserver),C:被监控主机(若干Zabbixagent)

  • Zabbixserver可单独监视远程服务器的服务状态;同时也可与Zabbixagent配合,可以轮询Zabbix agent主动接收监视数据(agent方式),同时还可被动接收Zabbix agent发送的数据(trapping方式)。另外Zabbixserver还支持SNMP (v1,v2);

  • Zabbixagent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集

② 通过B/S模式(Browser / Server),实现Web管理;

补充:B:WEB浏览器,S:LNMP平台

  • 监控服务器需部署LNMP平台,通过SNMP或Agent采集被监控主机的监控数据,将数据可以写入MySQL、Oracle等数据库中(数据可视化曲线图);使用LNMP平台实现Web前端的管理;

案例1:部署Zabbix监控平台

案例要求:部署一台Zabbix监控服务器

  • 1)在监控服务器上部署LNMP环境;
  • 2)源码安装Zabbix及相关的依赖包;
  • 3)创建并初始化数据库;
  • 4)修改zabbix_server和zabbix_agentd配置并启动服务
  • 5)初始化Zabbix监控Web页面
  • 6)修改PHP配置文件,满足Zabbix需求
  • 7)安装被监控端主机,修改基本配置

主机地址分配:

步骤1:部署监控服务器(zabbixserver)

1)配置防火墙与SELinux限制

bash 复制代码
[root@zabbixserver ~]# firewall-cmd --set-default-zone=trusted
[root@zabbixserver ~]# setenforce 0
[root@zabbixserver ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config

2)部署LNMP环境(源码安装Nginx、安装Mysql和PHP软件包)

Zabbix监控管理控制台需要通过Web页面展示,并且还需使用MySQL来存储数据,因此需要先为Zabbix准备基础LNMP环境。

bash 复制代码
[root@zabbixserver ~]# yum -y install gcc make pcre-devel openssl-devel
[root@zabbixserver ~]# tar -xf nginx-1.12.2.tar.gz
[root@zabbixserver ~]# cd nginx-1.12.2
[root@zabbixserver nginx-1.12.2]# ./configure --with-http_ssl_module
[root@zabbixserver nginx-1.12.2]# make && make install
[root@zabbixserver ~]# yum -y install php php-mysql php-fpm
[root@zabbixserver ~]# yum -y install mariadb mariadb-devel  mariadb-server

3)修改Nginx配置文件

配置Nginx支持PHP动态网站,因有大量PHP脚本需执行,所以需开启Nginx的各种fastcgi缓存,加速PHP脚本的执行速度;

bash 复制代码
[root@zabbixserver ~]# vim /usr/local/nginx/conf/nginx.conf
http{
...
    fastcgi_buffers 8 16k;           //缓存php生成的页面内容(8个16k)
    fastcgi_buffer_size 32k;         //缓存php生产的头部信息(32k)
    fastcgi_connect_timeout 300;   //连接PHP的超时时间(300秒)
    fastcgi_send_timeout 300;      //发送请求的超时时间(300秒)
    fastcgi_read_timeout 300;      //读取请求的超时时间(300秒)
...
        location ~ \.php$ {       //修改配置文件,使Nginx支持动态页面
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
        #   fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi.conf;     //调用fastcgi.conf配置文件
        }
  • 注意:Nginx配置文件中的FastCGI缓存优化需要在http{}下配置;
  • 解释:客户端重复访问PHP网页,由于PHP脚本解析需要时间,开启Nginx的各种fastcgi缓存可加速PHP脚本的执行速度;设置缓存生成页面内容大小、缓存头部信息大小、超时时间等;

4)启动服务

启动Nginx服务,通过/etc/rc.local设置开机自启

bash 复制代码
[root@zabbixserver ~]# /usr/local/nginx/sbin/nginx
[root@zabbixserver ~]# echo /usr/local/nginx/sbin/nginx >> /etc/rc.local
[root@zabbixserver ~]# chmod +x /etc/rc.local
[root@zabbixserver ~]# ss -nlptu | grep :80
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=3897,fd=6),("nginx",pid=3896,fd=6))

开启MariaDB服务并设置开机自启

bash 复制代码
[root@zabbixserver ~]# systemctl start mariadb
[root@zabbixserver ~]# systemctl enable mariadb
[root@zabbixserver ~]# ss -nlptu | grep :3306
tcp    LISTEN     0      50        *:3306                  *:*                   users:(("mysqld",pid=3760,fd=14))

开启PHP-FPM服务并设置开机自启

bash 复制代码
[root@zabbixserver ~]# systemctl start php-fpm
[root@zabbixserver ~]# systemctl enable php-fpm
[root@zabbixserver ~]# ss -nlptu | grep :9000
tcp    LISTEN     0      128    127.0.0.1:9000                  *:*                   users:(("php-fpm",pid=3893,fd=0),("php-fpm",pid=3892,fd=0),("php-fpm",pid=3891,fd=0),("php-fpm",pid=3890,fd=0),("php-fpm",pid=3889,fd=0),("php-fpm",pid=3887,fd=6))

步骤2:部署监控服务器Zabbix Server

1)源码安装Zabbix Server(可参考lnmp_soft/zabbix-3.4.4.tar.gz )

  • 注意:Zabbix多数源码包都需要依赖包,源码编译前需提前安装相关依赖包
bash 复制代码
[root@zabbixserver ~]# yum -y install net-snmp-devel   //snmp协议相关依赖包
[root@zabbixserver ~]# yum -y install curl-devel   //curl相关依赖包
[root@zabbixserver ~]# yum -y install autoconf    //shell脚本
[root@zabbixserver ~]# yum -y install libevent-devel   //事件驱动器
[root@zabbixserver ~]# useradd -s /sbin/nologin zabbix   //创建zabbix用户
[root@zabbixserver ~]# cd lnmp_soft/
[root@zabbixserver lnmp_soft]# tar -xf zabbix-3.4.4.tar.gz    //解压压缩包
[root@zabbixserver lnmp_soft]# cd zabbix-3.4.4/
[root@zabbixserver zabbix-3.4.4]# ./configure --enable-server --enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl
[root@zabbixserver zabbix-3.4.4]# make && make install    //编译安装

解释说明:

--enable-server 安装部署zabbix服务器端软件

--enable-agent 安装部署zabbix被监控端软件

--enable-proxy 安装部署zabbix代理相关软件

--with-mysql 指定mysql_config路径

--with-net-snmp 允许zabbix通过snmp协议监控其他设备(如交换机、路由器等)

--with-libcurl 安装相关curl库文件,zabbix就可通过curl连接http等服务,测试被监控主机服务的状态

验证:

bash 复制代码
[root@zabbixserver ~]# ls /usr/local/sbin/     //安装完成后有3个执行程序文件

2)创建空数据库并授权账户访问该数据库,最后导入Zabbix相关数据

bash 复制代码
[root@zabbixserver ~]# mysql      //使用mysql命令创建zabbix仓库
MariaDB [(none)]> create database zabbix character set utf8;
MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix';    //授权zabbix数据库所有权限给zabbix用户并设置密码
MariaDB [(none)]> exit    //退出数据库
  • 解释:创建数据库,数据库名称为zabbix,character set utf8是支持中文字符集;
  • 解释:创建可以访问数据库的账户与密码,用户名是zabbix,密码是zabbix;

格式:grant 权限 on 数据库名称.表名称 to 用户名@用户地址 identified by '连接口令';

bash 复制代码
[root@zabbixserver ~]# cd lnmp_soft/zabbix-3.4.4/database/mysql/
[root@zabbixserver mysql]# ls
data.sql  images.sql  schema.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < data.sql
  • 解释:创建空数据库后,数据库默认没有数据表,需将Zabbix源码包目录的数据表文件data.sql、images.sql、schema.sql通过mysql导入zabbix数据库(注意导入顺序)

[-u]指定数据库用户名,[-p]指定数据库密码

测试:

bash 复制代码
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix -h localhost zabbix
MariaDB [zabbix]>
MariaDB [zabbix]> show tables;    //查看zabbix库下的数据表
...
140 rows in set (0.00 sec)

解释:

[-u]指定用户名,[-p]指定密码,[-h]指定服务器IP,zabbix是数据库库名

使用zabbix账户(密码为zabbix)连接localhost服务器上面的zabbix数据库

3)修改zabbix_server配置,启动zabbix_server监控服务

修改Zabbix_server配置文件,设置数据库相关参数

bash 复制代码
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_server.conf
...
 38 LogFile=/tmp/zabbix_server.log   //日志的位置,排错使用
 85 DBHost=localhost  //定义哪台主机为数据库主机(localhost为本机)
 95 DBName=zabbix   //设置数据库名称
111 DBUser=zabbix    //设置数据库账户
119 DBPassword=zabbix   //设置数据库密码
...
  • 注意:相关.conf的配置需要与创建的数据库及授权的用户、密码及指定的localhost一致;

编写zabbix_server的service文件,通过systemd管理服务(端口10051)

bash 复制代码
[root@zabbixserver ~]# vim /usr/lib/systemd/system/zabbix_server.service
[Unit]
Description=zabbix server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_server.pid
ExecStart=/usr/local/sbin/zabbix_server
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
[root@zabbixserver ~]# systemctl enable zabbix_server.service --now
[root@zabbixserver ~]# ss -nlptu | grep zabbix_server  //确认连接状态,端口10051

Zabbix_server服务启动失败因素:

原因分析:

  • ① Mariadb服务未启动或启动异常;
  • ② 数据库中的配置和zabbix_server.conf配置文件的DB配置不一致;
  • grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix';

  • DBName=zabbix、DBUser=zabbix、DBPassword=zabbix、DBHost=localhost

  • ③ 导入数据错误(数据表140个)
  • ④ 没有/usr/local/etc/zabbix_server.conf配置文件(./configure配置错误)

**解决办法:**查看/tmp/zabbix_server.log进行排错;


  1. 修改Zabbix_agent配置文件,启动Zabbix_agent服务
bash 复制代码
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_agentd.conf
...
 30 LogFile=/tmp/zabbix_agentd.log    //日志的位置,排错使用
 93 Server=127.0.0.1,192.168.2.5     //允许哪些主机监控本机(被动监控)
134 ServerActive=127.0.0.1,192.168.2.5    //允许哪些主机通过主动模式监控本机
145 Hostname=zabbix_server    //设置监控端的主机名(名称可以任意)
280 UnsafeUserParameters=1    //是否允许自定义监控传参(0为关闭,1为开启)
...

编写zabbix_agentd的service文件,通过systemd管理服务(端口10050)

bash 复制代码
[root@zabbixserver ~]# vim /usr/lib/systemd/system/zabbix_agentd.service
[Unit]
Description=zabbix agent
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_agentd.pid
ExecStart=/usr/local/sbin/zabbix_agentd
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
[root@zabbixserver ~]# systemctl enable zabbix_agentd.service --now
[root@zabbixserver ~]# ss -nlptu | grep zabbix_agentd   //确认连接状态,端口10050

5)上线Zabbix的Web页面

bash 复制代码
[root@zabbixserver ~]# cd lnmp_soft/zabbix-3.4.4/frontends/php/
[root@zabbixserver php]# ls
50x.html                       imgstore.php
actionconf.php                 include
adm.gui.php                    index.html
...
[root@zabbixserver php]# cp -r ./* /usr/local/nginx/html/   //拷贝.php动态文件
[root@zabbixserver php]# ls /usr/local/nginx/html/
50x.html                       imgstore.php
actionconf.php                 include
adm.gui.php                    index.html
...
[root@zabbixserver php]# chown -R apache:apache /usr/local/nginx/html/

补充:chown设置归属权限时,apache.apache与apache:apache效果相同;

补充:php-fpm服务的用户和组是Apache,PHP解释器需要解释PHP文件(读写权限),则需要让PHP对/usr/local/nginx/html/有权限,设置归属为Apache;

6)使用浏览器访问Zabbix_server服务器的Web页面,http://192.168.2.5/setup.php

  • 注意:第一次访问初始化PHP页面,会检查主机的环境是否满足要求,如果不满足会给出修改建议;

① 根据错误提示,因涉及可视化界面,需安装依赖包满足Zabbix_server的环境要求;

bash 复制代码
[root@zabbixserver ~]# yum -y install php-gd php-xml php-bcmath php-mbstring

② 根据错误提示,PHP的相关配置不满足环境要求,需修改PHP配置文件;

bash 复制代码
 [root@zabbixserver ~]# vim /etc/php.ini
 394 max_input_time = 300    //服务器接收数据的时间限制(超时时间300秒)
 384 max_execution_time = 300   //执行脚本最大执行时间(300秒)
 672 post_max_size = 32M    //POST数据最大容量(允许上传数据最大容量32M)
 878 date.timezone = Asia/Shanghai   //设置时区(Asia/Shanghai)

补充:PHP配置文件/etc/php.ini以【;】为注释

③ 按照提示完成依赖包安装及PHP配置文件修改,进行PHP-FPM服务重启

重启服务后,再次使用浏览器访问Zabbix_server服务器的Web页面,查看页面是否还有提示

bash 复制代码
[root@zabbixserver ~]# systemctl restart php-fpm    //重启php-fpm服务

补充:提示中,PHP LDAP是warning状态(可忽略)

配置数据库连接

在初始化数据库页面,手动创建数据库,并设置连接到此数据库的配置参数

Zabbix服务器详细信息

请输入Zabbix服务器的主机名或主机IP地址和端口号,以及安装的名称(可选)

安装前清单

请检查配置参数。如果全部正确,按"下一步"按钮或"后退"按钮更改配置参数。

已成功安装Zabbix前端

已创建配置文件"/usr/local/nginx/html/conf/zabbix.conf.php"。

进入登陆页面

使用用户(admin)和密码(zabbix)登陆,登陆后设置语言环境为中文

登录后Zabbix服务器后,显示的Zabbix首页

在Admin中设置语言为中文

步骤3:部署被监控主机Zabbix Agent(web1,web2)

补充:在2.100和2.200需要做相同操作(以web1为例)

1)设置防火墙与SELinux限制

bash 复制代码
[root@web1 ~]# firewall-cmd --set-default-zone=trusted
[root@web1 ~]# setenforce 0
[root@web1 ~]# sed -i  '/SELINUX/s/enforcing/permissive/' /etc/selinux/config

2)源码安装Zabbix agent软件

bash 复制代码
[root@web1 ~]# useradd -s /sbin/nologin zabbix   //创建zabbix用户
[root@web1 ~]# id zabbix
uid=1000(zabbix) gid=1000(zabbix) 组=1000(zabbix)
[root@web1 ~]# yum -y install gcc make pcre-devel autoconf   //安装依赖包
[root@web1 ~]# tar -xf zabbix-3.4.4.tar.gz
[root@web1 ~]# cd zabbix-3.4.4/
[root@web1 zabbix-3.4.4]# ./configure --enable-agent   //配置,加载agent模块
[root@web1 zabbix-3.4.4]# make && make install     //编译安装

3)修改Zabbix_agent配置文件,启动Zabbix_agent服务

bash 复制代码
[root@web1 zabbix-3.4.4]# vim /usr/local/etc/zabbix_agentd.conf
...
 69 EnableRemoteCommands=1  //监控异常后,是否允许服务器远程执行命令,如重启某个服务
 93 Server=127.0.0.1,192.168.2.5   //允许谁可以监控本机(被动监控模式
134 ServerActive=127.0.0.1,192.168.2.5  //允许谁可以监控本机(主动监控模式)
145 Hostname=web1     //设置被监控端的主机名
280 UnsafeUserParameters=1    //是否允许自定义监控传参(0为关闭,1为开启)
...

编写zabbix_agentd的service文件,通过systemd管理服务(端口10050)

bash 复制代码
[root@web1 zabbix-3.4.4]# vim /usr/lib/systemd/system/zabbix_agentd.service
[Unit]
Description=zabbix agent
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/tmp/zabbix_agentd.pid
ExecStart=/usr/local/sbin/zabbix_agentd
ExecStop=/bin/kill $MAINPID
[Install]
WantedBy=multi-user.target
[root@web1 zabbix-3.4.4]# systemctl enable zabbix_agentd.service --now
[root@web1 zabbix-3.4.4]# ss -nlptu | grep zabbix_agent

案例2:配置及使用Zabbix监控系统

案例要求:沿用案例1,使用Zabbix监控平台监控Linux服务器实现以下目标:

  • 1)监控CPU
  • 2)监控内存
  • 3)监控进程
  • 4)监控网络流量
  • 5)监控硬盘

步骤1:添加监控主机

主机是Zabbix监控的基础,Zabbix所有监控都是基于Host主机

1)使用浏览器登录http://192.168.2.5/index.php,通过首页栏【Configuration配置】---\>【Hosts主机】,查看监控主机列表,因Zabbix server服务器也部署了agent,所以也能收集到本机监控信息;

监控主机列表中有Zabbix server服务器(本机),可将【停用状态】开启

2)通过首页栏【Configuration配置】-->【Hosts主机】--->【Create Host创建主机】添加被监控Linux主机。添加被监控主机时,需要根据提示输入被监控Linux主机的主机名称(最好与添加主机的主机名一致,但也允许不一致)、主机组、IP地址等参数;

    • 主机名称:web1
    • 可见的名称:web1
    • 主机组:Linux servers(可使用默认已有群组或新建群组)
    • agent代理程序的接口:添加IP(192.168.2.100)、端口(默认10050)

步骤2:为被监控主机添加监控模板

Zabbix通过监控模板来对监控对象实施具体的监控功能,根据模板来定义需要监控哪些数据;对于Linux服务器的监控,Zabbix已经内置了相关的模板(Template OS Linux),选择模板并链接到主机即可;

1)通过首页栏【Configuration配置】-->【Hosts主机】-->点击,【链接指示器】--->点击,选择相关的模板(Template OS Linux)点击,显示到【链接的模板】并;

步骤3:查看监控数据

查看监控数据,通过首页栏【Monitoring监控中】--->【Latest data最新数据】,在过滤器中填写过滤条件,根据监控【主机群组】和监控【主机】选择需要查看哪些监控数据;

找到需要监控的数据后,可以点击后面的【Graph图形】查看监控图形;例如:CPU平均1分钟负载量【Processor load (1 min average per core)】

通过首页栏【Monitoring监控中】--->【Graph图形】,选择群组、主机、图形CPUload可查看CPU平均负载量(1、5、15分钟)

案例4:自定义Zabbix监控项目

案例要求:沿用案例1/2,使用Zabbix实现自定义监控Linux服务器系统账户数量

整体思路:使用Zabbix自定义key的方式实现自定义监控

  • 1)创建自定义key
  • 2)创建监控项目
  • 3)将监控模板关联到主机

场景:Zabbix自带监控模板满足不了企业需求,所以通过自定义模板实现个性化监控;

注意:自定义监控需要传参数,配置 zabbix_agent.conf文件开启传参UnsafeUserParameters=1

  • 格式:UserParameter=自定义key名称,命令[脚本] //自定义key名称可任意
  • 自定义的key文件一般存储目录:/usr/local/etc/zabbix_agentd.conf.d/

步骤1:被监控端主机创建自定义key(web1操作)

1)修改zabbix_agentd.conf文件,取消注释,允许调用存放自定义监控key目录

bash 复制代码
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
264 Include=/usr/local/etc/zabbix_agentd.conf.d/   //取消注释,加载配置文件目录

2)创建自定义key(监控Linux服务器系统账户数量)

格式:UserParameter=自定义key名称,命令

bash 复制代码
[root@web1 ~]# cd /usr/local/etc/zabbix_agentd.conf.d/
[root@web1 zabbix_agentd.conf.d]# vim count.line.passwd //创建自定义key文件
UserParameter=count.line.passwd,sed -n '$=' /etc/passwd  //创建自定义key

统账户数量的命令

  • sed -n '$=' /etc/passwd
  • awk "END{print NR}" /etc/passwd
  • cat /etc/passwd | wc -l

3)重启agent服务,测试自定义key是否正常工作

bash 复制代码
[root@web1 ~]# systemctl restart zabbix_agentd.service
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd
21    //自定义key的命令结果

解释:[-s]指定需要监控的服务器,[-k]指定自定义Key


**常见报错:**自定义key变量名称与配置文件中的key不一致;(例如文中的pass)

bash 复制代码
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.pass
ZBX_NOTSUPPORTED: Unsupported item key.

**常见报错:**zabbix_get命令执行,报错配置错误

bash 复制代码
[root@web1 ~]# zabbix_get -s 192.168.2.5 -k count.line.passwd
zabbix_get [10378]: Check access restrictions in Zabbix agent configuration
  • 解决分析:检查agent配置文件是否正确
bash 复制代码
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
Server=127.0.0.1,192.168.2.5
ServerActive=127.0.0.1,192.168.2.5

补充:由于zabbix_agentd.conf配置文件仅允许本机和192.168.2.5访问,而192.168.2.5主机中未有自定义key,所以无法监控到该key导致报错;

步骤2:创建监控模板

  • 模板、应用集、监控项目关系图:

一个模板中可以有多个应用集,一个应用集可以有多个监控项目

1)添加监控模板

登录Zabbix Web监控控制台,通过首页栏【Configuration配置】--->【Template模板】--->【Create template创建模板】,填写模板名称,新建模板群组

  • 模板名称:count.line.passwd
  • 新建模板群组:count.line.passwd

创建模板后,默认模板中没有任何应用集、监控项、触发器、图形等;

2)创建应用集

点击模板后面的,打开创建应用集的页面,点击按钮;设置应用集名称(名称可以任意)

应用集名称:count.line.passwd

3)创建监控项目(监控项)

点击模板后面的,打开创建监控项的页面,点击按钮;

设置监控项目名称(名称可以任意)及对应的自定义key(必须与前面自定义的监控key名称一致)

  • 名称:count_line_passwd_item
  • 类型:Zabbix客户端(Zabbxi agent)
  • 键值:count.line.passwd //必须与web1被监控端主机自定义的监控key名称一致
  • 信息类型:数字(无正负)
  • 更新间隔:30秒
  • 应用集:count.line.passwd(前面步骤创建的应用集)

4)将创建的模板链接到被监控主机

将完整的监控模板制作完成后,就可将模板链接到主机实现监控功能。通过【Configuration配置】-->【Hosts主机】选择被监控主机web1,打开监控主机设置页面,在【Template模板】页面中选择需要链接到该主机的模板(例如:count_line.passwd),完成添加即可;

6)查看监控数据图形

点击【Monitoring监控中】---> 【Latest data最新数据】,根据需要在过滤器中填写过滤条件,选择监控【主机群组】和监控【主机】,找到count.line.passwd记录并查看监控图形;

可视化监控图形,如图所示:

思维导图:

小结:

本篇章节为 的学习**【第二阶段】SECURITY-DAY1** 笔记,这篇笔记可以初步了解到 监控基础(系统监控命令、监控软件)、Zabbix监控服务端部署、Zabbix监控客户端部署、创建监控主机、调用监控模板、自定义key、创建模板、应用集、监控项、绑定模板。除此之外推荐参考相关学习网址:


Tip:毕竟两个人的智慧大于一个人的智慧,如果你不理解本章节的内容或需要相关笔记、视频,可私信小安,请不要害羞和回避,可以向他人请教,花点时间直到你真正的理解

相关推荐
_.Switch41 分钟前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_8504108341 分钟前
文件系统和日志管理
linux·运维·服务器
JokerSZ.1 小时前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
SafePloy安策1 小时前
软件加密与授权管理:构建安全高效的软件使用体系
安全
XMYX-01 小时前
使用 SSH 蜜罐提升安全性和记录攻击活动
linux·ssh
芯盾时代1 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
心灵彼岸-诗和远方2 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘2 小时前
NFS服务器
运维·服务器
苹果醋33 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx