#zabbix
#zabbix-server
只用docker搭建
#zabbix-web
zabbix-web.sh
#!/bin/bash
version="centos-5.0.2"
docker_name="zabbix-web-nginx-pgsql"
docker stop ${docker_name}
docker rm ${docker_name}
docker run -d --name ${docker_name} \
--restart=always \
--link zabbix-server:zabbix-server \
--link zabbix-postgres:zabbix-postgres \
-e DB_SERVER_HOST="zabbix-postgres" \
-e POSTGRES_USER="postgres" \
-e POSTGRES_PASSWORD="password" \
-e ZBX_SERVER_HOST="zabbix-server" \
-e PHP_TZ="Asia/Shanghai" \
-p 8800:8080 \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
zabbix/zabbix-web-nginx-pgsql:${version}#解决中文乱码
在C:\Windows\Fonts\中找到simkai或者楷体 常规并上传到服务器
docker cp simkai.ttf zabbix-web-nginx-pgsql:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf#zabbix-server
zabbix-server.sh
#!/bin/bash
version="centos-5.0.2"
docker_name=zabbix-server
docker kill zabbix-server
docker rm zabbix-server
docker run -d --name zabbix-server \
--restart=always \
--hostname $(hostname) \
--add-host $(hostname):10.0.18.2 \
--link zabbix-postgres:zabbix-postgres \
-p 10051:10051 \
-e DB_SERVER_HOST="zabbix-postgres" \
-e POSTGRES_USER="postgres" \
-e POSTGRES_PASSWORD="password" \
-e ZBX_CACHESIZE=16M \
-e ZBX_VALUECACHESIZE=64M \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
zabbix/zabbix-server-pgsql:${version}#zabbix-postgres
zabbix-postgres.sh
#!/bin/sh
echo 'Asia/Shanghai' > /etc/timezone
docker_name=zabbix-postgres
chown -R polkitd.root data-${docker_name}/
docker stop ${docker_name}
docker rm ${docker_name}
docker run -d --name ${docker_name} \
--restart=always \
-e POSTGRES_PASSWORD=password \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-v $(pwd)/data-${docker_name}:/var/lib/postgresql/data \
postgres:9.6#zabbix-agent
#安装zabbix-agent
由于用docker安装不一定能获取到所有数据/正确数据,故使用宿主机安装
debian
centos
wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian12_all.deb
dpkg -i zabbix-release_latest_7.0+debian12_all.deb
apt update
apt install zabbix-agent
# 修改完配置文件后启动
systemctl enable zabbix-agent --nowrpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
# 如果是国内就换源
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#g' /etc/yum.repos.d/zabbix.repo
yum install zabbix-agent -y
# 修改完配置文件后启动
systemctl enable zabbix-agent --nowTip
7.0版本: rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/7/x86_64/zabbix-release-7.0-1.el7.noarch.rpm
#配置文件说明
#/etc/zabbix/zabbix_agentd.conf
#被动模式(server主动去agent拉)
PidFile=/var/run/zabbix/zabbix_agentd.pid //13行
LogFile=/var/log/zabbix/zabbix_agentd.log //32行
LogFileSize=0 //43行
Include=/etc/zabbix/zabbix_agentd.d/*.conf //309行
//上面的是核对项,下面的是修改项//
Server=本机IP,服务器IP //如图172.29.230.4为本机IP,172.31.254.13为服务器IP
ServerActive=服务器IP
Hostname=testhost //158行,指定名称
#Hostname填写要监控的主机名,Server才能根据名字找到它(此处hostname要与zabbix监控当中添加主机的主机名一致)Tip
如果要实现自动添加, 就需要在配置文件中加上HostMetadata, 然后在服务端的动作中的自动发现动作添加, 判断主机元数据
#在zabbix-server中添加
在配置->主机界面点击创建主机按钮,填写好必填项,然后在模板界面选择Template OS Linux by Zabbix agent
等一会后就显示连接成功
#主动模式(agent主动推给server)
# Server=本机IP,服务器IP //禁用
ServerActive=服务器IP
Hostname=testhost //158行,指定名称
StartAgents=0 //启用主动模式
#Hostname填写要监控的主机名,Server才能根据名字找到它(此处hostname要与zabbix监控当中添加主机的主机名一致)#在zabbix-server中添加
在配置->主机界面点击创建主机按钮,填写好必填项,然后在模板界面选择Template OS Linux by Zabbix agent active
等一会后就显示连接成功
#zabbix-proxy
#安装
旧版本(5.0)
新版本(7.0)
#!/bin/bash
docker_name=zabbix-proxy-sqlite3
mkdir -p data/
chown -R 1997:1997 data/
echo "Asia/Shanghai" > /etc/timezone
docker stop ${docker_name}
docker rm ${docker_name}
docker run -d --name zabbix-proxy-sqlite3 \
--restart=always \
--net host \
--hostname xxx \
--add-host=zabbix-server:172.31.254.13 \ # zabbix-server的公网ip
-e ZBX_HOSTNAME=$(hostname) \
-e ZBX_SERVER_HOST=zabbix-server \
-e ZBX_PROXYMODE=0 \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-v $(pwd)/data/:/var/lib/zabbix/ \
zabbix/zabbix-proxy-sqlite3:centos-5.0.2
# ZBX_PROXYMODE=0 # 主动模式
# ZBX_PROXYMODE=1 # 被动模式#!/bin/bash
docker_name=zabbix-proxy-sqlite3
echo "Asia/Shanghai" > /etc/timezone
if [ ! -d ./data ];then
mkdir -p data/
chown -R 1997:1997 data/
chmod 755 data/
docker rm -f copyresources &&
docker run -d --hostname $(hostname) \
--name copyresources \
-e ZBX_HOSTNAME=$(hostname) \
zabbix/zabbix-proxy-sqlite3:centos-7.0.0 && sleep 60 && docker cp copyresources:/var/lib/zabbix/ ./data/
docker rm -f copyresources
fi
chown -R 1997.1997 data2/
chmod 755 data2/
docker stop ${docker_name}
docker rm ${docker_name}
docker run -d --name zabbix-proxy-sqlite3 \
--restart=always \
--net host \
--init -d \
--hostname $(hostname) \
--add-host=zabbix-server:xx.xx.xx.xx \
-e ZBX_HOSTNAME=$(hostname) \
-e ZBX_SERVER_HOST=zabbix-server \
-e ZBX_PROXYMODE=0 \
-e ZBX_CACHESIZE=16M \
-e ZBX_VALUECACHESIZE=64M \
-e ZBX_STARTVMWARECOLLECTORS=5 \
-e ZBX_VMWAREFREQUENCY=30 \
-e ZBX_VMWAREPERFFREQUENCY=30 \
-e ZBX_VMWARECACHESIZE=50M \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-v $(pwd)/data/zabbix/:/var/lib/zabbix/ \
zabbix/zabbix-proxy-sqlite3:centos-7.0.0
# ZBX_PROXYMODE=0 # 主动模式
# ZBX_PROXYMODE=1 # 被动模式安装完成后,在zabbix-server中管理中的agent代理程序来配置,其中主动式是proxy主动推
#推送
#钉钉
#1、配置推送媒介,类型选择webhook,配置参数ParseMode为空,Token为钉钉的webhook的token,脚本:
_ding_push.js
var Dingtalk = {
token: null,
http_proxy: null,
timeout: 5000,
sendMessage: function(message) {
var params = JSON.stringify(message);
var request = new HttpRequest();
request.addHeader('Content-Type: application/json');
var url = 'https://oapi.dingtalk.com/robot/send?access_token=' + this.token;
if (this.http_proxy) {
request.setProxy(this.http_proxy);
}
request.setTimeout(this.timeout);
try {
var response = request.post(url, params);
Zabbix.Log(4, '[Dingtalk Webhook] response: ' + response);
return 'OK';
} catch (error) {
Zabbix.Log(4, '[Dingtalk Webhook] notification failed: ' + error);
throw 'Failed to send notification: ' + error;
}
}
};
try {
var params = JSON.parse(value);
Dingtalk.token = params.token;
if (params.http_proxy) {
Dingtalk.http_proxy = params.http_proxy;
}
var message = {
msgtype: 'text',
text: {
content: params.message
}
};
return Dingtalk.sendMessage(message);
} catch (error) {
Zabbix.Log(4, '[Dingtalk Webhook] notification failed: ' + error);
throw 'Failed to send notification: ' + error;
}#2、配置Message template
问题
Problem: {EVENT.NAME}
当前状态: {TRIGGER.STATUS}
告警主机: {HOSTNAME1}
告警别名: {HOST.NAME}
告警地址: {HOST.IP}
告警时间: {EVENT.DATE} {EVENT.TIME}
告警等级: {TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目: {TRIGGER.KEY1}
问题详情: {ITEM.NAME}: {ITEM.VALUE}
当前状态: {TRIGGER.STATUS}: {ITEM.VALUE1}
事件ID: {EVENT.ID}Problem recovery
Resolved in {EVENT.DURATION}: {EVENT.NAME}
当前状态: {TRIGGER.STATUS}
恢复主机: {HOSTNAME1}
恢复别名: {HOST.NAME}
恢复地址: {HOST.IP}
恢复时间: {EVENT.DATE} {EVENT.TIME}
恢复等级: {TRIGGER.SEVERITY}
恢复信息: {TRIGGER.NAME}
恢复项目: {TRIGGER.KEY1}
恢复详情: {ITEM.NAME}: {ITEM.VALUE}
当前状态: {TRIGGER.STATUS}: {ITEM.VALUE1}
事件ID: {EVENT.ID}#3、在用户中配置报警媒介
#4、在动作中配置媒介
#对接grafana
#grafana安装zabbix插件
grafana-cli plugins install alexanderzobnin-zabbix-app安装完插件后需重启
#在grafana启用zabbix
#添加zabbix数据源
http://10.0.18.2:8800/api_jsonrpc.php#导入模板
https://grafana.com/grafana/dashboards/5363-zabbix-full-server-status/
