Saltstack一键部署zabbix监控平台


一.saltstack简介

saltstack中文文档:http://docs.saltstack.cn/topics/installation/rhel.html

1.1 saltstack简介

SaltStack可以在成千万台服务器上做到批量执行命令根据不同业务进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等.

  • saltstack是 一个配置管理系统,python语言开发的,能够维护预定义状态的远程节点,预定义的文件很小(控制一万台机器可能也就100M左右) 。
  • saltstack是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据 。
  • saltstack是运维人员提高工作效率、规范业务配置与操作的利器 。
  • Salt的核心功能
  • 使命令发送到远程系统是并行的而不是串行的
  • 使用安全加密的协议
  • 使用最小最快的网络载荷,使用ZMQ:消息队列
  • 提供简单的编程接口

Salt同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性。

1.2saltstack通信机制

1.3.saltstack工作机制

  • SaltStack 采用 C/S模式,即master/minion,minion与master通信方式是ZeroMQ消息队列,默认监听4505端口。
  • minion上线后先与master端联系,把自己的pub key发过去,这时master端通过salt-key -L命令就会看到minion的key,接受该minion-key后,也就是master与minion已经互信
  • 下图是SaltStack发布和订阅的结构,每个节点上安装minion端,通过消息队列传输给master;master发布数据时,minion节点都能接收到数据。
  • 4506端口做请求响应的,当客户端请求响应后,server通过4506得到反馈
    在这里插入图片描述Salt Master运行的第二个网络服务就是ZeroMQ REP系统,默认监听4506端口。

在这里插入图片描述

Puppet、Chef、Ansible、Salt对比
在这里插入图片描述

二.saltstack部署

实验环境:三台虚拟机server1(master端)、server2(minion端)、server3(minion端)。

1.安装和启动

  • saltstack是一个配置管理系统,能够维护预定义状态的远程节点。是一个分布式远程执行系统,用来在远程结点上执行命令和查询数据。并行的。
  • 运维的核心是降低成本和提高效率
  • 准备三个纯净的虚拟机server1,2,3;server1是master,server2,3是minion
  • 包括安装、配置、管理
1)准备yum源
[root@server11 yum.repos.d]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-3000.el7.noarch.rpm
#阿里云镜像:https://developer.aliyun.com/mirror/saltstack?spm=a2c6h.13651102.0.0.3e221b118vroAq
[root@server11 yum.repos.d]# vim salt-3000.repo #改成阿里云的源http://mirrors.aliyun.com/saltstack
[salt-3000]
name=SaltStack 3000 Release Channel for Python 2 RHEL/Centos $releasever
baseurl=http://mirrors.aliyun.com/saltstack/yum/redhat/7/$basearch/3000
failovermethod=priority
enabled=1
gpgcheck=0
2)master和minion安装包
[root@server11 yum.repos.d]# yum install -y salt-master.noarch
[root@server11 yum.repos.d]# systemctl enable --now  salt-master
[root@server12 salt]# yum install -y salt-minion.noarch
[root@server12 ~]# cd /etc/salt/
[root@server12 salt]# ls
[root@server12 salt]# vim minion
改:
master:192.168.100.241 #都要顶格写
[root@server12 salt]# systemctl enable --now salt-minion.service 

%server13也弄minion
[root@server13 salt]# yum install -y salt-minion.noarch
[root@server13 ~]# cd /etc/salt/
[root@server13 salt]# ls
[root@server13 salt]# vim minion
改:
master:192.168.100.241 #都要顶格写
[root@server13 salt]# systemctl enable --now salt-minion.service 

3)master端执行命令允许minion连接

master端有安全认证,需要同意连接

