Zabbix (server, proxy, agent) installation practical operation explanation

I. Overview

Zabbix is ​​an open source monitoring software tool designed to monitor and track the performance and availability of various network services, servers and other IT resources. It is used to monitor the status of network devices, server hardware, applications and other IT infrastructure components. Zabbix can monitor various indicators, including CPU usage, memory usage, disk space, network traffic, and more. It supports multiple monitoring methods, including SNMP, JMX, IPMI, SSH, etc. Zabbix also provides functions such as real-time monitoring, historical data storage, chart and report generation, so that IT operation and maintenance teams can perform performance analysis and troubleshooting. Due to its flexibility and scalability, Zabbix is ​​one of the main choices for enterprise-level monitoring solutions.

img

Two, zabbix installation actual operation

  • Operating system: centos7

  • zabbix version: 4.4

  • mysql: 5.7.28

1) Zabbix server installation

rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
yum-config-manager --enable rhel-7-server-optional-rpms
yum install epel-release  numactl
yum install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf  -y 

Note: If yum cannot be installed, you can modify **/etc/yum.repos.d/zabbix.repo**

[zabbix]
name=Zabbix Official Repository - $basearch
#baseurl=http://repo.zabbix.com/zabbix/4.4/rhel/7/$basearch/
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.4/rhel/7/$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
skip_if_unavailable = 1
keepcache = 0

[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=http://repo.zabbix.com/zabbix/4.4/rhel/7/$basearch/debuginfo/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=1

2) mysql installation

1. Preliminary preparation

wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
tar -xzvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz -C /app/
cd /app/
mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql
mkdir /app/mysql/{
    
    data,logs}
groupadd mysql
useradd -g  mysql mysql
chown mysql:mysql /app/mysql -R

2. Configure mysql configuration file

[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8
# 配置账号密码、ip;实现命令行直接"免密码"登录
[mysql]
host=192.168.182.132user=zabbixpassword=zabbix[mysqladmin]host=192.168.182.132user=zabbixpassword=zabbix

[mysqld]
port = 3306
socket = /tmp/mysql.sock

basedir = /app/mysql
datadir = /app/mysql/data
pid-file = /app/mysql/mysql.pid
user = mysql
bind-address = 0.0.0.0
server-id = 1

init-connect = 'SET NAMES utf8'
character-set-server = utf8
log_timestamps=SYSTEM

skip-name-resolve
back_log = 300

max_connections = 613
max_connect_errors = 6000
open_files_limit = 65535
table_open_cache = 256
max_allowed_packet = 500M
binlog_cache_size = 1M
max_heap_table_size = 8M
tmp_table_size = 32M

read_buffer_size = 2M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 8M
key_buffer_size = 16M

thread_cache_size = 16

query_cache_type = 1
query_cache_size = 16M
query_cache_limit = 2M

ft_min_word_len = 4

log_bin = mysql-bin
binlog_format = mixed
expire_logs_days = 7

log_error = /app/mysql/logs/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /app/mysql/logs/mysql-slow.log

performance_schema = 0
explicit_defaults_for_timestamp



skip-external-locking

default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_open_files = 500
innodb_buffer_pool_size = 128M
innodb_write_io_threads = 4
innodb_read_io_threads = 4
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 2M
innodb_log_file_size = 32M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120

bulk_insert_buffer_size = 8M
myisam_sort_buffer_size = 16M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1

interactive_timeout = 28800
wait_timeout = 28800



[mysqldump]
quick
max_allowed_packet = 500M

[myisamchk]
key_buffer_size = 16M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M

3. Database initialization

cd /app/mysql/
bin/mysqld --initialize --user=mysql --basedir=/app/mysql --datadir=/app/mysql/data --innodb_undo_tablespaces=3 --explicit_defaults_for_timestamp

登录的临时密码在error文件中(/app/mysql/logs/mysql-error.log)
##
porary password is generated for root@localhost: Jm=%mM7w)UBq
##

cp -a /app/mysql/support-files/mysql.server /etc/init.d/mysql
echo "export PATH=/app/mysql/bin:$PATH" >> /etc/profile
source /etc/profile

