分类目录归档:Zabbix

Zabbix Server 5 一键安装脚本

Zabbix Server Web依赖环境基于ILNMP而成,具备ILNMP一键安装脚本的所有特性。若需要了解MySQL/MariaDB/Nginx/PHP安装配置信息,请参阅《ILNMP》。

脚本属性

  • 长期维护,支持定制化;
  • 支持 Zabbix Server 5 + 系列版本;
  • 交互式进行,支持依赖环境的多版本;
  • 支持 CentOS 7 ~ 8 与 Redhat 7 ~ 8 x86_64 bit 系统;
  • 默认安装(Nginx 1.19.1 PHP 7.4.8/MariaDB 10.5.4/Zabbix 5.0.1/phpMyAdmin 5)可根据需要修改脚本中的版本号(必须是官方已知版本)后再安装。

如何安装

curl -O https://renwole.com/sh/install_zabbix.sh
bash install_zabbix.sh

说明:脚本执行安装成功后会生成对应的root/Zabbix数据库及账号/密码信息打印在当前屏幕。安装完成后,请参阅以下信息管理Zabbix监控系统:

  • Zabbix UI入口:http://IP/ui
  • Zabbix管理平台账号密码:Admin/zabbix
  • Zabbix数据库/账号/密码:zabbix/zabbix/zabbix

脚本支持模块

模块名描述
enable-server启用Zabbix Server
enable-agent启用Zabbix agent
enable-proxy启用Zabbix proxy可代理采集数据,从而分担单个 Zabbix server 的负载
enable-ipv6启用对IPV6协议的支持
enable-java启用Zabbix Java gateway以支持监控 JMX 应用程序
with-mysql启用MySQL做为后端存储数据库
with-iconv启用转码,例如GBK转UTF-8,防止乱码
with-libcurl启用Web监控、VMware监控以及SMTP(邮件发送)需要的组件
with-libxml2启用VMware监控所需组件
with-ssh2SSH检查是作为无代理程序监视执行的。SSH检查不需要Zabbix Agent
with-openipmi启用IPMI协议监控服务器温度、风扇转速等
with-net-snmp启用SNMP协议监控打印机、路由器、UPS等设备
以上模块在编译安装zabbix中已自动添加开启。

应用安装目录

路径说明
/apps/server所有ILNMP应用安装及数据存储目录
/apps/server/zabbixZabbix Server监控安装目录
/apps/server/zabbix/etcZabbix Server配置文件所在目录

Zabbix: libssl.so.10: error adding symbols: DSO missing from command line

configure前置任务成功

 [root@renwole.com zabbix-5.0.1]# ./configure --prefix=/apps/server/zabbix \
 --sysconfdir=/apps/server/zabbix/etc --enable-server --enable-agent \
 --with-mysql=/apps/server/mysql/bin/mysql_config --with-openssl \
 --with-net-snmp --with-libcurl --with-libxml2 --enable-proxy --enable-ipv6 \
 --enable-java --with-ssh2 --with-iconv --with-openipmi --with-ldap

***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *
***********************************************************

安装Zabbix时失败

make install
...
ssh2  -lOpenIPMI -lOpenIPMIposix -lz -lpthread -levent -lssl -lcrypto -lldap -llber   -lcurl -lm -ldl  -lresolv -lpcre -liconv
/usr/bin/ld: warning: libssl.so.10, needed by /usr/lib64/libnetsnmp.so, may conflict with libssl.so.1.1
/usr/bin/ld: warning: libssl.so.10, needed by /usr/lib64/libnetsnmp.so, may conflict with libssl.so.1.1
/usr/bin/ld: ../../src/libs/zbxcrypto/libzbxcrypto.a(libzbxcrypto_a-tls.o): undefined reference to symbol 'SSL_library_init@@libssl.so.10'
//usr/lib64/libssl.so.10: error adding symbols: DSO missing from command line
collect2: 错误:ld 返回 1
make[3]: *** [zabbix_server] 错误 1
make[3]: 离开目录“/opt/zabbix-5.0.1/src/zabbix_server”
make[2]: *** [install-recursive] 错误 1
make[2]: 离开目录“/opt/zabbix-5.0.1/src/zabbix_server”
make[1]: *** [install-recursive] 错误 1
make[1]: 离开目录“/opt/zabbix-5.0.1/src”
make: *** [install-recursive] 错误 1

