zabbix自写脚本搭建(centos8+zabbix)

zabbix自写脚本搭建

1、你用过哪些监控软件?

1、cacti

Cacti是一套基于PHP,mysql,snmp,RRD tools开发的检测图形分析工具。Cacti是使用轮询的方式由主服务器向设备发送数据请求来获取设备上转台数据信息。如果设备不断的增多,轮询就非常耗时,监控平台重要的东西就是实时性,如果一个监控的数据不具备实时性,那么这个监控就毫无意义,cacti因为轮询消 耗时间过长,导致无法获取设备的新状态,所以cacti在大规模的监控场景,能力有限。cacti在早期的时 候不支持数据异常报警。

2、nagios

Nagios是一款开源的免费网络监控报警服务,能监控windows,linux,unix等主机状态和主机信息。而且 nagios可以根据监控获得的数据第一时间进行报警。nagios扩展性非常好,支持数万台服务器或者上千台网 络设备的监控。nagios无法将多个相同应用及的数据整合起来,也不能监控到集群中特殊节点的迁移和恢复。

3、ganglia

目前用于hadoop平台的监控,不做过多评价

4、zabbix

1.zabbix是一个基于web界面的提供分布式系统监控以及网络监控功能的企业级开源解决方案。zabbix能监控各种网络参数,保证服务器系统的安全运行,并且能够提供灵活的通知报警机制让系统管理员能快速的发现 问题,定位问题,解决问题.

2.zabbix除了支持主动模式之外还支持被动模式。所谓的主动还是被动针对的是agent,agent向zabbix的 server发送数据,就表示是主动模式,agent被动的等待server来提取数据,就是被动模式。

3.zabbix支持分布式的架构,可以采用zabbix proxy的方式来实现监控平台的轻松扩容,可以简单的实现 多数据中心多云平台监控。你想要扩容,搭建zabbix proxy即可。

4.zabbix支持多种报警,短信(SMS),邮件,语音,微软的team,企业微信,钉钉….

5.zabbix有非常漂亮的web界面(相对的),但是又不仅仅只是显示监控的数据,还可以通过web对监控内容进行调整和配置,还支持多用户访问,以及外部身份认证域的集成。

6.zabbix是免费的。是开源的,是对公众可以任意使用的。虽然zabbix是开源的免费的,但是如果运维人员的水平不够可能也没办法发挥zabbix的全部功能,一般对于开源监控平台来说,如果想玩到高级的程度,必须要具备开发的知识。这个知识针对中小型的公司,需要运维人员对监控平台进行维护和问题发现以及问题处理,对开发人员要求动态实时的定制需要监控的内容。所以说商机就来了,有很多公司提供zabbix的技术支持,zabbix社区就是这些众多提供商业支持的大的一家公司。

5、上述监控工具的区别

nagios的图形也不好看,虽然可以安装图形插件,但是也不好看。nagios如果需要图形,也可以和cacti配合使用。cacti虽然监控效率低下,但是图形比nagios好看。如果采用nagios和zabbix对网络节点进行监控,那么他们因为是并发的监控,所以对cpu的要求很高(其实也不是特别高),是高是低取决于你设置的监控项的数量,以及监控数据提取周期。zabbix相比于nagios在功能上和性能上都强大一些。zabbix的图形比nagios要好看(相对的)。zabbix支持分部署。zabbix支持web配置,配置简单,zabbix支持自动发现 (我们一般会使用xml文件批量导入代替自动发现)

2、zabbix的allinone安装

1、拓扑

image-20210817231726788

2、连接上ssh

1
2
3
4
#连接ssh,采用的1g内存,1 core cpu,centos 8
ssh 10.163.1.100
#修改主机名密码
hostnamectl set-hostname zabbix-allinone

3、zabbix server系统基础配置和软件仓库准备

选择国内的清华大学开源镜像站,作为zabbix软件仓库

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
https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/8/x86_64/

