1. 总结zabbix安装过程(选择课程演示版本)。
#在ubuntu18.04 安装 Zabbix Server 5.0
#官网下载
[root@zabbix-server ~]#wget
https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbixrelease_5.0-1+bionic_all.deb
#镜像下载
[root@zabbix-server ~]#wget
https://mirrors.aliyun.com/zabbix/zabbix/5.0/ubuntu/pool/main/z/zabbixrelease/zabbix-release_5.0-1+bionic_all.deb
[root@zabbix-server ~]#dpkg -L zabbix-release
/.
/etc
/etc/apt
/etc/apt/sources.list.d
/etc/apt/sources.list.d/zabbix.list
/etc/apt/trusted.gpg.d
/etc/apt/trusted.gpg.d/zabbix-official-repo.gpg
/usr
/usr/share
/usr/share/doc
/usr/share/doc/zabbix-release
/usr/share/doc/zabbix-release/README.Debian
/usr/share/doc/zabbix-release/changelog.Debian
/usr/share/doc/zabbix-release/copyright
[root@zabbix-server ~]#cat /etc/apt/sources.list.d/zabbix.list
deb http://repo.zabbix.com/zabbix/5.0/ubuntu bionic main
deb-src http://repo.zabbix.com/zabbix/5.0/ubuntu bionic main
#镜像加速
[root@zabbix-server ~]#sed -i.bak
's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#'
/etc/apt/sources.list.d/zabbix.list
[root@zabbix-server ~]#cat /etc/apt/sources.list.d/zabbix.list
deb https://mirrors.aliyun.com/zabbix/zabbix/5.0/ubuntu bionic main
deb-src https://mirrors.aliyun.com/zabbix/zabbix/5.0/ubuntu bionic main
[root@zabbix-server ~]#apt update
#安装包
[root@zabbix-server ~]#apt -y install zabbix-server-mysql zabbix-frontend-php
zabbix-apache-conf zabbix-agent zabbix-get
#安装MySQL
[root@zabbix-server ~]#apt install mysql-server -y
#如果MySQL和ZabbixServer在同一台主机,此项可不改
[root@zabbix-server ~]#vim /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 0.0.0.0
[root@zabbix-server ~]#systemctl restart mysql.service
#准备数据库和用户
[root@zabbix-server ~]#mysql -uroot
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by '123456';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;
#初绐化数据库的表
[root@zabbix-server ~]#zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz |
mysql -uzabbix -p123456 zabbix
#修改Zabbix Server 连接MySQL
[root@zabbix-server ~]#vim /etc/zabbix/zabbix_server.conf
DBPassword=123456
#修改PHP配置
[root@zabbix-server ~]#vim /etc/zabbix/apache.conf
php_value date.timezone Asia/Shanghai
[root@zabbix-server ~]#systemctl restart zabbix-server zabbix-agent apache2
[root@zabbix-server ~]#systemctl is-active zabbix-server zabbix-agent apache2
active
active
active
[root@zabbix-server ~]#systemctl enable zabbix-server zabbix-agent apache2
#安装中文包
[root@zabbix-server ~]#apt -y install language-pack-zh-hans
[root@zabbix-server ~]#systemctl restart apache2
#浏览器访问
http://server_ip_or_name/zabbix
2. 总结 zabbix主动模式和被动模式简介及实现
Zabbix 监控流程中 Agent 收集数据分为主动和被动两种模式
主动模式和被动模式都是相对 zabbix agent 而言的
Zabbix默认是被动模式,如果有100个监控项,被动模式需要 Zabbix Server找 Zabbix Agent要100次
主动模式是Zabbix Server给 Zabbix Agent发送一个包括100个监控项的任务清单,Zabbix Agent根据任 务清单,采集好100个监控项的值,主动汇报给 Zabbix Server这100个监控项,Zabbix Agent主动模式 只需要发送一次数据,大大提高了传输效率。
- 被动模式: Server 向 Agent 请求获取监控项的数据,Agent返回数据。此为默认模式,如果有100个 监控项,则需要100次交互
- 主动模式: Agent 请求 Server 获取主动的监控项列表,并主动将监控项内需要检测的数据提交给 server/proxy,如有100个监控项,只需要1次交互即可
注意: 两种模式可以在Zabbix Server上同时存在,可以将一部分监控项设为主动,其它设为被动模式
Zabbix 的主动和被动模式工作原理:
被动模式监测通信过程如下:
Server打开一个TCP连接
Server发送请求
agent.ping Agent接收到请求并且响应
Server处理接收到的数据
关闭TCP连接
被动模式每获取一个监控项都需要打开一个tcp连接,这样当监控项越来越多时,Zabbix Server会打开很多端口,就会出现server端性能瓶颈问题。
主动模式监测通信过程如下:
zabbix agent 首先向ServerActive配置的IP请求获取active items,获取并提交active items数据 值给server或者proxy。
zabbix多久获取一次active items?
它会根据agent的配置文件中的RefreshActiveChecks的频率进行,如果获取失败,那么将会在60秒之后重 试。
3. 总结 zabbix proxy主动及被动案例
Zabbix Proxy 也分主动模式和被动模式,通信方式与zabbix server主动模式和被动模式一样
Zabbix Proxy的模式是从Zabbix Proxy 角度来说的
Zabbix Proxy在主动模式下要主动地向zabbix server周期性的申请获取zabbix agent的监控项信息,此模式可以大幅降低Zabbix Server的压力,生产推荐使用
Zabbix Proxy在被动模式下要被动地等待zabbix server的连接,并接受zabbix server发送的监控项指令,然后再由zabbix proxy向zabbix agent发起请求获取数据。
注意: Zabbix Proxy 的主动模式和被动模式和Agent的主动被动模式没有关系
4. 总结自定义监控,监控linux, nginx, 并基于短信/email报警。
监控流程:
1 明确监控的内容
2 内置的模板中是否有内容的实现
3 如果没有,只能自定义
4 编写采集数据的命令程序实现
5 修改agent 配置,添加自定义监控项
6 创建模板
7 在模板创建监控项
8 主机上关联模板
自定义监控项配置
监控项键值的格式
客户端可以自定义监控项,在Zabbix Agent 配置文件添加内容,格式如下:
#cat /etc/zabbix/zabbix_agentd.conf
#cat /etc/zabbix/zabbix_agent2.conf
UserParameter=<key>,<shell command> Include=/etc/zabbix/zabbix_agentd.d/*.conf
#或者创建独立的自定义文件
#cat /etc/zabbix/zabbix_agentd.d/*.conf
#cat /etc/zabbix/zabbix_agent2.d/*.conf
UserParameter=<key>,<shell command>
测试监控项:
在Zabbix Agent 上执行测试
#不需要重启服务:
zabbix_agentd -t "在客户端定义的key名[arg1,arg2,...]"
zabbix_agent2 -t "在客户端定义的key名[arg1,arg2,...]"
在Zabbix Server上可以使用zabbix_get工具获取自定义监控项
#需要重启服务:systemctl restart zabbix-agent2.service
zabbix_get -s 客户端IP -p 10050 -k "在客户端定义的key名[arg1,arg2,...]"
监控 Nginx 服务
查看nginx状态页的宏定义路径:可以修改宏定义
#安装nginx
[root@ubuntu200406 ~]#apt install nginx -y
#然后配置nginx状态页
[root@ubuntu200406 ~]#vim /etc/nginx/sites-enabled/default
location /basic_status { #basic_status是宏定义路径,Zabbix系统默认监控路径
stub_status;
}
#语法检查没有问题
[root@ubuntu200406 ~]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
#重新加载nginx即可
[root@ubuntu200406 ~]#nginx -s reload
此时,浏览器访问192.168.31.181/basic_status即可,如下图:
给192.168.31.181再添加一个Nginx by Zabbix agent模版:
5. 完成部署zabbix agent脚本,可适配rocky和ubuntu系统。
[root@ubuntu1804 ~]#cat install_zabbix_agent_src.sh
#!/bin/bash
ZABBIX_VER=5.0.13
FILE=zabbix-${ZABBIX_VER}.tar.gz
INSTALL_DIR=/apps/zabbix_agent
SERVER=10.0.0.100
HOST=`hostname -I`
. /etc/os-release
color () {
RES_COL=60
MOVE_TO_COL="echo -en \\033[${RES_COL}G"
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \E[0m"
echo -n "$1" && $MOVE_TO_COL
echo -n "["
if [ $2 = "success" -o $2 = "0" ] ;then
${SETCOLOR_SUCCESS}
echo -n $" OK "
elif [ $2 = "failure" -o $2 = "1" ] ;then
${SETCOLOR_FAILURE}
echo -n $"FAILED"
else
${SETCOLOR_WARNING}
echo -n $"WARNING"
fi
${SETCOLOR_NORMAL}
echo -n "]"
echo
}
check(){
wget https://cdn.zabbix.com/zabbix/sources/stable/${ZABBIX_VER%.*}/zabbix-$ZABBIX_VER
.tar.gz
[ -e ${FILE} ] || { color "$FILE 文件不存在,请检查" 1 ; exit 1; }
}
prepare (){
if [ $ID = "centos" $ID = "rocky" ];then
yum -y install gcc make pcre-devel || { color "zabbix agent 相关包安装失
败,请检查" 1 ;exit; }
else
apt -y install gcc make || { color "zabbix agent 相关包安装失败,请检查" 1
;exit; }
fi
id zabbix &> /dev/null || useradd -r zabbix
}
install() {
tar xf $FILE
cd zabbix-$ZABBIX_VER
./configure --prefix=${INSTALL_DIR} --enable-agent
make && make install
}
config () {
sed -i.bak -e "s/Server=127.0.0.1/Server=$SERVER/" -e "s/Hostname=Zabbix
server/Hostname=$HOST/" ${INSTALL_DIR}/etc/zabbix_agentd.conf
echo 'PATH=${INSTALL_DIR}/bin/:${INSTALL_DIR}/sbin/:$PATH' >
/etc/profile.d/zabbix_agent.sh
}
service (){
cat > /lib/systemd/system/zabbix-agent.service <<EOF
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=${INSTALL_DIR}/sbin/zabbix_agentd -c
${INSTALL_DIR}/etc/zabbix_agentd.conf
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now zabbix-agent.service
systemctl is-active zabbix-agent.service && color "Zabbix Agent 安装完成并启动"
0
}
check
prepare
install
config
service
6. 完成命令行脚本,可以基于zabbix api添加zabbix agent到zabbix web。
API添加主机前,需要预先知道要添加的主机IP、此主机预先安装并配置好zabbix agent、预先知道要关联
的模板ID/组ID等信息,然后同API提交请求添加
#批量添加主机
[root@zabbix-server ~]#vim ./zabbix-api-addhosts.sh
#!/bin/bash
ZABBIX_SERVER=10.0.0.100
TOKEN=$(./zabbix-api-token.sh| awk -F'"' '{print $8}')
NET=10.0.0
for HOST in $NET.{200..210};do
curl -s -XPOST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "host.create",
"params": {
"host": "'$HOST'",
"name": "'web-$HOST'",
"interfaces": [
{
"type": 1,
"main": 1,
"useip": 1,
"ip": "'$HOST'",
"dns": "",
"port": "10050"
}
],
"groups": [
{
"groupid": "2"
}
],
"templates": [
{
"templateid": "10001"
}
]
},
"id": 1,
"auth": "'$TOKEN'"
}' http://${ZABBIX_SERVER}/zabbix/api_jsonrpc.php
done
[root@zabbix-server ~]#bash ./zabbix-api-addhosts.sh
7. 基于课程演示,构建一个漂亮的granfana大盘。