文章目录
Zabbix介绍
Zabbix 是一个企业级分布式开源监控解决方案。
Zabbix 软件能够监控众多网络参数和服务器的健康度、完整性。Zabbix 使用灵活的告警机制,允许用户为几乎任何事件配置基于邮件的告警。这样用户可以快速响应服务器问题。Zabbix 基于存储的数据提供出色的报表和数据可视化功能。
安装前置
安装相关依赖程序
yum install -y php-mysql dejavu-sans-fonts php-bcmath php-gd php-ldap php-xml php php-mbstring libmysqlclient.so.18
卸载mariadb
rpm -e --nodeps mariadb-libs
rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum-config-manager --enable rhel-7-server-optional-rpms
http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-server-mysql-4.0.1-1.el7.x86_64.rpm
yum install zabbix-server-mysql -y
http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-proxy-mysql-4.0.0-2.el7.x86_64.rpm
yum install zabbix-proxy-mysql -y
rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-web-4.0.1-1.el7.noarch.rpm
yum install zabbix-web-mysql -y
注:以上3个安装包安装过程中可能会中断,需要重复多次yum install
安装zabbix server
rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.9-1.el7.x86_64.rpm
创建数据库
use mysql;
create database zabbix character set utf8;
grant all privileges on zabbix.* to zabbix@'192.168.%.%' identified by '123456';
flush privileges;
--初始化Zabbix server,导入zabbix库
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123456 -h192.168.1.156 -P3307 zabbix
--创建zabbix_proxy库
create database zabbix_proxy character set utf8;
grant all privileges on zabbix_proxy.* to zabbix@'192.168.%.%';
flush privileges;
--初始化Zabbix proxy,导入zabbix_proxy库(Zabbix server和Zabbix proxy如果安装在相同的主机,必须创建不同名字的数据库)
zcat /usr/share/doc/zabbix-proxy-mysql*/schema.sql.gz | mysql -uzabbix -p123456 -h192.168.1.156 -P3307 zabbix_proxy
编辑 zabbix_server.conf 或 zabbix_proxy.conf 文件以使用已创建的数据库
vi /etc/zabbix/zabbix_server.conf
DBHost=192.168.1.156
DBPort=3307
DBName=zabbix
DBUser=zabbix
DBPassword=123456
vi /etc/zabbix/zabbix_proxy.conf
DBHost=192.168.1.156
DBPort=3307
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=123456
vi /etc/zabbix/web/zabbix.conf.php
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = '192.168.1.156';
$DB['PORT'] = '3307';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = '123456';
vim /etc/sysctl.conf 添加一行
kernel.sem = 500 64000 64 256
service zabbix-server start
--设置自启动
systemctl enable zabbix-server
vi /etc/httpd/conf.d/zabbix.conf
取消注释# php_value date.timezone Europe/Riga 改为
php_value date.timezone Asia/Shanghai
chown -R apache:apache /etc/zabbix/web
chown -R apache:apache /var/lib/php
查看相关日志
less /var/log/zabbix/zabbix_server.log
less /var/log/zabbix/zabbix_proxy.log
登陆和配置用户
http://192.168.1.155/zabbix
用户名、密码
Admin / zabbix
安装zabbix agent
修改配置文件
vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.1.155 //zabbix server的IP
ServerActive=192.168.1.155 //zabbix server的IP
Hostname=192.168.1.156 //本机IP
启动agent
service zabbix-agent start
钉钉推送告警配置
Python代码
#!/usr/bin/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=284111d3e6ebf679d5c01435bd2273281d17eb9eec622647de3165164347fa54"
def msg(text):
json_text= {
"msgtype": "text",
"at": {
"atMobiles": [
"132xxxxxxxx"
],
"isAtAll": False
},
"text": {
"content": text
}
}
print requests.post(api_url,json.dumps(json_text),headers=headers).content
if __name__ == '__main__':
text = sys.argv[1]
msg(text)
其他异常处理
相关报错
报错1
less /var/log/zabbix/zabbix_proxy.log 发现有如下报错
zabbix_proxy [54195]: cannot open log:cannot create semaphore set: [28] No space left on device
解决办法
killall -TERM zabbix_server
killall -TERM zabbix_agentd
报错2
访问http://192.168.1.155/zabbix/
error 500
检查/etc/zabbix/web权限
chown -R apache:apache /etc/zabbix/web
其他常见错误解决思路
如果发现监控没有数据,请排查如下问题
- zabbix 客户端是否重启
- 脚本是否有执行权限
- 数据库是否有权限
- 环境变量是否有问题
- 请看 zabbix item 列,鼠标移至红色叉上,有错误提示。
配置mysql监控
vi /etc/zabbix/zabbix_agentd.d/.my.cnf
#############################
#zabbix agent
[mysql]
host=localhost
user=zabbix
password=123456
socket=/tmp/mysql.sock
[mysqladmin]
host=localhost
user=zabbix
password=123456
socket=/tmp/mysql.sock
#############################
vi /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf 更改2处
HOME=/etc/zabbix/zabbix_agentd.d
GRANT USAGE,PROCESS,SUPER,REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'zabbixagent'@'localhost' IDENTIFIED BY 'zabbixagent';
zabbix server端测试是否有数据
zabbix_get -s 192.168.1.156 -k mysql.status[Questions]
测试mysql是否正常 0-mysql is down,1-mysql is up
zabbix_get -s 192.168.1.157 -k mysql.ping
修改中文字体
--涉及的文件
/usr/share/zabbix/include/defines.inc.php
/usr/share/zabbix/assets/fonts
/etc/alternatives/zabbix-web-font
cd /usr/share/zabbix/assets/fonts
ln -snf SIMHEI.TTF graphfont.ttf