#清空旧的软件仓库
rm -rf /etc/yum.repos.d/*

#设置新的软件仓库(BaseOS、AppStream、epel、zabbix)
cat > /etc/yum.repos.d/a.repo <<END
[BaseOS]
name=baseos
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/BaseOS/x86_64/os/
gpgcheck=0
enabled=1
[AppStream]
name=AppStream
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/AppStream/x86_64/os/
gpgcheck=0
enabled=1
[epel]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/
gpgcheck=0
enabled=1
[zabbix]
name=zabbix
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/8/x86_64/
gpgcheck=0
enabled=1
END

#检查软件仓库是否正常
yum repolist

image-20210817234224549

4、zabbix数据库的安装

1
2
3
4
5
6
7
yum install mariadb-server -y

#启动数据库并设置下次开机启动
systemctl enable mariadb --now

#初始化数据库
mysql_secure_installation

image-20210818134829675

1
2
3
4
5
6
7
8
9
10
11
#测试数据库
mysql -uroot -p -hlocalhost

#创建一个zabbix数据库(登录数据库后)
create database zabbix character set utf8 collate utf8_bin;

#zabbix设置权限,并给zabbix用户设置密码
grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
grant all privileges on zabbix.* to zabbix@'10.163.1.103' identified by 'zabbix';
#刷新权限
flush privileges;

安装zabbix-server-mysql软件,将该软件提供的zabbix数据库模板导入新建的zabbix数据库中

1
2
3
4
5
6
7
8
9
10
yum install -y zabbix-server-mysql

#zabbix模板文件的存放位置
ls /usr/share/doc/zabbix-server-mysql/create.sql.gz

#模板文件导入数据库
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -pzabbix zabbix

#做一下检查
mysql -uzabbix -pzabbix -e "use zabbix;" -e "show tables;"

5、zabbix的server部署

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
#安装软件
由于之前安装了zabbix-server-mysql软件,已经不需要安装别的软件了

#修改配置文件
[root@zabbix-allinone ~]# egrep -v '^#|^$' /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=10.163.1.100
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1

#关闭selinux和防火墙
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl disable firewalld --now

#启动zabbix-server服务
systemctl enable zabbix-server --now

6、zabbix-web的部署

选择lnmp的架构部署zabbix-web

1
2
3
4
5
6
7
8
9
10
11
12
#安装软件
yum install zabbix-web-mysql zabbix-nginx-conf -y

#编写nginx配置文件
sed -i 's/^#.*listen.*/ listen 80;/' /etc/nginx/conf.d/zabbix.conf
sed -i 's/^#.*server_name.*/ server_name 10.163.1.100;/' /etc/nginx/conf.d/zabbix.conf

#设置php的参数->时区
sed -i 's/; php_value\[date.timezone\] = Europe\/Riga/php_value\[date.timezone\] = Asia\/Shanghai/g' /etc/php-fpm.d/zabbix.conf

#启动nginx服务和php-fpm服务
systemctl enable nginx php-fpm --now

7、访问zabbix-web来配置zabbix-web连接zabbix-db和zabbix-server

image-20210818194020817

image-20210818194309855

image-20210818194438040

image-20210818200001305

image-20210818200026615

image-20210818200714392

上面的操作生成了/etc/zabbix/web/zabbix.conf.php这个配置文件

默认的账号是Admin,密码是zabbix

1
2
3
#安装中文包
yum install -y langpacks-zh_CN.noarch
yum install -y glibc-common.x86_64

image-20210818230856412

到此已经完成zabbix-allinone环境的安装

3、zabbix组件分离手工安装

1、拓扑

image-20210819093812186

2、ip design

1
2
3
4
win:10.163.1.103
zabbix-server:10.163.1.100
zabbix-db:10.163.1.102
zabbix-web:10.163.1.106

3、zabbix组件分离安装

