centos7.6安装zabbix4.0
国内源配置
- 更改国内源
- 备份yum源
mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
- 安装zabbix yum源
rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
- 阿里云yum源和epel源
curl http://mirrors.aliyun.com/repo/Centos-7.repo -o yum.repos.d/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
- 同步时间
yum install -y ntpdate && ntpdate ntp1.aliyun.com
echo '* * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >> /var/spool/cron/root
- 更换zabbix国内源
[zabbix] name=Zabbix Official Repository - $basearch baseurl=http://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/$basearch/ enabled=1 gpgcheck=1 gpgkey=http://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX-A14FE591 [zabbix-non-supported] name=Zabbix Official Repository non-supported - $basearch baseurl=http://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/ enabled=1 gpgkey=http://mirrors.aliyun.com/zabbix/RPM-GPG-KEY-ZABBIX gpgcheck=1
- 添加gpgkey
注意,key已经用了url。 - 清理更新源
yum clean all yum makecache -y
- 备份yum源
安装
yum install zabbix-server-mysql zabbix-web-mysql mariadb-server -y
配置mysql
- 自启
systemctl enable mariadb && systemctl start mariadb
- 数据库初始化
mysql_secure_installation;
create database zabbix character set utf8 collate utf8_bin;
grant all on zabbix.* to zabbix@'localhost' identified by '123456';
flush privileges;
quit;
#导入表结构
zcat /usr/share/doc/zabbix-server-mysql-4.0.10/create.sql.gz | mysql -uzabbix -p123456 zabbix
配置httpd
vim /etc/httpd/conf/httpd.conf
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# 修改参数
ServerName 127.0.0.1:80
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#修改时区
vim /etc/php.ini;
date.timezone = Asia/Shanghai;
vim /etc/httpd/conf.d/zabbix.conf;
php_value date.timezone Asia/Shanghai;
#自启
systemctl enable httpd && systemctl start httpd;
访问zabbix网页,并初始化配置。
http://[IP]/zabbix/setup.php
账密:Admin/zabbix
数据库分离 修改此配置文件 /etc/zabbix/web/zabbix.conf.php
zabbix-server配置
vim /etc/zabbix/zabbix_server.conf;
#配置数据库相关信息
DBHost=localhost;
DBName=zabbix;
DBUser=zabbix;
DBPassword=123456;
>>>>>>>>>>>>>>>>>>>>>>>
systemctl enable zabbix-server;
systemctl start zabbix-server;
zabbix-agent安装配置
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.9-3.el7.x86_64.rpm;
vim /etc/zabbix/zabbix_agentd.conf;
#服务端的地址
Server=127.0.0.1
#
systemctl enable zabbix-agent;
systemctl start zabbix-agent;
完成查看
配置监控项及告警脚本。
- 逻辑解释:
动作:机制触发后实行的动作,包括触发,恢复和更新。
监控项:需要被监控的项目,条目。
触发器:监控项的判断机制。
报警媒介类型:监控指标到达预期峰值后的触发媒介,可以是:脚本,短信接口,邮箱接口,手机接口等通知服务。 - 告警媒介
例如计划做一个微信或钉钉的通知。- zabbix存放媒体脚本的路径:
/usr/lib/zabbix/alertscripts
rpm -qa zabbix* >>> zabbix-release-4.0-1.el7.noarch zabbix-web-4.0.19-1.el7.noarch zabbix-server-mysql-4.0.19-1.el7.x86_64 zabbix-agent-4.0.9-3.el7.x86_64 zabbix-web-mysql-4.0.19-1.el7.noarch zabbix-get-4.0.19-1.el7.x86_64 >>> rpm -ql zabbix-server-mysql-4.0.19-1.el7.x86_64 | grep alertscripts
- zabbix执行脚本的逻辑。
shell脚本:bash /usr/lib/zabbix/alertscripts/post/dt_sender.sh {ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
python脚本:python /usr/lib/zabbix/alertscripts/post/dt_sender.py {ALERT.SENDTO} {ALERT.SUBJECT} {ALERT.MESSAGE}
通过声明来辨别:
zabbix脚本可用变量:#!/bin/bash 以bash来执行 $0 参数一 $1 参数二 $2 参数三 $3 参数四 #! /usr/bin/python # -*- coding: utf-8 -*- 以Python来执行 获取参数import sys;sys.argv
{ALERT.SENDTO}
:发给谁
{ALERT.SUBJECT}
:告警主题
{ALERT.MESSAGE}
:告警内容 - 动作
- zabbix动作的发生模板可用变量:
告警主机:{HOST.NAME} 告警地址:{HOST.IP} 监控项目:{ITEM.NAME} 监控取值:{ITEM.LASTVALUE} 告警等级:{TRIGGER.SEVERITY} 当前状态:{TRIGGER.STATUS} 告警信息:{TRIGGER.NAME} 告警时间:{EVENT.DATE} {EVENT.TIME} 事件ID:{EVENT.ID}
- 告警信息发送周期自定义:
假如:希望报警触发后未解决,则每隔60秒发一次消息无限循环。
操作步骤持续时间:60s。步骤:1-0表示,从第一步开始无限循环直到解决告警触发恢复告警。
步骤:1-3表示,每隔60s发3次。
- zabbix存放媒体脚本的路径:
- 触发器
- zabbix表达式:
- 监控项
- 应用集
一批监控项的集合。可立即为保存多个监控项的文件夹。 - 模板
监控项,触发器和应用集特定组合的。
自定义监控指标
- 多个自定义Key值。
- 将Key定义在独立的文件中,然后在主配置文件中进行新引用。
vim /usr/local/zabbix_agent/etc/zabbix_agentd.conf;
### Option: Include
# You may include individual files or all files in a directory in the configuration file.
# Installing Zabbix will create include directory in /usr/local/etc, unless modified during the compile time.
#
# Mandatory: no
# Default:
# Include=
# Include=/usr/local/etc/zabbix_agentd.userparams.conf
Include=/usr/local/zabbix_agent/etc/zabbix_agentd.conf.d/
- 在/usr/local/zabbix_agent/etc/zabbix_agentd.conf.d目录写编写自定义Key文件
vim custom_parameters.conf;
##############################
UserParameter=Physical_cpu_0_temperature,sensors|grep "id 0"|awk '{print $4}'|awk -F "°" '{print $1}'|awk -F "+" '{print $2}'
UserParameter=cpu_0_core0,sensors|grep -A 6 "id 0" | grep "Core 0" | awk '{print $3}'|awk -F "°" '{print $1}'|awk -F "+" '{print $2}'
UserParameter=cpu_0_core1,sensors|grep -A 6 "id 0" | grep "Core 1" | awk '{print $3}'|awk -F "°" '{print $1}'|awk -F "+" '{print $2}'
UserParameter=cpu_0_core2,sensors|grep -A 6 "id 0" | grep "Core 2" | awk '{print $3}'|awk -F "°" '{print $1}'|awk -F "+" '{print $2}'
UserParameter=cpu_0_core3,sensors|grep -A 6 "id 0" | grep "Core 3" | awk '{print $3}'|awk -F "°" '{print $1}'|awk -F "+" '{print $2}'
UserParameter=cpu_0_core4,sensors|grep -A 6 "id 0" | grep "Core 4" | awk '{print $3}'|awk -F "°" '{print $1}'|awk -F "+" '{print $2}'
UserParameter=cpu_0_core5,sensors|grep -A 6 "id 0" | grep "Core 5" | awk '{print $3}'|awk -F "°" '{print $1}'|awk -F "+" '{print $2}'
- 测试键值
zabbix_get -s xx.xx.xx.xx -p 10050 -k Physical_cpu_0_temperature
删除指定监控项历史数据
数据表
- history表
该表保存浮点型
监控项数值 - history_uint表
该表保存无符号整型
数据 - history_str表
该表保存字符型
数据
删除语句
#删除指定监控项指定时间段内的数据
delete from history_uint where itemid = "" and clock < "" LIMIT 10000;
Docker部署
Dockerfile
- zabbix-server
FROM zabbix/zabbix-server-mysql:latest
MAINTAINER duanyiwen dyiwen@aliyun.com
ENV LANG en_US.utf8
USER root
RUN sed -i 's/dl-cdn.alpinelinux.org/mirror.tuna.tsinghua.edu.cn/g' /etc/apk/repositories && \
apk add --no-cache tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN apk del tzdata
USER zabbix
- zabbix-nginx-web
FROM zabbix/zabbix-web-nginx-mysql:latest
MAINTAINER duanyiwen dyiwen@aliyun.com
ENV LANG en_US.utf8
USER root
RUN sed -i 's/dl-cdn.alpinelinux.org/mirror.tuna.tsinghua.edu.cn/g' /etc/apk/repositories && \
apk add --no-cache tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN apk del tzdata
USER zabbix
docker-compose
version: "2.3" #定义类型为 3
services:
db: #定义mysql服务
restart: unless-stopped
container_name: mysql5.7
image: registry.cn-hangzhou.aliyuncs.com/dyiwen/mysql:5.7.25 # 声明镜像
ports:
- "3306:3306" #声明端口
networks:
- dbnet
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123456 #定义mysql密码
MYSQL_DATABASE: zabbix # 创建数据库
MYSQL_USER: zabbix #定义用户
MYSQL_PASSWORD: passwd #用户密码
volumes:
- ./data:/var/lib/mysql
- ./etc/my.cnf:/etc/mysql/conf.d/mysqlutf8.cnf
command:
# - "--character-set-server=utf8mb4"
- "--character-set-server=utf8"
# - "--collation-server=utf8_unicode_ci"
- "--collation-server=utf8_bin"
logging:
driver: json-file
options:
max-size: "20m"
max-file: "1"
zabbix-server:
restart: unless-stopped
container_name: zabbix-server
image: registry.cn-hangzhou.aliyuncs.com/dyiwen/zabbix:4.4.2-server-mysql
ports:
- "10051:10051" #声明端口
networks:
- dbnet
# external_links:
# - mysql5.7:db
environment:
TZ: Asia/Shanghai
DB_SERVER_HOST: db #连接mysql
DB_SERVER_PORT: 3306 # 连接端口
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: passwd
depends_on:
- db
logging:
driver: json-file
options:
max-size: "20m"
max-file: "1"
zabbix-web:
restart: unless-stopped
container_name: zabbix-web
image: registry.cn-hangzhou.aliyuncs.com/dyiwen/zabbix:4.4.2-web-nginx-mysql #镜像
ports:
- "80:8080" #声明端口
networks:
- dbnet
# external_links:
# - mysql5.7:db
depends_on:
- db
environment:
TZ: Asia/Shanghai
DB_SERVER_HOST: db #连接mysql
DB_SERVER_PORT: 3306 # 连接端口
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: passwd
TZ: Asia/Shanghai #声明时区为亚洲/上海
ZBX_SERVER_HOST: zabbix-server
logging:
driver: json-file
options:
max-size: "20m"
max-file: "1"
networks:
dbnet:
# external:
name: mysql_network
配置
- mysql中文配置文件
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server=utf8_general_ci
character-set-server=utf8
init-connect='SET NAMES utf8'
- agent配置
如zabbix-server跑在容器内,agent在宿主机上,其需要配置zabbix-server容器的内网地址:
vim /etc/zabbix/zabbix_agentd.conf
Server=127.0.0.1,192.168.0.4
ServerActive=127.0.0.1,192.168.0.4
Hostname=Zabbix server
# ListenPort=10050
#-------------------------------------
docker inspect zabbix-server | grep IPAddress
####################################################
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAddress": "192.168.0.4",
####################################################