热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SaltStack返回值存储

文章目录1.概述2.return组件2.1return工作流程2.2return重定向至mysql3.jobcache组件3.1jobcache重定向至mysql3.2job管理1

文章目录

  • 1. 概述
  • 2. return组件
    • 2.1 return工作流程
    • 2.2 return重定向至mysql
  • 3. job cache组件
    • 3.1 job cache重定向至mysql
    • 3.2 job管理


1. 概述



默认情况下,发送给 minions 的命令的返回值将返回给 master。

通过使用salt定向器,可以将结果数据重定向到外部数据存储区,以便进行分析和归档。

returner接口允许返回数据被发送到任何可以接收数据的系统。这意味着返回的数据可以发送到Redis服务器,MongoDB服务器,MySQL服务器,或任何系统。

重定向返回值的组件:



  • return

  • job_cache


2. return组件



return组件支持minion端执行命令后将执行结果返回给某应用程序进行保存

return组件支持的对结果进行的存储方式有多种,如syslog, mysql, redis, mongodb等

可通过如下指令查看returners支持的存储方式:

[root@node01 ~]# salt '*' sys.list_returners
node02:- carbon- couchdb- elasticsearch- etcd- highstate- local- local_cache- mattermost- multi_returner- pushover- rawfile_json- slack- slack_webhook- smtp- splunk- sqlite3- syslog- telegram

2.1 return工作流程

return是在Master端触发任务,然后Minion接受处理任务后直接与return存储服务器建立连接,然后把数据return存到存储服务器。

关于这点一定要注意,因为此过程都是Minion端操作存储服务器,所以要确保Minion端的配置跟依赖包是正确的,这意味着我们将必须在每个Minion上安装指定的return方式依赖包,假如使用Mysql作为return存储方式,那么我们将在每台Minion上安装 MySQL-python 模块。


2.2 return重定向至mysql

环境:


























主机名IP
masternode01172.16.78.125
minionnode02172.16.78.128
mysqlnode03172.16.78.129

在minion上安装MySQL-python模块

[root@node01 ~]# salt '*' pkg.install MySQL-python
node02:----------MySQL-python:----------new:1.2.5-1.el7old:

部署一台mysql服务器用作存储服务器:

