欢迎光临散文网 会员登陆 & 注册

zabbix安装及及基础教程

2023-02-15 09:19 作者:bili_39183997178  | 我要投稿

•             对服务的管理,不能仅限于可用性。

•             还需要服务可以安全、稳定、高效地运行。

•             监控的目的:早发现、早治疗。

•             被监控的资源类型:

–            公开数据:对外开放的,不需要认证即可获取的数据

–            私有数据:对外不开放,需要认证、权限才能获得的数据

监控命令

# uptime可以查看系统已经运行了多久。最后的3个数字分别是CPU最近1分钟、5分钟、15分钟的平均负载。平均负载的值,不应该大于总核心数。
[root@zzgrhel8 ~]# uptime
 09:28:25 up 53 days, 27 min,  0 users,  load average: 0.09, 0.08, 0.03

[root@zzgrhel8 ~]# free -m      # 主要用于查看内存
[root@zzgrhel8 ~]# swapon -s    # 查看swap空间
[root@zzgrhel8 ~]# df -h        # 查看硬盘使用情况
[root@zzgrhel8 ~]# ping -c2 www.baidu.com   # 发2个包,测试网络

zabbix

•             实施监控的几个方面:

–            数据采集:使用agent(可安装软件的系统上)、SNMP(简单网络管理协议,用于网络设备的数据采集)

–            数据存储:使用mysql数据库

–            数据展示:通过web页面

•             zabbix通过在远程主机上安装agent进行数据采集,存储到mysql数据库,通过web页面进行展示。

安装zabbix

•             中文手册:https://www.zabbix.com/documentation/3.4/zh/manual

主机名

地址

zabbixserver

192.168.4.5/24

web1

192.168.4.100/24

web2

192.168.4.200/24

# 准备3台主机。按上表配置主机名和IP地址
[root@zzgrhel8 ~]# clone-vm7

•             安装zabbix

# 1. 关闭SELINUX和防火墙

# 2. 配置yum。千万注意:只保留系统yum,删除mysql和pxc。
[root@zabbixserver ~]# cat /etc/yum.repos.d/local.repo
[local_repo]
name=CentOS-$releasever - Base
baseurl=ftp://192.168.4.254/centos-1804
enabled=1
gpgcheck=0

# 3. 配置nginx,用于展示zabbix的web页面
# 3.1 安装nginx的依赖包
[root@zabbixserver ~]# yum install -y gcc pcre-devel openssl-devel
# 3.2 安装nginx
[root@zzgrhel8 ~]# scp /linux-soft/2/lnmp_soft.tar.gz 192.168.4.5:/root/
[root@zabbixserver ~]# tar xf lnmp_soft.tar.gz
[root@zabbixserver ~]# cd lnmp_soft/
[root@zabbixserver lnmp_soft]# tar xf nginx-1.12.2.tar.gz
[root@zabbixserver lnmp_soft]# cd nginx-1.12.2/
[root@zabbixserver nginx-1.12.2]# ./configure --with-http_ssl_module    # 配置nginx支持https
[root@zabbixserver nginx-1.12.2]# make && make install

# 4. 配置nginx支持php。配置php可以连接mysql
[root@zabbixserver ~]# yum install -y php php-fpm php-mysql mariadb-server mariadb-devel

# 5. 根据zabbix手册,修改nginx参数
[root@zabbixserver ~]# vim /usr/local/nginx/conf/nginx.conf
 34     fastcgi_buffers 8 16k;     #缓存php生成的页面内容,8个16k
 35     fastcgi_buffer_size 32k;   #缓存php生产的头部信息,32k
 36     fastcgi_connect_timeout 300;  #连接PHP的超时时间,300秒
 37     fastcgi_send_timeout 300;     #发送请求的超时时间,300秒
 38     fastcgi_read_timeout 300;     #读取请求的超时时间,300秒
 70         location ~ \.php$ {
 71             root           html;
 72             fastcgi_pass   127.0.0.1:9000;
 73             fastcgi_index  index.php;
 74         #    fastcgi_param  SCRIPT_FILENAME  /script    s$fastcgi_script_name;
 75             include        fastcgi.conf;  # 注意改成fastcgi.conf
 76         }

