目录
访问http://192.168.88.5:8080,对Zabbix进行初始化
Zabbix监控系统全面指南
在现代IT基础设施管理中,监控系统扮演着至关重要的角色。本文旨在为您提供一个全面的Zabbix监控系统指南,从基础概念到实际操作,帮助您实现对服务器和服务的高效监控。文章首先介绍了监控的重要性和监控资源类型,包括公开数据和私有数据。接着,深入探讨了Zabbix的核心理念,涵盖数据采集、存储和展示的全过程。我们将指导您如何安装Zabbix,包括准备虚拟机、初始化设置以及监控Zabbix自身的步骤。文章还详细介绍了如何配置Zabbix监控特定服务器,例如web1,以及如何创建和应用监控模板。此外,我们还将探讨常用监控指标,并指导您如何自定义监控项,从而满足特定的监控需求。通过本文,您将掌握Zabbix监控系统的关键操作,确保您的服务安全、稳定、高效地运行。
监控概述
-
对服务的管理,不能仅限于可用性。
-
还需要服务可以安全、稳定、高效地运行。
-
监控的目的:早发现、早治疗。
-
被监控的资源类型:
-
公开数据:对外开放的,不需要认证即可获取的数据
-
私有数据:对外不开放,需要认证、权限才能获得的数据
-
Zabbix核心理念
-
实施监控的几个方面:
-
数据采集:使用agent(可安装软件的系统上)、SNMP(简单网络管理协议,用于网络设备的数据采集)
-
数据存储:使用mysql数据库
-
数据展示:通过web页面
-
-
zabbix通过在远程主机上安装agent进行数据采集,存储到mysql数据库,通过web页面进行展示。
安装Zabbix
准备虚拟机
安装Zabbix
//1. 拷贝zabbix软件包到pubserver
[root@zabbixserver ~]# scp /linux-soft/s2/zzg/zabbix_soft/ *.rpm 192.168.88.240:/var/ftp/rpms
//2. 更新yum仓库配置
[root@pubserver ~]# createrepo -v /var/ftp/rpms/
//3. 在pubserver上创建ansible工作环境
[root@pubserver ~]# mkdir -p zabbix/files
[root@pubserver ~]# cd zabbix/
[root@pubserver zabbix]# vim ansible.cfg
[defaults]
inventory = inventory
host_key_checking = false
[root@pubserver zabbix]# vim inventory
[zabbix]
zabbixserver ansible_host=192.168.88.5
[webservers]
web1 ansible_host=192.168.88.100
web2 ansible_host=192.168.88.200
[all:vars]
ansible_ssh_user=root
ansible_ssh_pass=a
//4. 为各台主机配置yum
[root@pubserver zabbix]# vim files/local88.repo
[BaseOS]
name = BaseOS
baseurl = ftp://192.168.88.240/dvd/BaseOS
enabled = 1
gpgcheck = 0
[AppStream]
name = AppStream
baseurl = ftp://192.168.88.240/dvd/AppStream
enabled = 1
gpgcheck = 0
[rpms]
name = rpms
baseurl = ftp://192.168.88.240/rpms
enabled = 1
gpgcheck = 0
[root@pubserver zabbix]# vim 01-upload-repo.yml
---
- name: config repos.d
hosts: all
tasks:
- name: delete repos.d
file:
path: /etc/yum.repos.d
state: absent
- name: create repos.d
file:
path: /etc/yum.repos.d
state: directory
mode: '0755'
- name: upload local88
copy:
src: files/local88.repo
dest: /etc/yum.repos.d/
[root@pubserver zabbix]# ansible-playbook 01-upload-repo.yml
//5. 在zabbixserver上安装相应软件包
[root@pubserver zabbix]# vim 02-inst-zabbix.yml
---
- name: install zabbix
hosts: zabbix
tasks:
- name: install zabbix // 安装软件包
yum:
name:
- zabbix-server-mysql
- zabbix-web-mysql
- zabbix-nginx-conf
- zabbix-sql-scripts
- zabbix-selinux-policy
- zabbix-agent
- mysql-server
- langpacks-zh_CN
state: present
[root@pubserver zabbix]# ansible-playbook 02-inst-zabbix.yml
//6. 启动mysqld服务
[root@pubserver zabbix]# vim 03-start-mysqld.yml
---
- name: config mysqld
hosts: zabbix
tasks:
- name: start mysqld // 启动mysqld服务
service:
name: mysqld
state: started
enabled: yes
[root@pubserver zabbix]# ansible-playbook 03-start-mysqld.yml
//7. 在zabbix上创建连接数据库的用户
[root@zabbixserver ~]# mysql
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
// 在binlog日志开启的情况下,打开函数生成器
mysql> set global log_bin_trust_function_creators = 1;
mysql> create user zabbix@localhost identified by 'zabbix';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;
//8. 验证数据库配置,如果登陆不到数据库表示上一步配置不正确
[root@zabbixserver ~]# mysql -uzabbix -pzabbix -hlocalhost zabbix
//9. 在数据库中创建表并导入数据
[root@zabbixserver ~]# cp /usr/share/zabbix-sql-scripts/mysql/server.sql.gz .
[root@zabbixserver ~]# gzip -d server.sql.gz
[root@zabbixserver ~]# mysql -uzabbix -pzabbix zabbix < server.sql
//10. 配置zabbix_server
[root@zabbixserver ~]# vim +129 /etc/zabbix/zabbix_server.conf
DBPassword=zabbix
//11. 配置zabbix_agent
[root@zabbixserver ~]# vim /etc/zabbix/zabbix_agentd.conf
182 Hostname=zabbixserver
//12. 配置nginx展示zabbix
[root@zabbixserver ~]# vim /etc/nginx/conf.d/zabbix.conf
// 打开第2、3行的注释,结果如下所示:
server {
listen 8080;
server_name example.com;
...以下省略...
//13. 启动相关服务
[root@pubserver zabbix]# vim 04-start-zabbix.yml
---
- name: config zabbix
hosts: zabbix
tasks:
- name: start service //循环启动多个服务
service:
name: "{{item}}"
state: started
enabled: yes
loop:
- zabbix-server
- zabbix-agent
- nginx
- php-fpm
[root@pubserver zabbix]# ansible-playbook 04-start-zabbix.yml
访问http://192.168.88.5:8080,对Zabbix进行初始化
注意:这里的用户名Admin,A是大写的!密码是小写的zabbix
-
此时Zabbix已经在监控自己
配置zabbix监控web1服务器
在web1上安装agent
// 1. 安装agent
[root@pubserver zabbix]# vim 05-inst-agent.yml
---
- name: install agent
hosts: webservers
tasks:
- name: install agent // 安装agent
yum:
name: zabbix-agent
state: present
[root@pubserver zabbix]# ansible-playbook 05-inst-agent.yml
// 2. 修改web1配置文件
[root@web1 ~]# vim /etc/zabbix/zabbix_agentd.conf
117 Server=127.0.0.1,192.168.88.5
182 Hostname=web1
// 3. 起动服务
[root@pubserver zabbix]# vim 06-start-agent.yml
---
- name: config agent
hosts: web1
tasks:
- name: start agent // 启动服务
service:
name: zabbix-agent
state: started
enabled: yes
[root@pubserver zabbix]# ansible-playbook 06-start-agent.yml
在web页面中添加对web1的监控
-
主机:安装了agent,被监控的主机
-
主机组:根据需求,将多台主机加入到一个主机组中,方便管理。系统默认已经创建了一些主机组。
-
模板:是监控项的集合。将模板应用到主机,主机就可以直接拥有模板中的所有监控项。系统中默认已经创建了一些模板。
常用监控指标
-
Space utilization:以百分比显示的磁盘利用率
-
Used space:已用磁盘空间
-
Available memory:可用内存
-
CPU idle time:CPU空闲时间。不宜过低。
-
Load average (1m avg)、Load average (5m avg)、Load average (15m avg):CPU1分钟、5分钟、15分钟的平均负载。这个值不应长期大于核心数。
-
Interface eth0: Bits received:网卡接收到的数据量
-
Interface eth0: Bits sent:网卡发送的数据量
-
Number of processes:系统运行的进程数
-
Number of logged in users:已登陆的用户数
自定义监控项
实现监控web1用户数量的监控项
-
在被控端创建key。被控端被监控的内容叫作key,可以理解为它就是一个变量名,具体的名字自己决定。
-
在web页面中创建监控项。监控项对应key值。
在被控端创建key
创建自定义配置文件。文件名自定义。
//创建key的语法
//UserParameter=自定义key值,命令
// 命令的执行结果,是key的value
[root@web1 ~]# vim /etc/zabbix/zabbix_agentd.d/usercnt.conf
UserParameter=usercnt,sed -n '$=' /etc/passwd
[root@web1 ~]# systemctl restart zabbix-agent.service
验证自定义监控项
// 1. 安装zabbix-get
[root@zabbixserver ~]# yum install -y zabbix-get
[root@web1 ~]# yum install -y zabbix-get
// 2. 获取监控项的值
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k usercnt
46
[root@zabbixserver ~]# zabbix_get -s 192.168.88.100 -k usercnt
46