Zabbix监控搭建详细过程

发布时间 2023-04-21 09:31:02作者: 往事已成昨天

1、Zabbix监控搭建详细过程

一、?Why?什么是监控,为什么需要监控

1、监控概述

官方说明:监控是指对行为、活动或其他变动中信息的一种持续性关注,通常是为了对人达成影响、管理、指导或保护的目的。

  • 监控
    • 监视主机,架构状态
    • 控制,事后追责
    • 目标:早发现早处理,(故障、性能、架构)网站扩容(用数据说话)
  • eg:随着用户的增多,服务随时可能会被oom(Out of Memory)

2、监控课程大纲

  • [x] 监控与命令
  • [x] 面试题:你们公司监控了什么内容
  • [x] 监控通用架构
  • [x] 监控生产最佳实战
  • [x] 监控设备
  • [x] 自定义监控
  • [x] 自定义监控进阶与故障案例
  • [x] 监控与告警 邮件 微信 短信 电话 钉钉 调取api接口
  • [x] 监控之886-Zabbix-agent2
    • [x] agent:通用
    • [x] snmp:网络设备、带宽和流量
    • [x] jmx(java gateway tomcat)
    • [x] ipmi
  • [x] 自动化监控
    • [x] 自动发现
    • [x] 自动注册
    • [x] 主动与被动
    • [x] 分布式监控proxy:多个机房、多个地区监控
  • [x] 监控终极挑战
    • [x] 自动获取对应服务的端口,按照指定格式显示
    • [x] zabbix客户端,创建自动发现key
    • [x] 创建自定义监控项
    • [x] web页面操作,添加监控项原型
    • [x] web页面操作,添加触发器原型
    • [x] web页面操作,添加图形原型
    • [x] 启用自动发现规则
    • [x] lld 低级自动发现:自动获取、添加监控项,触发器,图形,Mysql多实例,tomcat多实例
    • [x] Zabbix内置:自动发现网卡、磁盘分区、硬盘、CPU
    • [x] 手动创建lld:(端口)
    • [x] Zabbix api
  • [x] 全网监控项目
  • [x] Zabbix与提升
    • [x] grafana
  • [x] 补充

二、Linux的那些独孤九剑级别的命令

项目对应检查命令
网站/api curl / wget
服务 systemctl / service / chkconfig(c6)
进程 ps/ pstree / pgrep / pidstat / top / htop
CPU top / htop / vmstat / mpstat / lscpu / cpuinfo / w / uptime / sar
内存 top / free / ps / iotop(swap) / vmstat / sar / hcache(buffer+cache)
磁盘 iotop / iostat / sar #磁盘测试命令 dd ,flo
网络 iftop(整体带宽使用情况) / nethogs(精确到进程) / nstat/ ifstat / mtr / sar
硬件 Meagcli(raid) / ipmitool(温度、cpu风扇转速) / Im_sensors(温度)
#进程
pgrep 过滤出指定服务的进程pid  # ps -ef |grep pid

## pidstat

#

#cpu

三、企业面试题:你们公司监控如何做的? 等同于:你们公司监控了什么?

1、初级回答

cpu、内存、磁盘、网卡、进程、服务......

2、必备回答

分层次、框架、避免问什么回答什么

  • 单台机器
    • 业务(应用/API)信息:应用、程序代码是否有问题,(需要我们与开发沟通,书写一个页面)   eg:lnmp时候的 php与mysql测试页面。
    • 服务信息:各种服务的进程,端口,状态,特定的信息(不同服务)
    • 系统信息:cpu,内存(内存,swap,buffer / cache),磁盘(io,使用率,inode),负载,网络(in / out).......
    • 硬件信息:磁盘,raid状态,温度,风扇转速。#机房温度、湿度。
  • 网站集群监控(用户访问流程)
    • 任性不差钱:全国各地(核心城市),1台服务器,在服务器访问你们源站/ cdn / dns,(对应的服务:smokeping)
    • 免费:http://17ce.com http://ping.chinaz.com 测试工具:http://cesule.tingyun.com/cesule/home
    • 商业:听云、监控宝(告警)
    • DNS解析:ping / dig / nslookup / host
    • DNS解析域CDN是否ok 本质:通过全局访问测试工具(模仿用户在全国(全球)各地访问我们的网站)
  • TCP三次握手(并发数)   -网站负载均衡监控 ss -ant
  • HTTP请求报文 - 监控web日志查看(状态码) 补充:加上HTTPS监控过期
  • 请求经过网站架构
    • 负载均衡(Nginx)
    • web服务器(php、tomcat...)
    • 缓存
    • 数据库
    • 存储
  • HTTP响应报文 - 监控web日志查看(状态码)
  • TCP四次挥手 - 网站负载均衡监控 ss -ant
  • 断开连接

四、监控的脚本时代 -过去式

#脚本取出内存使用率
cat /server/scripts/check_mem.sh
#!/bin/bash
# author: lidao993
# desc: check system memory usage