分析原因

[root@renwole.com zabbix-5.0.1]# find / -name libssl.so.*
/usr/lib64/libssl.so.1.0.2k
/usr/lib64/libssl.so.10
/apps/server/mysql/lib/private/libssl.so.1.1

MySQL 8 是依赖Openssl 1.1,而CentOS 7 默认安装的是Openssl 1.0,所以需要升级openssl 1.1.1,请参阅《如何升级OpenSSL》,之后再安装Zabbix即可成功。

Zabbix Agent Remotely Install Shell(batch & Single)

批量安装:

#!/bin/sh
Server=10.16.8.8
ServerActive=10.16.8.8:10050
ip_array=("hostnamerenwole1" "hostnamerenwole2")

for ip in ${ip_array[*]}
do
zabbix=$(ssh $ip 'find /etc -name zabbix_agentd.conf')
if [ -f $zabbix ];then
ssh $ip 'rpm -ivh //repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm ; yum -y install zabbix-agent'
else
echo "Already exist, no need to install"
fi
ssh $ip '
sed -i "s#Server=.*#Server='$Server'#" /etc/zabbix/zabbix_agentd.conf
sed -i "s#ServerActive=.*#ServerActive='$ServerActive'#" /etc/zabbix/zabbix_agentd.conf
sed -i "s#Hostname=.*#Hostname='$ip'#" /etc/zabbix/zabbix_agentd.conf
sed -i "s/# UserParameter=/UserParameter=/g" /etc/zabbix/zabbix_agentd.conf
sed -i "s#UserParameter=.*#UserParameter=pro.check,sh /renwole/Apps/check.sh|wc -c#" /etc/zabbix/zabbix_agentd.conf
chmod -R 777 /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent
'
done

交互式安装:

#cat /renwole/bin/Zabbix_Agent_Single.sh
#!/bin/sh
read -p "Please enter the HostName:" HostName
Server=10.16.8.8
ServerActive=10.16.8.8:10050
zabbix=$(ssh $HostName 'find /etc -name zabbix_agentd.conf')
if [ -f $zabbix ];then
ssh $HostName 'rpm -ivh //repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm ; yum -y install zabbix-agent'
else
echo "Already exist, no need to install"
fi
ssh $HostName '
sed -i "s#Server=.*#Server='$Server'#" /etc/zabbix/zabbix_agentd.conf
sed -i "s#ServerActive=.*#ServerActive='$ServerActive'#" /etc/zabbix/zabbix_agentd.conf
sed -i "s#Hostname=.*#Hostname='$HostName'#" /etc/zabbix/zabbix_agentd.conf
sed -i "s/# UserParameter=/UserParameter=/g" /etc/zabbix/zabbix_agentd.conf
sed -i "s#UserParameter=.*#UserParameter=pro.check,sh /renwole/Apps/check.sh|wc -c#" /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent
'

Zabbix 监控 Redis 数据库性能

说明:以下所有操作均在 Zabbix Agent 客户端操作。

部署环境:

OS:CentOS Linux release 7.4.1708 (Core) x64
Zabbix Servers:3.4
Redis Servers:4.0

先决条件:

Linux Centos7 Redis 源码编译安装配置

1.修改主机 Host

文件末端添加以下内容:

$ vim /etc/hosts

10.28.204.65 s102820465

2.安装 Python 依赖包

$ yum -y install python-pip
$ pip install argparse
$ pip install redis

3.下载 Zabbix 官方提供的 Template Redis 模板

将下载到本地的压缩包传入到tmp目录后解压:

//github.com/adubkov/zbx_redis_template

$ cd /tmp
$ tar zxvf zbx_redis_template-master.zip
$ cd zbx_redis_template-master

将以下2个配置文件拷贝到相关目录:

$ cp zbx_redis_stats.py /usr/local/zabbix/bin
$ cp zbx_redis.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/

注意:除上面两个文件外,其他的可以忽略。因为官方Zabbix template 模板提供了两种监控redis的方案,分别是 node.js 、python。本文教程采用后者。

4.配置zbx_redis_stats.py

将以下文件中的参数修改为 Zabbix Server 主机IP及端口:

