自动化运维监控技术之Zabbix教程入门基础
任务背景
公司的服务器里经常会有CPU很繁忙, 内存不够, 磁盘空间快满了, 网络很卡, 客户端连接不上等各种问题。我们运维工程师不能总是盯着服务器去查看,那样的话就太繁琐了, 而且很可能发现问题不及时。所以我们需要建立一套完善的监控系统,将所有需要监控的服务器及其各种需要的状态数据都实时地收集, 并图形化的展示,并可以进行报警, 让机器主动及时地与人沟通。
要求
1, 搭建监控服务器
2, 能够按照思路自定义监控并实现图形展示与报警
任务拆解
1, zabbix服务器搭建
2, 监控本机与远程主机
3, 学会创建监控项
4, 为监控项创建图形
5, 为图形创建触发器
6, 设定报警
学习目标
- 能够安装zabbix服务器
- 能够使用zabbix-agent监控本机
- 能够管理zabbix用户与用户群组
- 能够使用zabbix-agent监控远程linux机器并加入主机群组
- 能够添加一个自定义监控项
- 能够为添加的监控项创建图形
- 能够为监控主机创建聚合图形
- 能够为监控项设定简单的触发器
一、监控概述
为什么要监控?
答: 实时收集数据,通过报警及时发现问题,及时处理。数据为优化也可以提供依据。
Shell脚本:定时任务!
生活中的监控:
那么请问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官网
下载页面可以看到是不是LTS版本
三、环境准备:**
主机配置:
*规模* | *平台* | *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 | |
其他综合架构的主机都是客户端 |
四、稳步上手操作
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.
#等解压之后操作即可
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服务端
-
配置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
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
4, 配置zabbix主配置文件,并启动服务,确认端口
找到并确认如下参数(==默认值正确的不用打开注释==.默认值不对的,要修改正确并打开注释)
[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
验证测试,如下图所示:
出现上述图示,表示Zabbix自动化监控服务器安装成功!
总结
zabbix,这款企业级监控软件,能全方位监控各类网络参数,确保企业服务架构的安全稳定运行。它提供了灵活多样的告警机制,帮助运维人员迅速发现并解决问题。此外,zabbix还具备分布式监控功能,能应对复杂架构下的监控挑战,并配备了web页面,以直观的方式展示主机监控信息。
- 点赞
- 收藏
- 关注作者
评论(0)