前言
需提前安装好 mysql、nginx(httpd)、php 服务(php 建议 yum 直接安装,编译安装容易缺失 jpeg,freetype 支持)
下载链接
Zabbix Cloud Images and Appliances
环境
1,卸载系统自带 openjdk
#rpm -qa | grep java
2,配置 java 环境(java gateway)
#tar xzvf jdk-8u231-linux-x64.tar.gz
#mv jdk1.8.0_231 /usr/local/java
#vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
#source /etc/profile.d/java.sh
依赖
#yum install libevent-devel -y --downloadonly --downloaddir=/home/hdlh/packages/zabbix-rpm/
#rpm -ivh zabbix-rpm/*.rpm --force --nodeps
解压
#tar xzvf zabbix-4.4.7.tar.gz -C /tools/
编译安装
#./configure --prefix=/tools/zabbix-4 --enable-server --enable-agent --enable-java --with-libcurl --with-mysql=/tools/mysql-8.0.18/bin/mysql_config
--with-mysql=/tools/mysql-8.0.18/bin/mysql_config(#如果是yum安装的mysql只需要 --with-mysql,不用补全路径)
#make && make install
配置文件
server
/tools/zabbix-4/etc/zabbix_server.conf
#egrep -v '^#' /tools/zabbix-4/etc/zabbix_server.conf
ListenPort=10051
LogFile=/tools/zabbix-4/logs/zabbix_server.log
LogFileSize=1
DebugLevel=3
PidFile=/tools/zabbix-4/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/tools/mysql-8.0.18/tmp/mysql.sock
DBPort=3306
JavaGateway=localhost
JavaGatewayPort=10052
StartJavaPollers=5
Timeout=30
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
agent
/tools/zabbix-4/etc/zabbix_agentd.conf
#egrep -v '^#' /tools/zabbix-4/etc/zabbix_agentd.conf
PidFile=/tools/zabbix-4/zabbix_agentd.pid
LogFile=/tools/zabbix-4/logs/zabbix_agentd.log
LogFileSize=500
Server=127.0.0.1
ListenPort=10050
StartAgents=1
ServerActive=127.0.0.1
Hostname=Zabbix server ###agent.Hostname必须与 web 界面主机名称一致
BufferSend = 10
BufferSize = 150
MaxLinesPerSecond = 100
Timeout=30
Include=/tools/zabbix-4/etc/zabbix_agentd.conf.d/*.conf
UnsafeUserParameters=1
用户权限
#mkdir /tools/zabbix-4/logs
#useradd zabbix -s /sbin/nologin
#chown -R zabbix.zabbix /tools/zabbix-4
数据导入
1,创建数据库以及用户
mysql> create database zabbix character set utf8 collate utf8_bin;
(important,设置 zabbix 数据库类型,)
mysql> create user 'zabbix'@'localhost' identified with mysql_native_password by 'zabbix';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
mysql> flush privileges;
2,数据导入
数据文件在 源码包(zabbix-4.4.7/) database/mysql/ 目录下
/tools/zabbix-4.4.7/database/mysql
mysql>use zabbix;
mysql>source schema.sql;
mysql>source images.sql;
mysql>source data.sql;
zabbix-web
#mkdir /tools/nginx/html/zabbix
#/bin/cp -rf /tools/zabbix-4.4.7/frontends/php/* /tools/nginx/html/zabbix/
#chown -R nginx.nginx /tools/{nginx,php7}
#chmod -R 777 /tools/nginx/html/zabbix
nginx+php配置修改
php.ini
#cp /tools/php7/etc/php-fpm.d/www.conf.default /tools/php7/etc/php-fpm.d/www.conf
#cp /tools/php7/etc/php-fpm.conf.default /tools/php7/etc/php-fpm.conf
#cp -a /tools/php-7.4.5/php.ini-production /tools/php7/etc/php.ini
#vim /tools/php7/etc/php.ini
max_execution_time = 300
memory_limit = 128M
post_max_size = 16M
upload_max_filesize = 2M
max_input_time = 300
date.timezone = Asia/Shanghai
mysqli.default_socket = /tools/mysql-8.0.18/tmp/mysql.sock
# index.php 测试页面
<?php
phpinfo();
?>
nginx.conf
#------ zabbix 配置------
location / {
root html;
index index.html index.htm index.php;
}
### html/zabbix 根据实际目录配置(一定要是具体路径)
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
#------ zabbix 配置------
配置zabbix环境变量
#vim /etc/profile.d/zabbix.sh
export ZABBIX_HOME=/tools/zabbix-4
export PATH=$ZABBIX_HOME/sbin:$ZABBIX_HOME/bin:$ZABBIX_HOME/lib:$PATH
#chmod +x /etc/profile.d/zabbix.sh
#source /etc/profile.d/zabbix.sh
启动
启动
#./zabbix_server
批量杀掉 zabbix 进程
#ps -ef|grep zabbix|grep -v grep|awk '{print $2}'|xargs kill -9
启动报错
1,报错 :./zabbix_server: error while loading shared libraries: libmysqlclient.so.21: cannot open shared object file: No such file or directory
#ln -s /tools/mysql-8.0.18/lib/libmysqlclient.so.21 /usr/lib64/
2,报错 :./zabbix_server: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory
#ln -s /tools/mysql-8.0.18/lib/libssl.so.1.1 /usr/lib64/
3,报错 :./zabbix_server: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory
#ln -s /tools/mysql-8.0.18/lib/libcrypto.so.1.1 /usr/lib64/
自定义配置
图形中文乱码问题
1,从Windows(控制面板-字体)中复制下黑体常规字体
2,zabbix-server 查找字体路径位置
#find / -name "fonts"
/tools/nginx/html/zabbix/assets/fonts
3,字符集(替换)
#ll /tools/nginx/html/zabbix/assets/fonts/DejaVuSans.ttf
#mv /tools/nginx/html/zabbix/assets/fonts/DejaVuSans.ttf /tools/nginx/html/zabbix/assets/fonts/DejaVuSans.ttf_bak
#mv simhei.ttf /tools/nginx/html/zabbix/assets/fonts/
4,修改系统配置,支持中文
/tools/nginx/html/zabbix/include/defines.inc.php
#vim /tools/nginx/html/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME', 'simhei'); // font file name
simhei ------ 字体名(不用后缀ttf)
完整数值显示(不转换 K)
通过自定义数值单位
/tools/nginx/html/zabbix/include/func.inc.php
#vim /tools/nginx/html/zabbix/include/func.inc.php
$blackList = ['%', 'ms', 'rpm', 'RPM', '位'];
位 ------ 新增一个单位
zabbix_agent
linux
环境准备
1,卸载系统自带 openjdk
#rpm -qa | grep java
#rpm -e --nodeps xxxxxx.openjdk.rpm
2,配置 java 环境(java gateway)
#tar xzvf jdk-8u231-linux-x64.tar.gz
#mv jdk1.8.0_231 /usr/local/java
#vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
#source /etc/profile.d/java.sh
3,安装相关依赖
#yum install libevent-devel -y --downloadonly --downloaddir=/home/hdlh/packages/zabbix-rpm/
#rpm -ivh zabbix-rpm/*.rpm --force --nodeps
解压
#tar xzvf zabbix-4.4.7.tar.gz -C /tools/
编译安装
#./configure --prefix=/tools/zabbix-4 --enable-agent --enable-java --with-libcurl
#make && make install
配置文件
/tools/zabbix-4/etc/zabbix_agentd.conf
#egrep -v '^#' /tools/zabbix-4/etc/zabbix_agentd.conf
PidFile=/tools/zabbix-4/zabbix_agentd.pid
LogFile=/tools/zabbix-4/logs/zabbix_agentd.log
LogFileSize=500
Server=192.168.2.187
ListenPort=10050
StartAgents=1
ServerActive=192.168.2.187
Hostname=cssp ###agent.Hostname必须与 web 界面主机名称一致
#HostnameItem=system.hostname ###自动获取本机hostname
#HostMetadata=Linux ###适用于自动注册,区分windows\Linux
BufferSend = 10
BufferSize = 150
MaxLinesPerSecond = 100
Timeout=30
Include=/tools/zabbix-4/etc/zabbix_agentd.conf.d/*.conf
UnsafeUserParameters=1
目录,用户以及权限
#mkdir /tools/zabbix-4/logs
#useradd zabbix -s /sbin/nologin
#chown -R zabbix.zabbix /tools/zabbix-4
#visudo
zabbix ALL=(ALL) NOPASSWD:ALL
配置 zabbix 环境变量
#vim /etc/profile.d/zabbix.sh
export ZABBIX_HOME=/tools/zabbix-4
export PATH=$ZABBIX_HOME/sbin:$ZABBIX_HOME/bin:$ZABBIX_HOME/lib:$PATH
#chmod +x /etc/profile.d/zabbix.sh
#source /etc/profile.d/zabbix.sh
启动
/tools/zabbix-4/sbin/zabbix_agentd
windows
安装包
zabbix_agent-4.4.7-windows-amd64.zip
配置文件
LogFile=c:\zabbix\logs\zabbix_agentd.log
LogFileSize=500
Server=192.168.2.187
ListenPort=10050
StartAgents=1
ServerActive=192.168.2.187
Hostname=windows--psm ###agent.Hostname必须与 web 界面主机名称一致
#HostnameItem=system.hostname ###自动获取本机hostname
#HostMetadata=Linux ###适用于自动注册,区分windows\Linux
BufferSend = 10
BufferSize = 150
MaxLinesPerSecond = 100
Timeout=30
Include=c:\zabbix\zabbix_agentd.conf.d\*.conf
UnsafeUserParameters=1
安装
cmd(管理员)
zabbix_agentd.exe -i -c zabbix_agentd.conf ------ 安装 zabbix_agentd
zabbix_agentd.exe -s -c zabbix_agentd.conf ------ 启动 zabbix_agentd
附
1,shell
#!/bin/bash
#date:2020-05-13
#user:Xu
#the shell id for zabbix-agent.services-discovery
COMMAND=$1 #第一个传参实现函数的调用
SERVICE=$2 #第二个传参对应相关服务关键词变量
case $COMMAND in
(pid)
#PID=$(sudo netstat -tanp|grep ${SERVICE}|grep LISTEN|awk '{print $NF}'|awk -F'/' '{print $1}')
PID=$(sudo ps -ef|grep ${SERVICE}|grep -v grep|grep -v services-discovery|awk '{print $2}')
echo ${PID}
;;
(port)
#PORT=$(sudo netstat -tanp|grep ${SERVICE}|grep LISTEN|awk '{print $4}'|awk -F':' '{print $NF}')
PID=$(sudo ps -ef|grep ${SERVICE}|grep -v grep|grep -v services-discovery|awk '{print $2}')
PORT=$(sudo netstat -tanp|grep ${PID}|grep LISTEN|awk '{print $4}'|awk -F":" '{print $NF}')
echo ${PORT}
;;
(tcp_connect)
PID=$(sudo ps -ef|grep ${SERVICE}|grep -v grep|grep -v services-discovery|awk '{print $2}')
PORT=$(sudo netstat -tanp|grep ${PID}|grep LISTEN|awk '{print $4}'|awk -F":" '{print $NF}')
TCP_Connect=$(sudo netstat -tanp|grep ${PORT}|grep ESTABLISHED|wc -l)
echo ${TCP_Connect}
;;
(*)
echo "Error command"
;;
esac
2, 微信告警
#!/usr/bin/python2.7
#_*_coding:utf-8 _*_
#date:2018-12-29
import requests,sys,json
import urllib3
#urllib3.disable_warnings()
reload(sys)
sys.setdefaultencoding('utf-8')
def GetToken(Corpid,Secret): # 获取企业微信tokent
Url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"
Data = {
"corpid":Corpid,
"corpsecret":Secret
}
r = requests.get(url=Url,params=Data,verify=False)
Token = r.json()['access_token']
return Token
def SendMessage(Token,User,Agentid,Subject,Content): # 发送信息
Url = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=%s" % Token #消息发送接口
Data = {
"touser": User, # 企业微信用户个人帐号ID
#"toparty": Partyid # 企业微信部门ID,群发使用
"msgtype": "text", # 发送信息文本类型
"agentid": Agentid, # 企业微信应用ID
"text": { # 定义信息输出格式
"content": Subject + '\n' + Content
},
"safe": "0"
}
r = requests.post(url=Url,data=json.dumps(Data),verify=False)
return r.text
if __name__ == '__main__':
User = sys.argv[1] # 脚本接收的第一个参数=用户个人ID
Subject = sys.argv[2] # 脚本接收的第二个参数=信息主题
ls2 = sys.argv[3:] # 脚本接收的第三个参数=信息内容
Content = "'\n'".join(ls2)
Corpid = "wwaf578248356e122e" # 企业微信企业ID
Secret = "iv4gycJsj2B5UB4SxZ4TE7zHg-AqrmeqLF1JED-JMoc" # 企业微信应用认证密钥
Agentid = "1000002" # 企业微信应用ID
#Partyid = "2" # 企业微信部门ID
Token = GetToken(Corpid, Secret)
Status = SendMessage(Token,User,Agentid,Subject,Content)
print Status