$ cd /usr/local/zabbix/bin
$ vim zbx_redis_stats.py
...
zabbix_host = '10.28.204.62' # Zabbix Server IP
zabbix_port = 10051 # Zabbix Server Port
...

给该文件可执行权限:

$ chmod +x zbx_redis_stats.py

5.配置zbx_redis.conf

$ cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/

将文件修改为以下内容:

$ vim zbx_redis.conf

UserParameter=redis[*],/usr/local/zabbix/bin/zbx_redis_stats.py -p 6379 -a RenwoleQxl5qpKHrh $1 $2 $3

6.测试zbx_redis_status.py是否可以连接 Redis 数据库

$ cd /usr/local/zabbix/bin
$ ./zbx_redis_stats.py -h 127.0.0.1 -p 6379 -a RenwoleQxl5qpKHrh

usage: zbx_redis_stats.py [-h] [-p REDIS_PORT] [-a REDIS_PASS]
[redis_hostname] [metric] [db]

Zabbix Redis status script

positional arguments:
redis_hostname
metric
db

optional arguments:
-h, --help show this help message and exit
-p REDIS_PORT, --port REDIS_PORT
Redis server port
-a REDIS_PASS, --auth REDIS_PASS
Redis server pass

出现以上内容说明连接正常。

参数说明:

-h Redis bind 地址
-p Redis端口
-a Redis密码

7.测试是否获取到数据

$ ./zbx_redis_stats.py -p 6379 -a RenwoleQxl5qpKHrh S102820465 used_cpu_user_children none
0.71

返回 0.71,此值不固定,只要有数据返回,说明脚本运行正常。

参数说明:

zbx_redis.conf文件中的$1 $2 $3这时就派上用场了。

$1 对应 S102820465 主机Host
$2 对应 used_cpu_user_children
$3 对应 none

最后将 zbx_redis_templates.xml 模板导入到 Zabbix Servers UI 中,然后链接到需要监控的主机即可。

如果在Zabbix UI中无法获取的到数据,可以在 Zabbix Agent 客户端直接运行 zbx_redis_stats.py 脚本,如果有配置不正确的地方,会反馈出来,再根据报错处理即可。

结语:

其实监控redis状态的模板太多了,基本都是大同小异,选择一个适合自己的,比如监控项目非常多的,这样就可以了解redis更多性能指标。

Zabbix 监控 Nginx status 性能

其实zabbix对nginx的服务状态监控,网上有很多相关模板以及设置方法,根据自己的需求修改即可,后期我会写一些比较详细用于生产环境中的一些教程。

部署环境:

OS:CentOS 7.4
WEB: Nginx 1.3
监控:Zabbix 3.4

先决条件:

Centos 7 源码编译安装 Nginx

注意:主要是 –with-http_stub_status_module 模块。

1.修改 nginx.conf

在 server 段 添加以下内容:

$ vim /usr/local/nginx/conf/nginx.conf

location /stub_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}

2.重启Nginx服务并测试访问

$ systemctl restart nginx.service
$ curl //127.0.0.1/stub_status
Active connections: 1
server accepts handled requests
304 304 304
Reading: 0 Writing: 1 Waiting: 0

访问返回数据说明Nginx配置正常.

3.创建 Nginx 监控脚本

将以下代码复制保存为 nginx.sh

$ cd /usr/local/zabbix/bin
$ vim nginx.sh
#!/bin/bash

HOST="127.0.0.1"
PORT="80"
stub_status=stub_status
function check() {
/sbin/pidof nginx | wc -l
}
function active() {
/usr/bin/curl -s "//$HOST:$PORT/${stub_status}/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function accepts() {
/usr/bin/curl -s "//$HOST:$PORT/${stub_status}/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled() {
/usr/bin/curl -s "//$HOST:$PORT/${stub_status}/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests() {
/usr/bin/curl -s "//$HOST:$PORT/${stub_status}/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
function reading() {
/usr/bin/curl -s "//$HOST:$PORT/${stub_status}/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing() {
/usr/bin/curl -s "//$HOST:$PORT/${stub_status}/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting() {
/usr/bin/curl -s "//$HOST:$PORT/${stub_status}/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}

case "$1" in
check)
check
;;
active)
active
;;
accepts)
accepts
;;
handled)
handled
;;
requests)
requests
;;
reading)
reading
;;
writing)
writing
;;
waiting)
waiting
;;

