只用docker搭建
#!/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#!/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}#!/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由于用docker安装不一定能获取到所有数据/正确数据,故使用宿主机安装
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 --nowPidFile=/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监控当中添加主机的主机名一致)
如果要实现自动添加, 就需要在配置文件中加上HostMetadata, 然后在服务端的动作中的自动发现动作添加, 判断主机元数据
在配置->主机界面点击创建主机按钮,填写好必填项,然后在模板界面选择Template OS Linux by Zabbix agent
等一会后就显示连接成功
# Server=本机IP,服务器IP //禁用
ServerActive=服务器IP
Hostname=testhost //158行,指定名称
StartAgents=0 //启用主动模式
#Hostname填写要监控的主机名,Server才能根据名字找到它(此处hostname要与zabbix监控当中添加主机的主机名一致)在配置->主机界面点击创建主机按钮,填写好必填项,然后在模板界面选择Template OS Linux by Zabbix agent active
等一会后就显示连接成功
#!/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 # 被动模式安装完成后,在zabbix-server中管理中的agent代理程序来配置,其中主动式是proxy主动推
webhook,配置参数ParseMode为空,Token为钉钉的webhook的token,脚本: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;
}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}grafana-cli plugins install alexanderzobnin-zabbix-app安装完插件后需重启
http://10.0.18.2:8800/api_jsonrpc.phphttps://grafana.com/grafana/dashboards/5363-zabbix-full-server-status/