Zabbix搭建与主机监控(docker-compose方式安装)
Posted cherish the present
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zabbix搭建与主机监控(docker-compose方式安装)相关的知识,希望对你有一定的参考价值。
Zabbix搭建与主机监控
前言
- Zabbix是企业级分布式开源监控解决方案。可以对应用服务,数据库,网络,操作系统等提供7x24小时的监控,在6.x版本开始也新增了Kubernetes监控功能;本文主要介绍如何用zabbix的实现主机监控;
安装zabbix-server
- 这里用docker compose的方式搭建一个zabbix监控;
# 拉取镜像
docker pull zabbix/zabbix-server-mysql:6.4.1-centos
docker pull zabbix/zabbix-web-nginx-mysql:6.4.1-centos
# 创建数据目录
mkdir -p zabbix/data,alertscripts
mkdir -p zabbix/mysql/data,conf
cd zabbix/
# 添加数据库配置
cat > mysql/conf/my.cnf <<eof
[client]
default-character-set = utf8
[mysqld]
character-set-server = utf8
collation-server = utf8_bin
default_storage_engine = InnoDB
port = 3306
datadir = /var/lib/mysql
max_connections=1000
expire_logs_days = 15
relay_log_purge = 1
slow_query_log_file = /var/log/mysql/slow.log
log-error = /var/log/mysql/error.log
log-bin = /var/log/mysql/mysqld-bin
default_authentication_plugin = mysql_native_password
socket = /tmp/mysql.sock
lower_case_table_names = 1
sql_mode = NO_ENGINE_SUBSTITUTION
default-time_zone=\'+8:00\'
eof
# 授权文件
chmod 644 mysql/conf/my.cnf
# 添加compose
cat > docker-compose.yml <<eof
version: \'3.9\'
networks:
zbx:
driver: bridge
services:
zabbix-mysql:
image: mysql:8.0.30
hostname: mysql
container_name: mysql
volumes:
- /etc/localtime:/etc/localtime:ro
- ./mysql/conf/my.cnf:/etc/my.cnf
- ./mysql/data:/var/lib/mysql
restart: always
privileged: true
command: --character-set-server=utf8 --collation-server=utf8_bin
environment:
- MYSQL_ROOT_PASSWORD=Egfi9Jnn9BzJf3Q6
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- TZ=Asia/Shanghai
- LANG=en_US.UTF-8
ports:
- 3306:3306
networks:
- zbx
zabbix-server:
image: zabbix/zabbix-server-mysql:6.4.1-centos
container_name: zabbix-server
volumes:
- /etc/localtime:/etc/localtime:ro
- ./data:/var/lib/zabbix/
- ./alertscripts:/usr/lib/zabbix/alertscripts:ro
restart: always
privileged: true
environment:
- DB_SERVER_HOST=zabbix-mysql
- DB_SERVER_PORT=3306
- MYSQL_ROOT_PASSWORD=Egfi9Jnn9BzJf3Q6
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- ZBX_CACHESIZE=1G
- ZBX_HISTORYCACHESIZE=512M
- ZBX_HISTORYINDEXCACHESIZE=32M
- ZBX_TRENDCACHESIZE=256M
- ZBX_VALUECACHESIZE=256M
- ZBX_STARTPINGERS=64
- ZBX_IPMIPOLLERS=1
- ZBX_ENABLE_SNMP_TRAPS=true
- ZBX_STARTTRAPPERS=1
ports:
- 10051:10051
networks:
- zbx
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:6.4.1-centos
container_name: zabbix-web
volumes:
- /etc/localtime:/etc/localtime:ro
restart: always
privileged: true
environment:
- ZBX_SERVER_NAME=Zabbix 6.0
- ZBX_SERVER_HOST=zabbix-server
- ZBX_SERVER_PORT=10051
- DB_SERVER_HOST=zabbix-mysql
- DB_SERVER_PORT=3306
- MYSQL_ROOT_PASSWORD=Egfi9Jnn9BzJf3Q6
- MYSQL_DATABASE=zabbix
- MYSQL_USER=zabbix
- MYSQL_PASSWORD=zabbix
- PHP_TZ=Asia/Shanghai
ports:
- 80:8080
networks:
- zbx
eof
# 启动服务
docker compose up zabbix-mysql -d && sleep 5
docker compose up -d
- 启动成功后,登陆页面,默认账号是 Admin / zabbix ;
安装zabbix-agent
- zabbix-agent是采集主机指标的客户端,这里使用二进制包的安装方式,多台主机的情况下建议使用ansible去批量安装;
# 获取安装包: https://www.zabbix.com/cn/download
wget -c https://cdn.zabbix.com/zabbix/binaries/stable/6.4/6.4.1/zabbix_agent-6.4.1-linux-3.0-amd64-static.tar.gz
mkdir -p /usr/local/zabbix
tar xf zabbix_agent-6.4.1-linux-3.0-amd64-static.tar.gz -C /usr/local/zabbix
# 添加用户
useradd -s /sbin/nologin -M zabbix
chown zabbix.root -R /usr/local/zabbix
# 添加配置文件
rm -rf /usr/local/zabbix/conf/zabbix_agentd/*
cat > /usr/local/zabbix/conf/zabbix_agentd.conf <<eof
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
LogFileSize=100
ListenPort=10050
StartAgents=2 # 启动的采集线程数
Server=172.16.110.169 # zabbix-server的地址
ServerActive=172.16.110.169 # zabbix-server的地址
HostMetadata=basic # 定义主机元数据,在做自动注册时会用到
Include=/usr/local/zabbix/conf/zabbix_agentd/*.conf
eof
- 添加system脚本管理agent服务;
# 创建脚本
cat > /usr/lib/systemd/system/zabbix-agent.service <<eof
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Type=simple
Restart=on-failure
PIDFile=/usr/local/zabbix/logs/zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/local/zabbix/sbin/zabbix_agentd -c /usr/local/zabbix/conf/zabbix_agentd.conf
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.targe
eof
# 启动服务
systemctl daemon-reload
systemctl enable zabbix-agent --now
自动注册
- 自动注册是由zabbix-agent端来自动的向服务端主动向服务端注册添加,这种方式能够减少服务端的资源消耗;
- 添加匹配条件,注册动作;
- 添加成功后,agent主机会自动向
制作仪表盘
- zabbix的仪表盘默认并没有主机指标的展示,这里自己制作一个展示主机的指标图表;
- 添加一个前排主机面板,把要展示的主机组,指标加上;
- 效果展示;
集成ldap(可选)
- zabbix默认支持ldap的认证集成,为了账号的统一可以配置一下,参考如下;
- 选择认证类型为ldap方式;
- 创建用户;(zabbix要求用户需要属于某个用户组和角色才能正常使用) ;
(文章源于网络,版权归原作者所有,侵删)
雷哥开通了抖音(云计算雷哥)和微信视频号,每周一、五、日,晚21点定期直播,其余时间不定期直播,与大家一起聊聊技术、聊聊行业!
推荐阅读
干货 | PXE+kickstart无人值守批量装机(原理与架构)
干货 | PXE+kickstart无人值守批量装机(实战部署)
ifconfig已淘汰,ip登场
40个简单而有效的Shell脚本,想不起来的时候一看就懂(下)
Linux 网络状态工具 ss 命令详解
这次终于搞明白VLAN技术了
领导让我选监控,Zabbix 和 Prometheus 我该选哪个
Linux的TCP连接数量最大不能超过65535?那服务器是如何应对百万千万的并发的?
zabbix服务器搭建
文章目录
zabbix
1. 环境准备
主机 | ip |
---|---|
zabbix_server | 192.168.44.10 |
agent.cluster.com | 192.168.44.20 |
agent2.cluster.com | 192.168.44.30 |
1.每台机器配置静态ip
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
2.设置主机名
# hostnamectl set-hostname zabbix_server.cluster.com
# hostnamectl set-hostname agent1.cluster.com
# hostnamectl set-hostname agent2.cluster.com
3.时间同步
# systemctl restart ntpd
# systemctl enable ntpd
4.关闭防火墙和SELInux
# systemctl stop firewalld
# systemctl disable firewalld
# iptables -F
# setenforce 0
# vim /etc/selinux/config
4.配置yum源(官方源+zabbix源)
所有机器(zabbix服务器和所有被监控端)加上zabbix源
# vim /etc/yum.repos.d/zabbix.repo
[zabbix]
name=zabbix
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/
enabled=1
gpgcheck=0
[zabbix_deps]
name=zabbix_deps
baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/7/x86_64/
enabled=1
gpgcheck=0
# yum clean all
# yum makecache
2. zabbix服务器安装
1.安装zabbix和mariadb数据库(在服务端上安装)
[root@zabbix_server ~]# yum install zabbix-server-mysql zabbix-web-mysql mariadb-server
- 在mysql(mariadb)里建立存放数据的库并授权,然后导入zabbix所需要用的表和数据
[root@zabbix_server ~]# systemctl restart mariadb.service
[root@zabbix_server ~]# systemctl enable mariadb.service
[root@zabbix_server ~]# mysql
MariaDB [(none)]> create database zabbix charset utf8 collate utf8_bin;
# 给zabbix用户分配zabbix数据库的所有权限
MariaDB [(none)]> grant all on zabbix.* to zabbix@'localhost' identified by 'root';
MariaDB [(none)]> flush privileges;
3.导入表数据
下面这条命令不要乱复制粘贴,如果你版本不一样(或者官网yum源版本升级),4.0.43就要改成对应版本
[root@zabbix_server ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.43/create.sql.gz | mysql -u zabbix -proot zabbix
4.配置zabbix主配置文件,并启动服务,确认端口
找到并确认如下参数(默认值正确的不用打开注释.默认值不对的,要修改正确并打开注释)
[root@zabbix_server ~]# vim /etc/zabbix/zabbix_server.conf
我这里只需要改连接数据的密码和socket
[root@zabbixserver ~]# vim /etc/zabbix/zabbix_server.conf
ListenPort=10051
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=root --这里要对应上面第2步的授权进行修改
DBSocket=/var/lib/mysql/mysql.sock
ListenIP=0.0.0.0
[root@zabbix_server ~]# systemctl restart zabbix-server
[root@zabbix_server ~]# systemctl enable zabbix-server
# ps -aux | grep zabbix
5.配置zabbix的httpd子配置文件,并启动httpd
# 打开第20行注释,并修改成你的时区
[root@zabbix_server ~]# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
[root@zabbix_server ~]# systemctl restart httpd
[root@zabbix_server ~]# systemctl enable httpd
6.使用浏览器访问192.168.44.10/zabbix
,按提示进行安装
按照图示过程安装
1,welcome
2,Check of pre-requisites
3,Configure DB connection
数据库用户名填zabbix,密码填root(前面授权过的)
4,Zabbix server details
在name选项填上你zabbix服务器的IP或者主机名
5,Pre-Installation summary
6,install
完成后
登陆用户名为:Admin
登陆密码为:zabbix
7.右上角点一个类似小人的图标 ——> 语言选 chinese zh-cn ——> 点 update后换成中文件界面
3. 监控本机
1.zabbix_server上安装zabbix-agent
[root@zabbix_server ~]# yum install zabbix-agent
2.启动zabbix-agent服务
[root@zabbix_server ~]# vim /etc/zabbix/zabbix_agentd.conf
下面两个常见选项都为默认值,不用配置
Server=127.0.0.1 --zabbix服务器的IP,这里是本机
ListenPort=10050 --监控服务器连接被监控客户端的端口
[root@zabbix_server ~]# systemctl restart zabbix-agent
[root@zabbix_server ~]# systemctl enable zabbix-agent
[root@zabbix_server ~]# ps -aux | grep zabbix
3.回到web管理界面 ——>点配置——>点主机——>默认看到叫Zabbix server的本机,如果没有启用——>点击并启用
4.点zabbix server里的图形——>任意选一张图后点预览——>看到图上有乱码
5, 解决乱码方法: 换一个字体
上传本地字体到机器 /usr/share/zabbix/assets/fonts/
目录下,先把字体文件随便复制到一个地方,就会变成英文名
[root@zabbix_server assets]# cd /usr/share/zabbix/assets/fonts/
[root@zabbix_server fonts]# mv simsun.ttc simsun.ttf
# 给这个字体文件添加可执行权限
[root@zabbix_server fonts]# chmod 777 simsun.ttf
[root@zabbix_server fonts] # rm -f /etc/alternatives/zabbix-web-font #删除原先默认软链接的字符集
[root@zabbix_server fonts]# ln -s /usr/share/zabbix/assets/fonts/simsun.ttf /etc/alternatives/zabbix-web-font
再修改配置文件
# vim /usr/share/zabbix/include/defines.inc.php
define('ZBX_GRAPH_FONT_NAME', 'simsun');
define('ZBX_FONT_NAME', 'simsun');
成功解决
4. 通过zabbix-agent监控远程机器
1.在agent1上安装zabbix-agent包
[root@agent1 ~]# yum install zabbix-agent -y
2.配置zabbix-agent端的配置文件,启动服务并做成开机自动启动
[root@agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.44.10# 修改成zabbix监控服务器的IP
[root@agent1 ~]# systemctl restart zabbix-agent
[root@agent1 ~]# systemctl enable zabbix-agent
[root@agent1 ~]# ps -aux | grep zabbix
3.回到web管理界面——>点配置——>点主机——>点创建主机
4.为主机添加要监控的模板——>点模板——>点选择——>把 Template OS Linux 前面打勾(其它模板视随意加)——>点选择 ——>点添加 ——>最后点右下角的添加
5. 确认
5. zabbix用户与用户群组
用户(user):zabbix提供多用户管理,不同的用户可以设置不同的权限,不同的语言,不同的报警方式等。
web管理界面——>管理 ——>用户
6. 监控项与应用集
监控项(item): 是从主机收集的数据信息,代表收集数据或监控的一个最小单位。
应用集(applications): 代表多个监控项目合成的组。
7. 为监控项创建图形
web管理界面——>配置——>主机——>图形(选agent1主机的图形——>右上角点创建图形——>选择图形名称,并在下面添加刚才定义好的监控项——>添加后,预览图形
8. 自定义监控项
自带的键值用得还是不习惯,或者有些想监控的却没有相关的键值,我们还可以自定义键值。
下面我们就来创建一个自定义的监控项:
监控agent1上的用户登录数(默认有一个键值叫system.users.num可以实现监控登录用户数,但我这里实验使用的是自己定义的键值)
1, 在被监控端agent1上,随意多打开几个终端,模拟多个登录用户
[root@agent1 ~]# who | wc -l
7
2.在被监控端agent1上,定义用户参数
[root@agent1 ~]# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=loginusers,who | wc -l
说明: loginusers是我自定义的一个键值名称(会在创建监控项时用到),后面的who |wc -l就要被监控的命令
[root@agent1 ~]# systemctl restart zabbix-agent
3, 在zabbix server服务器上先测试是否能得到被监控端agent1的结果
需要zabbix官方yum源来安装zabbix-get命令
[root@zabbix_server fonts]# yum install zabbix-get -y
使用此命令就可以得到被监控端的结果,则测试ok
[root@zabbix_server fonts]# zabbix_get -s 192.168.44.20 -k loginusers
7 --可以确认得到的值确实为agent1的
4.web管理界面——>配置——>主机——>监控项(选agent1的监控项)——>右上角点创建监控项
9. 为自定义监控项创建图形
web管理界面——>配置——>主机——>图形(还是选的agent1的主机的图形)——>右上角点创建图形——>选择图形名称,并在下面添加刚才定义好的监控项——>添加后,预览图形
10.触发器
1, web管理界面——>配置——>主机——>触发器(选远程agent1的触发器)——>右上角点创建触发器
2,创建完触发器后,可以尝试去agent1上再多开几个终端,让其登录用户数达到10个,然后就可以去下面两图显示的地方去查看确认效果了。
以上是关于Zabbix搭建与主机监控(docker-compose方式安装)的主要内容,如果未能解决你的问题,请参考以下文章