自动化运维监控技术之Zabbix教程入门基础

举报
tea_year 发表于 2025/07/15 11:12:49 2025/07/15
【摘要】 zabbix,这款企业级监控软件,能全方位监控各类网络参数,确保企业服务架构的安全稳定运行。它提供了灵活多样的告警机制,帮助运维人员迅速发现并解决问题。此外,zabbix还具备分布式监控功能,能应对复杂架构下的监控挑战,并配备了web页面,以直观的方式展示主机监控信息。

任务背景

公司的服务器里经常会有CPU很繁忙, 内存不够, 磁盘空间快满了, 网络很卡, 客户端连接不上等各种问题。我们运维工程师不能总是盯着服务器去查看,那样的话就太繁琐了, 而且很可能发现问题不及时。所以我们需要建立一套完善的监控系统,将所有需要监控的服务器及其各种需要的状态数据都实时地收集, 并图形化的展示,并可以进行报警, 让机器主动及时地与人沟通。

监控架构图.png

要求

1, 搭建监控服务器

2, 能够按照思路自定义监控并实现图形展示与报警

任务拆解

1, zabbix服务器搭建

2, 监控本机与远程主机

3, 学会创建监控项

4, 为监控项创建图形

5, 为图形创建触发器

6, 设定报警

学习目标

  • 能够安装zabbix服务器
  • 能够使用zabbix-agent监控本机
  • 能够管理zabbix用户与用户群组
  • 能够使用zabbix-agent监控远程linux机器并加入主机群组
  • 能够添加一个自定义监控项
  • 能够为添加的监控项创建图形
  • 能够为监控主机创建聚合图形
  • 能够为监控项设定简单的触发器

一、监控概述

为什么要监控?

答: 实时收集数据,通过报警及时发现问题,及时处理。数据为优化也可以提供依据。

Shell脚本:定时任务!

生活中的监控:

1541674782863.png

那么请问linux系统中的监控主要监控什么?

答: 任何你所想要监控的数据,如cpu负载,cpu的idle时间,内存使用量,内存利用率,io,network等等。


官方说明:来自维基百科:*监控*是指对行为、活动或其他*变动中*信息的一种持续性关注,通常是为了对人|物达成影响、管理、指导或保护的目的。

为什么要学习这个技术?

监控:

监视主机,架构状态控制,事后追责

目标:

*早发现早处理*,(故障,性能,架构)

网站扩容(用数据说话)

随着用户的增多,服务随时可能会被oom(Out of Memory)

主流的开源监控平台介绍

  • ==zabbix== 跨平台,画图,多条件告警,多种API接口。使用基数特别大。官网地址: https://www.zabbix.com/

  • ==prometheus== 是一个基于时间序列的数值数据的容器监控解决方案。官网地址: https://prometheus.io/

*阶段* 小结
过去 Nagios(难够死)+Cacti
目前 **Zabbix+Grafan, **Prometheu****s****(普罗米修斯),夜莺(didi).....
未来 Zabbix 7.0 lts , something new ‰

二、zabbix官网

1725002258042.png

下载页面可以看到是不是LTS版本

下载并安装 Zabbix

image-20240829225140811.png

三、环境准备:**

主机配置:

