RETURNERS
기본적으로 명령은 소금 부하에 값이 소금 마스터로 돌아갑니다 돌려 보내진다, 그러나 우리는 또한 많은 다른 방법이 데이터의 결과를 사용할 수 있습니다.
소금 기 returner을 사용하여 얻어진 데이터는 추가적인 분석 및 보관을 위해 외부 데이터 스토리지 서비스로 리디렉션 될 수있다.
자신의 구성 소금 부하로부터 추출 된 정보 및 프로그램이 시작될 때 구성 정보를로드하기위한 유일한 지원 Returners.
Returners 인터페이스는 데이터를 수신 할 수있는 시스템으로 데이터를 반환 할 수 있습니다. 이 서버 레디 스, MongoDB를 서버, MySQL 서버, 또는 시스템에 데이터를 반환 할 수 있음을 의미합니다.
더 returners는 참조 내장 returners의 전체 목록
RETURNERS를 사용
모든 소금 명령을 다시 마스터 결과 데이터를 명령 할 것이다. 지정 returners 데이터는 기 returner로 지정된 인터페이스로 전송됩니다합니다.
당신이 명령을 호출 할 때 사용하는 returners을 지정합니다 :
salt '*' test.version --return redis_return
이 명령은 redis_return의 기 returner에 결과 데이터를 저장합니다.
당신은 동시에 여러 returners를 지정할 수 있습니다 :
salt '*' test.version --return mongo_return,redis_return,cassandra_return
이 경우, 세 개의 통화 returners 및 명령 데이터를 전송하는 이들 test.version.
기 returner를 기록하기
Returners 솔트는 소금 마스터 이외의 대상에 재 결과 데이터를 지원하는 모듈이다.
RETURNERS 쓰기 쉽게!
소금 기 returner은 간단 작성합니다.
기 returner 파이썬 적어도 하나 개 포함하는 모듈로서 return
기능한다. 다른 옵션 기능은 사용 지원하기 위해 포함 할 수있다 master_job_cache를 , 외부 스토리지 시스템 작업 결과 및 이벤트 Returners의 기능을합니다.
기 returner
returner
기능은 하나의 매개 변수에 동의해야합니다. 매개 변수는 미니언 함수의 반환 데이터를 호출이 포함되어 있습니다. 당신이 함수 미니언을 호출하는 경우 test.version
, 매개 변수의 값은 사전 유형이 될 것입니다. 소금 마스터의 사례는 사전 형식 매개 변수를 얻기 위해 다음 명령을 실행합니다 :
salt-call --local --metadata test.version --out=pprint
import redis
import salt.utils.json
def returner(ret):
'''
Return information to a redis server
'''
# Get a redis connection
serv = redis.Redis(
host='redis-serv.example.com',
port=6379,
db='0')
serv.sadd("%(id)s:jobs" % ret, ret['jid'])
serv.set("%(jid)s:%(id)s" % ret, salt.utils.json.dumps(ret['return']))
serv.sadd('jobs', ret['jid'])
serv.sadd(ret['jid'], ret['id'])
기 returner는 서버로 데이터를 전송하는 레디 스 위에 배치하고, 레디 스의 JSON로 데이터 시퀀스를 기록한다.
커스텀 기 returner 모듈을 사용하여
지정된 마스터 구성 파일에 사용자 정의 returners file_roots
에서 _returners/
디렉토리.
다음 함수를 호출 할 때, 사용자 정의 returners 작업을 배포 트리거 :
모든 returners이 같은 정의에 기본 이름 소금 미니언에 동기화되어 returners
, returners은 기본적으로 같은 이름으로 대체됩니다.
기 returner 이름 지정
기 returner의 기본 이름은 파일 이름이 있습니다 (즉, 귀환 푸 될 foo.py),하지만 당신은 사용할 수있는 가상 의 이름을 커버하는 기능. 좋은 예가 될 수있다 레디 스는 기 returner 발견하고는 이름이 redis_return.py
단순히으로, redis
이름을로드 :
try:
import redis
HAS_REDIS = True
except ImportError:
HAS_REDIS = False
__virtualname__ = 'redis'
def __virtual__():
if not HAS_REDIS:
return False
return __virtualname__
MASTER JOB 캐시 지원
master_job_cache는 , 외부 시스템에서 작업의 결과를 저장 하고, 이벤트 Returners . 소금 master_job_cache
기능을 사용할 기본 데이터 작업 캐시 플러그 구성 요소로 returners 소금을 할 수 있습니다. 이 기능을 지원하기 위해, 기 returner 모듈은 다음과 같은 기능을 기능을 구현해야합니다 :
주 : 다음의 예는 코드 부분이 cassandra_cql의 기 returner에서 얻어진 사용.
prep_jid
pass_jid하지 않는 한, 그렇지 않으면 작업 ID (JID)가 충돌하지 않는지 확인하십시오.
nocache
캐시 데이터를 반환할지 여부를 나타내는 선택적 부울 값입니다. pass_jid
발신자 제공 JID인가, 무조건 반환해야합니다.
def prep_jid(nocache, passed_jid=None): # pylint: disable=unused-argument
'''
Do any work necessary to prepare a JID, including sending a custom id
'''
return passed_jid if passed_jid is not None else salt.utils.jid.gen_jid()
save_load
작업 정보를 저장합니다. 세대, 작업에 대한 고유 식별자로 볼 수 있습니다. 예를 들어, 그것은 데이터베이스 기본 / 고유 키로 사용할 수 있습니다. 그것은 소금 마스터의 미니언에 의해 부하에 반환됩니다. 이것은 어떤 작업에 대한 목표 부하 노드입니다. 다음 코드 예제 것이다 저장된 문자열로 데이터를 변환 테이블.jid
prep_jid
jid
load
minions
load
salt.jids
import salt.utils.json
def save_load(jid, load, minions=None):
'''
Save the load to the specified jid id
'''
query = '''INSERT INTO salt.jids (
jid, load
) VALUES (
'{0}', '{1}'
);'''.format(jid, salt.utils.json.dumps(load))
# cassandra_cql.cql_query may raise a CommandExecutionError
try:
__salt__['cassandra_cql.cql_query'](query)
except CommandExecutionError:
log.critical('Could not save load in jids table.')
raise
except Exception as e:
log.critical(
'Unexpected error while inserting into jids: {0}'.format(e)
)
raise
get_load
매개 변수가 작업 ID (JID)이어야 프로세스가 사용하는 반환 save_load
쿼리가 빈 사전에 반환하지 않는 경우, 저장된 연산 결과 데이터를.
def get_load(jid):
'''
Return the load data that marks a specified jid
'''
query = '''SELECT load FROM salt.jids WHERE jid = '{0}';'''.format(jid)
ret = {}
# cassandra_cql.cql_query may raise a CommandExecutionError
try:
data = __salt__['cassandra_cql.cql_query'](query)
if data:
load = data[0].get('load')
if load:
ret = json.loads(load)
except CommandExecutionError:
log.critical('Could not get load from jids table.')
raise
except Exception as e:
log.critical('''Unexpected error while getting load from
jids: {0}'''.format(str(e)))
raise
return ret
외부 작업 캐시 지원
사용하여 the master_job_cache
이 확장 모듈을 채용 서비스에 외부 기억 장치로 데이터를 초래할 수있다. 당신이 기 returner 지원 연결하려면 External Job Cache
위 달성의 필요성에 더하여, 기능을 Master Job Cache support
세 가지 기능에서을뿐만 아니라 추가의 필요성은 다음과 같은 네 가지 기능을 구현 :
get_jid
양식 사전에 작업 ID를 지정 연산 결과 데이터를 반환합니다.
예를 들면 :
{
"local": {
"master_minion": {
"fun_args": [],
"jid": "20150330121011408195",
"return": "2018.3.4",
"retcode": 0,
"success": true,
"cmd": "_return",
"_stamp": "2015-03-30T12:10:12.708663",
"fun": "test.version",
"id": "master_minion"
}
}
}
get_fun
부하는 소금 마지막 함수 호출을 사전을 같이 주어진 기능으로 돌아갑니다.
견본:
{
"local": {
"minion1": "test.version",
"minion3": "test.version",
"minion2": "test.version"
}
}
**get_jids**
返回一个包含了所有job ids的列表。
Sample:
```json
{
"local": [
"20150330121011408195",
"20150330195922139916"
]
}
get_minions
부하의리스트를 돌려줍니다.
견본:
{
"local": [
"minion3",
"minion2",
"minion1",
"master_minion"
]
}
당신은 추가 설명이 필요한 경우, 하나 이상의이 returners (예를 들어 MySQL의 또는 cassandra_cql)에서 달성 된 참조하시기 바랍니다.
이벤트 지원
당신은해야한다 event_return
기 returner에 의해 마스터에서 기록 된 이벤트 정보를 허용하는 기 returner 모듈에 기능을 추가 할 수 있습니다. 이 함수에 전달 마스터 서버 이벤트 목록입니다.
다음 예제는 MySQL의 기 returner에서 가져옵니다. 이 예에서, 각각의 이벤트는 이벤트 삽입 salt_events
테이블에 기초하고 있기 때문에, 테이블의 event tag
기본 키, JID를 포함하는 라벨, 상기 이벤트 레코드의 유일성을 보장 할 수있다.
import salt.utils.json
def event_return(events):
'''
Return event to mysql server
Requires that configuration be enabled via 'event_return'
option in master config.
'''
with _get_serv(events, commit=True) as cur:
for event in events:
tag = event.get('tag', '')
data = event.get('data', '')
sql = '''INSERT INTO `salt_events` (`tag`, `data`, `master_id` )
VALUES (%s, %s, %s)'''
cur.execute(sql, (tag, salt.utils.json.dumps(data), __opts__['id']))
기 returner를 테스트하기
Returner,prep_jid,save_load,get_load和event_return
기능은 마스터 구성 파일에서 구성 할 수 있습니다 master_job_cache 및 이벤트 Returners 각 미니언 호출의 마스터에서 다음과 test.version
테스트.
마스터 작업 캐시 기능 검사의 성공적인 구현 한 후에는 계속 사용할 수 있습니다 ret
모듈 테스트를 수행하는 External Job Cache
기능.
salt-call ret.get_jids cassandra_cql --output=json
salt-call ret.get_fun cassandra_cql test.version --output=json
salt-call ret.get_minions cassandra_cql --output=json
salt-call ret.get_jid cassandra_cql 20150330121011408195 --output=json
이벤트 RETURNERS
권력 이벤트 역사 소금 인프라를 극대화하기 위해, 소금 마스터는 모든 이벤트는 하나 returners의 이상으로 기록 할 수 얻을 수 있습니다.
이벤트 로깅을 사용하려면 마스터 구성 설정 event_return
기 returner (들)로 지정해야 이벤트에 대한 핸들러로 돌아갑니다 구성 옵션을 선택합니다.
참고 : 모든 returners 이벤트 기록을 지원합니다. 여부를 확인하기 위해 기 returner를 사용하기 전에
event_return()
기능.
참고 : 대규모 배포에서 매초마다 당신이 바쁜 마스터에서 수백 개의 이벤트를 생성 할 수 있습니다. 소금은 쉽게 동시 서버 데이터를 반환 수천 성능의 부족을 압도 할 수 있기 때문에,주의 주어진 기 returner 저장 장치를 지불해야합니다.
RETURNERS는 플러그인 목록
플러그인 이름 | 기능 설명 |
---|---|
carbon_return | 소금에서 데이터를 가지고 탄소 수신기로 "를 반환" |
cassandra_cql_return | 카산드라 서버에 데이터를 반환 |
cassandra_return | 카산드라 ColumnFamily에 데이터를 반환 |
couchbase_return | 카우치베이스 주식회사에 대한 간단한 기 returner. |
couchdb_return | CouchDB를위한 간단한 기 returner. |
django_return | 장고의 신호 시스템을 사용하여 반환 사용할 수 있습니다 장고 시스템을 통보하는 기 returner. |
elasticsearch_return | 색인에 대한 elasticsearch 서버에 데이터를 돌려줍니다. |
etcd_return | etcd 서버 나 클러스터에 데이터를 반환 |
highstate_return | HTML 전자 메일 또는 HTML 파일을 통해 highstate (또는 호환 가능한 형식으로 데이터를 반환하는 모든 다른 주 기능)의 결과를 돌려줍니다. |
hipchat_return | hipchat를 통해 소금 데이터를 돌려줍니다. |
influxdb_return | influxdb 서버에 데이터를 돌려줍니다. |
kafka_return | 카프카 주제로 데이터를 반환 |
librato_return | 소금 기 returner는 Librato에 highstate 통계를 반환 |
노동 조합 지부 | 로컬 기 returner가 기 returner 인터페이스를 테스트하는 데 사용되는, 단지 제대로 전달되고 있는지 확인하기 위해 본체에 반환 데이터를 인쇄 |
local_cache | 로컬 작업 캐시에 데이터를 반환 |
mattermost_returner | mattermost를 통해 소금 데이터를 반환 |
memcache_return | memcache 실행 서버에 데이터를 반환 |
mongo_future_return | MongoDB를 서버에 데이터를 반환 |
mongo_return | MongoDB를 서버에 데이터를 반환 |
multi_returner | 읽기 / 여러 returners 쓰기 |
MySQL은 | MySQL 서버에 데이터를 반환 |
nagios_nrdp_return | Nagios의 소금 데이터를 반환 |
ODBC | 는 ODBC 호환 서버에 데이터를 돌려줍니다. |
pgjsonb | JSON 데이터는 대학원의 jsonb 데이터 형식에 저장된와 PostgreSQL 서버에 데이터를 반환 |
포스트 그레스 | PostgreSQL의 서버에 데이터를 반환 |
postgres_local_cache | 마스터 작업 캐시에 대한 PostgreSQL 서버를 사용합니다. |
pushover_returner | 만만한를 통해 소금 데이터를 돌려줍니다 ( http://www.pushover.net ) |
rawfile_json | 소금에서 데이터를 가지고 이벤트 당 하나 개의 라인과 함께 JSON을 포함하는 원시 파일로 "반환". |
redis_return | 레디 스 서버에 데이터를 반환 |
sentry_return | 보초 다시 실행 결과를보고 소금 기 returner. |
slack_returner | 여유를 통해 소금 데이터를 반환 |
sms_return | SMS에 의해 데이터를 돌려줍니다. |
smtp_return | 이메일을 통해 소금 데이터를 반환 |
인 Splunk | 는 HTTP 이벤트 수집기를 통해 인 Splunk에 JSON 응답 데이터를 보내기 설정 또는 기둥에 지정하려면 다음 설정 값을 필요 |
sqlite3_return | sqlite3를 데이터베이스로 미니언 반환 데이터를 삽입 |
syslog_return | 호스트 운영 체제의 syslog 기능에 데이터를 반환 |
telegram_return | 전보를 통해 소금 데이터를 돌려줍니다. |
xmpp_return | XMPP를 통해 소금 데이터를 반환 |
zabbix_return | Zabbix에 소금 데이터를 반환 |