1、基础配置

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#在zabbix-server上
ssh 10.163.1.100
hostnamectl set-hostname zabbix-server
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl disable firewalld --now
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/a.repo <<END
[BaseOS]
name=baseos
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/BaseOS/x86_64/os/
gpgcheck=0
enabled=1
[AppStream]
name=AppStream
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/AppStream/x86_64/os/
gpgcheck=0
enabled=1
[epel]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/
gpgcheck=0
enabled=1
[zabbix]
name=zabbix
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/8/x86_64/
gpgcheck=0
enabled=1
END

#zabbix-db上
ssh 10.163.1.102
hostnamectl set-hostname zabbix-db
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl disable firewalld --now
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/a.repo <<END
[BaseOS]
name=baseos
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/BaseOS/x86_64/os/
gpgcheck=0
enabled=1
[AppStream]
name=AppStream
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/AppStream/x86_64/os/
gpgcheck=0
enabled=1
[epel]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/
gpgcheck=0
enabled=1
[zabbix]
name=zabbix
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/8/x86_64/
gpgcheck=0
enabled=1
END

#在zabbix-web上
ssh 10.163.1.106
hostnamectl set-hostname zabbix-web
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
systemctl disable firewalld --now
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/a.repo <<END
[BaseOS]
name=baseos
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/BaseOS/x86_64/os/
gpgcheck=0
enabled=1
[AppStream]
name=AppStream
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/AppStream/x86_64/os/
gpgcheck=0
enabled=1
[epel]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/
gpgcheck=0
enabled=1
[zabbix]
name=zabbix
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/8/x86_64/
gpgcheck=0
enabled=1
END

2、zabbix-db的安装

1
2
3
4
5
6
7
8
9
yum install mariadb-server zabbix-server-mysql -y
systemctl enable mariadb --now
mysql -e "create database zabbix character set utf8 collate utf8_bin;"
mysql -e "grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';"
mysql -e "grant all privileges on zabbix.* to zabbix@'10.163.1.106' identified by 'zabbix';"
mysql -e "grant all privileges on zabbix.* to zabbix@'10.163.1.100' identified by 'zabbix';"
mysql -e "flush privileges;"
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -pzabbix zabbix
mysql -uzabbix -pzabbix -e "use zabbix;" -e "show tables;"

3、zabbix-server的安装

1
2
3
4
yum install  zabbix-server-mysql -y
sed -i 's/^# DBHost.*/DBHost=10.163.1.102/' /etc/zabbix/zabbix_server.conf
sed -i 's/^# DBPassword.*/DBPassword=zabbix/' /etc/zabbix/zabbix_server.conf
systemctl enable zabbix-server --now

4、zabbix-web的安装

1
2
3
4
5
6
7
8
9
10
11
yum install zabbix-web-mysql zabbix-nginx-conf -y
#编写nginx配置文件
sed -i 's/^#.*listen.*/ listen 80;/' /etc/nginx/conf.d/zabbix.conf
sed -i 's/^#.*server_name.*/ server_name 10.163.1.106;/' /etc/nginx/conf.d/zabbix.conf
#设置php的参数->时区
sed -i 's/; php_value\[date.timezone\] = Europe\/Riga/php_value\[date.timezone\] = Asia\/Shanghai/g' /etc/php-fpm.d/zabbix.conf
#安装中文包
yum install -y langpacks-zh_CN.noarch
yum install -y glibc-common.x86_64
#启动nginx服务和php-fpm服务
systemctl enable nginx php-fpm --now

image-20210819152841328

image-20210819153039245

4、shell脚本实现zabbix自动化安装

1、shell脚本的需求

shell脚本实现我们的zabbix自动化安装,我们需要安装zabiix-db、zabbix-server、zabbix-web,不同的zabbix组件所需的安装的软件包不同,修改的配置文件不同,组件的节点ip不同,组件的节点的主机名不同。

2、shell脚本流程

1、节点的基础配置

主机名、IP地址、地址掩码、网关、dns、软件仓库

2、软件安装

zabbix-db需要安装mariadb数据库、zabbix-server-mysql

zabbix-server需要安装zabbix-server-mysql

zabbix-web需要安装zabbix-web-mysql、zabbix-nginx-conf