# 启动mysql
/etc/init.d/mysql start

# 使用日志中的临时密码(Jm=%mM7w)UBq)登录mysql
mysql -u root -p

# 设置root密码:
mysql>set password for root@localhost = password('root');

# 创建zabbix库:
create database zabbix character set utf8 collate utf8_bin;
# 授权:
grant all privileges on *.* to zabbix@'%' identified by 'zabbix';
# 刷新权限
flush privileges;

# 导入数据到zabbix
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz |  mysql -uroot -p  zabbix

3) Configure zabbix_server

1. Modify the configuration

# vi /etc/zabbix/zabbix_server.conf

LogFile=/app/zabbix/logs/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBHost=192.168.182.132
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBSocket=/tmp/mysql.sock
SNMPTrapperFile=/app/zabbix/logs/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/app/zabbix/alertscripts
ExternalScripts=/app/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1

2. Create relevant directories

mkdir -p /app/zabbix/logs/snmptrap
mkdir /app/zabbix/{
    
    alertscripts,externalscripts}
chown zabbix:zabbix /app/zabbix/ -R

3. Modify the time zone

# vim /etc/httpd/conf.d/zabbix.conf
# 添加/修改配置:
php_value date.timezone Asia/Shanghai

4. Start apache

systemctl start httpd.service

5. Start PHP

systemctl start php-fpm.service

6. Start the zabbix server

systemctl start zabbix-server.service

# 访问: http:ip/zabbix  

# 注意:第一次登录填写mysql连接信息时候地址需要填0.0.0.0

3. Modify the font

# 上传windows中的字体MSYH.TTC(微软雅黑) 到/home/wwwroot/default/zabbix/fonts目录
ln -s /home/wwwroot/default/zabbix/fonts/MSYH.TTC /etc/alternatives/zabbix-web-font

4. Install the graphtree plugin (optional)

# graphtree是一个图形展示插件
wget https://raw.githubusercontent.com/OneOaaS/graphtrees/master/graphtree3.0.4.patch
yum install -y patch
cp -a /usr/share/zabbix /usr/share/zabbix.bak
mv graphtree3.0.4.patch /usr/share/zabbix/
cd /usr/share/zabbix
patch  -Np0 <graphtree3.0.4.patch
chown apache:apache oneoaas -R
#添加配置:vim /etc/httpd/conf.d/zabbix.conf
Alias /oneoaas /usr/share/zabbix/oneoaas

# 重启服务
systemctl restart httpd.service zabbix-server.service

Five, install zabbix-proxy detailed process

1) Install zabbix-proxy via yum

1. Install zabbix-proxy and zabbix-agent

rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
yum clean all
# 先查找zabbix-proxy,yum search zabbix-proxy
yum install zabbix-proxy-mysql.x86_64 zabbix-agent.x86_64

[Question] If the following error occurs

Error: Package: zabbix-proxy-mysql-4.4.3-1.el7.x86_64 (zabbix)
           Requires: fping
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

[Solution] According to the error message, the dependency of the fping command needs to be installed. After the yum installation, the installation package does not exist, so it is speculated that there should be a problem with the epel source configuration, so configure the epel source in the Ali source

curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
# 再执行
yum install zabbix-proxy-mysql.x86_64 zabbix-agent.x86_64

2. Create zabbix_proxy library

create database zabbix_proxy character set utf8 collate utf8_bin;
# 授权:
grant all privileges on zabbix_proxy.* to zabbix@'%' identified by 'zabbix';
# 刷新权限
flush privileges;
# 部署mysql 步骤和在zabbix server中部署一样,区别在导入数据时候不一样:
# zcat /usr/share/doc/zabbix-proxy-mysql*/schema.sql.gz | mysql -uroot -p zabbix_proxy

3. Modify the zabbix-proxy configuration

# vim /etc/zabbix/zabbix_proxy.conf