*规模* *平台* *CPU/**内存* *数据库* *受监控的主机数量*
小型 CentOS Virtual Appliance MySQL InnoDB 100
中型 CentOS 2 CPU cores/2GB MySQL InnoDB 500
大型 RedHat Enterprise Linux 4 CPU cores/8GB RAID10 MySQL InnoDB 或 PostgreSQL >1000
极大型 RedHat Enterprise Linux 8 CPU cores/16GB Fast RAID10 MySQL InnoDB 或PostgreSQL >10000

容量估算

*参数* *所需磁盘空间的计算公式 (单位:字节)*
Zabbix 配 置文件 固定大小。通常为 10MB 或更少。
History (历史数据) days (items/refresh rate) 24 3600 bytes items:监控项数量。 days:保留历史数据的天数。 refresh rate:监控项的更新间隔。 bytes:保留单个值所需要占用的字节数,依赖于数据库引擎,通常为 ~90 字节。
Trends (趋势数据) days (items/3600) 24 3600 bytes items:监控项数量。 days:保留历史数据的天数。 bytes:保留单个趋势数据所需要占用的字节数,依赖于数据库引擎,通常为 ~90 字节。
Events (事件数据) days events 24 3600 bytes events:每秒产生的事件数量。假设最糟糕的情况下,每秒产生 1 个事件。days:保留历史数据的天数。 bytes:保留单个趋势数据所需的字节数,取决于数据库引擎,通常为 ~170 字节。

主机规划⭐⭐⭐⭐⭐

*角色* *主机名* *eth0/eth1* *配置*
Zabbix服务端 zabbix-server 10.0.0.62/172.16.1.62 1C1G(实际推荐1C2G)
Zabbix客户端 web01 10.0.0.7/172.16.1.7 1C1G
Zabbix客户端 db01 10.0.0.51/172.16.1.51 1C1G
Zabbix客户端 nfs01 10.0.0.31
其他综合架构的主机都是客户端

四、稳步上手操作

zabbix基础原理架构图.png

4.1 部署ngx+php环境并测试

repo源配置

#nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
​
#php.repo
#curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum   install -y epel-release.noarch   -y   #webtatic 要求
#curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
​
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm   #webtatic源
​
yum install php72w-cli php72w-fpm php72w-gd php72w- mbstring php72w-bcmath php72w-xml php72w-ldap php72w- mysqlnd -y

上面方式不可以使用下面方式安装php

 yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm  
 yum -y install yum-utils
 yum-config-manager --disable 'remi-php*'
 yum-config-manager --enable   remi-php74 
 yum -y install php php-bcmath php-gd php-xml  php-mbstring php-mysqlnd php-ldap php-fpm
 yum -y install curl-devl libxml2 libxml2-devel 
​
yum install -y nginx
#安装完毕之后检查
rpm -qa |egrep 'nginx|php'
需要修改php参数(网页预配置必要条件)
​
vim /etc/php.ini 
修改post_max_size为16M
修改max_execution_time为300
修改max_input_time为300

安装nginx(构建lnmp)

yum install -y nginx

修改了一个子配置文件.

server {
  listen 80;
  server_name zbx.me.cn;
  root /app/code/zbx;
  location / {
    index index.php;
  }
  location  ~ \.php$ {
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME   $document_root$fastcgi_script_name;
    include fastcgi_params;
  }
}

配置php

#配置php
[root@zabbix-server ~/zabbix-6.0-all-rpms]# sed -ri '/^(user|group)/s#apache#nginx#g'  /etc/php-fpm.d/www.conf
user=apache  -->user=nginx
group=apache -->group=nginx
[root@zabbix-server ~/zabbix-6.0-all-rpms]# egrep 'user|group' /etc/php-fpm.d/www.conf
​
#单独创建nginx/nginx用户和组;
​
创建目录创建测试文件
index.php
​
启动服务与测试
systemctl enable nginx php-fpm
systemctl start nginx php-fpm
​
测试web(hosts解析)
10.0.0.63 zbx.me.cn

*在/app/code/zbx下,放一个index.php.

#等解压之后操作即可​

image-20240830125624168.png

4.2部署数据库

1.配置repo

select version();

#vim /etc/yum.repos.d/mariadb.repo
[mariadb]
name=MariaDB
baseurl=http://mirrors.aliyun.com/mariadb/yum/10.5/centos7-amd64/
gpgkey=http://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
enabled=1
#
yum install  -y mariadb-server
rpm -qa |grep -i mariadb
​
#
rpm -qa |grep -i mariadb
MariaDB-compat-10.5.16-1.el7.centos.x86_64
MariaDB-common-10.5.16-1.el7.centos.x86_64
MariaDB-server-10.5.16-1.el7.centos.x86_64
MariaDB-client-10.5.16-1.el7.centos.x86_64
​
#服务器长长久久的运行,开机自启动
systemctl enable mariadb
systemctl start mariadb

2, 在mysql(mariadb)里建立存放数据的库并授权,然后导入zabbix所需要用的表和数据

​
[root@zabbixserver ~]# mysql -uroot -p
MariaDB [(none)]> create database  zabbix charset utf8 collate utf8_bin;        这里一定要用utf8字符集,否则后面zabbix很多中文用不了(比如创建中文名用户就创建不了)
#给zabbix库所有的库对象【表、视图、索引等等、
MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by '123456';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit

3.导入表数据

# sql文件在源代码中.
tar xf zabbix-6.0.14.tar.gz
cd zabbix-6.0.14/database/mysql/
#导入数据库文件
mysql zabbix <schema.sql
mysql zabbix <images.sql
mysql zabbix <data.sql
mysql zabbix <double.sql
mysql zabbix <history_pk_prepare.sql
​
[root@zabbix-server ~]# mysql -e 'show tables from zabbix;' |wc -l;
179
​


4.3编译安装zabbix-server服务端

  1. 配置yum(安装完centos后默认的yum源+下面zabbix源)

所有机器(zabbix服务器和所有被监控端)加上zabbix源
# vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=zabbix
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/6.0/rhel/7/x86_64
enabled=1
gpgcheck=0
[zabbix_deps]
name=zabbix_deps
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/x86_64/
enabled=1
gpgcheck=0

yum源配置.png

2,安装zabbix和mariadb数据库

zbx连接mysql,库

#简单方式的安装.6.0.29
[root@zabbixserver ~]# yum install zabbix-server-mysql zabbix-web-mysql


#编译方式
yum install -y mysql-devel pcre-devel openssl-devel zlib-devel libxml2-devel net-snmp-devel net-snmp libssh2-devel OpenIPMI-devel libevent-devel openldap-devel libcurl-devel
​
#编译,将来要去改目录?sysconfdir=/etc/zabbix/
./configure --sysconfdir=/etc/zabbix/ --enable-server --with-mysql    --with-net-snmp  --with-libxml2  --with-ssh2  --with-openipmi   --with-zlib   --with-libpthread   --with-libevent      --with-openssl  --with-ldap  --with-libcurl  --with-libpcre
​
zabbix6.0.14编译报错:
export CFLAGS="-std=gnu99"
​
echo $?
0  #表示ok
​
make install
​
​
​

image-20240830131302194.png

4, 配置zabbix主配置文件,并启动服务,确认端口

image-20250702161955834.png

找到并确认如下参数(==默认值正确的不用打开注释==.默认值不对的,要修改正确并打开注释)

[root@zabbix-server conf.d]# egrep -v '^$|#' /etc/zabbix/zabbix_server.conf 
ListenPort=10051                                  #12行
#不改会有坑
LogFile=/var/log/zabbix/zabbix_server.log           #改:日志文件,/var/log/.
DBName=zabbix
DBUser=zabbix
DBPassword=123456                                   #123行
Timeout=4
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
​
​
#日志权限
 mkdir -p /var/log/zabbix
  
ll -d /var/log/zabbix
useradd -s /sbin/nologin -M zabbix
chown -R zabbix.zabbix /var/log/zabbix/
​
​
find / -name zabbix_server 2>/dev/null
/usr/local/sbin/zabbix_server --version
​
​
检查端口
ss -lntup|grep 10051 
检查进程
​
ps -ef |grep zabbix
​
#自定义的服务
[root@zabbix-server ~]# vim /usr/lib/systemd/system/zabbix-server.service
​
[Unit]
Description=Zabbix Server with MySQL DB
After=syslog.target network.target  
​
[Service]
Type=simple
ExecStart=/usr/local/sbin/zabbix_server -f
User=zabbix 
​
[Install]
WantedBy=multi-user.target
​
[root@zabbix-server ~]# systemctl daemon-reload
​
​
[root@zabbixserver ~]# systemctl restart zabbix-server
[root@zabbixserver ~]# systemctl enable zabbix-server
​
[root@zabbixserver ~]# lsof -i:10051    

验证测试,如下图所示:

image-20240830022730079.png

出现上述图示,表示Zabbix自动化监控服务器安装成功!

总结

zabbix,这款企业级监控软件,能全方位监控各类网络参数,确保企业服务架构的安全稳定运行。它提供了灵活多样的告警机制,帮助运维人员迅速发现并解决问题。此外,zabbix还具备分布式监控功能,能应对复杂架构下的监控挑战,并配备了web页面,以直观的方式展示主机监控信息。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。