RHEL9.5系统安装7.0.4版本zabbix

一、zabbix监控

(一)为什么要监控?

        对于运维人员来说,监控是非常重要的,因此如果想要保证线上业务整体能够稳定运行,那么我们则需要实时关注与其相关的各项指标是否正常,而一个业务系统的背后,往往存在着很多的服务器、网络设备等硬件资源,如果我们想要能够更加方便的、集中的监控他们,我们则需要依靠一些外部的工具,而zabbix就是一个被广泛使用的,可以实现集中监控管理的应用程序。
      我们监控的初衷就是当某些指标不符合我们的需求时,我们能够在第一时间发现异常,所以,监控工具需要定期的对被监控主机进行检查、信息收集等操作,当被监控主机出现异常时,能够及时报警、通知管理员,并且需要记录这些异常,以便我们分析这些数据,查漏补缺,那么,一个监控工具就应该具备采集信息、存储信息、展示信息、报警通知等功能。而zabbix就可以做到这些。
**总结来说,监控可以给我带来:**

  1. 在需要的时刻,提前提醒我们服务器出问题了
  2. 当出问题之后,可以找到问题的根源
  3. 网站/服务器的可用性

**网站可用性**
      在软件系统的高可靠性(也称为高可用性,英文描述为HA,High Available)里有个衡量其可靠性的标准——X个9,X个9表示在软件系统1年时间的使用过程中,系统可以正常使用时间与总时间(1年)之比,我们通过下面的计算来感受下X个9在不同级别的可靠性差异。

  1. **1个9:(1-90%)*365=36.5天,**表示该软件系统在连续运行1年时间里最多可能的业务中断时间是36.5天。
  2. **2个9:(1-99%)*365=3.65天** , 表示该软件系统在连续运行1年时间里最多可能的业务中断时间是3.65天。
  3. **3个9:(1-99.9%)*365*24=8.76小时**,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是8.76小时。
  4. **4个9:(1-99.99%)*365*24=0.876小时=52.6分钟**,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是52.6分钟。
  5. **5个9:(1-99.999%)*365*24*60=5.26分钟**,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是5.26分钟。
  6. **6个9:(1-99.9999%)*365*24*60*60=31秒**, 示该软件系统在连续运行1年时间里最多可能的业务中断时间是31秒。

**监控什么东西**?
    监控一切需要监控的东西,只要能够想到,能够用命令实现的都能用来监控。
监控范畴

**怎么来监控**?

1、远程管理服务器
如果想远程管理服务器就有远程管理卡,比如Dell idRAC,HP ILO,IBM IMM
2、监控硬件
查看硬件的温度/风扇转速,电脑有鲁大师,服务器就有ipmitool。
使用ipmitool实现对服务器的命令行远程管理。
yum -y install OpenIPMI ipmitool  # IPMI在物理机可以成功,虚拟机不行
3、查看cpu相关
lscpu、uptime、top、vmstat、mpstat、sar
4、查看内存相关
free、top、cat  /proc/meminfo
5、查看磁盘相关的
df、dd、iotop、iostat、flo
6、查看网络相关的
ifconfig、iftop、tcpdump
7、查看进程相关的
           ps、pstree、pgrep、pidstat、top、htop
8、 网站/业务/api
           curl、wget
9、 服务
           Systemctl、service、chkconfig(centos6) 

        除了使用系统命令查看计算机状态数据,还可以使用监控工具,如zabbix监控系统。

二、企业级监控解决方案——Zabbix

        Zabbix是一个高度集成的企业级开源网络监控解决方案,提供分布式监控以及集中的web管理界面。
        zabbix具备常见商业监控软件所具备的功能,例如主机性能监控,网络设备性能监控,数据库性能监控,ftp、http等通用协议的监控,能够灵活利用可定制告警机制,允许用户对事件发送基于E-mail的告警,保证相关人员可以快速解决。
        zabbix提供杰出的报表及实时的图形化数据处理,实现对监控主机7x24小时集中监控。
        Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置,而被监控对象只需要支持SNMP协议或者运行Zabbix agents代理程序即可。服务端监听端口为10051,而被监控端即Zabbix——agents代理程序监控10050端口。
 