Server=192.168.182.132            # 真正的服务端(zabbix server)
ServerPort=10051                  # 根据个人需要修改,一般可以不改,默认端口是10051,要实现转发的话使用这个选项(zabbix server)
ListenPort=10051                  # zabbix-proxy服务监听的端口,默认就好
Hostname=Zabbix proxy             # proxy的hostname,在web端网页配置时需要用到
DBHost=192.168.182.130            # 数据库,使用本地,也可以使用ip,我喜欢使用localhost,因为我授权就是本地,也因为配置ip失败踩过坑
DBName=zabbix_proxy               # 数据库名称,创建zabbix-proxy的mysql的数据库名称
DBUser=zabbix                     # 用户
DBPassword=zabbix                 # 密码
DBPort=3306                       # 当DBHost填写localhost时,默认是使用socket通信的,这里配置一下也无碍
#HeartbeatFrequency=60            # 心跳线(具体作用网了,看配置文件吧,这个默认就是60)
ConfigFrequency=600               # 这个好像是同步配置文件的时间
DataSenderFrequency=1             # 这个是proxy端向server端发送数据的时间,单位是秒,几乎等于实时同步

4. Start zabbix-proxy

systemctl start zabbix-proxy.service

2) Install zabbix-proxy through source code

yum -y install curl-devel libevent-devel   libevent curl  libxml2-devel libxml2  pcre pcre-devel
yum install mysql-devel  -y
yum install -y net-snmp-devel

# 编译安装zabbix proxy:
wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.4.0/zabbix-4.4.0.tar.gz
tar -xzvf zabbix-4.4.0.tar.gz
cd zabbix-4.4.0

# proxy:
./configure --prefix=/app/zabbix_proxy_4.4   --enable-proxy  --with-mysql   --with-libcurl --with-libxml2  --enable-ipv6 --with-net-snmp --with-openssl
ln -s /app/mysql/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20

# 启动:
/app/zabbix_proxy_4.4/sbin/zabbix_proxy -c /app/zabbix_proxy_4.4/etc/zabbix_proxy.conf

Sixth, configure the proxy through the web side

create proxy

img

Configure proxy information

img

Choose a proxy when adding a host

img

If the following figure appears, the zabbix server cannot communicate with the zabbix proxy normally

img

Normal communication is shown in the figure:

img

Seven, zabbix-agent installation

zabbix-agent must be installed on the monitored machine to communicate with zabbix-proxy or zabbix-server through zabbix-agent

1) yum install zabbix-agent

# 添加yum源rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
# 安装yum install zabbix-agent# 启动
service zabbix-agent start

2) Source code installation zabbix-agent

yum -y install curl-devel libevent-devel   libevent curl  libxml2-devel libxml2  pcre pcre-devel
yum install mysql-devel  -y
yum install -y net-snmp-devel

# 编译安装zabbix客户端:
wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.4.0/zabbix-4.4.0.tar.gz
tar -xzvf zabbix-4.4.0.tar.gz
cd zabbix-4.4.0

# agent:
./configure --prefix=/app/zabbix_agent_4.4   --enable-agent  --enable-ipv6 --with-net-snmp --with-openssl

# 启动:
/app/zabbix_agent_4.4/sbin/zabbix_agentd -c /app/zabbix_agent_4.4/etc/zabbix_agentd.conf

3) Modify the configuration (/etc/zabbix/zabbix_agentd.conf)

Server=[zabbix server/zabbix proxy ip]
ServerActive=[zabbix server/zabbix proxy ip]
Hostname=[ Hostname of client system ]# 例:Server=192.168.182.130ServerActive=192.168.182.130Hostname=192.168.182.129

4) Install zabbix-get, and test whether the agent side is connected to the server side

# 安装
yum install -y zabbix-get
# 在服务端测试(192.168.182.132),-s --host:agent端ip;-p,--port:端口;-k,--key:监控项key
zabbix_get -s 192.168.182.130 -p 10050 -k system.hostname

# zabbix server与zabbix proxy的配置的同步是有延时的,如果需要立即同步可以手动执行命令:
zabbix_proxy -c /etc/zabbix/zabbix_proxy.conf  -R config_cache_reload

The detailed deployment process of zabbix is ​​here first. If you have any questions, please leave me a message or private message. You can also follow my public account [big data and cloud native technology sharing] and join the group to communicate~

Guess you like

Origin blog.csdn.net/qq_35745940/article/details/130164452