Zabbix介绍与部署
# 监控服务介绍
# 监控介绍
监控服务是为了保证业务系统正常工作、提供优质服务的基本手段。监控服务一旦监控到异常情况,会第一时间做出相应的调整或者告警,以保障用户高质量的体验。
# 监控的作用
# 对系统不间断实时监控
- 它能实时反馈系统或服务当前状态,并实现报警通知,告警方式有邮件、微信、短信、电话、手环等等。
- 例如:监控分析公司网站运行情况、监控统计数据库表的信息,如成交量等。
# 保证系统安全性
- 监控重要文件的是否被修改。
# 保证服务持续稳定运行
- 监控架构服务的运行情况,因为高可用集群服务具备高可用性,出现问题不会立马显露,所以需要监控运行情况。
# 监控方式
- 利用脚本进行监控
- 利用脚本判断监控对象的指标是否正常,如果不正常就通过各类API进行告警,比如钉钉、电话、短信等等。
- 也可以编写获取对象指标值的脚本,然后由监控框架进行调用获取返回值,再由监控服务进行告警。
- 利用监控服务进行监控
- 系统监控:Zabbix、Prometheus、Nagios
- 流量监控:Cacti
- 数据库监控:Lepus
# 监控维度
- 硬件监控
- 服务器、路由器、交换机、防火墙,利用SNMP协议进行监控。
- 系统监控
- CPU、内存、磁盘、网络、进程、TCP状态
- 服务监控
- 服务是否正常开启,能否正常访问
- 网站监控
- 请求时间、响应时间、加载时间、页面监控
- 日志监控
- ELK架构,实现日志收集、存储、分析、展示等
- 安全监控
- Firewalld (4层及以上)
- WAF (Nginx+Lua - 应用层)
- 收费:安全宝、牛盾云、安全狗
- 网络监控
- smokeping、监控宝、站长工具,监控收集全国访问网站的性能信息
- 收费:奇云测、多机房
- 业务监控
- 监控数据库信息,流量、注册量、销售额、利润等
# Linux常用监控命令
# 监控CPU
- 主要使用 top、htop 命令
- 主要监控以下指标:
- us - 用户态使用的资源(user state),用户执行命令的任务,CPU处理时,用户态优先于内核态
- sy - 内核态使用的资源(system state),CPU内核态,后台进程的任务
- id - 空闲未使用的资源(idle),最好不要低于20%~50%
# 监控内存
- 主要使用 free -h、top、htop 命令
- 主要监控以下指标:
- available - 可用内存情况
- swap - 交换空间使用情况
# 监控磁盘
df -h
- 查看磁盘使用率- Use% - 磁盘使用情况
iohop
- 查看磁盘io消耗- 如果消耗严重,读写数据会非常慢
# 监控网络
iftop
- 主要监控网络带宽使用情况
# 监控进程
- 主要使用 top、htop、ps 命令
- 主要监控以下指标:
- 进程占用内存情况
- 内存占满可能造成内存溢出,服务会出现僵死,此时就需要优化,或者定时任务对其进行重启
- 占用CPU情况
- 进程占用内存情况
# 监控负载
- 主要使用 w、top、uptime 命令
- 主要监控以下指标:
- 10分钟内负载,要小于CPU内核数
# 其他
- glances命令 - 监控系统运行所有情况,上面所有的信息,都在这个命令有
# Zabbix部署
Zabbix是一个基于WEB界面的提供分布式系统监视、网络监视功能的企业级的开源监控架构。
# Zabbix服务结构
# 服务端
- zabbix-server - 监控服务端
- zabbix-web - 监控端的WEB服务
- php - 处理动态请求
- mysql - 数据库存储监控数据
# 被监控端
- zabbix-agentd - 被监控端
# 代理端
- zabbix-proxy - 代理端
- 代理收集被监控端信息汇总告知Zabbix服务端,在做分布式监控时使用
# 服务端安装部署
# 1. 安装zabbix服务端相关软件
安装repo源和服务端软件
# 去官网选择对应的版本和对应系统信息:https://www.zabbix.com/download
# 一般选择LTS版本 - long time support 长期支持版 (会有补丁发布更新)
# 选择后网页下方会生成对应repo安装命令, 执行Install Zabbix repository下方的命令
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# 安装zabbix服务端软件
yum install -y zabbix-server-mysql zabbix-agent
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
安装zabbix的web服务
# 启用软件集合
yum install -y yum-utils
yum-config-manager --enable rhel-server-rhscl-7-rpms
# 编辑/etc/yum.repos.d/zabbix.repo, 将[zabbix-frontend]的enable置为1
[zabbix-frontend]
...
enabled=1
...
# 卸载旧PHP
yum remove php* -y
# 安装rh
yum install -y centos-release-scl-rh
# 查询PHP
yum search php
# 安装PHP73
yum install -y rh-php73
# 启动PHP73
scl enable rh-php73 bash
# 安装WEB服务 # nginx程序+配置文件: zabbix-nginx-conf-scl
yum install -y zabbix-web-mysql-scl-php73
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 2. 安装数据库服务软件
- 安装好后,还需要创好库、账号。
# 创建用户
create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by 'password';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;
# 导入表
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
# 导入后恢复log_bin_trust_function_creators参数
set global log_bin_trust_function_creators = 0;
quit;
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 3. 编写Zabbix服务端相关配置文件
修改数据库信息配置
vim /etc/zabbix/zabbix_server.conf
- 配置好DBName、DBUser、DBPassword后保存即可。
修改Zabbix时区配置
# 查找配置文件路径
find /etc/opt/rh/ -type f -name zabbix.conf
# 进行修改
vim /etc/opt/rh/rh-php73/php-fpm.d/zabbix.conf
# 修改时区参数并取消注释
php_value[date.timezone] = Asia/Shanghai
# 修改listen.acl_users参数, 添加Nginx
listen.acl_users = apache,nginx
# 然后保存退出即可
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
编辑Nginx配置,去自己安装的Nginx配置文件中配置
# 该配置可以通过yum安装zabbix-nginx-conf-scl,然后从/etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf获取
server {
listen 8081;
server_name zabbix.localhost.com;
root /usr/share/zabbix;
index index.php;
location = /favicon.ico {
log_not_found off;
}
location / {
try_files $uri $uri/ =404;
}
location /assets {
access_log off;
expires 10d;
}
location ~ /\.ht {
deny all;
}
location ~ /(api\/|conf[^\.]|include|locale|vendor) {
deny all;
return 404;
}
location ~ [^/]\.php(/|$) {
# fastcgi_pass unix:/var/opt/rh/rh-php72/run/php-fpm/zabbix.sock;
fastcgi_pass unix:/var/opt/rh/rh-php73/run/php-fpm/zabbix.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /usr/share/zabbix;
fastcgi_param SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 4. 启动服务端相关服务
启动服务并设为自启动
systemctl start zabbix-server zabbix-agent rh-php73-php-fpm && \
systemctl enable zabbix-server zabbix-agent rh-php73-php-fpm
1
2
2
初始化Zabbix服务
http://[服务器IP]/
- 登录Web页面,按照提示进行配置- 配置好之后,按照指示下载文件并放到指定目录
登录zabbix页面
- 默认账号:Admin
- 默认密码:zabbix
# 客户端安装部署
# 1. 安装zabbix服务端相关软件
# 去官网选择对应的版本和对应系统信息:https://www.zabbix.com/download
# 一般选择LTS版本 - long time support 长期支持版 (会有补丁发布更新)
# 选择后网页下方会生成对应repo安装命令, 执行Install Zabbix repository下方的命令
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# 安装zabbix客户端软件
yum install -y zabbix-agent
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 2. 编写zabbix客户端配置文件
vim /etc/zabbix/zabbix_agentd.conf
# Zabbix Agent有被动模式和主动模式。
# 被动模式,是Zabbix Server从Zabbix Agent上获取数据。
# 主动模式,是Zabbix Agent主动将信息上传到Zabbix Server。因此,这两个参数的内容都指的是Zabbix Server的IP地址
# 一般填Zabbix服务端的内网IP,可以指定单个IP或者一段IP网段
# 配置的是被动模式, 允许访问该zabbix客户端的IP地址
Server=192.168.20.11
# 配置的是主动模式,允许访问该zabbix客户端的IP地址
ServerActive=192.168.20.11
# 注释掉Hostname参数,然后取消HostnameItem的注释
HostnameItem=system.hostname
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 3. 启动zabbix客户端服务
systemctl start zabbix-agent && systemctl enable zabbix-agent
# 检查是否启动
netstat -lntup | grep 10050
1
2
3
4
2
3
4