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)查看内存与交换分区信息

[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)查看磁盘信息

[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平均负载

[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软件包)

[root@web1 ~]# ifconfig eth0    //查看eth0网卡信息
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500ether 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 0TX 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)查看端口信息

[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限制

[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环境。

[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脚本的执行速度;

[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设置开机自启

[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服务并设置开机自启

[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服务并设置开机自启

[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多数源码包都需要依赖包,源码编译前需提前安装相关依赖包
[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等服务,测试被监控主机服务的状态

验证:

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

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

[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 ‘连接口令’;

[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]指定数据库密码

测试:

[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配置文件,设置数据库相关参数

[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)

[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进行排错;


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

[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)

[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页面

[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的环境要求;

[root@zabbixserver ~]# yum -y install php-gd php-xml php-bcmath php-mbstring

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

 [root@zabbixserver ~]# vim /etc/php.ini394 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页面,查看页面是否还有提示

[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限制

[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软件

[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服务

[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)

[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目录

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

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

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

[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是否正常工作

[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)

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

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

[root@web1 ~]# zabbix_get -s 192.168.2.5 -k count.line.passwd
zabbix_get [10378]: Check access restrictions in Zabbix agent configuration
  • 解决分析:检查agent配置文件是否正确
[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、创建模板、应用集、监控项、绑定模板。除此之外推荐参考相关学习网址:

  • Linux命令:traceroute命令(路由跟踪)-CSDN博客

  • 使用iostat分析IO性能_iostat使用率满了,影响读写吗-CSDN博客

  • 什么是zabbix(高度集成的监控集成方案)-CSDN博客


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/52221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Hot100】LeetCode—114. 二叉树展开为链表

目录 1- 思路技巧——借助指针 2- 实现⭐114. 二叉树展开为链表——题解思路 3- ACM 实现 原题连接&#xff1a;114. 二叉树展开为链表 1- 思路 技巧——借助指针 思路&#xff1a;通过 ① 将左子树的右下结点的 .next ——> 拼接到当前节点的右子树上。 构造 cur 指针&a…

数据结构【链试结构二叉树】

&#x1f31f;个人主页&#xff1a;落叶 目录 ​编辑 实现链式结构⼆叉树 前中后序遍历&#xff1a; 遍历规则 代码实现 前序遍历&#xff1a; 中序遍历&#xff1a; 后序遍历&#xff1a; 图解遍历&#xff1a; 函数递归栈帧图&#xff1a; 结点个数以及高度等 【⼆…

每日OJ_牛客_淘宝网店(日期模拟)

目录 牛客_淘宝网店&#xff08;日期模拟&#xff09; 解析代码 牛客_淘宝网店&#xff08;日期模拟&#xff09; 淘宝网店__牛客网 解析代码 这是一个变相的日期计算器。只不过2、3、5、7、11月算1天&#xff0c;其他7个月算2天。 既然是一个变相的日期计算器&#xff0c;那…

基于STM32开发的智能空气质量监测系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 系统初始化空气质量监测与处理风扇控制与状态显示Wi-Fi通信与远程监控应用场景 家庭和办公室的空气质量监测室内空气净化器的智能控制常见问题及解决方案 常见问题解决方案结论 1. 引言 空气…

单位信息宣传考核投稿方法不对让我尝尽了苦头

自从我担任单位的信息宣传员以来,便深刻体会到“信息宣传”四个字背后的重量。每月的信息宣传考核任务就像一座大山,压在我心头。起初,我像大多数同行一样,习惯于通过电子邮件向各大媒体投稿,但这种方式让我尝尽了苦头。 记得开始尝试通过邮箱投稿时,我满怀信心地将精心准备的文…

web前端之选项卡集合、动态添加类名、动态移除类名、动态添加样式、激活、间距、节流、tabBar

MENU input的checked属性(HtmlStyle)伪元素(HtmlStyleJavaScript)激活类(HtmlStyleJavaScript)vue伪元素 input的checked属性(HtmlStyle) 前言 代码段创建一个使用HTML和CSS实现的标签式内容切换组件。通过选择不同的标签&#xff0c;可以展示相应的内容。 代码段实现一个简洁…

02 tkinter有趣项目-头像制作-界面设计

头像制界面设计 avatar.png 界面 界面分析 背景图片: 顶部中央位置显示一个小孩背着书包的图片。这个图片是程序的背景&#xff0c;占据了大部分的窗口空间。 标题和按钮: 在图片上方&#xff0c;有一个标题栏&#xff0c;显示文本“在线姓氏头像制作”&#xff0c;使用隶书字…

redis面试(二十)读写锁WriteLock

写锁WriteLock 和读锁一样&#xff0c;在这个地方执行自己的lua脚本&#xff0c;我们去看一下 和read没有多大的区别 KEYS[1] anyLock ARGV[1] 30000 ARGV[2] UUID_01:threadId_01:write hget anyLock mode&#xff0c;此时肯定是没有的&#xff0c;因为根本没这个锁 …

“双指针”算法下篇

WeChat_20240806081335 对双指针这一思想在OJ 里面的相关应用&#xff0c;感兴趣的友友们&#xff0c;可以看下此篇博客 https://blog.csdn.net/X_do_myself/article/details/141291451?spm1001.2014.3001.5502 目录 一盛最多水的容器 1题目链接&#xff1a;盛最多水的容器…

音频分割软件有什么?最方便的音频分割软件分享给你

一段长音频就像是一本厚重的百科全书&#xff0c;而音频剪辑师的任务&#xff0c;就是要将这本书拆分成数个章节&#xff0c;每章都有其独立的主题和内容&#xff0c;这非常考验剪辑师们的音频分割技巧。 幸运的是&#xff0c;随着技术的发展&#xff0c;市面上出现了许多优秀…

微信小程序引入全局环境变量

有时候一套代码要在多个小程序appId下使用,其中又有一些数据(文字)需要做区分.可以使用下面的方法 把要配置的数据以export default 形式导出 在app.js中,引入project.config.0.js文件,将导出的数据放在globalData中 在页面目录中,即可利用getApp()方法使用全局变量 也可以放数…

剪辑视频的软件在手,温馨瞬间秒变电影级大片

在现在这个啥都能数字化的年代&#xff0c;家里拍的视频成了咱们记录生活、留下美好回忆的好办法。不过&#xff0c;好多人可能就只是随便拍拍&#xff0c;然后直接发出去&#xff0c;没想过用专业的剪辑视频的软件来搞一搞&#xff0c;让自己的视频更有感觉&#xff0c;看起来…

微服务通信

一、Feign远程调用 Feign是Spring Cloud提供的⼀个声明式的伪Http客户端&#xff0c; 它使得调⽤远程服务就像调⽤本地服务⼀样简单&#xff0c; 只需要创建⼀个接⼝并添加⼀个注解即可。 Nacos很好的兼容了Feign&#xff0c; Feign 默认集了Ribbon&#xff0c; 所以在Nacos下…

vue全局参数

/* eslint-disable no-new */ new Vue({el: #app,router,components: { App },template: <App/>,data:function(){return{wbWinList: [] // 定义的变量&#xff0c;全局参数}}, }) //使用全局参数 // this.$root.backgroundColor 666;其它页面如果想监听改变 //监听全…

polarctf靶场[CRYPTO]显而易见的密码、[CRYPTO]夏多的梦、[CRYPTO]再这么说话我揍你了、[CRYPTO]神秘组织M

[CRYPTO]显而易见的密码 考点&#xff1a;ntlm编码 打开文件&#xff0c;显示内容就是ntlm格式 ntlm解密 在线网站&#xff1a; https://www.cmd5.com/便可得到flag [CRYPTO]夏多的梦 根据题目提示可以猜测为夏多密码 考点&#xff1a;夏多密码 在线加密原理网站&#x…

链表OJ题——链表的回文结构

文章目录 一、题目链接二、解题思路三、解题代码 一、题目链接 链表的回文结构 二、解题思路 三、解题代码

【JAVA基础】类与对象

文章目录 Java类Java对象为什么Java会设计对象Java对象怎么用程序的执行流程 Java类 JAVA类&#xff1a;项目中新建的.java文件就是JAVA类&#xff0c;其中包含代码&#xff0c;通过javac命令编译为二进制.class文件&#xff0c;让计算机读取。类是对象的模板 Java对象 JAVA…

【C++题解】1146. 求S的值

欢迎关注本专栏《C从零基础到信奥赛入门级&#xff08;CSP-J&#xff09;》 问题&#xff1a;1146. 求S的值 类型&#xff1a;递归基础、函数 题目描述&#xff1a; 求 S12471116…的值刚好大于等于 5000 时 S 的值。 输入&#xff1a; 无。 输出&#xff1a; 一行&…

原生js中的防抖节流笔记

防抖,单位时间内&#xff0c;频繁触发&#xff0c;只执行最后一次 效果演示 优化前&#xff0c;不断触发&#xff0c;浪费性能 优化后&#xff0c;只在指定时间内触发 演示代码 import debounce from "/node_modules/lodash-es/debounce.js"; const oBox docu…

宿舍管理系统设计与分析

第一章 管理信息系统概述 在人类进入21世纪之际&#xff0c;随着社会的组织化程度以及企业生产的社会化程度越来越高&#xff0c;信息作为一种资源已经和材料、能源并称为现代社会化发展的三大支柱之一。管理信息系统是融科学、信息科学、系统工程以及现代通讯技术、计算机技术…