赞
踩
目录
对于运维人员来说,监控是非常重要的,因此如果想要保证线上业务整体能够稳定运行,那么我们则需要实时关注与其相关的各项指标是否正常,而一个业务系统的背后,往往存在着很多的服务器、网络设备等硬件资源,如果我们想要能够更加方便的、集中的监控他们,我们则需要依靠一些外部的工具,而zabbix就是一个被广泛使用的,可以实现集中监控管理的应用程序。
我们监控的初衷就是当某些指标不符合我们的需求时,我们能够在第一时间发现异常,所以,监控工具需要定期的对被监控主机进行检查、信息收集等操作,当被监控主机出现异常时,能够及时报警、通知管理员,并且需要记录这些异常,以便我们分析这些数据,查漏补缺,那么,一个监控工具就应该具备采集信息、存储信息、展示信息、报警通知等功能。而zabbix就可以做到这些。
总结来说,监控可以给我们带来:
在软件系统的高可靠性(也称为高可用性,英文描述为HA,High Available)里有个衡量其可靠性的标准——X个9,X个9表示在软件系统1年时间的使用过程中,系统可以正常使用时间与总时间(1年)之比
1个9:(1-90%)*365=36.5天,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是36.5天。
2个9:(1-99%)*365=3.65天 , 表示该软件系统在连续运行1年时间里最多可能的业务中断时间是3.65天。
3个9:(1-99.9%)*365*24=8.76小时,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是8.76小时。
4个9:(1-99.99%)*365*24=0.876小时=52.6分钟,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是52.6分钟。
5个9:(1-99.999%)*365*24*60=5.26分钟,表示该软件系统在连续运行1年时间里最多可能的业务中断时间是5.26分钟。
6个9:(1-99.9999%)*365*24*60*60=31秒, 示该软件系统在连续运行1年时间里最多可能的业务中断时间是31秒。
远程管理服务器:如果想远程管理服务器就有远程管理卡,比如Dell idRAC,HP ILO,IBM IMM
监控硬件
查看cpu相关:lscpu、uptime、top、vmstat、mpstat
查看内存相关:free
查看磁盘相关的:df、dd、iotop
查看网络相关的:ifconfig、iftop
除了使用系统命令查看计算机状态数据,还可以使用监控工具,如zabbix监控系统。
Zabbix是一个高度集成的企业级开源网络监控解决方案,提供分布式监控以及集中的web管理界面。
zabbix具备常见商业监控软件所具备的功能,例如主机性能监控,网络设备性能监控,数据库性能监控,ftp、http等通用协议的监控,能够灵活利用可定制告警机制,允许用户对事件发送基于E-mail的告警,保证相关人员可以快速解决。
zabbix提供杰出的报表及实时的图形化数据处理,实现对监控主机7x24小时集中监控。
Zabbix通过C/S模式采集数据,通过B/S模式在web端展示和配置,而被监控对象只需要支持SNMP协议或者运行Zabbix agents代理程序即可。服务端监听端口为10051,而被监控端Zabbix-agents代理程序监控10050端口。
Zabbix是一个高度集成的网络监控套件,可实现如下功能:
① 数据收集:自定义间隔收集数据。
② 灵活的阀值定义:灵活地自定义故障阀值,Zabbix中称为触发器(trigger), 存储在后端数据库中;
③ 高级告警配置:自定义告警升级(escalation)、接收者及告警方式;通过远程命令实行自动化动作;
④ 实时绘图:通过内置的绘图引擎实现监控数据实时绘图;
⑤ 具备应对复杂环境情况:通过Zabbix proxy可以非常容易的创建远程监控
① 硬件监控: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 Server、Zabbix Proxy、Zabbix Agent
① Zabbix Server:Zabbix Server为核心组件,用来获取agent存活状况及监控数据。所有的配置、统计、操作数据均通过Server进行存取到database;
② Zabbix Database:用户存储所有zabbix的配置信息、监控数据的数据库;
③ Zabbix Web:Zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,通常与zabbix Server运行在同一台主机上,也可以单独部署在独立的服务器上;
④ Zabbix Proxy:常用于分布监控环境中,代理zabbix Server收集部分被监控的监控数据并统一发往Server端;(通常大于500台主机需要使用)。
⑤ Zabbix Agent:部署在被监控主机上,负责收集被监控主机的数据,并发往Server端或Proxy端;
另外,zabbix server、proxy、agent都有自己的配置文件以及log文件,重要的参数需要在这里配置,后面会详细说明。
默认情况下zabbix包含5个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一个zabbix_java_gateway是可选,这个需要另外安装。
zabbix_agentd | 客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等。 |
zabbix_get | zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用来排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。 |
zabbix_sender | zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。 |
zabbix_server | zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java的数据最终都是提交到server 备注,当然数据不都是主动提交给zabbix_server,有的是server主动去取数据。 |
zabbix_proxy | zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交到server里。 |
zabbix_java_gateway | zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。 |
被动模式 | 主动模式 |
被动模式一定要记得设置Server = ServerIP。被动模式工作流程:
| 主动模式一定要记得设置ServerActive=ServerIP主动模式工作流程:
|
主机 | 要监控的网络设备或主机,可由IP或DNS名称指定; |
主机群组 | 主机的逻辑容器,可以包含主机和模板; |
监控项 | 一个特定监控指标的相关的数据;这些数据来自于被监控对象;item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由"key"标识; |
触发 trigger | 一个表达式,用于评估某监控对象的特定item内接收到的数据是否在合理范围内,也就是阈值;接收的数据量大于阈值时,触发器状态将从"OK"转变为"Problem",当数据再次恢复到合理范围,又转变为"OK"; |
事件 event | 触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等; |
动作 action | 指对于特定事件事先定义的处理方法,如发送通知,何时执行操作; |
报警升级 escalation | 发送警报或者执行远程命令的自定义方案,如每隔5分钟发送一次警报,共发送5次等; |
媒介 media | 发送通知的手段或者通道,如Email、Jabber或者SMS等; |
通知notification | 通过选定的媒介向用户发送的有关某事件的信息; |
远程命令remote command | 预定义的命令,可在被监控主机处于某特定条件下时自动执行; |
模板 template | 用于快速定义被监控主机的预设条目集合,通常包含了item、trigger、graph、screen、appication以及low-level discovery rule;模板可以直接链接至某个主机; |
应用 application | 一组item的集合 |
web场景 web scennario | 用于检测web站点可用性的一个或多个HTTP请求; |
前端 frontend | Zabbix的web接口; |
主机名 | IP地址 | 角色 | 软件版本 |
node_01 | 192.168.137.101 | zabbix_server | zabbix-6.2.1、LNP |
node_02 | 192.168.137.102 | zabbix_agent | zabbix-6.2.1、mysql |
MySQL8.0安装:MySQL Linux安装 · 语雀
① 创建Zabbix 数据库
- # 设置root用户密码为admin
- mysqladmin -uroot password admin
- # 登录MySQL
- mysql -uroot -padmin
-
- #创建数据库,名称为zabbix,并将其字符集设置为UTF-8
- mysql>create database zabbix charset utf8 collate utf8_bin;
-
- #设置zabbix数据库的所有权限,允许用户zabbix的IP地址127.0.0.1和localhost访问,
- #并将zabbix账号的密码设置为zabbix
- mysql> grant all privileges on zabbix.* to zabbix@'localhost' identified by 'zabbix';
- mysql> grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by 'zabbix';
-
- #刷新权限,使其立即生效
- mysql> flush privileges;
- # 软件包下载
- wget http://nginx.org/download/nginx-1.22.0.tar.gz
- tar -zxvf nginx-1.22.0.tar.gz -C /usr/local/src/
-
- # 安装nginx依赖包
- yum install -y gcc gcc-c++ autoconf automake zlib zlib-devel \
- openssl openssl-devel pcre pcre-devel
-
- # 预编译
- cd /usr/local/src/nginx-1.22.0/
- ./configure --prefix=/usr/local/nginx --with-http_dav_module \
- --with-http_stub_status_module --with-http_addition_module \
- --with-http_sub_module --with-http_flv_module --with-http_mp4_module \
- --with-pcre --with-http_ssl_module --with-http_gzip_static_module
-
- # 编译
- make -j 2
-
- # 安装
- make install
-
- # 添加path变量
- ln -s /usr/local/nginx/sbin/* /usr/local/bin/
-
-
- # 编写nginx服务启动脚本
- vim /usr/lib/systemd/system/nginx.service
- #----------------服务启动脚本 start-------------------------------
- [Unit]
- Description=nginx - web server
- After=network.target remote-fs.target nss-lookup.target
-
- [Service]
- Type=forking
- PIDFile=/usr/local/nginx/logs/nginx.pid
- ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
- ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
- ExecReload=/usr/local/nginx/sbin/nginx -s reload
- ExecStop=/usr/local/nginx/sbin/nginx -s stop
- ExecQuit=/usr/local/nginx/sbin/nginx -s quit
- PrivateTmp=true
-
- [Install]
- WantedBy=multi-user.target
- #----------------服务启动脚本 end-------------------------------
-
-
- # 创建nginx程序账号
- useradd -M -s /sbin/nologin nginx
-
- # 修改nginx运行账号
- vim /usr/local/nginx/conf/nginx.conf
- user nginx;
-
- # 启动服务
- systemctl start nginx
- systemctl enable nginx
① 安装依赖环境
- # 安装libmcrypt
- wget https://jaist.dl.sourceforge.net/project/mcrypt/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.gz --no-check-certificate
- tar -zxvf libmcrypt-2.5.8.tar.gz -C /usr/local/src
-
- cd /usr/local/src/libmcrypt-2.5.8
- ./configure --prefix=/usr/local/libmcrypt && make && make install
-
- # 安装oniguruma
- wget https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-6.9.7.1-1.el7.remi.x86_64.rpm --no-check-certificate
- wget https://rpms.remirepo.net/enterprise/7/remi/x86_64/oniguruma5php-devel-6.9.7.1-1.el7.remi.x86_64.rpm --no-check-certificate
- yum install -y oniguruma5php-*
-
-
- # 安装libzip
- yum -y remove libzip
- wget https://nih.at/libzip/libzip-1.2.0.tar.gz --no-check-certificate
- tar -zxvf libzip-1.2.0.tar.gz -C /usr/local/src
- cd /usr/local/src/libzip-1.2.0
- ./configure
- make && make install
- export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig/"
② 安装php
- # 安装依赖包
- yum -y install make apr* autoconf automake curl-devel gcc gcc-c++ \
- openssl openssl-devel gd kernel keyutils patch perl kernel-headers \
- compat* mpfr cpp glibc libgomp libstdc++-devel keyutils-libs-devel \
- libcom_err-devel libsepol-devel libselinux-devel krb5-devel zlib-devel \
- libXpm* freetype libjpeg* libpng* libtool* libxml2 libxml2-devel \
- patch libcurl-devel bzip2-devel freetype-devel php-xmlreader \
- php-xmlwriter php-session libjpeg-devel sqlite-devel libwebp
-
- # 下载php并解压
- wget https://www.php.net/distributions/php-7.4.30.tar.gz
- tar -zxvf php-7.4.30.tar.gz -C /usr/local/src/
- cd /usr/local/src/php-7.4.30/
- # 编译安装
- ./configure --prefix=/usr/local/php7.4.30 --with-config-file-path=/etc --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-gd --with-iconv -enable-gd --with-iconv --with-expat --with-mhash --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-zlib --with-jpeg --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --with-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-freetype --enable-bcmath --enable-ctype --with-config-file-scan-dir=/usr/local/php7.4.30/etc/
- make && make install
③ 生成fpm配置
- cd /usr/local/php7.4.30/etc/
- cp php-fpm.conf.default php-fpm.conf
- cp /usr/local/php7.4.30/etc/php-fpm.d/www.conf.default /usr/local/php7.4.30/etc/php-fpm.d/www.conf
-
-
- # 修改默认运行账号:修改默认运行用户,组为nginx
- vim /usr/local/php7.4.30/etc/php-fpm.d/www.conf
- #--------------------------www.conf------------------
- user = nginx
- group = nginx
- ;listen.owner = nginx
- ;listen.group = nginx
- #--------------------------www.conf------------------
-
- # 生成php.ini配置文件
- cp /usr/local/src/php-7.4.30/php.ini-production /usr/local/php7.4.30/etc/php.ini
- vim /usr/local/php7.4.30/etc/php.ini
- #--------------------------php.ini------------------
- post_max_size = 16M
- max_execution_time = 300
- max_input_time = 300
- #--------------------------php.ini------------------
-
-
- # 复制php-fpm启动脚本到init.d
- cp /usr/local/src/php-7.4.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
- chmod +x /etc/init.d/php-fpm
-
-
- # 添加开机启动
- chkconfig --add php-fpm
- chkconfig php-fpm on
- # 启动服务
- /etc/init.d/php-fpm start
-
- # 查看端口监听状态
- netstat -antpu | grep php-fpm
④ 配置 Nginx 支持 index.php
- # 修改配置文件
- vim /usr/local/nginx/conf/nginx.conf
- server {
- listen 80;
- server_name www.test.com;
- #charset koi8-r;
- #access_log logs/host.access.log main;
- location / {
- root html;
- index index.php index.html index.htm; #添加index.php
- }
-
- location ~ .*\.(php|php5)?$ {
- fastcgi_pass 127.0.0.1:9000;
- fastcgi_index index.php;
- include fastcgi.conf;
- # fastcgi_cache ngx_fcgi_cache;
- # fastcgi_cache_valid 200 302 1h;
- # fastcgi_cache_valid 301 1d;
- # fastcgi_cache_valid any 1m;
- # fastcgi_cache_min_uses 1;
- # fastcgi_cache_use_stale error timeout invalid_header http_500;
- # fastcgi_cache_key http://$host$request_uri;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- }
- }
注意:测试阶段注释缓存调用。 :set paste 粘贴模式
- # 重载nginx
- nginx -s reload
-
- # 创建index.php文件
- vim /usr/local/nginx/html/index.php
- <?php
- phpinfo();
- ?>
-
- # 创建测试mysql文件
- vim /usr/local/nginx/html/test.php
- <?php
- $link= new mysqli('192.168.137.101','zabbix','zabbix');
- if ($link)echo "connection success......";
- ?>
- # 软件包下载
- wget https://cdn.zabbix.com/zabbix/sources/stable/6.2/zabbix-6.2.1.tar.gz
-
- # 安装依赖
- yum -y install net-snmp net-snmp-devel curl-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel OpenIPMI-devel libssh2-devel libevent libevent-devel mysql-devel
注意:如果是本地yum源安装依赖包,需要安装zabbix_rpm.tar.gz包里的rmp包。
- tar -zxvf zabbix_rpm.tar.gz
- yum install -y zabbix_rpm/* --skip-broken
-
- # 创建用户
- useradd -s /sbin/nologin zabbix
-
-
- # 预编译
- tar -zxvf zabbix-6.2.1.tar.gz -C /usr/local/src/
- cd /usr/local/src/zabbix-6.2.1/
- ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-mysql --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --enable-ipv6 --with-ldap
预编译参数 | 参数说明 |
--prefix= | 指定路径 |
--enable-server | zabbix Server 支持 |
--enable-agent | 支持 Zabbix agent |
--with-mysql | 指定 MySql 库,可以选择自定路径mysql_config,mysql_config 是命令,用于编译 mysql 客户端程序,如果没有请安装mysql-devel |
--with-net-snmp | 支持 snmp 协议,需要安装 net-snmp-devel 包 |
--with-libcurl | 支持 CURL 功能,libcurl 主要功能就是用不同的协议连接不同的服务器,libcurl当前支持的协议有 http,https,ftp,gopher,telent,dict,file,和 ldap 协议 |
--enable-java | 支持java应用监控,编译时最好带上--enable-java这个参数,方便后续监控tomcat程序所用。 |
--with-openipmi | 用户可以利用 IPMI 监视服务器的物理特征,如温度、电压、电扇工作状态、电源供应等 |
--enable-proxy | 指的是支持zabbix 代理服务器,zabbix proxy 是一个监控代理服务器,它收集到监控数据,选存放在缓冲区,保存的时间可以通过配置文件设定,然后再传送的 zabbix server。监控代理服务需要一个独立的数据库。 用zabbix proxy 的好处:进程监控,当监控文遏制通讯不方便的时候,当通讯上千台设备的时候,使用 zabbix_proxy 可以简化维护分布式监控,降低 zabbix server 的负载, |
- # 按上面的提示,没有 make 步骤,直接 make install
- make install
-
- # 添加系统软连接
- ln -s /usr/local/zabbix/bin/* /usr/local/bin/
- ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
-
- chown -R zabbix:zabbix /usr/local/zabbix
-
- # 配置 zabbix Server
- vim /usr/local/zabbix/etc/zabbix_server.conf
- DBHost= 192.168.137.112
- DBName=zabbix
- DBUser=zabbix
- DBPassword=123456
- DBPort=3306
- AllowUnsupportedDBVersions=1 #zabbix6.0版本默认使用mysql8版本,这边开启低版本支持
Zabbix 需要数据库的支持(mysql,oracle,PostgreSQL,SQLite, DB2),而且Zabbix 源码包中已经自带了数据库结构
- cd /usr/local/src/zabbix-6.2.1/
- ls database/mysql/
-
-
- yum install -y mariadb
- mysql -uzabbix -pzabbix zabbix -h192.168.137.112< database/mysql/schema.sql
- mysql -uzabbix -pzabbix zabbix -h192.168.137.112< database/mysql/images.sql
- mysql -uzabbix -pzabbix zabbix -h192.168.137.112< database/mysql/data.sql
- mysql -uzabbix -pzabbix zabbix -h192.168.137.112< database/mysql/double.sql
如果在做分布式的环境中,Proxy服务器只需要导入schema.sql,agent不需要导入。Server必须4个都要导入。
- vim /usr/local/zabbix/etc/zabbix_agentd.conf
- Server=127.0.0.1,192.168.1.11
- ListenPort=10050
- ServerActive=127.0.0.1,192.168.1.11
- Hostname=Zabbix server
- Timeout=15
- Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
- UnsafeUserParameters=1
- LogFile=/tmp/zabbix_agent.log
-
- mkdir /usr/local/etc/zabbix_agentd.conf.d
- # 启动服务:如果 zabbix 用户不存在, 将以 root 运行,新建之后,
- # 如果 zabbix 存在,那么直接可以用 zabbix 运行
- /usr/local/zabbix/sbin/zabbix_server -c /usr/local/zabbix/etc/zabbix_server.conf
-
- # 查看端口
- netstat -anplt | grep 10051
Zabbix默认有部分启动脚本,如果需要通过脚本的方式来实现,可以使用他的模板来实现,脚本在源码目录的 misc/init.d/下面(使用 fedora 下面的 core 即可,也可以使用 fedroa core5 的脚本均可)
- cp /usr/local/src/zabbix-6.2.1/misc/init.d/fedora/core/* /etc/init.d/
- vim /etc/init.d/zabbix_server
- BASEDIR=/usr/local/zabbix #修改zabbix安装目录
-
- vim /etc/init.d/zabbix_agentd
- BASEDIR=/usr/local/zabbix #修改zabbix安装目录
-
- chkconfig --add zabbix_server
- chkconfig --add zabbix_agentd
- chkconfig zabbix_server on
- chkconfig zabbix_agentd on
① 拷贝php文件到nginx网站目录
- cp -r /usr/local/src/zabbix-6.2.1/ui/* /usr/local/nginx/html/
- chown -R nginx:nginx /usr/local/nginx/html/
-
-
- # 查看是否包括了下面所提到的扩展模块
- # gd,bcmath,ctype,libXML,xmlreader,xmlwriter,session,sockets,mbstring,gettext,mysql
- /usr/local/php7.4.30/bin/php -m
-
- # 重启nginx服务和php-fpm服务
- nginx -s reload
- /etc/init.d/php-fpm restart
② 访问页面:http://192.168.137.111/setup.php
设置主机名和时区
登录:账户admin,密码zabbix
- # 启动客户端
- /etc/init.d/zabbix_agentd start
- netstat -antup | grep zabbix_agentd
从 windows 的控制面板->字体->选择一种中文字库例如“楷体”
把它拷贝到 web 端的 fonts 目录下:/usr/local/nginx/html/assets/fonts/,并确保后缀名为 ttf
- cd /usr/local/nginx/html/assets/fonts/
- cp DejaVuSans.ttf DejaVuSans.ttf.bak
- mv simkai.ttf DejaVuSans.ttf #替换字体
-
- # 刷新页面查看
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。