3、配置文件修改

zabbix-db需要导入zabbix的数据库

zabbix-server需要配置zabbix-db的连接

zabbix-web需要修改nginx和php

4、启动服务

zabbix-db需要启动mariadb服务

zabbix-server需要启动zabbix-server服务

zabbix-web需要启动nginx和php-fpm服务

3、编写shell脚本

为了保证脚本的可扩展性,尽量将配置写成函数的形式,且对脚本的每一步操作检查。如果可能的话尽量在脚本中提供带颜色的输出,在脚本中加上备注。尽量选择额外的节点运行脚本来对组件进行部署。

1、zabbix.conf.php.template

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'db_ip';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = 'zabbix';
$DB['SCHEMA'] = '';
$DB['ENCRYPTION'] = false;
$DB['KEY_FILE'] = '';
$DB['CERT_FILE'] = '';
$DB['CA_FILE'] = '';
$DB['VERIFY_HOST'] = false;
$DB['CIPHER_LIST'] = '';
$DB['DOUBLE_IEEE754'] = true;
$ZBX_SERVER = 'server_ip';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;

2、zabbix-fuc.sh

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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#!/bin/bash
#保证你的安装节点要有sshpass
#-----------------此处之后不可修改--------------------------------

function check()
{
if [ $? == 0 ]
then
echo -e "\033[32m${1}=====>success\033[0m"
else
echo -e "\033[31m${1}=====>fail \033[0m"
fi
}

function basic()
{
#设置免密登录
sshpass -p $web_pass ssh-copy-id root@$web_ip &>>/dev/null
check "设置zabbix-web的免密登录"
sshpass -p $db_pass ssh-copy-id root@$db_ip &>>/dev/null
check "设置zabbix-db的免密登录"
sshpass -p $server_pass ssh-copy-id root@$server_ip &>>/dev/null
check "设置zabbix-server免密登录"

#设置软件仓库,在centos上部署,只使用yum
ssh root@$web_ip rm -rf /etc/yum.repos.d/* &>>/dev/null
check "清空zabbix-web的软件仓库"
ssh root@$web_ip 'sed -i "s/^GSSAPIAuthentication.*/GSSAPIAuthentication no/" /etc/ssh/sshd_config'
check "优化zabbix-web的ssh连接"
ssh root@$db_ip rm -rf /etc/yum.repos.d/* &>>/dev/null
check "清空zabbix-db的软件仓库"
ssh root@$db_ip 'sed -i "s/^GSSAPIAuthentication.*/GSSAPIAuthentication no/" /etc/ssh/sshd_config'
check "优化zabbix-db的ssh连接"
ssh root@$server_ip rm -rf /etc/yum.repos.d/* &>>/dev/null
check "清空zabbix-server的软件仓库"
ssh root@$server_ip 'sed -i "s/^GSSAPIAuthentication.*/GSSAPIAuthentication no/" /etc/ssh/sshd_config'
check "优化zabbix-server的ssh连接"
ssh root@$web_ip 'systemctl restart sshd'
ssh root@$db_ip 'systemctl restart sshd'
ssh root@$server_ip 'systemctl restart sshd'

#生成仓库文件
cat > .a.repo <<END
[BaseOS]
name=baseos
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/BaseOS/x86_64/os/
gpgcheck=0
enabled=1
[AppStream]
name=AppStream
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/AppStream/x86_64/os/
gpgcheck=0
enabled=1
[epel]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/
gpgcheck=0
enabled=1
[zabbix]
name=zabbix
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/8/x86_64/
gpgcheck=0
enabled=1
END
check "生成仓库文件"

scp .a.repo root@$web_ip:/etc/yum.repos.d/a.repo &>>/etc/null
check "设置zabbix-web的仓库"
scp .a.repo root@$db_ip:/etc/yum.repos.d/a.repo &>>/etc/null
check "设置zabbix-db的仓库"
scp .a.repo root@$server_ip:/etc/yum.repos.d/a.repo &>>/etc/null
check "设置zabbix-server的仓库"
rm -rf .a.repo
#关闭防火墙和selinux、设置主机名
ssh root@$web_ip "sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && setenforce 0 && systemctl disable firewalld --now && hostnamectl set-hostname $web_host" &>>/dev/null
check "关闭zabbix-web的selinux和防火墙、设置主机名"
ssh root@$db_ip "sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && setenforce 0 && systemctl disable firewalld --now && hostnamectl set-hostname $db_host" &>>/dev/null
check "关闭zabbix-db的selinux和防火墙、设置主机名"
ssh root@$server_ip "sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && setenforce 0 && systemctl disable firewalld --now && hostnamectl set-hostname $server_host" &>>/dev/null
check "关闭zabbix-server的selinux和防火墙、设置主机名"
}
function zabbix_db()
{
ssh root@$db_ip yum -y install mariadb-server zabbix-server-mysql &>>/dev/null
check "zabbix-db软件包安装"
ssh root@$db_ip 'systemctl enable mariadb --now' &>>/dev/null
check "启动数据库"
ssh root@$db_ip 'mysql -e "create database zabbix character set utf8 collate utf8_bin;"' &>>/dev/null
check "zabbix-db上创建zabbix的数据库"
ssh root@$db_ip "mysql -e \"grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';\"" &>>/dev/null
check "为zabbix用户对zabbix数据库的权限"
ssh root@$db_ip "mysql -e \"grant all privileges on zabbix.* to zabbix@'$web_ip' identified by 'zabbix';\"" &>>/dev/null
check "为zabbix用户对zabbix数据库的权限"
ssh root@$db_ip "mysql -e \"grant all privileges on zabbix.* to zabbix@'$server_ip' identified by 'zabbix';\"" &>>/dev/null
check "为zabbix用户对zabbix数据库的权限"
ssh root@$db_ip 'mysql -e "flush privileges;"' &>>/dev/null
check "zabbix-db刷新数据库权限"
ssh root@$db_ip "zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -pzabbix zabbix" &>>/dev/null
check "zabbix-db上导入zabbix模板数据库"
ssh root@$db_ip 'mysql -uzabbix -pzabbix -e "use zabbix;" -e "show tables;"' &>>/dev/null
check "zabbix-db测试"
}

