zabbix-agent(数据采集) --> zabbix-server(数据分析\报警) --> 数据库(数据存储) --> zabbix-web(数据展示)
目前zabbix的架构:
--单台zabbix服务:LAMP+zabbix
需要实现zabbix架构,将数据库拆分成单独的一台,LAP+zabbix+MySQL
主机名 | wanIP | lanIP | 角色 |
---|---|---|---|
zabbix | 10.0.0.71 | 172.16.1.71 | zabbix-server |
db02 | 10.0.0.52 | 172.16.1.52 | MySQL |
#1.导出zabbix数据
[root@zabbix ~]# mysqldump -uroot -p -B zabbix >/tmp/zabbix.sql
Enter password:
--注意:我这里zabbix的数据库是没有设置密码的
#2.拷贝数据到db02中
[root@zabbix ~]# scp /tmp/zabbix.sql 10.0.0.52:/tmp
The authenticity of host '10.0.0.52 (10.0.0.52)' can't be established.
ECDSA key fingerprint is SHA256:RPmo1SSy0e1t+q1jP0mMc+MX3c0UdqFgGiJOQULqqGg.
ECDSA key fingerprint is MD5:de:de:07:0a:21:f5:59:46:2c:89:e0:96:a2:ff:ef:5d.
Are you sure you want to continue connecting (yes/no)? y
Please type 'yes' or 'no': yes
Warning: Permanently added '10.0.0.52' (ECDSA) to the list of known hosts.
root@10.0.0.52's password:
zabbix.sql 100% 2194KB 23.8MB/s 00:00
--注意这里的密码是登录虚拟机连接时的root密码
zabbix对于数据库没有什么要求,可以用之前安装好的,也可以yum安装mariadb使用。我用的是之前安装好的5.7.28版本的数据库
#安装数据库
[root@db01 ~]# yum install -y mariadb-server
#启动数据库
[root@db01 ~]# systemctl start mariadb
#导入数据
[root@db01 ~]# mysql -uroot -p < /tmp/zabbix.sql
#查看导入的zabbix库
[root@db02 ~]# mysql -u root -p
Enter password:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hhh |
| mysql |
| performance_schema |
| school |
| sys |
| test |
| world |
| zabbix |
+--------------------+
#关闭数据库
[root@zabbix ~]# systemctl stop mariadb
#打开浏览器查看
这里访问是失败的,为什么会失败呢?
因为我们需要修改PHP代码连接数据库
#修改php文件
[root@zabbix ~]# vim /etc/zabbix/web/zabbix.conf.php
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '10.0.0.52';
$DB['PORT'] = '3306';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = '123';
#修改zabbix配置文件
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
DBHost=10.0.0.52
#问题解决
这里我们会发现,新的错误又会出现了,刚才是连接不上localhost
--说明现在我们的数据库不支持远程连接
#解决办法:所以我们创建个用户就好
MariaDB [(none)]> grant all on zabbix.* to zabbix @'10.0.0.%' identified by '123';
### Option: UserParameter
# User-defined parameter to monitor. There can be several user-defined parameters.
# Format: UserParameter=,
# See 'zabbix_agentd' directory for examples.
#官方示例
UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
UserParameter=mysql.version,mysql -V
#使用命令查看服务器当前登录用户会话数量(服务端)
[root@zabbix ~]# uptime |awk '{print $4}'
2
#客户端
[root@db02 ~]# uptime |awk '{print $5}'
2
#把命令加入配置文件并起名(服务端)
[root@zabbix ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@zabbix zabbix_agentd.d]# vi userparameter_login.conf
UserParameter=user.count,uptime |awk '{print $4}'
#重启agent
[root@zabbix ~]# systemctl restart zabbix-agent.service
#客户端
[root@db02 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@db02 zabbix_agentd.d]# vi userparameter_login.conf
UserParameter=user.count,uptime |awk '{print $5}'
#重启agent
[root@db02 zabbix_agentd.d]# systemctl restart zabbix-agent.service
#查看本机
[root@zabbix zabbix_agentd.d]# zabbix_get -s 127.0.0.1 -k user.count
2
#查看客户端
[root@zabbix zabbix_agentd.d]# zabbix_get -s 10.0.0.52 -p 10050 -k user.count
2
#查看监控项
[root@zabbix ~]# zabbix_agentd -p
user.count [t|2]
[root@db02 ~]# zabbix_agentd -p
user.count [t|2]
#在zabbix-server 端获取agent端数据,使用zabbix_get命令
#1.安装zabbix_get命令
[root@zabbix ~]# yum install -y zabbix-get
#2.语法
[root@web02 ~]# zabbix_get
usage:
zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address] -k item-key
zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address]
--tls-connect cert --tls-ca-file CA-file
[--tls-crl-file CRL-file] [--tls-agent-cert-issuer cert-issuer]
[--tls-agent-cert-subject cert-subject]
--tls-cert-file cert-file --tls-key-file key-file -k item-key
zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address]
--tls-connect psk --tls-psk-identity PSK-identity
--tls-psk-file PSK-file -k item-key
zabbix_get -h
zabbix_get -V
#3.获取数据
[root@zabbix ~]# zabbix_get -s 10.0.0.52 -k user.count
2
使用zabbix内置变量,来优化触发器的名称,此处使用的是
主机名变量:{HOST.NAME}
如果事件源是触发器,那么就会触发动作,触发什么动作呢?就需要自己来创建了。
自定义触发器—>动作—>通知
如果事件源是触发器–>则创建一个触发的动作–>通知
1.我怎么通知。通过介质(配置一个邮箱的发件人)
2.通知给谁。(接收的邮箱)
3.通知的内容(内容可以自定义
通过 OneAlert 提供的通知分派与排班策略,以及全方位的短信、微信、QQ、电话提醒服务,可以在最合适的时间,将最重要的信息推送给最合适的人员。
https://newuser.aiops.com/
[root@zabbix ~]# find / -name alertscripts
/usr/lib/zabbix/alertscripts
[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts
[root@zabbix alertscripts]# wget https://download.aiops.com/ca_agent/zabbix/ca_zabbix_release-3.0.1.tar.gz
tar -xzf ca_zabbix_release-3.0.1.tar.gz
cd cloudalert/bin
bash install.sh 95501940-c8e9-476b-8bb9-f2bb82a88625
注:1、在安装过程中根据安装提示,输入zabbix管理地址、管理员用户名、密码。
2、zabbix管理地址正确示例:http://zabbix.server.com/zabbix
验证告警集成
产生新的zabbix告警(problem),动作状态为“已送达”表示集成成功。
新建分派策略
alter平台报警功能
打开多个终端,查看登录人数
[root@db02 ~]# uptime
16:49:07 up 41 min, 4 users, load average: 0.00, 0.01, 0.03