*)
echo $"Usage $0 {check|active|accepts|handled|requests|reading|writing|waiting}"
exit
esac

4.给该脚本执行权限

$ chmod 755 nginx.sh

5.创建 userparameter_nginx.conf 配置文件

$ cd /usr/local/zabbix/etc/zabbix_agentd.conf.d

添加以下内容:

$ vim userparameter_nginx.conf
UserParameter=nginx.status[*],/usr/local/zabbix/bin/nginx.sh $1

6.重启 zabbix

$ systemctl restart zabbix-agent.service

7.导入 zbx_nginx_templates.xml 模板

点此下载模板

导入模板添加主机链接到 Template App Nginx 模板即可。

Zabbix 3.4 JMX 监控 Tomcat 性能

先决条件:

Zabbix Servers 3.4 源代码编译安装
Linux Apache Tomcat 8.5 安装与配置

如果完成了以上安装的部署,继续下一步。

Zabbix服务器端配置:

1.配置 zabbix_server.conf

主要参数:

...
 #JavaGateway服务器地址,zabbix-server与zabbix_java_gateway在同台服务器。
 JavaGateway=10.10.204.62
 JavaGatewayPort=10052
 #设置javaGateway抓取数据的进程数,当设置为0时表示不具有抓取java信息的能力。
 StartJavaPollers=5
...

在Zabbix Servers安装过程中,以上参数我已经配置完成。

2.配置 Zabbix Java gateway

修改完成后的内容如下:

$ egrep -v '^#|^$' /usr/local/zabbix/sbin/zabbix_java/settings.sh

#Zabbix Servers IP
LISTEN_IP="0.0.0.0"
#Port
LISTEN_PORT=10052
#PID_FILE路径必须正确。
PID_FILE="/usr/local/zabbix/sbin/zabbix_java/zabbix_java.pid"
#START_POLLERS项是配置启动的进出数,若不配置 zabbix_java 依旧可以启动但无法抓取数据。
START_POLLERS=5
#网络超时时间。
TIMEOUT=3

3.启动 zabbix_java

$ /usr/local/zabbix/sbin/zabbix_java/startup.sh

启动后可通过 ss -ntlp 查看 10052 端口是否运行。

Zabbix Agent Tomcat 客户端配置:

1.在 catalina.sh文件 Execute The Requested Command 上行或最上面添加以下内容:

$ vim /usr/local/tomcat/bin/catalina.sh
export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=10.10.204.65"

含义说明:

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote #启用JMX远程监控。
-Dcom.sun.management.jmxremote.ssl=false #是否使用SSL。
-Dcom.sun.management.jmxremote.authenticate=false #是否开启认证。
-Djava.rmi.server.hostname=10.10.204.65" #Tomcat所在服务器IP。

2.修改Tomcat server.xml 配置文件

在 <Server port=”8005″ shutdown=”SHUTDOWN”> 换行添加以下内容:

$ vim /usr/local/tomcat/conf/server.xml
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="10053" rmiServerPortPlatform="10053"/>

3.重启 Tomcat 服务

$ systemctl restart tomcat

4.设置 Firewalld

$ firewall-cmd --zone=public --add-port=10053/tcp --permanent
$ firewall-cmd --reload

5.在 Zabbix server 检测数据

在zabbix 服务端使用 cmdline-jmxclient-0.10.3.jar 检测是否可以抓取数据

$ java -jar /tmp/cmdline-jmxclient-0.10.3.jar - 10.10.204.65:10053 java.lang:type=Memory NonHeapMemoryUsage
09/15/2017 19:06:49 +0800 org.archive.jmx.Client NonHeapMemoryUsage:
committed: 33406976
init: 2555904
max: -1
used: 32079720

成功获取数据。

之后在zabbix web界面添加主机并链接模板即可。

Template App Apache Tomcat JMX
Template App Generic Java JMX

以上两个模板是系统默认的,添加即可,其中有一些参数不通用,需要手动修改。

Zabbix 3.4 监控 MariaDB(MySQL) 数据库性能

先决条件:

首先你需要安装 Zabbix Servers 及 Zabbix-agentd 端:

Zabbix Servers 3.4 源代码编译安装
Centos 7 Zabbix Agent 客户端源码编译安装配置