官方网站
http://www.zabbix.com/

(一)Zabbix主要功能


Zabbix是一个高度集成的网络监控套件,可实现如下功能:

  1. 数据收集:自定义间隔收集收据
  2. 灵活的阈值定义:灵活地自定义故障阈值,Zabbix中称为触发器(trigger), 存储在后端数据库中;
  3. 高级告警配置:可以自定义告警升级(escalation)、接收者及告警方式;通过远程命令实行自动化动作;
  4. 实时绘图:通过内置的绘图引擎实现监控数据实时绘图;
  5. 具备应对复杂环境情况:通过Zabbix proxy可以非常容易的创建远程监控;

(二)zabbix监控范畴

  • 硬件监控:Zabbix IPMI Interface ,通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控被监控对象的物理特征,比如电压、温度、风扇状态、电源状态等。
  • 系统监控:Zabbix Agent Interface ,通过专用的代理程序进行监控,与常见的master/agent模型类似,如果被监控对象支持对应的agent,推荐首选这种方式。
  • Java监控:Zabbix JMX Interface ,通过JMX进行监控,JMX(java management extensions,即java管理扩展),监控JVM虚拟机时,使用这种方法是非常不错的选择。
  • 网络设备监控:Zabbix SNMP Interface ,通过SNMP协议与被监控对象进行通信,SNMP协议的全称为simple network management protocol,被译为简单网络管理协议,通常来说,我们无法在路由器、交换机这种硬件上安装agent,但是这些硬件都支持SNMP协议。
  • 应用服务监控:Zabbix Agent UserParameter 
  • MySQL数据库监控:percona-monitoring-plulgins   
  • URL监控:Zabbix Web 监控

(三)Zabbix监控组件

        主要包括:Zabbix Server、Zabbix Proxy、Zabbix Agent

每个模块工作职责:

  • 1、Zabbix Server:Zabbix Server为核心组件,用来获取agent存活状况及监控数据。所有的配置、统计、操作数据均通过Server进行存取到database;
  • 2、Zabbix Database:用户存储所有zabbix的配置信息、监控数据的数据库;
  • 3、Zabbix Web:Zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,通常与zabbix Server运行在同一台主机上,也可以单独部署在独立的服务器上;
  • 4、Zabbix Proxy:常用于分布监控环境中,代理zabbix Server收集部分被监控的监控数据并统一发往Server端;(通常大于500台主机需要使用)
  • 5、Zabbix Agent:部署在被监控主机上,负责收集被监控主机的数据,并发往Server端或Proxy端;
  • 另外,zabbix server、proxy、agent都有自己的配置文件以及log文件,重要的参数需要在这里配置,后面会详细说明。

(四)zabbix常用的监控架构平台

server-agentd模式:

        将zabbix agent部署到被监控主机上,由agent采集数据,报告给zabbix server,zabbix server将从agent端接收到的信息存储于zabbix database,如果管理员需要查看各种监控信息,则需要zabbix web,zabbix web是使用php编写的,所以,如果想要使用zabbix web展示相关监控信息,需要依赖LAMP或LNMP环境。不管是zabbix server,或是zabbix web,他们都需要连接zabbix database获取相关数据。

server-proxy-agentd模式:

        当监控规模变得庞大时,我们可能有成千上万台设备需要监控,那如何分摊巨大的监控压力呢?其实,zabbix天生就有处理这种问题的能力,因为zabbix支持分布式监控,我们可以把成千上万的被监控对象分成不同的区域,每个区域中设置一台代理主机,区域内的每个被监控对象的信息被agent采集,提交给代理主机,我们称这些代理主机为zabbix proxy,zabbix proxy再将收集到的信息统一提交给zabbix server处理。这样,zabbix proxy分摊了zabbix server的压力,同时,我们还能够通过统一的监控入口,监控所有的对象。