[root@server11 yum.repos.d]# salt-key -L
Accepted Keys:
server12
server13
Denied Keys:
Unaccepted Keys:
Rejected Keys:
[root@server11 yum.repos.d]# salt-key -A#a是指定节点,A是指定所有
The following keys are going to be accepted:
Unaccepted Keys:
server12 server13
Proceed? [n/Y] y
Key for minion server12 server13 accepted.
4)master端测试与minion端的连接:
[root@server11 yum.repos.d]# yum install lsof -y
[root@server11 yum.repos.d]# lsof -i :4505
[root@server11 yum.repos.d]# salt '*' test.ping#*是指—L列出来的所有主机,检测一下是否有响应
[root@server11 yum.repos.d]# yum install python-setproctitle.x86_64 -y #安装后重起salt-master
[root@server11 yum.repos.d]# systemctl restart salt-master.service
[root@server12 salt]# pwd
/etc/salt
[root@server12 salt]# ls#在启动一个minion端时会产生一个minion_id文件,来记录主机名
cloud         cloud.deploy.d  cloud.profiles.d   master    minion    minion_id  proxy    roster
cloud.conf.d  cloud.maps.d    cloud.providers.d  master.d  minion.d  pki        proxy.d
[root@server12 salt]# cat minion_id #如果要改主机名。则改完主机名后要删掉该文件,重新生成
server12

saltstack的工作原理: 每个文件都有自己的md5sum(md5码)。saltstack通过发布订阅系统,将sls文件推送到远程主机的本地(saltstack有自己的缓存目录/var/cache/salt),在本地执行sls文件。

三.Saltstack一键部署zabbix监控平台

  • 上面已经部署好saltstack环境,下面基于saltstack环境部署zabbix监控

  • 使用Saltstack部署zabbix,主要包括zabbix-server、zabbix-agent、zabbix-web以及mysql。其中,zabbix的版本使用4.0,使用本地自己搭建的zabbix仓库,加快部署效率。

  • server1 作为saltstack服务器,server2用来做zabbix-server(数据库mariadb), server3用来做zabbix-agent

1)部署zabbix-server

物理机搭建的zabbix仓库

[root@zhenji ~# cd /var/www/html/zabbix
[root@zhenji zabbix]# ls
apache-tomcat-8.5.24.tar.gz
fping-3.10-1.el7.x86_64.rpm
jdk-8u121-linux-x64.rpm
oneitsm_zabbix_release-1.2.0.tar.gz
percona-zabbix-templates-1.1.8-1.noarch.rpm
php-5.4.16-46.el7.x86_64.rpm
php-bcmath-5.4.16-46.el7.x86_64.rpm
php-cli-5.4.16-46.el7.x86_64.rpm
php-common-5.4.16-46.el7.x86_64.rpm
php-gd-5.4.16-46.el7.x86_64.rpm
php-ldap-5.4.16-46.el7.x86_64.rpm
php-mbstring-5.4.16-46.el7.x86_64.rpm
php-mysql-5.4.16-46.el7.x86_64.rpm
php-pdo-5.4.16-46.el7.x86_64.rpm
php-xml-5.4.16-46.el7.x86_64.rpm
repodata
zabbix-agent-4.4.1-1.el7.x86_64.rpm
zabbix-get-4.4.1-1.el7.x86_64.rpm
zabbix-java-gateway-4.4.1-1.el7.x86_64.rpm
zabbix-proxy-mysql-4.4.1-1.el7.x86_64.rpm
zabbix-sender-4.4.1-1.el7.x86_64.rpm
zabbix-server-mysql-4.4.1-1.el7.x86_64.rpm
zabbix-web-4.4.1-1.el7.noarch.rpm
zabbix-web-mysql-4.4.1-1.el7.noarch.rpm
[root@foundation8 4.4]# pwd
/mnt/zabbix/4.4
[root@foundation8 4.4]# 
[root@server11 ~]#  vim /etc/yum.repo.d/zabbix.repo
[zabbix]
name=zabbix
baseurl=http://192.168.100.250/zabbix/
enanled=1
gpgcheck=0
[root@server11 ~]# cd /srv/
[root@server11 salt]# mkdir zabbix-server
[root@server11 zabbix-server]# vim init.sls
zabbix-server:
  pkgrepo.managed:
    - name: zabbix
    - humanname: zabbix 4.0
    - baseurl: http://192.168.100.141/zabbix/4.0##真机里先下载好zabbix依赖
    - gpgcheck: 0  
  pkg.installed:
    - pkgs:
      - zabbix-server-mysql
      - zabbix-agent
[root@server11 mysql]# salt server12 state.sls zabbix-server
2)zabbix数据库