1.配置 userparameter_mysql.conf

Zabbix源码中包含了 userparameter_mysql.conf 配置文件,只需要将其拷贝到zabbix_agentd.conf.d目录下:

$ find / -name userparameter_mysql.conf
$ cd /tmp/zabbix-3.4.2/conf/zabbix_agentd/
$ cp userparameter_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/

2.修改 zabbix_agentd.conf

因为我们将userparameter_mysql.conf文件放在了zabbix_agentd.conf.d目录,所以需要取消下面注释,这样Zabbix Agent才能够加载此文件

$ vim /usr/local/zabbix/etc/zabbix_agentd.conf
...
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
...

注意:若 systemctl Zabbix-Agent.service 单元文件中已经加载此配置文件/路径,此步骤可以忽略。

3.创建监控 MariaDB(MySQL) 用户信息

MariaDB [(none)]> GRANT SELECT ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'Renwolecom';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit
Bye

注意:MySQL用户权限可根据需求设置,可参考《Linux MariaDB(MySQL)数据库更改用户权限》。

4.创建 .my.cnf 文件,添加 MariaDB(MySQL) 用户信息

$ vim /usr/local/zabbix/etc/.my.cnf

# Zabbix Agent
[mysql]
host=localhost
user=zabbix
password="Renwolecom"
socket=/tmp/mysql.sock
[mysqladmin]
host=localhost
user=zabbix
password="Renwolecom"
socket=/tmp/mysql.sock

5.修改 userparameter_mysql.conf

修改后的内容如下:

$ cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/
$ egrep -v "(^#|^$)" userparameter_mysql.conf

UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/usr/local/zabbix/etc/ /usr/local/mysql/bin/mysql -N | awk '{print $$2}'
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/usr/local/zabbix/etc mysql -N'
UserParameter=mysql.ping,HOME=/usr/local/zabbix/etc/ /usr/local/mysql/bin/mysqladmin ping | grep -c alive
UserParameter=mysql.version,/usr/local/mysql/bin/mysql -V
UserParameter=mysql.vars[*],echo "show variables where Variable_name='$1';" | HOME=/usr/local/zabbix/etc/ /usr/local/mysql/bin/mysql -N | awk '{print $$2}'

注:以上内容请注意相关绝对路径。

6.重启 Zabbix-Agent 服务

$ systemctl restart zabbix-agent

最后在 Zabbix UI界面中添加MySQL监控模板即可。

Centos 7 Zabbix Agent 客户端源码编译安装配置

Zabbix Agent 安装在远程系统上,需要通过Zabbix服务器进行监控。Zabbix Agent在客户端系统上收集资源利用和应用程序数据,并向Zabbix服务器提供这些信息。Zabbix支持Ping,ZBX、SNMP、JMX、IPMI等监控方式。

1.安装扩展包以及依赖包

$ yum -y install epel-release
$ yum install pcre pcre-devel openssl openssl-devel -y

2.添加Zabbix用户和组

$ groupadd zabbix
$ useradd zabbix -g zabbix -s /sbin/nologin

3.安装Zabbix-Agent

下载地址://www.zabbix.com/download

$ cd /tmp
$ tar -zxvf zabbix-3.4.2.tar.gz
$ cd zabbix-3.4.2
$ ./configure --prefix=/usr/local/zabbix --enable-agent --with-mysql --with-openssl
$ make && make install

4.创建Zabbix日志目录并生成(PSK)密钥

$ mkdir -p /usr/local/zabbix/logs/
$ chown -R zabbix.zabbix /usr/local/zabbix
$ sh -c "openssl rand -hex 32 > /usr/local/zabbix/etc/zabbix_agentd.psk"
$ cat /usr/local/zabbix/etc/zabbix_agentd.psk
fd1ac849e5f787dfc04300ae997d158e6f6f0c2209d66e7d2e687da2032ecbae

5.配置zabbix_agentd.conf

以下是配置完成后的内容:

$ egrep -v "(^#|^$)" /usr/local/zabbix/etc/zabbix_agentd.conf