MEM= `free -m|awk 'NR==2{print $NF}'`
if [$MEN -le 100 ];then
 echo "当前内存还剩余 $MEM"| mail -s '内存不足了!oom' yunwei_linux@qq.com
fi

五、监控的现代时

阶段
过去: Nagios(难够死) + Cacti
目前: Zabbix + Grafana,Openfalcon(小米),Prometheus(普罗米休斯)
未来: Zabbix 6.0 / 7.0 lts?, someting new ??

六 、Zabbix监控架构

1、生命周期

LTS(Long TIme Support)

图片图片

2、Zabbix监控架构

Zabbix是一个CS(服务端 / 客户端) 架构服务
Zabbix-Agent 获取数据发送给 --> Zabbix-Server服务端 -->数据会被存放到数据库 <-- Zabbix web 页面展示数据

采集数据 --> 数据收集、数据分析、报警 --> 存储 --> 友好的展示

图片

七、Zabbix生产快速实践指南

1、主机规划

规模平台CPU/内存数据库受监控的主机数量
小型 CentOS Virtual Appliance MySQL LnnoDB 100
中型 CentOS 2 CPU cores / 2GB MySQL LnnoDB 500
大型 RedHat Enterprise Linux 4 CPU cores / 8GB RAID MySQL LnnoDB     或PostgreSQL >1000
极大型 RedHat Enterprise Linux 8 CPU cores /16GB Fast RAID10 MySQL LnnoDB      或PostgreSQL >10000
角色主机名IP配置
Zabbix服务端 zabbix 192.168.2.12 1C1G
Zabbix客户端 web 192.168.2.5 1C1G
图片

2、企业Zabbix安装最佳实战-CentOS7

(1)安装方式
1、极速全自动安装 yum
2、混合安装 yum+自定义配置(最佳实践):LNMP(yum)、zabbix-server(yum)、zabbix-web环境(源码包)
3、Docter
4、源码编译安装
(2)Nginx 安装
# 使用官方仓库安装Nginx
[root@Zabbix ~]# cat /etc/yum.repos.d/nginx.repo 
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

#安装Nginx,启动并加入开机自启。
[root@Zabbix ~]# yum -y install nginx
[root@Zabbix ~]# systemctl start nginx
[root@Zabbix ~]# systemctl enable nginx
(3)PHP安装
# php7.2
[root@Zabbix ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@Zabbix ~]# yum install epel-release.noarch -y #webtatic要求
[root@Zabbix ~]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@Zabbix ~]# rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm  #webtatic源
[root@Zabbix ~]# yum install php72w-cli php72w-fpm php72w-gd php72w-mbstring php72w-bcmath php72w-xml php72w-ldap php72w-mysqlnd -y
[root@Zabbix ~]# rpm -qa|egrep 'nginx|php72w'
 php72w-ldap-7.2.34-1.w7.x86_64
 php72w-pdo-7.2.34-1.w7.x86_64
 php72w-xml-7.2.34-1.w7.x86_64
 php72w-bcmath-7.2.34-1.w7.x86_64
 php72w-gd-7.2.34-1.w7.x86_64
 php72w-cli-7.2.34-1.w7.x86_64
 nginx-1.22.0-1.el7.ngx.x86_64
 php72w-common-7.2.34-1.w7.x86_64
 php72w-fpm-7.2.34-1.w7.x86_64
 php72w-mbstring-7.2.34-1.w7.x86_64
 php72w-mysqlnd-7.2.34-1.w7.x86_64
(4)Nginx-PHP配置
# nginx配置
[root@Zabbix ~]# cat /etc/nginx/conf.d/zabbix.conf
server {
 listen 80;
 server_name zabbix.zxc.com;
 root /code/zabbix;
 location / {
  index index.php;
  } 
 location ~ \.php$ {
  fastcgi_pass 127.0.0.1:9000;
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  include fastcgi_params;
  }
}

# 根据nginx中定义的内容,创建站点目录
[root@Zabbix ~]# mkdir /code/zabbix
[root@Zabbix ~]# chmod -R 755 /code
[root@Zabbix ~]# vim /code/zabbix/info.php
<?php
 phpinfo();
?>

#注意:如果没有该用户,启动一定会报错
[root@Zabbix ~]# groupadd -g 666 www
[root@Zabbix ~]# useradd -u666 -g666 www

#修改nginx与php-fpm管理进程,的运行身份为www
[root@Zabbix ~]# sed -i '/^user /c user  www;' /etc/nginx/nginx.conf
[root@Zabbix ~]# sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf 
[root@Zabbix ~]# sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf

#最后授权代码为www
[root@Zabbix ~]# chown -R www.www /code/zabbix

#启动并加入开机自启
[root@Zabbix ~]# systemctl enable nginx php-fpm.service
[root@Zabbix ~]# systemctl start nginx php-fpm.service
[root@Zabbix ~]# nginx -t
(5)zabbix和数据库安装

zabbix官方源zabbix清华源