配置mysq文件

[root@server11 salt]]# mkdir -p mysql/files
[root@server11 mysql]# cd files/
[root@server11 mysql]# scp server13:/etc/my.cnf .
[root@server11 mysql]# vim files/my.cnf 
添加
log-bin=mysql-bin
character-set-server=utf8

[root@server11 mysql]# salt server13 state.sls mysql
[root@server11 mysql]# vim init.sls 
mysql-install:
  pkg.installed:
    - pkgs:
      - mariadb-server
      - MySQL-python
  file.managed:
    - name: /etc/my.cnf
    - source: salt://mysql/files/my.cnf
  service.running:
    - name: mariadb
    - enable: true
    - watch:
      - file: mysql-install

mysql-config:
  mysql_database.present:
    - name: zabbix
  mysql_user.present:
    - name: zabbix
    - host: '%'
    - password: "westos"
[root@server11 mysql]# salt server13 state.sls mysql
[root@server12 yum.repos.d]# cd /usr/share/doc/zabbix-server-mysql-4.0.5/
[root@server12 zabbix-server-mysql-4.0.5]# ls
AUTHORS  ChangeLog  COPYING  create.sql.gz  NEWS  README
[root@server12 zabbix-server-mysql-4.0.5]# scp create.sql.gz server11:/srv/salt/mysql/files
[root@server11 mysql]# cd files/
[root@server11 files]# ls
create.sql.gz  my.cnf
[root@server11 files]# gunzip create.sql.gz 
[root@server11 files]# ls
create.sql  my.cnf

[root@server11 mysql]# vim init.sls 
[root@server11 mysql]# cat init.sls 
mysql-install:
  pkg.installed:
    - pkgs:
      - mariadb-server
      - MySQL-python
  file.managed:
    - name: /etc/my.cnf
    - source: salt://mysql/files/my.cnf
  service.running:
    - name: mariadb
    - enable: true
    - watch:
      - file: mysql-install

##创建数据库、用户、授权、导入数据
mysql-config:
  mysql_database.present:
    - name: zabbix
  mysql_user.present:
    - name: zabbix
    - host: '%'
    - password: "westos"
  mysql_grants.present:
    - grant: all privileges##授权
    - database: zabbix.*
    - user: zabbix
    - host: '%'
  file.managed:
    - name: /mnt/create.sql
    - source: salt://mysql/files/create.sql
  cmd.run:
    - name: mysql zabbix < /mnt/create.sql && touch /mnt/zabbix.lock
    - creates: /mnt/zabbix.lock
[root@server11 mysql]# salt server13 state.sls mysql
3)配置zabbix-server文件
[root@server11 files]# vim /srv/salt/zabbix-server/init.sls 
zabbix-server:
  pkgrepo.managed:
    - name: zabbix
    - humanname: zabbix 4.0
    - baseurl: http://192.168.100.141/zabbix/4.0
    - gpgcheck: 0
  pkg.installed:
    - pkgs:
      - zabbix-server-mysql
      - zabbix-agent
      - zabbix-web-mysql
  file.managed:
    - name: /etc/zabbix/zabbix_server.conf
    - source: salt://zabbix-server/files/zabbix_server.conf
  service.running:
    - name: zabbix-server
    - enable: true
    - watch:
      - file: zabbix-server

zabbix-agent:
   service.running
  
[root@server11 files]# cd /srv/salt/zabbix-server/
[root@server11 zabbix-server]# mkdir files
[root@server11 zabbix-server]# cd files/

[root@server11 files]# scp server12:/etc/zabbix/zabbix_server.conf .
[root@server11 files]# vim zabbix_server.conf 
#更改:
DBHost=192.168.100.243
DBPassword=westos
[root@server11 files]# salt server12 state.sls zabbix-server
[root@server12 ~]# yum install mariadb.x86_64 -y
[root@server12 conf.d]# cd /etc/httpd/conf.d/
[root@server12 conf.d]# scp zabbix.conf server11:/srv/salt/zabbix-server/files

