简介
Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数, 保证服务器系统的安全运营; 并提供灵活的通知机制以让系统管理员快速定位, 解决存在的各种问题.
监控方式
主动模式
主动检测: 相对于agent而言; agent(active), agent向server请求与自己相关监控项配置, 主动地将server配置的监控项相关的数据发送给server;
主动监控能极大节约监控server的资源
被动模式
- 被动检测: 相对于agent而言; agent, server向agent请求获取配置的各监控项相关的数据, agent接收请求、获取数据并响应给server;
Zabbix架构
Zabbix Server
- Zabbix server是agent程序报告系统可用性、系统完整性和统计数据的核心组件, 是所有配置信息、统计信息和操作数据的核心存储器.
Zabbix 数据库存储
- 所有配置信息和Zabbix收集到的数据都被存储在数据库中
Zabbix Web 界面
为了从任何地方和任何平台都可以轻松的访问Zabbix, 官方提供基于Web的Zabbix界面. 该界面是Zabbix Server的一部分, 通常(但不一定)跟Zabbix Server运行在同一台物理机器上.
如果使用SQLite, Zabbix Web界面必须要跟Zabbix Server运行在同一台物理机器上.
Zabbix Proxy 代理服务器
- Zabbix proxy可以替Zabbix Server收集性能和可用性数据. Proxy代理服务器是Zabbix软件可选择部署的一部分; 当然, Proxy代理服务器可以帮助单台Zabbix Server分担负载压力.
Zabbix Agent 监控代理
- Zabbix agents监控代理部署在监控目标上, 能够主动监控本地资源和应用程序, 并将收集到的数据报告给Zabbix Server.
Zabbix 数据流
监控方面, 为了创建一个监控项(item)用于采集数据, 必须先创建一个主机(host).
告警方面, 在监控项里创建触发器(trigger), 通过触发器(trigger)来触发告警动作(action). 因此, 如果你想收到Server XCPU负载过高的告警, 必须满足以下条件:
1.为Server X创建一个host并关联一个用于对CPU进行监控的监控项(Item)
2.创建一个Trigger, 设置成当CPU负载过高时会触发.
3.Trigger被触发, 发送告警邮件.
Zabbix监控系统部署
搭建Zabbix监控系统环境
名称 | IP配置 | 服务角色 | 备注 |
Server | 192.168.100.10 | zabbix-server | 开启监控功能 |
Node1 | 192.168.100.11 | zabbix-agent | 开启 |
Node2 | 192.168.100.12 | zabbix-agent | 开启 |
所有主机
1 | setenforce 0 |
Server
配置Yum仓库
1 | yum install -y wget |
安装Zabbix
上传Zabbix的RPM包到linux中
zabbix-agent-4.4.4-1.el7.x86_64.rpm zabbix-get-4.4.4-1.el7.x86_64.rpm zabbix-sender-4.4.4-1.el7.x86_64.rpm zabbix-server-mysql-4.4.4-1.el7.x86_64.rpm zabbix-web-4.4.4-1.el7.noarch.rpm zabbix-web-mysql-4.4.4-1.el7.noarch.rpm
1 | while [ $? != 0 ]; do yum -y install zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql &> /dev/null ; done |
安装设置数据库
安装最新版本的Mariadb
1
2
3
4
5
6
7
8
9cat > /etc/yum.repos.d/mariadb.repo <<-EOF
[mariadb]
name = MariaDB
baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.4/centos7-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF
yum install -y MariaDB-server MariaDB-client修改配置文件
1
2
3
4
5
6
7
8
9
10
11
12vi /etc/my.cnf.d/server.cnf
[mysqld]
# 跳过主机名解析
skip_name_resolve = ON
# 开启独立表空间
innodb_file_per_table = ON
# 缓存池大小
innodb_buffer_pool_size = 256M
# 最大连接数
max_connections = 2000
# 开启二进制日志
log-bin = master-log重启数据库服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25systemctl restart mariadb
mysql_secure_installation
:<<-EOF
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Change the root password? [Y/n] n
... skipping.
Remove anonymous users? [Y/n] Y
... Success!
Disallow root login remotely? [Y/n] n
... skipping.
Remove test database and access to it? [Y/n] Y
- Dropping test database...
Reload privilege tables now? [Y/n] Y
... Success!
EOF创建数据库并授权账号
1
2
3
4
5
6
7mysql
create database zabbix character set 'utf8';
grant all on zabbix.* to 'zbxuser'@'192.168.100.%' identified by 'zabbix';
# Zabbix和Mariadb在同一台主机下
grant all on zabbix.* to 'zbxuser'@'localhost' identified by 'zabbix';
flush privileges;
exit导入Zabbix服务表
1
2
3
4
5
6
7
8
9
10
11
12
13cp `rpm -ql zabbix-server-mysql | grep "create"` ./
gzip -d create.sql.gz && rm -rf create.sql.gz
head create.sql
sed -i '1i USE zabbix' create.sql
head create.sql
mysql -uzbxuser -h192.168.100.10 -pzabbix < create.sql && rm -rf create.sql
mysql -uzbxuser -h192.168.100.10 -pzabbix
show databases;
use zabbix;
show tables;
exit
配置Server端
修改配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13cd /etc/zabbix/
cp zabbix_server.conf{,.back}
:<<-EOF
默认监听端口
ListenPort=10051
发采样数据请求的IP
SourceIP=192.168.100.10
EOF
sed -i '/ListenPort=/c ListenPort=10051' zabbix_server.conf
sed -i '/SourceIP=/c SourceIP=192.168.100.10' zabbix_server.confZabbix日志
- 默认用文件记录, 也可以发送给rsyslog日志记录系统, 如果选择默认, 则日志存放在
LogFile=/var/log/zabbix/zabbix_server.log
中, 也可以自己设置.
- 日志滚动
- 默认值为1, 表示滚动. 设为0则表示不滚动. 当数据特别多的时候, 也可以设置成为1, 然后在
Maximum size of log file in MB.
设置当数据文件最大到多少时会自动滚动.### Option: LogFileSize # Maximum size of log file in MB. # 0 - disable automatic log rotation. # # Mandatory: no # Range: 0-1024 # Default: # LogFileSize=1
LogFileSize=0
- 日志级别
- 一共有6个级别, 可以根据自己的需要来设置级别. 其中0表示输出最少的信息, 5表示输出最详细的信息, 默认值为3, 设置为3的话就表示, 0、1、2、3四个级别都显示. 考虑到生产系统中的压力时, 这里的信息, 如果没有必要的话, 越简单越好, 只要在出错的时候, 可以依据其进行排错即可.
### Option: DebugLevel # Specifies debug level: # 0 - basic information about starting and stopping of Zabbix processes # 1 - critical information # 2 - error information # 3 - warnings # 4 - for debugging (produces lots of information) # 5 - extended debugging (produces even more information) # # Mandatory: no # Range: 0-5 # Default: # DebugLevel=3
数据库相关的设置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23:<<-EOF
数据库对外的主机
DBHost=192.168.100.10
数据库名称
DBName=zabbix
数据库用户
DBUser=zbxuser
数据库密码
DBPassword=zabbix
数据库启动端口
DBPort=3306
EOF
sed -i '/DBHost=/c DBHost=192.168.100.10' zabbix_server.conf
sed -i '/DBName=z/c DBName=zabbix' zabbix_server.conf
sed -i '/^DBUser=/c DBUser=zbxuser' zabbix_server.conf
sed -i '/DBPassword=/c DBPassword=zabbix' zabbix_server.conf
sed -i '/DBPort=/c DBPort=3306' zabbix_server.conf
cat zabbix_server.conf | grep -Ev '#|^$'启动服务并确认服务端口是否开启
1
2
3systemctl start zabbix-server.service
systemctl status zabbix-server.service
ss -tnul | grep 10051
配置Web GUI
查找Web GUI的配置文件
1
rpm -ql zabbix-web | grep "zabbix.conf"
编辑配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16cat /etc/httpd/conf.d/zabbix.conf
:<<-EOF
<IfModule mod_php5.c>
脚本执行的最大时长
php_value max_execution_time 300
内存大小
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value max_input_vars 10000
php_value always_populate_raw_post_data -1
设置时区
# php_value date.timezone Europe/Riga
</IfModule>
EOF时区是一定要设置的, 这里被注释掉是因为要在php的配置文件中设置时区, 如果在php配置文件中设置时区, 则对所有的php服务均有效, 如果在zabbix.conf中设置时区, 则仅对zabbix服务有效.
在php配置文件中设置时区后, 启动httpd服务.
1
2
3sed -i '/;date.timezone =/c date.timezone = Asia/Shanghai' /etc/php.ini
systemctl enable httpd
systemctl start httpd浏览器访问并进行初始化设置
http://192.168.100.10/zabbix
配置agent端
确认配置文件
1
2rpm -ql zabbix-agent | grep "zabbix_agentd.conf"
# /etc/zabbix/zabbix_agentd.conf编制配置文件
1
2
3
4
5
6
7
8
9cd /etc/zabbix/
cp zabbix_agentd.conf{,.back}
sed -i "/^Server=127.0.0.1/s/127.0.0.1/192.168.100.10/" /etc/zabbix/zabbix_agentd.conf
sed -i "/^# ListenPort=10050/s/#//" /etc/zabbix/zabbix_agentd.conf
sed -i "/^# ListenIP=0.0.0.0/s/#//" /etc/zabbix/zabbix_agentd.conf
sed -i "/^# StartAgents=3/s/#//" /etc/zabbix/zabbix_agentd.conf
sed -i "/^ServerActive=127.0.0.1/s/127.0.0.1/192.168.100.10/" /etc/zabbix/zabbix_agentd.conf
sed -i "/^# Hostname=/c Hostname=Server" /etc/zabbix/zabbix_agentd.conf启动服务并查看端口是否已经开启
1
2systemctl start zabbix-agent.service
ss -tunl | grep 10050
Node
配置agent端
上传zabbix-agens、zabbix-sender的RPM包, 并安装.
1
2ls -l *.rpm
rpm -Uvh --force --nodeps *.rpm确认配置文件
1
2rpm -ql zabbix-agent | grep "zabbix_agentd.conf"
# /etc/zabbix/zabbix_agentd.conf编制配置文件
1
2
3
4
5
6
7
8cd /etc/zabbix/
cp zabbix_agentd.conf{,.back}
sed -i "/^Server=127.0.0.1/s/127.0.0.1/192.168.100.10/" /etc/zabbix/zabbix_agentd.conf
sed -i "/^# ListenPort=10050/s/#//" /etc/zabbix/zabbix_agentd.conf
sed -i "/^# ListenIP=0.0.0.0/s/#//" /etc/zabbix/zabbix_agentd.conf
sed -i "/^# StartAgents=3/s/#//" /etc/zabbix/zabbix_agentd.conf
# 将"Hostname="修改成对应的主机名启动服务并查看端口是否已经开启
1
2systemctl start zabbix-agent.service
ss -tunl | grep 10050
Node1
1 | sed -i "/^# Hostname=/c Hostname=Node1" /etc/zabbix/ssszabbix_agentd.conf |
Node2
1 | sed -i "/^# Hostname=/c Hostname=Node2" /etc/zabbix/zabbix_agentd.conf |
配置Zabbix监控系统s
修改密码及中文显示
创建主机及主机群组
监控项
中文乱码解决
Windows中找到字体文件Win+R:C:\Windows\Fonts
上传到linux中后修改权限chmod 666 字体文件名
1 | whereis zabbix | grep "/share/zabbix" |
CPU中断数
key值可以直接在网页上设置(服务器自动执行), 也可以使用命令行命令(手动执行)来获取:
1 | zabbix_get -s 192.168.100.10 -p 10050 -k "system.cpu.intr" |
在agent端, 也可以使用命令来查看intr的速率变化:
1 | vmstat 1 |
网卡端口流量
1 | zabbix_get -s 192.168.100.10 -p 10050 -k "net.if.in[ens33,packets]" |