# 下载zabbix源
[root@Zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

# 替换成国内源--清华源
[root@Zabbix ~]# sed 's#http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/#https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/#g' /etc/yum.repos.d/zabbix.repo
[root@Zabbix ~]# sed -i  's#http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/#https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/7/x86_64/#g' /etc/yum.repos.d/zabbix.repo 

#安装zabbix-server、zabbix-agent2 mariadb(可替换为MySQL,安装参考 https://mp.weixin.qq.com/s/oe6rddOHFjSSgIBYFvYYhg)
[root@Zabbix ~]# yum -y install mariadb-server zabbix-server-mysql zabbix-agent2

#启动服务并加入开机自启
[root@Zabbix ~]# systemctl enable mariadb.service zabbix-server.service zabbix-agent2.service
(6)配置数据库
#先配置数据库
[root@Zabbix ~]# systemctl start mariadb.service

# 查看数据库和当前用户
[root@Zabbix ~]# mysql
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

MariaDB [(none)]> select user,host from mysql.user;
+------+-----------------------+
| user | host                  |
+------+-----------------------+
| root | 127.0.0.1             |
| root | ::1                   |
|      | localhost             |
| root | localhost             |
|      | zabbix-11.localdomain |
| root | zabbix-11.localdomain |
+------+-----------------------+
6 rows in set (0.00 sec)

# 安全配置数据库
[root@Zabbix ~]# mysql_secure_installation

# 输入你mysql的root密码,如果没有直接enter回车
Enter current password for root (enter for none): Enter

# 设置root密码
Set root password? [Y/n] y
New password: P@ssw0rd
Re-enter new password: P@ssw0rd

# 是否删除匿名用户
Remove anonymous users? [Y/n] y

# 是否不允许远程登录
Disallow root login remotely? [Y/n] n

# 删除测试数据库并访问它
Remove test database and access to it? [Y/n] y

# 现在重新加载权限表
Reload privilege tables now? [Y/n] y

Thanks for using MariaDB!


# 创建zabbix数据库
[root@Zabbix ~]# mysql -uroot -pP@ssw0rd
MariaDB [(none)]>  create database zabbix character set utf8 collate utf8_bin;

# 授权给zabbix用户
MariaDB [(none)]> grant all  on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix';

#初始化数据库,导入默认的数据库
[root@Zabbix ~]# rpm -ql zabbix-server-mysql
/etc/logrotate.d/zabbix-server
/etc/zabbix/zabbix_server.conf
/usr/lib/systemd/system/zabbix-server.service
/usr/lib/tmpfiles.d/zabbix-server.conf
/usr/lib/zabbix/alertscripts
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-5.0.26
/usr/share/doc/zabbix-server-mysql-5.0.26/AUTHORS
/usr/share/doc/zabbix-server-mysql-5.0.26/COPYING
/usr/share/doc/zabbix-server-mysql-5.0.26/ChangeLog
/usr/share/doc/zabbix-server-mysql-5.0.26/NEWS
/usr/share/doc/zabbix-server-mysql-5.0.26/README
/usr/share/doc/zabbix-server-mysql-5.0.26/create.sql.gz
/usr/share/doc/zabbix-server-mysql-5.0.26/double.sql
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix

# 导入默认zabbix数据库数据
[root@Zabbix ~]# zcat /usr/share/doc/zabbix-server-mysql-5.0.26/create.sql.gz |mysql -uzabbix -pzabbix zabbix

(7)配置zabbix
#zabbix 服务端 配置连接数据库
[root@Zabbix ~]# vim /etc/zabbix/zabbix_server.conf
[root@Zabbix ~]# grep ^DB /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

# 创建php会话目录并授权
[root@Zabbix ~]# grep session /etc/php-fpm.d/www.conf
;       (error_log, sessions.save_path, ...).
; Set session path to a directory owned by process user
php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session
[root@Zabbix ~]# mkdir -p /var/lib/php/session
[root@Zabbix ~]# chown www.www /var/lib/php/session

#重启zabbix服务端
[root@Zabbix ~]# systemctl restart zabbix-server

#zabbix服务端端口10051,客户端10050
(8)zabbix-web页面部署

下载zabbix程序

# 下载完之后上传到服务器
# 解压 zabbix-5.0.26.tar.gz
[root@Zabbix ~]# tar -xf zabbix-5.0.26.tar.gz
[root@Zabbix ~]# cd zabbix-5.0.26

#复制到/code/zabbix/下
[root@Zabbix zabbix-5.0.26]# cp -r ui/* /code/zabbix/

# 访问 zabbix.zxc.com

# 发现php报错
PHP option "post_max_size" 8M 16M Fail
PHP option "max_execution_time" 30 300 Fail
PHP option "max_input_time" 60 300 Fail
PHP option "date.timezone" unknown  Fail

# 在/etc/php.ini中修改
[root@Zabbix ~]# egrep '^post_max|max_execution|max_input|date.time' /etc/php.ini
max_execution_time = 300
max_input_time = 600
post_max_size = 200M
date.timezone = Asia/Shanghai

#重启php
[root@Zabbix ~]# systemctl restart php-fpm


#web默认登入账号密码:
#账号:Admin
#密码:zabbix

 

运维库
阅读 121
运维库
35篇原创内容