# 6. 启动相关服务
[root@zabbixserver ~]# systemctl enable mariadb --now
[root@zabbixserver ~]# systemctl enable php-fpm --now
[root@zabbixserver ~]# ss -tlnp |grep :9000
LISTEN     0      128    127.0.0.1:9000
[root@zabbixserver ~]# /usr/local/nginx/sbin/nginx
[root@zabbixserver ~]# ss -tlnp | grep :80
LISTEN     0      128          *:80
# 写入到rc.local中的命令,开机时自动执行
[root@zabbixserver ~]# echo '/usr/local/nginx/sbin/nginx' >> /etc/rc.d/rc.local
[root@zabbixserver ~]# chmod +x /etc/rc.d/rc.local


# 7. 编译安装zabbix
# 7.1 安装zabbix的依赖包
[root@zabbixserver lnmp_soft]# yum install -y net-snmp-devel curl-devel autoconf libevent-devel
# 7.2 编译安装
[root@zabbixserver ~]# cd lnmp_soft/
[root@zabbixserver lnmp_soft]# ls zabbix-3.4.4.tar.gz
zabbix-3.4.4.tar.gz
[root@zabbixserver lnmp_soft]# tar xf zabbix-3.4.4.tar.gz
[root@zabbixserver lnmp_soft]# cd zabbix-3.4.4/
[root@zabbixserver zabbix-3.4.4]# ./configure --enable-server --enable-agent --with-mysql=/usr/bin/mysql_config  --with-net-snmp --with-libcurl
# --enable-server: 安装服务器端
# --enable-agent: 安装被控端
# --with-mysql: 指定mysql数据库配置程序
# --with-net-snmp: 配置可以通过snmp收集数据
# --with-libcurl: 启用curl库,以便zabbix可以通过curl连接web服务
# --enable-proxy: 启动proxy代理,不必安装
[root@zabbixserver zabbix-3.4.4]# make && make install

•             初始化

# 1. 创建zabbix存储数据的数据库。创建名为zabbix的数据库,使用的字符集是utf8
[root@zabbixserver ~]# mysql
MariaDB [(none)]> create database zabbix default charset utf8;

# 2. 创建名为zabbix的用户,密码也是zabbix,可以对zabbix数据库拥有全部权限。zabbix@'%'格式是:zabbix@客户端地址
# 在mysql中,%表示0到多个任意字符
MariaDB [(none)]> grant all on zabbix.* to zabbix@'%' identified by 'zabbix';
# 授权zabbix用户可以在本机登陆
MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by 'zabbix';
MariaDB [(none)]> exit

# 3. 导入zabbix表结构,3个sql文件按顺序导入
[root@zabbixserver ~]# cd lnmp_soft/zabbix-3.4.4/database/mysql/
[root@zabbixserver mysql]# ls
data.sql  images.sql  schema.sql
# -u指定用户名,-p指定密码,第3个zabbix是数据库
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < data.sql

# 4. 配置zabbix_server服务
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_server.conf
 12 # ListenPort=10051    # 不用改,了解端口号
 38 LogFile=/tmp/zabbix_server.log   # 不用改,日志文件位置
 85 DBHost=localhost      # 数据库服务器地址
 95 DBName=zabbix         # 不用改,数据库名
111 DBUser=zabbix         # 不用改,连接数据库的用户
119 DBPassword=zabbix     # 连接数据库的密码

# 5. 创建用于运行zabbix的用户
# -s /sbin/nologin: 用户不能登陆系统
[root@zabbixserver ~]# useradd -s /sbin/nologin zabbix

# 6. 创建用于管理zabbix的service文件
# service文件格式参考:https://www.cnblogs.com/gongxianjin/p/15673132.html
[root@zabbixserver ~]# vim /usr/lib/systemd/system/zabbix_server.service
[Unit]
Description=zabbix server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/tmp/zabbix_server.pid
ExecStart=/usr/local/sbin/zabbix_server
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

# 7. 启动服务
# 新建service文件,一般需要执行systemctl daemon-reload,否则有可能识别不到
[root@zabbixserver ~]# systemctl daemon-reload
[root@zabbixserver ~]# systemctl enable zabbix_server.service
[root@zabbixserver ~]# systemctl start zabbix_server.service
[root@zabbixserver ~]# ss -tlnp | grep :10051
LISTEN     0      128          *:10051

# 8. 配置agent,自己被监控
[root@zabbixserver ~]# vim /usr/local/etc/zabbix_agentd.conf
 30 LogFile=/tmp/zabbix_agentd.log   # 不用改,日志位置
 93 Server=127.0.0.1,192.168.4.5     # 指定接受哪些服务器监控
101 # ListenPort=10050               # 不用改,指定端口号
134 ServerActive=127.0.0.1,192.168.4.5  # 主动汇报信息给哪些服务器
145 Hostname=zabbixserver           # 本机的主机名
280 UnsafeUserParameters=1           # 允许用户自定义监控项