[root@node03 ~]# yum -y install mariadb-server
[root@node03 ~]# systemctl enable --now mariadb//创建数据库和表结构
[root@node03 ~]# mysql
MariaDB [(none)]> CREATE DATABASE `salt`DEFAULT CHARACTER SET utf8DEFAULT COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> USE `salt`;
Database changedMariaDB [salt]> CREATE TABLE `jids` (`jid` varchar(255) NOT NULL,`load` mediumtext NOT NULL,UNIQUE KEY `jid` (`jid`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.01 sec)MariaDB [salt]> CREATE TABLE `salt_returns` (`fun` varchar(50) NOT NULL,`jid` varchar(255) NOT NULL,`return` mediumtext NOT NULL,`id` varchar(255) NOT NULL,`success` varchar(10) NOT NULL,`full_ret` mediumtext NOT NULL,`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,KEY `id` (`id`),KEY `jid` (`jid`),KEY `fun` (`fun`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.00 sec)MariaDB [salt]> CREATE TABLE `salt_events` (`id` BIGINT NOT NULL AUTO_INCREMENT,`tag` varchar(255) NOT NULL,`data` mediumtext NOT NULL,`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,`master_id` varchar(255) NOT NULL,PRIMARY KEY (`id`),KEY `tag` (`tag`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.01 sec)MariaDB [salt]> show tables;
+----------------+
| Tables_in_salt |
+----------------+
| jids |
| salt_events |
| salt_returns |
+----------------+
3 rows in set (0.00 sec)//授权访问
MariaDB [salt]> grant all on salt.* to salt@'%' identified by 'salt';
Query OK, 0 rows affected (0.00 sec)MariaDB [salt]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

配置minion:

[root@node02 ~]# vim /etc/salt/minion
mysql.host: '172.16.78.129'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
[root@node02 ~]# systemctl restart salt-minion

在master上测试存储到mysql中,并在数据库中查看

[root@node01 ~]# salt '*' test.ping --return mysql
node02:TrueMariaDB [salt]> select * from salt_returns\G
*************************** 1. row ***************************fun: test.pingjid: 20200822090413404092return: trueid: node02success: 1full_ret: {"fun_args": [], "jid": "20200822090413404092", "return": true, "retcode": 0, "success": true, "fun": "test.ping", "id": "node02"}
alter_time: 2020-08-23 01:02:28

3. job cache组件



return时是由Minion直接与存储服务器进行交互,因此需要在每台Minion上安装指定的存储方式的模块,
当Minion很多的时候,部署起来就特别麻烦

那么我们能否直接在Master上就把返回的结果给存储到存储服务器呢?

job cache解决了这个问题 。job cache是当Minion将结果返回给Master后,由Master将结果给缓存在本地,然后将缓存的结果给存储到指定的存储服务器


3.1 job cache重定向至mysql

环境:


























主机名IP
masternode01172.16.78.125
minionnode02172.16.78.128
mysqlnode03172.16.78.129

开启master端的master_job_cache:

[root@node01 ~]# vim /etc/salt/master
master_job_cache: mysql
mysql.host: '172.16.78.129'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
[root@node01 ~]# systemctl restart salt-master

在数据库服务器中清空表内容:

[root@node03 ~]# mysql
MariaDB [salt]> delete from salt.salt_returns;
Query OK, 2 rows affected (0.00 sec)
MariaDB [salt]> select * from salt.salt_returns\G
Empty set (0.00 sec)

在master上再次测试能否存储至数据库:

[root@node01 ~]# salt '*' test.ping
node02:TrueMariaDB [salt]> select * from salt_returns\G
*************************** 1. row ***************************fun: test.pingjid: 20200822090413404092return: trueid: node02success: 1full_ret: {"fun_args": [], "jid": "20200822090413404092", "return": true, "retcode": 0, "success": true, "fun": "test.ping", "id": "node02"}
alter_time: 2020-08-23 01:02:28

3.2 job管理

获取任务的jid

[root@node01 ~]# salt '*' test.ping -v
Executing job with jid 20200822131258343023
-------------------------------------------node02:True

通过jid获取此任务的返回结果

[root@node01 ~]# salt-run jobs.lookup_jid 20200822131258343023
node02:True

推荐阅读
  • 2016年8月29日当初想的太简单~~~哎写在前面从3月份开始各大互联网类、游戏类、软件类等公司开始招暑期实习,9月份正式招聘,面临众多的工作选择和技术方向,我们不免有些眼花缭乱啊 ... [详细]
  • 软测管理工具实践04
    一.今日任务——安装完成QC9.0进过几天的安装,终于把QC9.0成功的安装在了自己win7系统的电脑上。其中遇到的困难很多,首先是QC的版本问题&#x ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 0x00端口渗透端口扫描端口的指纹信息(版本信息)端口所对应运行的服务常见的默认端口号.尝试弱口令端口爆破hydra端口弱口令NTScanHs ... [详细]
  • c# java socketn 字节流_C#Socket编程详解(一)TCP与UDP简介
    一、TCP与UDP(转载)1、TCP1.1定义TCP(TransmissionControlProtocol)传输控制协议。是一种可靠的、面向连接的协议(eg:打电话)、传输效率低 ... [详细]
  • 分享西西弗斯自动求职系统【PHP】
    后端开发|php教程后端开发-php教程做这个系统的背景是前段时间帮女朋友找工作,大家也许都有过这样的感受,发出一份份简历都石沉大海,为什么呢?经过测试,我发现是因为邮件的阅读率并 ... [详细]
  • 适合小型网络环境的免费网络管理软件Intermapper
    InterMapper网络管理软件可支持监测5台以内的网络设备,特别适合安装使用在小型网络环境,可以实时了解网络运行状态和网络拓扑,支持多 ... [详细]
  • 一、Zabbix简介1.1Zabbix简介  官方网站:http:www.zabbix.com。Zabbix通过CS模式采集数据,通过BS模式在web端展示和配置。1.2Za ... [详细]
  • 截图html通过seleniun的webdriver打开html文件并截图1importos2importshutil3fromseleniumimportwebdriver4im ... [详细]
  • 企业邮件服务器怎么搭建,自建邮件服务器教程
    随着企业信息化进程的加快,企业邮件的使用也越来越多,不管是外网还是在企业内部网络,员工都经常使用企业邮件来处理日常的工作。而越来越多的企业和单位,也开始考虑自己搭建邮件服务器,以加 ... [详细]
  • 群发邮件_python自动群发邮件
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了python---自动群发邮件相关的知识,希望对你有一定的参考价值。生活中我们经常发送邮件,那么我们能不能用Python ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • es的分布式原理?es是如何实现分布式的?
    Elasticsearch设计的理念是分布式搜索引擎,底层其实是基于lucene。核心思 ... [详细]
author-avatar
陈苏女士
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有