任务背景
公司的服务器里经常会有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版本
下载并安装 Zabbix
三、环境准备:**
主机配置:
*规模*
*平台*
*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 mysql zabbix mysql zabbix mysql zabbix mysql zabbix [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页面,以直观的方式展示主机监控信息。