1、zabbix的安装
1.1zabbix服务端安装
1.1.1获取yum源
阿里云:
Wget https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
安装:rpm –ivh zabbix-release-4.4-1.el7.noarch.rpm
1.1.2启动可选rpm的软件仓库
yum -y install yum-utils #安装常用yum工具包
yum-config-manager --enable rhel-7-server-optional-rpms
1.1.3repo文件修改
修改为Aliyun--防止出现因为在中国无法yum成功问题,海外应该不需要
vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/$basearch/
1.1.4 server安装
yum install zabbix-server-mysql –y # -y(当安装过程提示选择全部为"yes")
1.1.5 web前端安装
yum install zabbix-web-mysql
1.1.6 获取mysql8.0 yum源 (已安装mysql8.0可以跳过)
rpm -Uvh https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
安装mysql8.0
yum install mysql-community-server –y
1.1.7 开启mysql服务
systemctl start mysqld
mysql开机自启动
systemctl enable mysqld
1.1.8 获取/改变mysql的默认密码
grep 'temporary password' /var/log/mysqld.log/
ALTER USER USER() IDENTIFIED BY 'Hx.123456';
1.1.9 登陆并创建zabbix库与用户
shell> mysql -uroot –p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified with mysql_native_password by 'Hx.123456';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
mysql> quit;
1.1.10 初始化zabbix数据库
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
1.1.11 修改zabbix的数据库配置
# vi /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=<password> #1.1.9里创建的zabbix的用户密码
1.1.12 PHP的time_Zone修改
# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
zabbix-server服务启动
service zabbix-server start // systemctl start zabbix-server.service
service httpd start // systemctl start httpd.service
设置开机自启动
systemctl enable zabbix-server httpd
1.2 Zabbix的web前端配置
1.2.1 浏览器输入访问地址
浏览器访问 http://server_ip/zabbix//例如http://172.16.45.173/zabbix
1.2.2 检查基本配置
1.2.3 输入服务端定义的数据库信息
1.2.4 输入服务器名称
1.2.5 输入登录用户名/密码
1.2.6 语言修改界面
1.2.7 主界面
1.2.8 界面乱码问题解决方案
于控制面板-字体中挑选一款字体(例如楷体)
Zabbix默认字体文件为graphfont.ttf,将选中字体文件名修改为graphfont.ttf
于zabbix安装目录下fonts目录下对原有字体备份,再将Windows里选择字体上传替换即可
乱码解除
1.3 zabbix客户端安装
1.3.1 windows版下载地址
https://assets.zabbix.com/downloads/4.4.1/zabbix_agent-4.4.1-windows-amd64-openssl.msi
1.3.2 输入服务端配置信息
Host Name: 填写客户端名称,与web端配置时一直即可
Zabbix server IP/DNS :填写服务端的IP地址
Server or proxy for active checks: 填写服务端的IP地址
1.3.3 linux版下载及安装
安装官方源,然后安装agent
#rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
# yum install -y zabbix-agent
1.3.4 配置agent(服务端安装的agent可默认配置)
vim /etc/zabbix/zabbix_agentd.conf
172.16.45.222是zabbix-server端的ip,Hostname是zabbix-agent的hostname
Server=172.16.45.222
ServerActive=172.16.45.222
Hostname= #主机名确保与web端主机配置保持一致
开机启动:#systemctl enable zabbix-agent
添加对应主机
2、zabbix基本使用
基本配置流程
2.1主站监控添加
填写主机名、选择群组、ip
主机名称:即客户端配置主机名
群组:即主机所在群组,群组下可选择或新建监控模板
2.2模版
应用集 监控项 触发器 图形 聚合图形 自动发现 Web监测五个部分
2.3 用户群组创建
2.4用户创建及用户报警媒介添加(如email)
2.5服务器报警媒介类型(发件人/发件服务器)
2.6动作创建
2.7业务数据监控
场景:连接业务系统使用的数据库(mysql为例),进行业务数据的监控,比如售电交易笔数、金额等。
1. agent配置修改
修改zabbix_agentd.conf配置文件
UnsafeUserParameters=1 #1为开启自定义key
Include=/etc/zabbix/zabbix_agentd.d/
2. 获取数据脚本
a) zabbix_agentd.conf配置文件同级目录新增scripts文件夹
b) 创建sh脚本,设置数据库连接信息以及sql语句,以及mysql命令执行sql,支持查询多个字段
3. 自定义参数
a) zabbix_agentd.d目录下创建自定义参数配置文件,文件后缀为.conf;等号后面第一个参数为自定义参数的键值key,第二个参数为参数数据来源
**.sh为第2步获取数据脚本,| awk ‘NR==2{print $1}’ 表示获取查询结果指定位置的数据,NR==2表示不获取查询结果而是只获取查询结果第一行数据,print $1表示获取第一列的数据**
4. Web界面进行监控
a) 配置-主机-监控项,创建监控项,键值为第3步自定义参数文件.conf中的键值key,类型选择浮点
**选择数字型会报错type string is not suitable for value type "Numeric(unsigned)" **
b) 配置-主机-图形,创建图形,图形类型正常表示曲线图,监控项选择上一步所创建的,一个图形支持配置多个监控项
c) 图形检测
3、zabbix自定义监控项
3.1 示例1:tomcat端口监控
打开主机,新建监控项:
zabbix监控端口使用如下key:
key:net.tcp.listen[port]
触发器配置:(定义监控项实时数值的严重性)
例如设定value=1 的严重性为信息
设定value=0时的严重性为一般警告
随后,可创建图形显示
首页选择图形可实时显示端口状态
常见动作,可实现状态异常告警(邮件、短信等)
3.2 示例2:服务器cpu、内存等性能监控
方式一:直接利用Zabbix的自带模板,里面包含cpu、内存的各种数据项监控:
选择相应模板,
可按需求设定相应触发器及动作
方式二:手动创建监控项
按需求设定触发器及动作
3.3 示例3:钉钉机器人告警配置
3.3.1 新建机器人,保存webhook
3.3.2 创建脚本
于zabbix的告警目录路径下创建告警文件(/usr/lib/zabbix/alertscripts):
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://oapi.dingtalk.com/robot/send?access_token=3de8f5462b41253f8935d37f0cb07adb7309ffa836847993d264e8027670d958"
def msg(text):
json_text = {
"msgtype": "text",
"text": {
"content": text
},
"at": {
"atMobiles": [
"156xxxx8827",
],
"isAtAll": False
}
}
print(requests.post(api_url, json.dumps(json_text), headers=headers).content)
if __name__ == '__main__':
text = sys.argv[1]
msg(text)
3.3.3 创建新的报警媒介
3.3.4 为用户指定报警媒介
3.3.5 告警动作配置
告警动作配置时,选择以钉钉方式发送消息