# 9. 配置agent服务的service文件
[root@zabbixserver ~]# vim /usr/lib/systemd/system/zabbix_agentd.service
[Unit]
Description=zabbix agent
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/tmp/zabbix_agentd.pid
ExecStart=/usr/local/sbin/zabbix_agentd
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

# 10. 启服务
[root@zabbixserver ~]# systemctl daemon-reload
[root@zabbixserver ~]# systemctl start zabbix_agentd.service
[root@zabbixserver ~]# systemctl enable zabbix_agentd.service
[root@zabbixserver ~]# ss -tlnp | grep :10050
LISTEN     0      128          *:10050

 

附:删库重导入

# 查看有哪些数据库
MariaDB [(none)]> show databases;
MariaDB [(none)]> drop database zabbix;
MariaDB [(none)]> create database zabbix default charset utf8;
MariaDB [(none)]> exit
[root@zabbixserver ~]# cd lnmp_soft/zabbix-3.4.4/database/mysql/
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < schema.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < images.sql
[root@zabbixserver mysql]# mysql -uzabbix -pzabbix zabbix < data.sql

•             zabbix的管理是通过web页面进行的。通过web初始化zabbix

# 拷贝zabbix的web页面到nginx
[root@zabbixserver ~]# ls lnmp_soft/zabbix-3.4.4/frontends/
php
[root@zabbixserver ~]# cp -r lnmp_soft/zabbix-3.4.4/frontends/php/* /usr/local/nginx/html/

# nginx运行期间,调用php-fpm服务,php-fpm需要向web目录中修改文件。php-fpm的运行用户是apache,所以apache用户需要对该目录有写权限
[root@zabbixserver ~]# chown -R apache:apache /usr/local/nginx/html/

# 访问192.168.4.5/index.php,首次访问,将会自动跳转到安装页面:http://192.168.4.5/setup.php

•             根据上面红色报错,解决zabbix web依赖的内容

# 安装依赖的软件包
[root@zabbixserver ~]# yum install -y php-gd php-xml php-bcmath php-mbstring
# 修改php.ini文件
[root@zabbixserver ~]# vim /etc/php.ini
 672 post_max_size = 16M
 384 max_execution_time = 300
 394 max_input_time = 300
 878 date.timezone = Asia/Shanghai
[root@zabbixserver ~]# systemctl restart php-fpm
# 刷新web页

连接数据库的密码,也是zabbix。

默认的登陆用户是admin,密码是zabbix。

配置zabbix

•             修改语言

•             启用监控自身

配置zabbix监控web1服务器

# 监控端(zabbix server)和被控端使用的软件是同一个,只是启用不同的功能
[root@zabbixserver ~]# scp lnmp_soft/zabbix-3.4.4.tar.gz 192.168.4.100:/root

# 安装编译agent需要的依赖环境
[root@web1 ~]# yum install -y gcc pcre-devel autoconf

# 编译agent
[root@web1 ~]# tar xf zabbix-3.4.4.tar.gz
[root@web1 ~]# cd zabbix-3.4.4/
[root@web1 zabbix-3.4.4]# ./configure --enable-agent
[root@web1 zabbix-3.4.4]# make && make install