[root@server11 zabbix-server]# vim files/zabbix.conf 
        php_value date.timezone Asis/Shanghai

在这里插入图片描述

[root@server11 zabbix-server]# vim init.sls 
[root@server11 zabbix-server]# cat init.sls 
#添加:
zabbix-web:
  file.managed:
    - name: /etc/httpd/conf.d/zabbix.conf
    - source: salt://zabbix-server/files/zabbix.conf
  service.running:
    - name: httpd
    - enable: true
    - watch:
      - file: zabbix-web

在这里插入图片描述

[root@server11 zabbix-server]# salt server12 state.sls zabbix-server
4)网页访问192.168.100.242/zabbix,把初始化做完,然后移到server11中

在这里插入图片描述在这里插入图片描述在这里插入图片描述

Database host:192.168.100.243
[root@server12 conf.d]# cd /etc/zabbix/web/
[root@server12 web]# ls
maintenance.inc.php  zabbix.conf.php
[root@server12 web]# mv zabbix.conf.php /mnt/
[root@server12 web]# scp /mnt/zabbix.conf.php server11:/src/salt/zabbix-server/files

[root@server11 files]# cd ..
[root@server11 zabbix-server]# vim init.sls 
[root@server11 zabbix-server]# cat init.sls 
#添加
/etc/zabbix/web/zabbix.conf.php:
  file.managed:
    - source: salt://zabbix-server/files/zabbix.conf.php

[root@server11 zabbix-server]# salt server12 state.sls zabbix-server

在这里插入图片描述

5)高级推
[root@server11 zabbix-server]# vim /srv/salt/top.sls 
[root@server11 zabbix-server]# cat /srv/salt/top.sls
base:
  'roles:apache':
    - match: grain
    - apache
    - keepalived
    - zabbix-server
  'roles:nginx':
    - match: grain
    - nginx
    - keepalived
    - mysql

[root@server11 zabbix-server]# salt '*' state.highstate

四.该项目相关问题

1.为什么选择zabbix
  • 开源:社区支持,模板分享
  • 免费:无商业版和社区版之分,无license授权费用
  • 全栈级:从上层应用,到操作系统,以及底层硬件都可实现统一监控;支持Agent,WMI,SNMP,IPMI,JMX等监控方式
  • 可扩展:用户可自定义监控项、丰富的API接口可被其他平台调用
  • 分布式:通过Proxy以支持跨区域、跨地域的分布式监控
  • 企业级:每秒可以收集上万个指标,未来的4.0版本在极限的情况下每秒可以收集40万个指标。
  • Zabbix的一些特性,也大大提升了系统监控的效率。
2.mysql数据库监控是怎么做的?
  1. 创建监控用户
  2. 编写监控脚本,取出需要监控资源的状态值
#!/bin/sh
#Function:check mysql master-slave replication is ok or not ok.

declare -a  slave_is  
slave_is=($(/usr/local/mysql/bin/mysql -h 127.0.0.1  -umpm -p'mpm' -e "show slave status \G"|grep Running |awk '{print $2}'))  
if [ "${slave_is[0]}" = "Yes" -a "${slave_is[1]}" = "Yes" ]       
        then      
                echo '2'   #代表正常两个yes     
        else      
                echo '-1'  #代表不正常      
fi

执行以上脚本,如果主从复制正常,返回状态0,否则返回状态2。

  1. Agentd配置文件中声明key
  2. 重启agentd服务并进行测试,然后到zabbix server上看看能否获取到key的监控值:
  3. zabbix web端添加监控内容:
    1)创建监控项(item)
    2)创建触发器
    3)查看监控效果:这时可以分别停止和启动主从复制查看具体的监控效果。
3.zabbix监控项怎么定义,如何写数据库的监控监本?
4.ansible和saltstack的区别

在这里插入图片描述

zabbix监控数据库、proxy配置及报警

参考:https://blog.csdn.net/qiao_qing/article/details/112828190?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162684899416780264079320%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=162684899416780264079320&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_v2~rank_v29-5-112828190.pc_v2_rank_blog_default&utm_term=zabbix&spm=1018.2226.3001.4450添加链接描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值