saltstack自定义returner之利用fluent+mysql进行结果收集

mysql表结构

自定义returner

fluent采集

客户端配置

服务端配置

背景: salt自带的有很多可选的returner,但是都需要在minion做配置,我感觉这点挺操蛋,而且正好我们平台上在使用fluent做采集,于是就自定义一个reutren,然后用fluent采集,处理,入库

具体操作过程如下:

mysql表结构

CREATE TABLE `fluent`;

CREATE TABLE `salt_returns` (

`id` mediumint(9) NOT NULL AUTO_INCREMENT,

`jid` char(20) DEFAULT NULL,

`host_id` varchar(48) DEFAULT NULL,

`time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

`fun` varchar(30) DEFAULT NULL,

`return` text,

`success` char(5) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `idx_host_id` (`host_id`)

自定义returner

创建默认自定义return的目录,这个目录虽然是默认的,但是默认并没有创建

# mkdir /srv/salt/_returners

自定义returner

主要就是returner(ret) 这个函数的定义

/srv/salt/_returners/lcoal_return.py

#coding=utf8

import json

def __virtual__():

return ‘local_return‘

def returner(ret):

‘‘‘

Return data to the local file

‘‘‘

result_file = ‘/var/local/salt/returner‘

result = file(result_file,‘a+‘)

result.write(str(json.dumps(ret.values()))[1:-1]+‘\n‘)

result.close()

同步到所有节点:

salt ‘*‘ saltutil.sync_returners

执行命令

salt ‘*‘ cmd.run ‘ls /var‘ --return local_return

查看结果:

# cat /var/log/salt/returner

"cmd.run", "20130524052158870765", "cache\ncvs\ndb\nempty\ngames\nlib\nlocal\nlock\nlog\nmail\nnis\nopt\npreserve\nrun\nspool\ntmp\nwww\nyp", "minion1", true

fluent采集

客户端配置

<source>

type tail

path /var/log/salt/returner

pos_file /tmp/return_pos.log

tag os.salt

format /\"(?<fun>.*)\", \"(?<jid>\d+)\", (?<return>.*), \"(?<id>.*)\", (?<success>.*)/

</source>

<match os.*>

type forward

flush_interval 1s

<server>

host {{ pillar[‘host‘] }}

port {{ pillar[‘port‘] }}

</server>

</match>

服务端配置

<source>

type forward

port 24224

bind 0.0.0.0

</source>

<match host.os.salt>

type mysql

host localhost

database fluent

username fluent

password fluent

key_names jid,id,fun,return,success

sql INSERT INTO salt_returns (jid,host_id,fun,`return`,success) VALUES (?,?,?,?,?)

flush_interval 5s

</match>

结果查询:

select * from salt_returns where success is not NULL and fun=‘cmd.run‘ limit 1;

+------+----------------------+-----------------------------------------+---------------------+---------+---------+---------+

| id | jid | host_id | time | fun | return | success |

+------+----------------------+-----------------------------------------+---------------------+---------+---------+---------+

| 2571 | 20130531184127393793 | test | 2013-05-31 10:38:29 | cmd.run | "/root" | true |

+------+----------------------+-----------------------------------------+---------------------+---------+---------+---------+

时间: 2024-10-10 05:24:06

saltstack自定义returner之利用fluent+mysql进行结果收集的相关文章

saltstack部署returner [三]

saltstack部署returner感悟:大家有没有遇到过当salt的minion太多时候,每次查看执行结果都要看很久,而且屏幕都占满了.也不方便查看是否执行成功.这个时候saltsack的returner功能上场了.我们可以把执行的命令结果存入数据库,通过数据库查看就很方便了.不过在安装测试中遇到很多问题.这里要感谢成都运维群的运维@安,他帮我查到为什么不能写入数据库的原因,在这里感谢他.saltstack执行结果写入到mysql数据库配置  1.建数据库及表  #假设我们的数据库服务器为1

自定义View 之利用ViewPager 实现画廊效果(滑动放大缩小)

自定义View 之利用ViewPager 实现画廊效果(滑动放大缩小) 转载请标明出处: http://blog.csdn.net/lisdye2/article/details/52315008 本文出自:[Alex_MaHao的博客] 项目中的源码已经共享到github,有需要者请移步[Alex_MaHao的github] 基本介绍 画廊在很多的App设计中都有,如下图所示: 该例子是我没事的时候写的一个小项目,具体源码地址请访问https://github.com/AlexSmille/Y

CentOS环境利用mariadb(mysql)数据库使用golang实现分布式系统的Leader选举

一.准备工作 1.下载安装vmware,步骤省略. 2.下载CentOS系统ios包:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1611.iso 3.下载安装Xshell5,步骤省略. 4.下载安装git,步骤省略. 5.mariadb用于golang的api:https://github.com/go-sql-driver/mysql 6.vmware中依次点击"创建新的虚拟机&q

saltstack之Return data to a mysql server

本文章是参照官网和网上一些资料.多数以官网为主. 首先是需要安装mysql数据库,我这里已经安装好了一个mysql数据库的分支叫MariaDB数据库,我就使用现成的.听说操作和mysql的操作一样.其实我就是想试试这个数据库·· 依赖条件:所有minion端要安装 . MySQL-python maturity: mature depends: python-mysqldb platform: all PS:内容有点乱,写作水平也有限,不过这都是我的操作过程,用来记录一番,同时希望能给大家带来参

利用rsyslog+mysql+loganalyzer部署日志服务器

rsyslog简介: 在CentOS上rsyslog服务专门负责记录系统日志信息(更早的版本系统使用的是syslog,rsyslog是syslog的下一代版本),rsyslog有三部分组成:syslogd,klogd,logrotate syslogd主要记录系统与网络等服务的日志信息: klogd主要记录内核产生的各项信息: logrotate主要用来对日志文件进行切割循环记录: mysql简介: MySQL是一个关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Re

利用PHP+MySql+Ajax操作实现年月日联动功能

PHP+MySql+Ajax实现年月日的三级联动 <!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>        <script src="bootstrap/js/jquery-1.11.2.min.js"></script>        <s

Entity Framework 6 自定义连接字符串ConnectionString连接MySQL

在开始介绍之前,首先来看看官方对Entity Framework的解释:Entity Framework (EF) is an object-relational mapper that enables .NET developers to work with relational data using domain-specific objects. It eliminates the need for most of the data-access code that developers

Java 自定义注解及利用反射读取注解

一.自定义注解 元注解: @interface注解: 定义注解接口 @Target注解: 用于约束被描述的注解的使用范围,当被描述的注解超出使用范围则编译失败.如:ElementType.METHOD,ElementType.TYPE: @Retention 注解:用于约束被定义注解的作用范围,作用范围有三个: 1,.RetentionPolicy.SOURCE:作用范围是源码,作用于Java文件中,当执行javac时去除该注解. 2.RetentionPolicy.CLASS:作用范围是二进制

利用PHP/MYSQL实现的简易微型博客(转)

数据库:ly_php_base 表:ly_micro_blog(仅仅有一个表)字段:id,title,date,content,hits 文件: 文件 描述 default.php 默认主页.显示博文与操作连接. add.php 添加新博文的功能模块. edit.php 对已经添加过的博文进行修改操作. delete.php 删除博文模块. view.php 显示博文的详细信息(标题|添加日期|浏览次数|内容). conn.php 链接数据库操作.在其它文件中被引用. conn.php <?ph