(五)Zabbix运行过程图

一个监控系统运行的大概的流程是这样的:
agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agent收集数据分为主动和被动两种模式:
主动:agent请求server获取监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。

三、部署zabbix


实验环境:

主机主机名操作系统IP地址软件版本
Zabbix监控端zabbix_serverRHEL9.4 192.168.1.40 Zabbix-7.0.4
Zabbix被监控端zabbix_agentRHEL9.4 192.168.1.41 abbix-7.0.4


        zabbix监控端:192.168.1.40  #zabbix的服务端(若要监控本机,则需要配置本机的zabbix agent)。
       Zabbix agent被监控主机:192.168.1.41   #zabbix的客户端(被监控端,需要配置Zabbix agent。
关闭selinux、关闭防火墙、保证机器可以连接外网

[root@zabbix_server ~]# systemctl  stop  firewalld
[root@zabbix_server ~]# systemctl  disable  firewalld
[root@zabbix_server ~]# setenforce  0
[root@zabbix_server ~]# sed -n '22p'  /etc/selinux/config 
SELINUX=enforcing
[root@zabbix_server ~]# sed -i '22c SELINUX=disabled'  /etc/selinux/config
[root@zabbix_server ~]# sed -n '22p'  /etc/selinux/config 
SELINUX=disabled


(一)监控端zabbix_server上使用yum构建LNMP的环境

搭建本地yum和网络epel源码源
1.本地yum源

[root@zabbix_server ~]# mkdir  /media/cdrom/
[root@zabbix_server ~]# mount  /dev/sr0  /media/cdrom/
[root@zabbix_server ~]# vi /etc/yum.repos.d/rhel-9.repo
[BaseOs]
name=redhat enterprise linux 9
gpgcheck=0
baseurl=file:///media/cdrom/BaseOS
enabled=1
[AppStream]
name=redhat enterprise linux 9
gpgcheck=0
baseurl=file:///media/cdrom/AppStream
enabled=1
[root@zabbixserver ~]#

2.自行设置网络epel源

[root@zabbix_server  ~]# vi /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place its address here.
#baseurl=https://download.example/pub/epel/$releasever/Everything/$basearch/
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir
enabled=1
gpgcheck=0
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever

[epel-debuginfo]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Debug
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place its address here.
#baseurl=https://download.example/pub/epel/$releasever/Everything/$basearch/debug/
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-$releasever&arch=$basearch&infra=$infra&content=$contentdir
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux $releasever - $basearch - Source
# It is much more secure to use the metalink, but if you wish to use a local mirror
# place its address here.
#baseurl=https://download.example/pub/epel/$releasever/Everything/source/tree/
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-source-$releasever&arch=$basearch&infra=$infra&content=$contentdir
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-$releasever
gpgcheck=1
[root@zabbix_server  ~]# 
2.1.2、Yum安装LNMP平台
[root@zabbix_server ~]# yum -y install nginx mysql-server mysql php php-fpm php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json 
[root@zabbix_server ~]#

3、启动MySQL:

[root@zabbix_server ~]# systemctl start mysqld
[root@zabbix_server ~]# systemctl enable mysqld
[root@zabbix_server ~]# netstat -anpt | grep 3306
tcp6       0      0 :::33060                :::*                    LISTEN      14047/mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      14047/mysqld

4.登陆MySQL:(默认无密码)
查看初始化密码:

[root@zabbix_server ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.36

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
修改root用户密码:
mysql> alter user root@localhost identified by '1234.Com';
Query OK, 0 rows affected (0.01 sec)

mysql> \q
Bye


监控端zabbix_server上修改各服务的配置:
修改php的配置文件并启动服务:
1.将php的配置文件备份后再修改:

[root@zabbix_server ~]# cp /etc/php.ini{,.bak}
注意php配置文件的注释符为分号”;”,以下修改内容都需要取消
[root@zabbix_server ~]# vi /etc/php.ini
找到932行
date.timezone = 
改为
date.timezone = PRC            #设置时区
找到400行
expose_php = On
改为
expose_php = Off                #禁止显示php版本的信息
找到198行
short_open_tag = Off
改为
short_open_tag = On            #支持php段标签
找到703行
post_max_size = 8M
改为
post_max_size = 16M            #上传文件大小
找到409行
max_execution_time = 30
改为
max_execution_time = 300    #php脚本最大执行时间
找到419行
max_input_time = 60
改为
max_input_time = 300            #以秒为单位对通过POST,GET以及PUT方式接收
在420行添加内容:
always_populate_raw_post_data = -1
在1561行添加内容:
mbstring.func_overload = 0


2.修改php-fpm的配置文件:

创建php-fpm运行用户:
[root@zabbix_server ~]# useradd -M -s /sbin/nologin www
修改配置:
[root@zabbix_server ~]# cp /etc/php-fpm.d/www.conf{,.bak}
[root@zabbix_server ~]# vi /etc/php-fpm.d/www.conf
[root@zabbix_server ~]# egrep -v -n "^;|^$" /etc/php-fpm.d/www.conf
4:[www]
24:user = www                    #将apache改为www
26:group = www                    #将apache改为www
38:listen = 127.0.0.1:9000          #添加
39: ;listen = /run/php-fpm/www.sock  #注释掉
64:listen.allowed_clients = 127.0.0.1
104:pm = dynamic
115:pm.max_children = 300            #修改
120:pm.start_servers = 10            #修改
125:pm.min_spare_servers = 10        #修改
130:pm.max_spare_servers = 50        #修改
325:slowlog = /var/log/php-fpm/www-slow.log
423:php_admin_value[error_log] = /var/log/php-fpm/www-error.log
424:php_admin_flag[log_errors] = on
435:php_value[session.save_handler] = files
436:php_value[session.save_path]    = /var/lib/php/session
437:php_value[soap.wsdl_cache_dir]  = /var/lib/php/wsdlcache
启动php-fpm服务:
[root@zabbix_server ~]# systemctl start php-fpm
[root@zabbix_server ~]# netstat -anpt | grep 9000
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      23241/php-fpm: mast


修改Nginx配置文件并启动服务

备份并修改Nginx配置文件:
[root@zabbix_server ~]# cp /etc/nginx/nginx.conf{,.bak}
[root@zabbix_server ~]# vi /etc/nginx/nginx.conf
[root@zabbix_server ~]# egrep -v '^#|^$' /etc/nginx/nginx.conf
user  www;        #将nginx改为www
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
    worker_connections 1024;
}
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
    fastcgi_buffer_size 64k;  #添加
    fastcgi_buffers 4 64k;    #添加
    include /etc/nginx/conf.d/*.conf;
    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;
        include /etc/nginx/default.d/*.conf;
        error_page 404 /404.html;
        location = /404.html {
        }
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }
}

[root@zabbix_server ~]# vi /etc/nginx/conf.d/default.conf(内容如下!)
[root@zabbix_server ~]# egrep -v '#|^$' /etc/nginx/conf.d/default.conf
server {
    listen       80;
    server_name  localhost;
    location / {
        root   /usr/share/nginx/html;
        index  index.php index.html index.htm;    #修改
    }
    location ~ \.php$ {        #添加
        root /usr/share/nginx/html;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include  fastcgi_params;
   }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
测试Nginx配置:
[root@zabbix_server ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
启动Nginx服务:
[root@zabbix_server ~]# systemctl start nginx
[root@zabbix_server ~]# systemctl enable nginx
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
[root@zabbix_server ~]# netstat -anpt | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      26348/nginx: master


修改MySQL中用户的密码验证方式:

1.登陆MySQL创建用于php连接的用户:
[root@zabbix_server ~]# mysql -uroot -p
Enter password:

mysql> create user root@127.0.0.1 identified with mysql_native_password by '1234.Com';
Query OK, 0 rows affected (0.01 sec)

mysql> grant all on *.* to root@127.0.0.1;
Query OK, 0 rows affected (0.00 sec)

mysql> alter user root@localhost identified with mysql_native_password by '1234.Com';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> \q
Bye


监控端zabbix_server上测试LNMP平台的搭建:

1、准备测试文件:
[root@zabbix_server ~]# cat /usr/share/nginx/html/test1.php
<?php
phpinfo();
?>
[root@zabbix_server ~]# cat /usr/share/nginx/html/test2.php
<?php
$link=mysqli_connect('127.0.0.1','root','1234.Com');
if($link) echo "恭喜你,数据库连接成功";
mysqli_close($link);
?>

使用浏览器访问zabbix_server测试:
测试1:

测试2:


监控端zabbix_server上搭建zabbix-7.0.4:

zabbix解压
[root@zabbix_server ~]# ls
anaconda-ks.cfg  zabbix-7.0.4.tar.gz
[root@zabbix_server ~]# tar xf zabbix-7.0.4.tar.gz
[root@zabbix_server ~]# ls
anaconda-ks.cfg  zabbix-7.0.4  zabbix-7.0.4.tar.gz

登陆MySQL创建zabbix所需库和用户:
[root@zabbix_server ~]# mysql -uroot -p1234.Com
Enter password:

mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
Query OK, 1 row affected (0.00 sec)

mysql> create  user  zabbix@localhost  identified with mysql_native_password by '1234.Com';
Query OK, 0 rows affected (0.01 sec)

Mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
Query OK, 0 rows affected (0.01 sec)

Mysql> SET GLOBAL log_bin_trust_function_creators = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> \q
Bye

导入zabbix数据库,严格遵循顺序:
[root@zabbix_server ~]# cd zabbix-7.0.4/
[root@zabbix_server ~]# cd  database/mysql
[root@zabbix_server ~]# mysql -uzabbix -p1234.Com zabbix < schema.sql
[root@zabbix_server ~]# mysql -uzabbix -p1234.Com zabbix < images.sql
[root@zabbix_server ~]# mysql -uzabbix -p1234.Com --default-character-set=utf8mb4 zabbix < data.sql
[root@zabbix_server ~]# mysql -uroot -p1234.Com       
mysql> SET GLOBAL log_bin_trust_function_creators = 0;
mysql> quit;
[root@zabbix_server ~]# 

安装zabbix_server依赖:
[root@zabbix_server ~]# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.36-1.el9.x86_64.rpm-bundle.tar
[root@zabbix_server ~]# mkdir sql
[root@zabbix_server ~]# tar xf mysql-8.0.36-1.el9.x86_64.rpm-bundle.tar -C sql
[root@zabbix_server ~]# cd sql/
[root@zabbix_server sq]# ls
[root@zabbix_server sql]# rpm -ivh mysql-community-* --force --nodeps
[root@zabbix_server sql]# cd
[root@zabbix_server ~]# 

[root@zabbix_server ~]# yum -y install libxml2-devel pcre pcre-devel net-snmp-devel libevent-devel libcurl-devel go
[root@zabbix_server ~]#
yum install OpenIPMI OpenIPMI-lanserv OpenIPMI-libs   安装下列软件的依赖
[root@zabbix_server ~]# wget https://dl.rockylinux.org/pub/rocky/9/devel/x86_64/os/Packages/o/OpenIPMI-devel-2.0.32-5.el9_4.x86_64.rpm
[root@zabbix_server ~]# dnf -y localinstall  OpenIPMI-devel-2.0.32-5.el9_4.x86_64.rpm
[root@zabbix_server ~]#

创建用户zabbix运行用户:
[root@zabbix_server ~]# groupadd zabbix
[root@zabbix_server ~]# useradd  -M  -s /sbin/nologin -g zabbix  zabbix

编译安装zabbix:
[root@zabbix_server ~]# cd zabbix-7.0.4/
[root@zabbix_server zabbix-7.0.4]# ./configure --prefix=/usr/local/zabbix  --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi
[root@zabbix_server zabbix-7.0.4]# make install
[root@zabbix_server zabbix-7.0.4]# cd

添加系统软链接:
[root@zabbix_server ~]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/
[root@zabbix_server ~]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/

配置zabbix_server
[root@zabbix_server ~]# cp /usr/local/zabbix/etc/zabbix_server.conf{,.bak}
[root@zabbix_server ~]# vi /usr/local/zabbix/etc/zabbix_server.conf
[root@zabbix_server ~]# egrep -v -n '#|^$' /usr/local/zabbix/etc/zabbix_server.conf
38:LogFile=/usr/local/zabbix/logs/zabbix_server.log
69:PidFile=/usr/local/zabbix/logs/zabbix_server.pid
88:DBHost=localhost
100:DBName=zabbix
116:DBUser=zabbix
124:DBPassword=1234.Com
131:DBSocket=/var/lib/mysql/mysql.sock
141:DBPort=3306
516:Timeout=4
602:LogSlowQueries=3000
675:Include=/usr/local/zabbix/etc/zabbix_server.conf.d/*.conf
718:StatsAllowedIP=0.0.0.0
[root@zabbix_server ~]# mkdir /usr/local/zabbix/logs
[root@zabbix_server ~]# chown -R zabbix.zabbix /usr/local/zabbix/

在zabbix_server上配置agent端:
[root@zabbix_server ~]# cp /usr/local/zabbix/etc/zabbix_agentd.conf{,.bak}
[root@zabbix_server ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
[root@zabbix_server ~]# egrep -vn '#|^$' /usr/local/zabbix/etc/zabbix_agentd.conf
11:PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
30:LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
113:Server=127.0.0.1
121:ListenPort=10050
167:ServerActive=127.0.0.1
178:Hostname=Zabbix server
299:Timeout=15
330:Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf

添加zabbix启动脚本:
[root@zabbix_server ~]# vi /usr/lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/zabbix/logs/zabbix_server.pid
User=zabbix
Group=zabbix
ExecStart=/usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
ExecStop=/bin/kill -SIGTERM $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target
[root@zabbix_server ~]# 
[root@localhost ~]# vi /usr/lib/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Server
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/zabbix/logs/zabbix_agentd.pid
User=zabbix
Group=zabbix
ExecStart=/usr/local/zabbix/sbin/zabbix_agentd  -c /usr/local/zabbix/etc/zabbix_agentd.conf
ExecStop=/bin/kill -SIGTERM $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target
[root@zabbix_server ~]#
[root@zabbix_server ~]# systemctl daemon-reload
[root@zabbix_server ~]# systemctl start zabbix-server.service
[root@zabbix_server ~]# systemctl enable zabbix-server.service
[root@zabbix_server ~]# systemctl start zabbix-agent.service
[root@zabbix_server ~]# systemctl enable zabbix-agent.service
[root@zabbix_server ~]# netstat -anpt |grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      8947/zabbix_agentd
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      8815/zabbix_server
tcp6       0      0 :::10050                :::*                    LISTEN      8947/zabbix_agentd
tcp6       0      0 :::10051                :::*                    LISTEN      8815/zabbix_server
[root@zabbix_server ~]

配置zabbix_server的Web页面:
[root@zabbix_server ~]# cp -r zabbix-7.0.4/ui/* /usr/share/nginx/html/
[root@zabbix_server ~]# chown -R www.www /usr/share/nginx/html/
[root@zabbix_server ~]# chown -R www.www /var/lib/php/session/

重启Nginx,php-fpm服务
[root@zabbix_server ~]# systemctl restart nginx php-fpm

浏览器访问zabbix_server页面进行配置
1.打开浏览器输入:192.168.1.40

2.修改语言:

3.检查环境,如图,确保环境符合条件要求:

4.配置zabbix连接数据库:

5.配置zabbix时区:

之后一直下一步即可

6.登陆zabbix:


将绘制图表中的乱码修改成中文:
以下就是乱码:

修改操作:

上传simkai.ttf文件
[root@zabbix_server ~]# cd /usr/share/nginx/html/assets/fonts/
[root@zabbix_server fonts]# ls
DejaVuSans.ttf    zabbix-icons.ttf   zabbix-icons.woff2
zabbix-icons.svg  zabbix-icons.woff
[root@zabbix_server fonts]# mv /root/simkai.ttf ./
[root@zabbix_server fonts]# ls
DejaVuSans.ttf  zabbix-icons.svg  zabbix-icons.woff
simkai.ttf      zabbix-icons.ttf  zabbix-icons.woff2
[root@zabbix_server fonts]# mv simkai.ttf DejaVuSans.ttf
mv:是否覆盖"DejaVuSans.ttf"? y
[root@zabbix_server fonts]#

再次查看:

四、被监控端zabbix_agent主机上安装zabbix_agent

安装zabbix_agent

挂载本地光盘进行安装:
[root@zabbix_agent ~]# vi /etc/yum.repos.d/aliyun.repo
[BaseOS2]
name=BaseOS2
baseurl=https://mirrors.aliyun.com/rockylinux/9/BaseOS/$basearch/os/
gpgcheck=0
enabled=1
gpgkey=https://mirrors.aliyun.com/rockylinux/RPM-GPG-KEY-Rocky-9

[AppStream2]
name=AppStream2
baseurl=https://mirrors.aliyun.com/rockylinux/9/AppStream/$basearch/os/
gpgcheck=0
enabled=1
gpgkey=https://mirrors.aliyun.com/rockylinux/RPM-GPG-KEY-Rocky-9

[extras3]
name=extras3
baseurl=https://mirrors.aliyun.com/rockylinux/9/extras/$basearch/os/
gpgcheck=0
enabled=1
gpgkey=https://mirrors.aliyun.com/rockylinux/RPM-GPG-KEY-Rocky-9

[plus3]
name=plus3
baseurl=https://mirrors.aliyun.com/rockylinux/9/plus/$basearch/os/
gpgcheck=0
enabled=1
gpgkey=https://mirrors.aliyun.com/rockylinux/RPM-GPG-KEY-Rocky-9
[root@zabbix_agent ~]#
[root@zabbix_agent ~]#  vi  /etc/yum.repos.d/rhel-9.repo
[BaseOs]
name=redhat enterprise linux 9
gpgcheck=0
baseurl=file:///media/cdrom/BaseOS
enabled=1
[AppStream]
name=redhat enterprise linux 9
gpgcheck=0
baseurl=file:///media/cdrom/AppStream
enabled=1
[root@zabbix_agent ~]# mount /dev/sr0  /media/cdrom/
mount: /media/cdrom: /dev/sr0 已挂载于 /media/cdrom.
[root@zabbix_agent ~]#
[root@zabbix_agent ~]# yum -y install pcre pcre-devel net-snmp net-snmp-devel curl-devel   libssh2-devel libevent libevent-devel curl curl-devel net-snmp net-snmp-devel perl-DBI
[root@zabbix_agent ~]# 
[root@zabbix_agent ~]#wget https://dl.rockylinux.org/pub/rocky/9/devel/x86_64/os/Packages/o/OpenIPMI-devel-2.0.32-5.el9_4.x86_64.rpm
[root@zabbix_agent ~]# dnf -y localinstall  OpenIPMI-devel-2.0.32-5.el9_4.x86_64.rpm
[root@zabbix_agent ~]#


创建用户:
[root@zabbix_agent ~]# groupadd zabbix
[root@zabbix_agent ~]# useradd  -M  -s /sbin/nologin -g zabbix  zabbix
3.3、zabbix_agent端编译安装:
[root@zabbix_agent ~]# ls
anaconda-ks.cfg  zabbix-7.0.4.tar.gz
[root@zabbix_agent ~]# tar xf zabbix-7.0.4.tar.gz
[root@zabbix_agent ~]# cd zabbix-7.0.4/
[root@zabbix_agent zabbix-7.0.4]# ./configure --prefix=/usr/local/zabbix --enable-agent
[root@zabbix_agent zabbix-7.0.4]# make install
[root@zabbix_agent zabbix-7.0.4]# cd


创建软链接:
[root@zabbix_agent ~]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/
[root@zabbix_agent ~]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
3.4、配置zabbix_agent
[root@zabbix_agent ~]# cp /usr/local/zabbix/etc/zabbix_agentd.conf{,.bak}
[root@zabbix_agent ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
[root@zabbix_agent ~]# egrep -vn '#|^$' /usr/local/zabbix/etc/zabbix_agentd.conf
11:PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
30:LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
113:Server=192.168.1.40            #zabbix_server地址
121:ListenPort=10050
167:ServerActive=192.168.1.40        #zabbix_server地址
178:Hostname=zabbix_agent
299:Timeout=15
331:Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
[root@zabbix_agent ~]# mkdir /usr/local/zabbix/logs
[root@zabbix_agent ~]# chown -R zabbix.zabbix /usr/local/zabbix/


添加zabbix_agent启动脚本:
[root@zabbix_agent ~]# vi /lib/systemd/system/zabbix-agent.service
[Unit]
Description=Zabbix Server
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/zabbix/logs/zabbix_agentd.pid
User=zabbix
Group=zabbix
ExecStart=/usr/local/zabbix/sbin/zabbix_agentd  -c /usr/local/zabbix/etc/zabbix_agentd.conf
ExecStop=/bin/kill -SIGTERM $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target
[root@zabbix_agent ~]# systemctl daemon-reload
[root@zabbix_agent ~]# systemctl start zabbix-agent.service
[root@zabbix_agent ~]# netstat -anpt |grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      43106/zabbix_agentd
[root@zabbix_agent ~]#


zabbix_server测试与zabbix_agent端的通信:
[root@zabbix_server ~]# zabbix_get -s 192.168.1.41 -p 10050 -k system.uname
Linux zabbix_agent 5.14.0-427.13.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Apr 10 10:29:16 EDT 2024 x86_64
[root@zabbix_server ~]#

登陆zabbix_server的Web界面配置监控zabbix_agent主机
1.创建主机:

2.配置被监控主机的模版和端口:

常见进程:
        默认情况下zabbix包含5个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一个zabbix_java_gateway是可选,这个需要另外安装。下面来分别介绍下他们各自的作用。

  • (1)zabbix_agentd:
  • 客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等。
  • (2)zabbix_get
  • zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。
  • (3)zabbix_sender
  • zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。
  • (4)zabbix_server
  • zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server
  • 备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。
  • (5)zabbix_proxy
  • zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交到server里。
  • (6)zabbix_java_gateway
  • zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。

zabbix监控环境中基本概念:

  • 1:主机(host):要监控的网络设备或主机,可由IP或DNS名称指定;
  • 2:主机群组(host group):主机的逻辑容器,可以包含主机和模板;
  • 3:监控项(item):一个特定监控指标的相关的数据;这些数据来自于被监控对象;item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由"key"标识;
  • 4:触发器(trigger):一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据再次恢复到合理范围,又转变为"OK";
  • 5:事件(event):触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等;
  • 6:动作(action):指对于特定事件事先定义的处理方法,如发送通知,何时执行操作;
  • 7:报警升级(escalation):发送警报或者执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等;
  • 8:媒介(media):发送通知的手段或者通道,如Email、Jabber或者SMS等;
  • 9:通知(notification):通过选定的媒介向用户发送的有关某事件的信息;
  • 10:远程命令(remote command):预定义的命令,可在被监控主机处于某特定条件下时自动执行;
  • 11:模板(template):用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、appication以及low-level discovery rule;模板可以直接链接至某个主机;
  • 12:应用(application):一组item的集合;
  • 13:web场景(web scennario):用于检测web站点可用性的一个或多个HTTP请求;
  • 14:前端(frontend):Zabbix的web接口;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云隐智者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值