# 修改配置文件
[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
 30 LogFile=/tmp/zabbix_agentd.log   # 日志位置,不用改
 69 EnableRemoteCommands=1    # 允许监控端远程执行命令
 93 Server=127.0.0.1,192.168.4.5   # 允许自己和监控端进行数据采集
134 ServerActive=127.0.0.1,192.168.4.5  # 允许自己和监控端主动监控
145 Hostname=web1             # 自己的主机名
280 UnsafeUserParameters=1    # 允许用户自定义监控项

# 配置服务
[root@zabbixserver ~]# scp /usr/lib/systemd/system/zabbix_agentd.service 192.168.4.100:/usr/lib/systemd/system/
[root@web1 ~]# useradd -s /sbin/nologin zabbix
[root@web1 ~]# systemctl daemon-reload
[root@web1 ~]# systemctl start zabbix_agentd.service
[root@web1 ~]# systemctl enable zabbix_agentd.service
[root@web1 ~]# ss -tlnp | grep :10050
LISTEN     0      128          *:10050



在zabbix web管理平台中配置监控

•             主机:安装了agent,被监控的主机

•             主机组:根据需求,将多台主机加入到一个主机组中,方便管理。系统默认已经创建了一些主机组。

•             模板:是监控项的集合。将模板应用到主机,主机就可以直接拥有模板中的所有监控项。系统中默认已经创建了一些模板。

添加被监控的主机

•             登陆zabbix:http://192.168.4.5/index.php

•             查看监控数据

需要查看哪个项目,可以点击右侧的“图形”

常用的监控指标:

•             CPU idle time:CPU空闲时间。不宜过低。

•             Processor load(1 min average per core) / Processor load(5 min average per core) / Processor load(15 min average per core):每核心1分钟、5分钟、15分钟的平均负载。这个值不应长期大于1。

•             Free disk sapce on /:根分区剩余的空间

•             Free disk sapce on /(percentage):根分区剩余的空间百分比

•             Available memory:可用内存

•             Incoming network traffic on eth0:eth0网卡进入的流量

•             Outgoing network traffic on eth0:eth0网卡外出的流量

•             Maximum number of processes:系统最多运行的进程数

•             Number of logged in users:已登陆的用户数

自定义监控项

实现监控web1用户数量的监控项

1.          在被控端创建key。被控端被监控的内容叫作key,可以理解为它就是一个变量名,具体的名字自己决定。

2.          在web页面中创建监控项。监控项对应key值。

3.          监控项存在应用集中。应用集就是相似监控项的集合。

4.          应用集存在模板中。一个模板可以包含多个应用集。



 

在被控端创建key

•             创建key的语法

UserParameter=自定义key值,命令
# 命令的执行结果,是key的value

•             在web1上声明自定义监控项所包含的配置文件。系统将会到/usr/local/etc/zabbix_agentd.conf.d/查找自定义监控项

[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf
264 Include=/usr/local/etc/zabbix_agentd.conf.d/

•             创建自定义配置文件。文件名自定义

[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/count.line.passwd
UserParameter=count.line.passwd,sed -n '$=' /etc/passwd

•             验证

[root@web1 ~]# systemctl restart zabbix_agentd.service
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd
[root@zabbixserver ~]# zabbix_get -s 192.168.4.100 -k count.line.passwd
# -s指定获取哪台主机的值
# -k指定key

创建模板

创建名为count.line.passwd的模板。该模板属于名为count-passwd的组,该组不存在则自动创建。

创建应用集

•             创建名为count_line_passwd的应用集

在应用集中创建监控项

•             创建名为count_line_passwd_item的监控项

应用模板到主机

查看结果

•             注意,刚应用的模板,不会立即取得数据,需要等一会

配置告警

•             默认情况下,监控项不会自动发送告警消息

•             需要配置触发器与告警,并且通过通知方式发送信息给联系人

•             触发器:设置条件,当条件达到时,将会执行某个动作

•             动作:触发器条件达到之后要采取的行为,比如发邮件或执行命令

用户数超35时,发送告警邮件

•             当web1的用户数超过35时,认为这是一个问题(Problem)

•             当出现问题时,将会执行动作。

•             执行的动作是给管理员发邮件。

•             给管理员发邮件,还要配置邮件服务器的地址,以及管理员的email地址

实施

创建触发器规则

创建名为password_line_gt_35的触发器

点击添加后,出现下图:

 

添加表达式之后的结果如下:

表达式语法:

{<server>:<key>.<function>(<parameter>)}<operator><constant>
{<主机>:<key>.<函数>(<参数>)}<操作符><常量>

例:

{count.line.passwd:count.line.passwd.last()}>35
# count.line.passwd是模板
# count.line.passwd是在被控端上定义的key
# last是函数,表示最近的一次取值
# > 是操作符
# 35 是常量
# 以上表达式的含义是:应用count.line.passwd模板的主机,它的count.line.passwd最近一次取值大于35,则状态为“问题”,即Problem

创建邮件类型的报警媒介

为用户关联邮箱

 

创建动作:当出现Problem状态时,给admin发邮件

点击“新的”之后,如下图:

验证

# 配置zabbix服务器成为邮件服务器
[root@zabbixserver ~]# yum install -y postfix mailx
[root@zabbixserver ~]# systemctl enable postfix --now
[root@zabbixserver ~]# ss -tlnp | grep :25
LISTEN     0      100    127.0.0.1:25

# 在web1上创建用户
[root@web1 ~]# for user in user{1..20}
> do
> useradd $user
> done
[root@web1 ~]# zabbix_get -s 127.0.0.1 -k count.line.passwd
43


zabbix安装及及基础教程的评论 (共 条)

分享到微博请遵守国家法律