function zabbix_server()
{
sshserver="ssh root@$server_ip"
$sshserver yum install zabbix-server-mysql -y &>>/dev/null
check "zabbix-server安装软件"
$sshserver "sed -i 's/^# DBHost.*/DBHost=$db_ip/' /etc/zabbix/zabbix_server.conf" &>>/dev/null
check "zabbix-server修改配置文件"
$sshserver "sed -i 's/^# DBPassword.*/DBPassword=zabbix/' /etc/zabbix/zabbix_server.conf" &>>/dev/null
check "zabbix-server修改配置文件"
$sshserver "systemctl enable zabbix-server --now" &>>/dev/null
check "zabbix-server服务启动"
}

function zabbix_web()
{
sshweb="ssh root@$web_ip"
$sshweb yum install zabbix-web-mysql zabbix-nginx-conf -y &>>/dev/null
check "zabbix-web安装软件"
$sshweb "sed -i 's/^#.*listen.*/ listen 80;/' /etc/nginx/conf.d/zabbix.conf" &>>/dev/null
check "zabbix-web修改监听端口"
$sshweb "sed -i 's/^#.*server_name.*/ server_name $web_ip;/' /etc/nginx/conf.d/zabbix.conf" &>>/dev/null
check "zabbix-web编写servername"
$sshweb "sed -i 's/; php_value\[date.timezone\] = Europe\/Riga/php_value\[date.timezone\] = Asia\/Shanghai/g' /etc/php-fpm.d/zabbix.conf" &>>/dev/null
check "zabbix-web修改时间"
$sshweb yum install -y langpacks-zh_CN.noarch glibc-common.x86_64 &>>/dev/null
check "zabbix-web安装语言包"
$sshweb "systemctl enable nginx php-fpm --now" &>>/dev/null
check "zabbix-web安装语言包"
}

