Zabbix
一个完整的监控应该包括:
- 数据采集
- 数据展示
- 定义问题
通知告警
zabbix
zabbix是一个基于web界面提供分布式系统监视以及网络监视功能的开源解决方案
优点
- 支持多设备,自带多种监控模板
- 支持分布式集中管理,可以自动发现,可试试自动化监控
- 开放式接口,扩展性强
- 当监控的 item 比较多服务器队列比较大时可以采用主动状态,被监控客户端主动 从server 端去下载需要监控的 item 然后取数据上传到 server 端。 这种方式对服务器的负载比较小。
缺点
- 需要在北监控主机上安装agent,所有数据存放在数据库里,产生的数据很大
- 项目批量修改不方便
- 缺乏数据汇总功能,需要二次开发
- 系统级别报警设置相对比较多,不筛选报警邮件会很多
zabbix5.0中文手册
zabbix的组件
zabbix server
Zabbix server 是整个 Zabbix 软件的核心程序。
Zabbix Server 负责执行数据的主动轮询和被动获取,计算触发器条件,向用户发送通知。它是 Zabbix Agent 和 Proxy 报告系统可用性和完整性数据的核心组件。Server 自身可以通过简单服务远程检查网络服务(如Web服务器和邮件服务器)。
Zabbix Server是所有配置、统计和操作数据的中央存储中心,也是Zabbix监控系统的告警中心。在监控的系统中出现任何异常,将被发出通知给管理员。
基本的 Zabbix Server 的功能分解成为三个不同的组件。他们是:Zabbix server、Web前端和数据库。
Zabbix 的所有配置信息都存储在 Server 和Web前端进行交互的数据库中。例如,当你通过Web前端(或者API)新增一个监控项时,它会被添加到数据库的监控项表里。然后,Zabbix server 以每分钟一次的频率查询监控项表中的有效项,接着将它存储在 Zabbix server 中的缓存里。这就是为什么 Zabbix 前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。
agent
Zabbix agent 部署在被监控目标上,以主动监控本地资源和应用程序(硬盘、内存、处理器统计信息等)。
Zabbix agent 收集本地的操作信息并将数据报告给 Zabbix server 用于进一步处理。一旦出现异常 (例如硬盘空间已满或者有崩溃的服务进程),Zabbix server 会主动警告管理员指定机器上的异常。
Zabbix agents 的极高效率缘于它可以利用本地系统调用来完成统计数据的采集。
proxy
Zabbix proxy 是一个可以从一个或多个受监控设备采集监控数据并将信息发送到 Zabbix server 的进程,主要是代表 Zabbix server 工作。 所有收集的数据都在本地缓存,然后传输到 proxy 所属的 Zabbix server。
部署Zabbix proxy 是可选的,但可能非常有利于分担单个 Zabbix server 的负载。 如果只有代理采集数据,则 Zabbix server 上会减少 CPU 和磁盘 I/O 的开销。
Zabbix proxy 是无需本地管理员即可集中监控远程位置、分支机构和网络的理想解决方案。
Zabbix proxy 需要使用独立的数据库
zabbix监控server部署
安装:在官网上选择对应版本https://www.zabbix.com/cn/download?zabbix=5.0&os_distribution=centos&os_version=7&db=mysql&ws=nginx,这里我选择5.0+centos7+mysql+nginx,然后根据他下面给出的提示安装
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
yum install zabbix-server-mysql zabbix-agent
yum install centos-release-scl
vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1
配置数据库
yum install mariadb-server.x86_64 -y
创建用户,完成初始化
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create user zabbix@localhost identified by '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123456 zabbix
vim /etc/zabbix/zabbix_server.conf
DBUser=zabbix
### Option: DBPassword
# Database password.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
DBPassword=123456
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
server {
listen 80;
server_name 192.168.226.148;
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
listen.acl_users = apache,nginx
php_value[date.timezone] = Asia/Shanghai
# systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
# systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
访问ip,显示安装成功
初始账号Admin zabbix,去用户中心换语种,当然,为了安全考虑,最好把密码也换掉。在管理--用户里面可以新增用户
agent部署
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum install zabbix-agent -y
[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.80.148
ServerActive=192.168.80.148
Hostname=server2
systemctl start zabbix-agent
在server面板上
配置(Configuration) → 主机(Hosts)->点击创建主机(Create host)以添加新的主机
所有必填字段均以红色星标标示。
至少需要填写下列字段:
主机名称(Host name)
输入一个主机名称,可以使用字母数字、空格、点”."、中划线"-"、下划线"_"。
组
从右边的选择框中,选择一个或者多个组,然后点击 << 移动它们到'所在组(In groups)'选择框;或者输入一个不存在的组名,zabbix会创建这个组。
所有访问权限都分配到主机组,而不是单独的主机。这也是主机需要属于至少一个组的原因。
IP地址
输入主机的IP地址。注意如果这是Zabbix server的IP地址,它必须是Zabbix agent配置文件中‘Server’参数的值。
其他选项将会使用默认值。
当完成后,点击添加(Add)。你可以在主机列表中看到你新添加的主机。
随后我们要添加模板--应用集--监控项,相同的监控项可以放进应用集,相同的应用集可以放进模板
主机--应用集--创建应用集--监控项--创建监控项(添加到对应的应用集)--监控--最新数据--点击刚才的主机选择应用--等待一段时间后可以查看可视化图表
把模板链接到主机:准备一个模版后,将它链接到一个主机。前往配置(Configuration) → 主机(Hosts),点击'新主机(New host)'打开表单,前往模版(Templates)标签页。
在链接新模版(Link new templates)输入我们刚刚新创建的模板名字,我们所创建的模板的名称应该显示在下拉列表中,请向下滚动以进行选择。请查看模版是否出现在链接新模版(Link new templates)文本框。
把一个已有的模板添加到主机的方式:
转到配置→主机
单击所需的主机并切换到模板选项卡
点击链接指示器旁边的选择
在弹出窗口中选择一个或多个模板
单击主机属性窗体中的添加/更新
在客户端上自定义监控项
客户端:
[root@server2 ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf UserParameter=nginx_process_num,ps -ef | grep -c [n]ginx
[root@server2 ~]# systemctl restart zabbix-agent.service
去服务器上验证
[root@server1 ~]# yum install zabbix-get.x86_64 -y
#这个能获取别的服务器上的监控数据
[root@server1 ~]# zabbix_get -s 192.168.226.149 -k nginx_process_num
3
#说明配置成功,可以去面板上写了
常用nginx监控项
vim /etc/nginx/conf.d/default.conf
location /nginx-status
{
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
vim /etc/zabbix/zabbix_agentd.d/nginx.conf
UserParameter=Nginx.active,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | awk '/Active/ {print $NF}'
UserParameter=Nginx.read,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | grep 'Reading' | cut -d" " -f2
UserParameter=Nginx.wrie,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | grep 'Writing' | cut -d" " -f4
UserParameter=Nginx.wait,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | grep 'Waiting' | cut -d" " -f6
UserParameter=Nginx.accepted,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $1}'
UserParameter=Nginx.handled,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $2}'
UserParameter=Nginx.requests,/usr/bin/curl -s "http://127.0.0.1:80/nginx-status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $3}'
邮件报警
- 配置Email:管理-》报警媒介类型-》Email-》修改对应Email参数
- 修改admin用户的报警媒介Email:管理-》用户-》Admin-》报警媒介-》添加接收报警邮件的邮箱-》
点击更新 - 添加触发器:配置-》主机-》已监控的主机-》触发器-》创建触发器-》填入报警名称-》点击表达式右
边的添加-》点击监控项右边的选择-》建议选择system uptime(系统启动时间)-》结果选等于0确认插
入-》更新 - 查看触发器状态:配置-》主机-》已监控主机里的触发器,找到新创建的触发器-》可以看到触发器对
应的值有问题和状态两种,可能需要等几分钟才会更新过来 - 配置发送异常报警邮件:配置-》动作-》点击启用Report problems to Zabbix administrators即可
- 邮箱收到报警邮件
如果不行,把这里两个ssl的框勾上
额外的教训
我在自己服务器上安装的时候,我原本就有一个编译安装在别的目录的nginx,zabbix又给我装了一个,但是两个都是默认80端口,导致当一个被拉起来的时候另外一个拉不起来,后来去把属于zabbix的nginx配置文件里面的端口全部改掉restart才ok
评论已关闭