EnableRemoteCommands=1 #来至zabbix服务器的远程命令是否允许被执行
PidFile=/usr/local/zabbix/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=10.10.204.65 #Zabbix Server IP 地址
ServerActive=10.10.204.65 #地址同上 主动向 Zabbix Server 发送监控内容
Hostname=101020465 #本机主机名 内容要和Zabbix Server 配置的 Host Name 一致
HostMetadataItem=system.uname #用于Item获取数据
User=zabbix
UnsafeUserParameters=1 #是否启用自定义key,zabbix监控mysql、tomcat等数据时需要自定义key
#下面使用预共享密钥(PSK)来保护服务器和客户端之间的连接
TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=PSK 001
TLSPSKFile=/usr/local/zabbix/etc/zabbix_agentd.psk

注意:关于更多Agent配置参数优化,请参阅这里Zabbix agent (UNIX)

6.创建systemctl系统Zabbix agent 单元文件

$ vim /usr/lib/systemd/system/zabbix-agent.service

[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_agentd.conf"
#EnvironmentFile=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
Type=forking
Restart=on-failure
#PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s

[Install]
WantedBy=multi-user.target

7.启动 Zabbix Agentd 客户端服务并加入开机自启动

$ systemctl start zabbix-agent
$ systemctl enable zabbix-agent

8.设置 Firewalld 防火墙

$ firewall-cmd --permanent --add-port=10050/tcp
$ firewall-cmd --reload

已经完成 Zabbix Agent 的安装。后期我还会写一些关于zabbix的使用以及优化。

Zabbix Servers 3.4 源代码编译安装

PS:

其实安装zabbix很简单,网上资料一搜一大把,基本都是采用yum方式安装,简单省事。正因如此我没写相关配置文档,安装方式一般用yum安装或源码安装亦或是容器安装,最近有网友提出来了,我认真对待,撰写 Linux Centos 7 Zabbix 编译安装的全过程(Zabbix服务端)。后期我也会写一些关于Zabbix 使用及优化方面的文章。

官介:

Zabbix是一个企业级的分布式开源监控解决方案。它可以监控各种网络应用以及服务器健康性和完整性的软件。Zabbix服务器将其数据存储在由MySQL、MariaDB、PostgreSQL或Oracle支持的关系型数据库中,Zabbix所有的报告、统计信息和配置参数都可以通过基于Web的前端页面进行访问设置。而且Zabbix是开源免费的。

1.安装环境(Hyper-V 虚拟机):

$ hostnamectl
 Static hostname: localhost.localdomain
 Icon name: computer-vm
 Chassis: vm
 Machine ID: renwoles1d8743989a40cb81db696400
 Boot ID: renwoles272f4aa59935dcdd0d456501
 Virtualization: microsoft
 Operating System: CentOS Linux 7 (Core)
 CPE OS Name: cpe:/o:centos:centos:7
 Kernel: Linux 3.10.0-514.2.2.el7.x86_64
 Architecture: x86-64

2.由于Zabbix UI前端使用 PHP 写的,所以必须运行在支持PHP脚本语言的Web服务器,先决条件:

Centos 7 编译安装nginx
Centos 7 编译安装PHP 7 之生产篇
Linux JAVA JDK JRE 环境变量安装与配置
Centos 7 二进制安装 MariaDB(MySQL)数据库

3.若您的服务器已具备 PHP 环境,请略过第 2 步骤,继续以下配置:

配置 php.ini 必须满足以下要求:

max_execution_time = 300
max_input_time = 300
memory_limit = 128M
post_max_size = 32M
date.timezone = Asia/Shanghai
mbstring.func_overload=2
#Zabbix PHP LDAP 认证开启(可选)
extension = "/usr/local/php/lib/php/extensions/no-debug-zts-20160303/ldap.so"

4.安装依赖包并创建组&用户

$ yum -y install epel-release && yum -y update
$ yum install -y net-snmp-devel OpenIPMI-devel libssh2-devel iksemel-devel
$ groupadd zabbix
$ useradd -g zabbix zabbix

5.安装 Zabbix Server

下载地址://www.zabbix.com/download

$ cd /tmp
$ tar -zxvf zabbix-3.4.2.tar.gz
$ cd zabbix-3.4.2
$ ./configure --prefix=/usr/local/zabbix \
--sysconfdir=/usr/local/zabbix/etc \
--enable-server \
--enable-agent \
--with-mysql=/usr/bin/mysql_config \
--with-net-snmp \
--with-libcurl \
--with-libxml2 \
--enable-proxy \
--enable-ipv6 \
--enable-java \
--with-ssh2 \
--with-iconv \
--with-openipmi \
--with-ldap \
--with-openssl \
--with-jabber \

$ make
$ make install

注意:–enable-agent 可选,此参数主要用于客户端(被监控者)。

注意:如你未安装JAVA环境,请去掉 –enable-java 选项,主要用于监控Tomcat。

6.创建并赋予 Zabbix 配置文件目录权限

$ mkdir -p /usr/local/zabbix/logs
$ chown -R zabbix.zabbix /usr/local/zabbix

7.将 Zabbix UI 前端程序源码拷贝到 Nginx Web 目录

$ cp -rf /tmp/zabbix-3.4.2/frontends/php/* /apps/web/zabbix
$ chown -R www.www /apps/web/zabbix

8.创建数据库名:zabbix 用户:zabbix 密码:renwolecom 并赋予用户拥有该数据库所有权限:

$ mysql -uroot -p
Enter password:(输入root数据库密码回车)
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@"%" identified by 'renwolecom';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> quit;

9.将Zabbix相关结构表文件按顺序依次导入zabbix数据库

导入顺序 schema.sql 表结构 > images.sql 图片库 > data.sql 初始脚本

$ cd /tmp/zabbix-3.4.2/database/mysql
$ mysql -uzabbix -prenwolecom zabbix < schema.sql
$ mysql -uzabbix -prenwolecom zabbix < images.sql
$ mysql -uzabbix -prenwolecom zabbix < data.sql

10.配置 zabbix_server.conf

配置完成后的内容如下:

$ egrep -v "^$|^#|^;" /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/usr/local/zabbix/logs/zabbix_server.log
PidFile=/usr/local/zabbix/zabbix_server.pid
LogFileSize=0
DBHost=10.10.204.62
DBName=zabbix
DBUser=zabbix
DBPassword=renwolecom
JavaGateway=10.10.204.62
JavaGatewayPort=10052
StartJavaPollers=5
StartPingers=4
Timeout=4
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts
LogSlowQueries=3000
Include=/usr/local/zabbix/etc/zabbix_server.conf.d/

注意:由于每个生产环境的参数配置不同,所以配置文件我只列出基本常用的,查看更多配置参数是说明

11.创建 systemctl 系统 Zabbix servers 单元文件

$ vim /usr/lib/systemd/system/zabbix.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/usr/local/zabbix/etc/zabbix_server.conf"
EnvironmentFile=-/usr/local/zabbix/etc/zabbix_server.conf.d
Type=forking
Restart=on-failure
PIDFile=/usr/local/zabbix/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0

[Install]
WantedBy=multi-user.target

12.启动 zabbix 并加入开机自起动

$ systemctl start zabbix
$ systemctl enable zabbix

13.Firewalld 防火墙设置

$ firewall-cmd --permanent --add-port=10051/tcp
$ firewall-cmd --permanent --add-port=80/tcp
$ firewall-cmd --reload

安装完成。

接下来,你可以使用 IP 或域名访问 Zabbix 监控管理系统,具体设置,请根据 Zabbix Server Web 向导提示设置即可。

设置完成后,zabbix默认账号:Admin 密码:zabbix(注意账号区分大小写)登录后是英文界面, 只需点击右上角的小人图标(当前用户设置)定位到 Language 项,选择 Chinese (zh_CN),点击 Update 即可切换为中文界面。

关于Zabbix代理客户端,请参阅《Centos 7 Zabbix Agent 客户端源码编译安装配置》。

Zabbix中文监控服务器图形图表显示乱码

zabbix对中文的支持不是很好,但为了管理方面有时候我们还是会选择中文,在zabbix监控的web界面,图形图标下面的中文会显示一个个小方块,这样是不正确的,需要下载字体。例如“微软雅黑”

“微软雅黑.ttf” 命名为 “msyh.ttf”

将下载的字体上传到/zabbix/fonts/字体下

修改/zabbix/include/defines.inc.php文件中的两处

define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans');
define('ZBX_FONT_NAME', 'DejaVuSans');

define('ZBX_GRAPH_FONT_NAME', 'msyh');
define('ZBX_FONT_NAME', 'msyh');

最后重启web服务器即可。