function zabbix_tem()
{
cat zabbix.conf.php.template | sed "s/db_ip/$db_ip/" | sed "s/server_ip/$server_ip/" > .zabbix.conf.php
check "生成php配置文件"
scp .zabbix.conf.php root@$web_ip:/etc/zabbix/web/zabbix.conf.php &>>/dev/null
check "复制php配置文件"
$sshweb "chown apache:apache /etc/zabbix/web/zabbix.conf.php && chmod 600 /etc/zabbix/web/zabbix.conf.php" &>>/dev/null
check "修改php配置文件权限"
rm -rf .zabbix.conf.php
}

3、zabbix-var.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
#ip地址
web_ip=10.163.1.106
db_ip=10.163.1.102
server_ip=10.163.1.100

#ssh密码
web_pass=1
db_pass=1
server_pass=1

#主机名
web_host=zabbix-web
db_host=zabbix-db
server_host=zabbix-server

4、zabbix-install.sh

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
source zabbix-fuc.sh
source zabbix-var.sh
function main()
{
basic
zabbix_db
zabbix_server
zabbix_web
zabbix_tem
}
main

5、测试

image-20210819233151992

image-20210819233250042

测试成功

5、在被监控主机上安装zabbix-agent

1、配置软件仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
rm -rf /etc/yum.repos.d/*
cat > .a.repo <<END
[BaseOS]
name=baseos
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/BaseOS/x86_64/os/
gpgcheck=0
enabled=1
[AppStream]
name=AppStream
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/AppStream/x86_64/os/
gpgcheck=0
enabled=1
[epel]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/8/Everything/x86_64/
gpgcheck=0
enabled=1
[zabbix]
name=zabbix
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/8/x86_64/
gpgcheck=0
enabled=1
END

2、安装zabbix-agent

1
yum install -y zabbix-agent

3、修改zabbix-agent配置文件

zabbix-server通过agent获取数据有两种方式,一种是agent端主动发送数据到server端,我们称之为主动模式;agent端等待数据被提取,叫做被动模式。两种模式可以一起配置,并不冲突。

1
2
3
4
5
sed -i 's/^Server=.*/Server=10.163.1.100/'  /etc/zabbix/zabbix_agentd.conf
sed -i 's/^ServerActive=.*/ServerActive=10.163.1.100/' /etc/zabbix/zabbix_agentd.conf
#Server=10.163.1.100表示允许哪个主机获取数据
#ServerActive表示主动向哪个主机发送数据
systemctl enable zabbix-agent --now

6、在zabbix-web上替换字体

在windows主机上查找字体(控制面板—>搜字体—->搜微软)

image-20210823102730944

复制这个字体到zabbix-web上

1
2
3
4
5
6
cp msyhbd.ttc  /usr/share/zabbix/assets/fonts/
mv graphfont.ttf graphfont.ttf.bak
mv msyhbd.ttc graphfont.ttf

#不改名的话也可以,修改配置文件
sed -i "s/^define('ZBX_GRAPH_FONT_NAME'.*/define('ZBX_GRAPH_FONT_NAME', '拷贝过来的文件名(不带后缀名)');/" /usr/share/zabbix/include/defines.inc.php

7、在zabbix-server上配置邮件客户端

1、安装sendmail和mailx软件

1
yum install sendmail mailx -y

2、开启sendmail服务

1
systemctl enable sendmail --now

3、配置sendmail客户端配置文件

1
2
3
4
5
6
7
8
cat > /etc/mail.rc << END
set bsdcompat
set from=#自己的邮箱@163.com
set smtp=smtp.163.com
set [email protected]
set smtp-auth-password=#邮箱授权码
set smtp-auth=login
EDN

4、测试邮件的发送

1
echo "this is a first mail test" | mail -s 'zabbix server mail test' #自己另外的邮箱@qq.com

