(需安装包,下面是官网下载的zabbix5.2rpm包)
#在/data/projects/下生成zabbix目录并将上面的rpm附件包传输到此目录
sudo mkdir -p /data/zabbix
sudo mv zabbix-agent-5.2.0-1.el7.x86_64.rpm /data/zabbix/
cd /data/zabbix
#cd /data/projects/zabbix
#rpm安装
sudo rpm -i zabbix-agent-5.2.0-1.el7.x86_64.rpm
#以上是离线RPM安装包步骤,用yum安装可参考以下
官网在线安装链接如下
https://www.zabbix.com/download?zabbix=5.2&os_distribution=centos&os_version=7&db=&ws=
#编辑conf文件配置,修改以下三行
sudo vim /etc/zabbix/zabbix_agentd.conf
Server=x.x.x.x #被动模式,ZABBIX服务器IP地址
ServerActive=x.x.x.x #主动模式,ZABBIX服务器IP地址
Hostname=x.x.x.x #ZABBIX-agent本机主机名
#启动zabbix-agent
[root@agent ~]# sudo systemctl restart zabbix-agent
[root@agent ~]# sudo systemctl enable zabbix-agent
在链接下载windows版本的agent包
#解压到C盘并重命名为zabbix_agent
#修改C:\zabbix_agent\conf\zabbix_agentd.conf的配置信息
Server=x.x.x.x #被动模式,ZABBIX服务器IP地址
ServerActive=x.x.x.x #主动模式,ZABBIX服务器IP地址
Hostname=x.x.x.x #ZABBIX-agent本机主机名
#安装命令
C:\zabbix_agent\bin\zabbix_agentd.exe -i -c C:\zabbix_agent\conf\zabbix_agentd.conf
#启动命令
C:\zabbix_agent\bin\zabbix_agentd.exe -s -c C:\zabbix_agent\conf\zabbix_agentd.conf
#下面为关闭命令,需要时再用
#C:\zabbix_agent\bin\zabbix_agentd.exe -x
#查看开机自启动
services.msc
此步骤需要提前安装docker及docker-compose,然后运行此docker-compos脚本.将以下脚本编辑成docker-compose.yml文件后,在此文件的同级目录运行docker-compose up -d命令启动zabbix-server.
version: '2'
services:
mysql-zabbix:
container_name: mysql-zabbix
image: mysql:8.0
environment:
- "MYSQL_DATABASE=zabbix"
- "MYSQL_USER=zabbix"
- "MYSQL_PASSWORD=zabbixpassword"
- "MYSQL_ROOT_PASSWORD=rootpassword"
command: [
'--character-set-server=utf8',
'--collation-server=utf8_bin',
'--default-authentication-plugin=mysql_native_password'
]
volumes:
- ./mysql/data:/var/lib/mysql
- "/etc/localtime:/etc/localtime:ro"
zabbix-java-gateway:
container_name: zabbix-java-gateway
image: zabbix/zabbix-java-gateway:latest
restart: always
zabbix-server-mysql:
container_name: zabbix-server-mysql
image: zabbix/zabbix-server-mysql:latest
restart: always
environment:
- "DB_SERVER_HOST=mysql-zabbix"
- "MYSQL_DATABASE=zabbix"
- "MYSQL_USER=zabbix"
- "MYSQL_PASSWORD=zabbixpassword"
- "MYSQL_ROOT_PASSWORD=rootpassword"
- "ZBX_JAVAGATEWAY=zabbix-java-gateway"
ports:
- 10051:10051
links:
- mysql-zabbix:mysql
- zabbix-java-gateway:zabbix-java-gateway
zabbix-web-nginx-mysql:
container_name: zabbix-web-nginx-mysql
image: zabbix/zabbix-web-nginx-mysql:latest
restart: always
environment:
- "DB_SERVER_HOST=mysql-zabbix"
- "MYSQL_DATABASE=zabbix"
- "MYSQL_USER=zabbix"
- "MYSQL_PASSWORD=zabbixpassword"
- "MYSQL_ROOT_PASSWORD=rootpassword"
# - "PHP_TZ=Asia/Shanghai"
volumes:
- "/etc/localtime:/etc/localtime:ro"
ports:
- 6380:8080
links:
- mysql-zabbix:mysql
- zabbix-server-mysql:zabbix-server
地址:ServerIP:6380
账号:Admin
密码:zabbix
(以后只要将主机添加到模板所链接的主机群组,就可以实现分组配置)
搜索自己想要链接的模板
模板链接主机群组
(腾讯企业邮箱参考文档)此步骤填写的是邮箱的发送方,通过腾讯企业邮箱提供的smtp服务为我们发送制定的邮箱内容。
恢复操作亦如上,以下为消息模板
主题:【项目名称】【故障】服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障
消息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}
事件ID:{EVENT.ID}
---------
主题:【项目名称】【恢复】 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
消息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:
事件ID:{EVENT.ID}
注意:上图添加用户群组或者用户的时候,需要给指定用户添加报警媒介并指定类型为之前添加的报警媒介类型
当出现异常,就会在邮箱收到类似截图
新建钉钉群,添加机器人获取webhook
添加完成保存好以上的webhook
#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
# Author: liusy
import requests
import json
import sys
# 告警群
url = '这里填写钉钉群的机器人webhook链接'
def send_msg(msg):
program = {"msgtype": "text", "text": {"content": msg}, }
headers = {'Content-Type': 'application/json'}
try:
f = requests.post(url, data=json.dumps(program), headers=headers)
except Exception as e:
return False
return f.status_code
def main():
msg = sys.argv[1]
send_msg(msg)
if __name__ == '__main__':
main()
注意:当需要常更新的端口,在一两分钟内能正常恢复的情况下不报警,则可以更改表达式max(1m)为sum(2m)
docker-compose.yml如下
version: '2'
services:
grafana:
image: grafana/grafana:latest
container_name: grafana_3311
restart: always
volumes:
- ./data/:/var/lib/grafana
ports:
- "3311:3000"
注意:service启动(数据挂载)之前,应先在grafana目录进行如下操作
mkdir data
chown 472:472 data/
docker-compose up -d
即可通过http://IP:3311进行服务的访问
初始账号:admin
初始密码:admin
添加alexanderzobnin-zabbix-app-4.0.1.zip插件到grafana的映射目录下(在官网下载,附录上传限制原因无法上传到此文档里)
cp alexanderzobnin-zabbix-app-4.0.1.zip data/plugins/
sudo unzip alexanderzobnin-zabbix-app-4.0.1.zip
docker-compose down
docker-compose up -d
启用zabbix插件
添加数据源
http://ip:6380/api_jsonrpc.php
之后就可以开始该数据源的dashboard打造了。详细dashboard要点过多,将在新的篇幅中介绍。
查/var/log/zabbix/zabbix_agentd.log日志发现:
failed to accept an incoming connection: connection from "172.19.0.4" rejected, allowed hosts: "192.168.1.16"
zabbixserver所在的docker网络172.19.0.4和本机的192.168.1.16不一致。
这是由于docker-compose创建的容器内服务访问宿主机,优先走的是docker为该容器创建的网卡,网卡ip不写在agent的配置文件里则该网卡发出的请求会被agent拒绝。
解决方案:客户端配置文件中Sever和ServerActive中加上“172.19.0.4”(用逗号作分隔)并重启客户端(实际上后来发现)
解决方案:关闭SELINUX
setenforce 0
vim /etc/selinux/config
#将 SELINUX=enforcing改为disabled
SELINUX=disabled
解决方案:是系统无法联网导致的dns服务器不可达。开放网络,检查网络配置