Ansible로 Kibana 대시보드 자동 생성
agent 인 sensu-client를 설치하기 위해 구성 관리 도구 Ansible를 사용합니다.
이번에는 Ansible의 실행 대상을 기술 한 인벤토리에서 키바나 대시 보드를 생성해 보겠습니다.
키바나
여기에서는 키바나 3.1.2을 사용합니다.
(Kibana 4는 json 파일 형식의 대시 보드를 사용할 수 없기 때문에.)
설치 대상은
/opt/kibana
에서 config.json
의 default_route
를 변경합니다.이
dashborads.json
는 sensu-client 목록을 표시합니다./opt/kibana/config.json
/** @scratch /configuration/config.js/5
*
* ==== default_route
*
* This is the default landing page when you don't specify a dashboard to load. You can specify
* files, scripts or saved dashboards here. For example, if you had saved a dashboard called
* `WebLogs' to elasticsearch you might use:
*
* default_route: '/dashboard/elasticsearch/WebLogs',
*/
default_route : '/dashboard/file/dashboards.json',
Ansible Inventory
실제로 사용하는 Inventory의 일부를 보여드리겠습니다. 호스트 이름은 신경 쓰지 마십시오.
[kibana]
에 대해 playbook을 실행하고 [sensu-client]
의 각 호스트에 대한 대시 보드를 생성합니다.[kibana]
192.168.11.250
[sensu-client]
air ansible_ssh_host=air.eng.kagawa-u.ac.jp
rewrite ansible_ssh_host=rewrite.eng.kagawa-u.ac.jp
clannad ansible_ssh_host=clannad.eng.kagawa-u.ac.jp
planetarian ansible_ssh_host=planetarian.eng.kagawa-u.ac.jp
kanon ansible_ssh_host=planetarian.eng.kagawa-u.ac.jp
Ansible Playbook
여기에서는 사용중인 playbook의 일부를 소개합니다.
전체는 GitHub에 있으므로 참조하십시오.
with_items
를 사용하여 [sensu-client]
의 각 호스트에 대한 대시 보드를 생성합니다.목록
dashboards.json
도 생성되지만 여기에서는 템플릿에서 for
를 사용합니다.kibana.yml
---
- hosts: kibana
sudo: yes
gather_facts: no
tasks:
- name: create each server.json
template:
src=templates/server.json.j2
dest=/opt/kibana/app/dashboards/{{ item }}.json
owner=root
group=root
mode=0644
with_items: groups['sensu-client']
- name: create dashboards.json
template:
src=templates/dashboards.json.j2
dest=/opt/kibana/app/dashboards/dashboards.json
owner=root
group=root
mode=0644
server.json.j2
는 호스트 이름 {{ item }}
을 사용합니다.대시 보드 제목과 Elasticsearch에 대한 검색 쿼리에 필요합니다.
server.json.j2
{
"title": "{{ item }}",
"services": {
"query": {
"list": {
"0": {
"id": 0,
"color": "#bc3539",
"alias": "",
"pin": false,
"type": "lucene",
"enable": true,
"query": "key:\"{{ item }}.cpu.usage\""
},
...
dashboards.json.j2
는 Jinja2의 for을 사용합니다.각 대시 보드에 대한 링크와 IP 주소 목록을 생성합니다.
dashboards.json.j2
...
"rows": [
{
"title": "dashboards",
"height": "500px",
"editable": false,
"collapse": false,
"collapsable": false,
"panels": [
{
"error": false,
"span": 4,
"editable": false,
"type": "text",
"loadingEditor": false,
"mode": "markdown",
"content": "
{% for host in groups['sensu-client'] %}
- [{{ host }}](index.html#/dashboard/file/{{ host }}.json) ({{ hostvars[host]['ansible_ssh_host'] }})\n
{% endfor %}\n",
"style": {},
"title": "sensu metrics"
}
],
"notice": false
}
],
...
결과
Ansible Inventory에서 sensu-client 대시 보드와 그 목록을 생성 할 수있었습니다.
또한 Rails 대시 보드를 생성하거나 함께 정적 파일을 전송합니다.
Kibana 4에서도 비슷한 일을하고 싶으므로 노하우가 있다면 알려주세요!
Reference
이 문제에 관하여(Ansible로 Kibana 대시보드 자동 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hiconyan/items/46fdb07099c5a4d2cb4f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)