image-20210825213112360

5、添加报警媒介

image-20210827165219992

6、添加消息模板

image-20210827165307892

1
2
3
4
5
6
7
8
9
告警主机:{HOSTNAME1}
告警地址:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME} : {ITEM.VALUE}
当前状态:{TRIGGER.STATUS} : {ITEM.VALUE1}
事件 ID:{EVENT.ID}

8、zabbix系统自带监控项详解

1、在agent端列出系统里面自带的监控项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
zabbix_agentd -p

#列出单个
[root@zabbix-server ~]# zabbix_agentd -t agent.hostname
agent.hostname [s|Zabbix server]

#利用正则表达式列出网络相关的表达式
[root@zabbix-server ~]# zabbix_agentd -p | egrep ^net
net.dns[,zabbix.com] [u|1]
net.dns.record[,zabbix.com] [t|zabbix.com SOA ines.ns.cloudflare.com dns.cloudflare.com 2037017794 10000 2400 604800 3600]
net.tcp.dns[,zabbix.com] [u|1]
net.tcp.dns.query[,zabbix.com] [t|zabbix.com SOA ines.ns.cloudflare.com dns.cloudflare.com 2037017794 10000 2400 604800 3600]
net.tcp.port[,80] [u|0]
net.tcp.listen[80] [u|0]
net.udp.listen[68] [u|1]
net.if.in[lo,bytes] [u|15951503]
net.if.out[lo,bytes] [u|15951503]
net.if.total[lo,bytes] [u|31903006]
net.if.collisions[lo] [u|0]
net.if.discovery [s|[{"{#IFNAME}":"eth2"},{"{#IFNAME}":"eth3"},{"{#IFNAME}":"eth0"},{"{#IFNAME}":"lo"},{"{#IFNAME}":"eth1"}]]
net.tcp.service[ssh,127.0.0.1,22] [u|1]
net.tcp.service.perf[ssh,127.0.0.1,22] [d|0.00693821907043457]
net.udp.service[ntp,127.0.0.1,123] [u|0]
net.udp.service.perf[ntp,127.0.0.1,123] [d|0]

9、zabbix使用模板实现监控网络设备

1、拓扑

image-20210906210204901

1
2
3
4
5
6
7
8
9
10
11
#IP都是自动获取
#思科交换机配置
Switch>en
Switch#configure
Switch(config)#int vlan 1
Switch(config-if)#ip address 10.163.1.198 255.255.255.0
Switch(config-if)#no shutdown
Switch(config-if)#hostname cisco-switch
cisco-switch(config)#do wr

#H3C交换机配置

image-20210906212426899

image-20210906212454195

2、在H3C的route上配置snmp

image-20210906212830727

image-20210906213059482

1
2
3
4
5
6
7
8
9
10
#配置snmp
<H3C-route>system-view
[H3C-route]snmp-agent
[H3C-route]snmp-agent community read public
[H3C-route]snmp-agent sys-info version all
[H3C-route]save

#在linux上查看snmp信息
[root@zabbix-db ~]# yum install net-snmp-utils -y
[root@zabbix-db ~]# snmpwalk -v 2c -c public 10.163.1.108

3、在cisco的swich上配置telnet和snmp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#配置telnet
cisco-switch#configure
Configuring from terminal, memory, or network [terminal]?
Enter configuration commands, one per line. End with CNTL/Z.
cisco-switch(config)#line vty 0 4
cisco-switch(config-line)#transport input telnet
cisco-switch(config-line)#login local
cisco-switch(config-line)#user root password root
cisco-switch(config)#enable password root

#配置snmp
[root@zabbix-db ~]# yum install -y telnet
[root@zabbix-db ~]# telnet 10.163.1.198
cisco-switch>enable
Password: root
cisco-switch#configure
cisco-switch(config)#$ community public ro
cisco-switch(config)#snmp-server enable traps
cisco-switch(config)#do wr

4、在zabbix-web上添加网络节点

image-20210906220521497

image-20210906220634287


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!